사실 현업에 있는 사람들조차도 위 세가지에 대해 물어보면 추상적으로 대답하곤 한다.

테스트 케이스에 대해서는 비교적 명확하게 설명하지만, 시나리오와 스크립트는 경계가 약간 모호하긴 하다.

이 세가지 모두 현업에서 사용되고 있는데 어째서 스크립트와 시나리오는 명확히 대답하지 못하는걸까?

 

내 생각에는 테스트케이스는 많은 사람들이 접하고, 실제로 작성하고 유지보수까지 원활하게 진행되지만,

스크립트나 시나리오는 테스트케이스만큼 작성에 고민과 노력을 들이지 않기 때문인 것 같다.

 

특히 테스트케이스는 계속해서 재사용되지만, 스크립트나 시나리오는 일회성으로 사용되는 경우도 많고

보는 사람들도 참고하는 용도로만 사용하지 테스트케이스만큼 의존하는 편은 아닐 것이다.

 

그럼에도 불구하고 세가지 모두 실무에서 원활하게 사용되다 보니 개념을 익히고 파악하는 것이 좋다.

아래 내용을 통해 세 가지에 대한 특징과 구성 요소를 확인할 수 있다.


  1. 테스트케이스
    1. 특징
      • 특정 기능이나 요구사항에 대해 테스트를 수행하고,
        예상 결과와 실제 결과를 비교하여 시스템의 기능을 검증하는 데 사용된다.
      • 터스트케이스를  커버하는 실제 테스팅에 어느정도 유연성이 주어진다.
      • 테스터의 역량에 따라 이러한 테스트케이스의 유연성이 장점이 될 수도, 단점이 될 수도 있다.
    2. 구성 요소
      • 테스트 ID : 고유 식별자, 버그리포트 혹은 커뮤니케이션 할 때 많이 사용된다.
      • 테스트 항목 : 테스트 할 기능이나 요구사항, `대분류` 로 작성하기도 한다.
      • 사전 조건 : 테스트 실행 전 충족되어야 하는 조건을 의미함.
                          예를 들어, 메일보내기 보안메일 답장 다음 스텝을 테스트 하고 싶다면,
                          `수신된 보안 메일이 있어야 함` 과 같은 사전 조건을 의미한다.
      • 테스트 데이터 : 테스트에 사용되는 데이터를 의미한다.
                                  예를 들어, 메일 수발신 확인의 경우, 수신을 확인해야 할 계정 및 이메일 주소가 포함된다.
      • 테스트 스텝 : 테스트를 진행하는 단계를 의미한다.
      • 기대 결과 : 테스트 스텝에 맞춰 실행했을 때, 예상되는 출력이나 동작을 의미한다.
      • 실제 결과 : 테스트 스텝에 맞춰 실행했을 때, 기대 결과와 일치하는지, 다른지 등을 의미한다.
                           Pass, Fail, Non Abailable, Blocked 등이 있다. 
  2. 테스트 스크립트
    1. 특징
      • 기존에는 가장 상세한 방식의 테스팅 문서로, 테스트를 수행하는 데 필요한 모든 액션과 데이터를 명시했다.
      • 최근에는 테스트케이스를 실행하는 스크립트 언어로 작성된 파일로서의 의미가 더 강하다.
      • 주로 동일한 테스트를 반복적으로 수행하거나 자동화할 때 사용된다.
      • Selenium, Junit, TestNG 와 같은 자동화 테스트 툴에서 사용된다.
    2. 구성
      1. 스크립트 ID : 고유 식별자 역할을 한다.
      2. 스크립트 코드 : 테스트를 수행햐는 자동화 코드를 의미한다.
                                  예를 들어, `Hello` 라는 제목의 메일을 보낸 뒤 보낸 메일함으로 이동한다.
      3. 로직 확인 : 테스트를 수행한 뒤 기대결과와 같은지, 다른지 등을 확인한다.
                          위 예시에 이어, 웹 페이지의 HTML 소스에서 `Hello`라는 텍스트가 있으면 True로 반환한다.
                           assert "Hello" in webdriver.Chrome() .page_source
  3. 테스트 시나리오
    1. 특징
      • 주로 설계 단계에서 무엇을 테스트할 지 목적을 기술한 것으로, 주요 단계나 이벤트를 서술한다.
      • 사용자의 행동 또는 시스템 동작을 기반으로 하고, 비기술적인 언어로 작성된다.
    2. 구성
      • 시나리오 ID : 고유 식별자 역할을 한다.
      • 시나리오 : 테스트 할 시나리오의 간략한 설명을 의미한다. 
                                  예를 들어, `이메일을 전송함으로써 수신자가 메일을 확인할 수 있는 지 확인한다.`와 같다.
      • 할당된 테스트 케이스 : 해당 시나리오에 포함되어있는 테스트 케이스 및 작업을 의미한다. (선택)
                                              `메일` 이라는 서비스를 테스트할 때, 메일 수신/발신 뿐 아니라
                                              메일함 내에서 LNB가 작동이 기대결과와 동일한지 등을 테스트할 수 있다.
                                              이때, 각 시나리오에 포함된 TC를 기재하면 실제 테스트 작업에서 편리하다.
      • 결과 확인 : 각 단계에서 확인한 주요 결과나 상태를 명시한다.

테스트 시나리오, 테스트 케이스, 테스트 스크립트는 전부다 현업에서 많이 사용되고 있기 때문에

그룹 내에서 테스터들의 기량과 도메인 지식 수준 등을 기반으로 적절한 방법을 선택한다.

 

특히 테스트 스크립트에 대한 개념변화를 생각했을 때, QA로서 코딩이 더이상 선택이 아닌, 필수가 되어가고 있다.