본문 바로가기

독서찰기(讀書札記)/단위 테스트

테스트 피라미드, 화이트박스 테스트 vs 블랙박스 테스트

테스트 피라미드

층의 너비: 테스트 스위트에서 해당 테스트가 얼마나 보편적인지를 나타낸다.

층의 높이: 최종 사용자의 동작을 얼마나 유사하게 흉내내는지 나타낸다. 

상단은 회귀 방지에 유리한 반면, 하단은 실행 속도를 강조한다.

 

테스트 유형 간의 정확한 비율은 각 팀과 프로젝트마다 다를 것이다.

그러나 일반적으로 피라미드 형태를 유지해야 한다.

엔드 투 엔드 테스트가 적어야하는 이유는 회귀 방지, 리팩터링 내성, 빠른 피드백의 곱셈 규칙에 있다.

엔드 투 엔드 테스트는 빠른 피드백 지표에서 매우 낮은 점수를 받기 때문이다. 또한 유지 보수성이 결여되어 있다.

블랙박스 테스트 vs 화이트박스 테스트

블랙박스 테스트: 시스템의 내부 구조를 몰라도 시스템의 기능을 검사할 수 있는 소프트웨어 테스트 방법이다. 일반적으로 명세와 요구 사항, 즉 애플리케이션이 어떻게 해야 하는지가 아니라 무엇을 해야 하는지를 중심으로 구축된다.

화이트박스 테스트: 애플리케이션의 내부 작업을 검증하는 테스트 방식이며, 테스트는 요구 사항이나 명세가 아닌 소스 코드에서 파생된다.

화이트박스 테스트 특징

- 소스 코드를 분석하면 외부 명세에만 의존할 때 놓칠 수 있는 많은 오류를 발견할 수 있다.

- 테스트 대상 코드의 특정 구현과 결합돼 있기 때문에 깨지기 쉽다.

- 거짓 양성을 많이 내고 리팩터링 내성 지표가 부족하다.

- 비즈니스 담당자에게 의미있게 보이지 않는데, 이는 화이트박스 테스트가 취약하고 큰 가치가 없음을 증명하는 것이다.

 

화이트박스 테스트 대신 블랙박스 테스트를 기본으로 선택하라.

테스트를 작성할 때는 블랙박스 테스트가 바람직하지만, 테스트를 분석할 때는 화이트박스 방법을 사용할 수 있다.

코드 커버리지 도구를 사용해서 어떤 코드 분기를 실행하지 않았는지 확인한 다음 코드 내부 구조에 대해 전혀 모르는 것처럼 테스트하라.