반응형

CLI(command-line interface)

  • 사용자가 연속된 텍스트 라인 형태의 명령어(commands)를 발행하여 컴퓨터 프로그램과 상호작용(interaction) 하는 사용자 인터페이스 메커니즘
  • MS-DOS, CP/M, Unix, Apple DOS 같은 대부분의 과거 운영 체제(OS)에서 사람과의 상호작용 수단으로 사용되는 인터페이스
  • CLI는 명령어를 텍스트 입력으로 받고 이를 적절한 운영체제 기능으로 변환하는 프로그램인 커맨드 라인 쉘(a command line shell)로 구현된다.
  • 오늘날 일반 컴퓨터 사용자들이 그래픽 사용자 인터페이스(graphical user interfaces: GUI)를 선호함에 따라 CLI 사용이 줄었지만 고급 사용자(프로그래머, 시스템 관리자 등)는 더 간결하고 강력한 프로그램 통제 방법을 제공하는 CLI를 선호하기도 함
  • OS 뿐만 아니라 일반 애플리케이션 프로그램도 CLI를 인터페이스 수단으로 삼는 경우가 있음. GUI를 지원하기에는 리소스(resources)가 부족한 시스템에서 CLI가 사용되기도 하며, 일부 애플리케이션은 GUI CLI를 둘 다 지원하기도 함
  • CLI를 사용하는 프로그램은 스크립팅(scripting)을 통한 자동화가 더 쉽다.

 

CLI 구성 요소

  • CLI는 일반적으로 신텍스(syntax)과 시멘틱(semantics)으로 구성됨. 신텍스는 모든 명령어(commands)가 반드시 준수해야 하는 문법이며, 시멘틱은 신텍스의 상징적 의미로서 사용 가능한 오퍼레이션, 오퍼레이션이 처리 가능한 데이터, 오퍼레이션과 데이터를 표현하는 문법을 정의한다.
  • 단순 CLI는 프롬프트(a prompt)를 표시하고, 사용자가 입력하고 엔터키를 누른 명령어 라인을 받아들이며, 해당 명령어를 실행하고, 텍스트 형식의 결과(또는 에러 메시지)를 표시한다.
  • 고급 CLI는 명령어 라인을 실행하기에 앞서 해당 명령어를 검증하고, 해석하고, 패러미터를 추가한다(또한 경우에 따라 명령어의 출력을 캡쳐하거나 리디렉트 한다).

 

 

CLI 테스팅

 

  • 기본적으로 시스템에서 제공되는 다양한 명령어들을 실행시켜 해당 명령어가 제대로 동작하는지 확인하는 작업
  • 시스템이 제공하는 기능이 증가하면 CLI에 포함되는 명령어의 수와 복잡도도 크게 증가하며, 이런 상황에서 명령어들의 다양한 순열(permutation)을 테스팅 하는 것은 많은 노력이 필요하다. 예를 들어, 한 명령어가 5개의 옵션을 가지고 각 옵션의 가능한 값이 3가지 일 때 이 명령어가 제대로 작동하는지 확인하기 위해 3^5개의 테스트를 생성하고 실행할 필요가 있다. CLI에 이런 명령어가 수백 개 존재하는 경우 각각의 명령어와 명령어들의 순열에 대한 테스트 케이스를 생성하고 분석하는 일을 수작업으로 하기에는 시간이나 정확성 측면에서 효율성이 떨어진다. 따라서 CLI가 제공하는 명령어들을 위한 테스트 케이스를 생성하는 메커니즘이 필요하다.

 

 

반응형

+ Recent posts