SW 품질관리

[경쟁력 있는 소프트웨어 테스터가 되는 법] 현업에서 혼용되는 다양한 용어 풀이 (버그와 에러 차이? 랜덤테스트와 애드혹테스트의 차이? N/A, N/T, N/I 등)

바질크림떡볶이 2023. 4. 12. 08:32

경쟁력 있는 소프트웨어 테스터가 되는 법_최준현

아래는 많은 테스터들과 개발자들이  소프트웨어 테스팅을 진행하는 동안 혼란스러워하는 대표적인 용어들이다. 그러나 현업에서 사전적으로 구분하는 것이 꼭 필요하진 않다. 현업에서 만나는 개발자들과 의사소통 할 때 모른다고 해서 전혀 문제될 것이 없지만 의미만 명확하게 구분지으면 될 듯 하다. (개인적으로 헷갈리는 것들을 책에서 뽑아 간추렸다ㅎㅎ)

 

 

1) bug, error, defect, fault, failure

Error (에러) : 개발자의 잘못된 이해로 설계 실수, 프로그램 코딩 중 타이핑을 잘못하는 입력 행위 자체. 즉, 실수하는 행위 자체이다.

 

 Fault (=defect, bug) : 폴트는 에러로 인한 현상의 결과이다. 일반적으로 결함이라고 부르며 요구서의 규격에 맞지 않는 작동을 의미하기도 한다. Defect, Bug라는 용어 혼용하여 사용하기도 한다.

 

 Failure : 소프트웨어의 잘못된 동작, 현상을 말한다. Fault(결함)으로 인해 생기는 현상. 하지만 소프트웨어에 Fault(=defect, bug)가 있다고 하더라도 반드시 Failure가 발생하지는 않는다.

 

 

예시) 사이트에 회원 가입이 되지 않아 > Failure

개발자가 변수 값 정의를 잘못해서… > Error

회원 가입할 때 아이디 입력창에 문자 입력이 되지 않아… > Fault(defect, bug)

 


 

2) 디펙트 리포트(Defect Report)와 인시턴드 리포트 (Incident Report)

결함 리포트는 테스터들이 가장 많이 작성하는 리포트이다. 결함 리포트 양식을 참조하기 위해 여러 표준 문서들을 참조하다 보면 결함 리포트에 대한 영어 표현이 “Incident Report”라고 되어 있는 경우를 많이 볼 수 있다.

 

 디펙트 리포트(Defect Report) : 결함 리포트의 또 다른 표현이며, 테스팅 도중에 작성되어 모두 결함이 확실한 이상 현상을 리스트한 것이라고 생각하면 된다. 개발자의 의해서 또는 이해당사자들에 의해서 최종적으로 결함으로 확정된 문서를 Defect Report라고 할 수 있다.

 

 인시턴드 리포트 (Incident Report) : 테스팅 도중에 발생한 조사가 필요한 모든 이상 현상을 작성하는 것을 뜻한다. 일반적으로는 사건 경위서라고 표현하기도 하는데 실제로 발견된 현상이 결함인지 아닌지는 명확하지 않지만 테스터의 판단에 의해 고장(Failure)을 유발할 수 있는 모든 이벤트와 건의사항, 문의사항을 작성하는 문서이다.

 


 

3) 랜덤 테스트(Random Test)와 애드혹(Ad-hoc Test) 테스트

 랜덤 테스트(Random Test) : 특정 기능에 값을 무작위로 넣어보는 것을 의미한다. 1~100의 입력값을 지원하는 창에 아무 값이나 넣어보는 테스트라고 이해하면 된다. 다른 의미로는 모든 기능을 한번에 테스트할 수 없을 경우 무작위로 몇 가지 기능을 선택하여 테스트를 해보는 방식이다.

 

 애드혹 테스트(Ad-hoc Test)  : 테스트 케이스나 일정한 규칙 없이 테스터가 임의로 테스트 제품을 실행하며 결함을 찾는 테스트를 말한다. 예상 결과에 대한 준비 없이 테스트를 진행하며 빠르게 테스트가 진행될 수 있는 장점을 가지고 있다. 애드혹 테스트는 경험 기반 테스트 기법의 결함 추측의 가벼운 형태로 볼 수도 있다.

 


 

4) 블록(Block)과 N/A(Not Available) ★ (난 이게 그르케 헷갈리더라!)

테스트 케이스 실행 시 꼭 입력해야 하는 것이 바로 테스트 케이스 수행 결과이다. 아래는 일반적으로 가장 많이 쓰이는 4가지 형태의 용어이다.

 

그러나 해당 용어에 대한 통일성이나 이해 작성 방식에 대해서는 명확한 기준이 없고 업체마다 제각각이어서 아래에서 의미를 명확하게 설명하고자 한다.

 

 블록(Block) : 해당 테스트 케이스가 어떠한 결함에 의해서 실행할 수 없다는 것을 의미한다. 테스트를 진행해야 하는 대상이지만 테스트를 할 수 없는 경우이다.

 

 N/A(Not Available) : 해당 테스트 케이스가 테스트를 진행할 수 없는 환경인 경우이다. 테스트 데이터가 없어 테스트를 못하거나 서버 중단 등의 환경적 문제, 개발은 완료되었으나 어떠한 외부적인 요인으로 테스트를 하지 못하는 경우이다. (Not Applicable과는 다른 의미이다.)

 

이외에도 아래와 같이 다양한 형태의 테스트 수행 결과 상태값이 있다. 의미를 명확하게 알고 정리해야 한다. 

 

 


 

5) 체크리스트와 테스트 케이스

 

 체크리스트 : 테스트를 하는 대상의 대표적인 기능과 규격에 대한 준수 여부를 점검하는 목록이라고 할 수 있다. 꼭 확인하고 점검해야 하는 항목들에 대한 목록이다. 체크리스트를 작성할 때는 예상 결과값이 포함되지 않는다.

 

 테스트케이스 : 테스트를 진행할 구체적인 내용을 문서화한 것으로 특별한 목표 또는 테스트 하기 위해 개발된 입력값, 실행 사전 조건, 예상 결과, 실행 사후조건들을 말한다.

 

보통 두 문서를 함께 사용하여 복수로 테스트 하거나 한가지만 하는데, 체크리스트로만 테스트를 진행할 경우 추가적인 경험 기반의 테스트를 진행하거나 애드혹 테스트를 진행하여 보완해야 한다. 체크리스트만으로 품질을 확보했다고 보기 어렵다.