2012-03-27 3 views
17

"단위 테스트"가 화이트 박스 또는 블랙 박스 테스트에 해당합니까? 아니면 완전히 다른 유형의 테스트입니까?"단위 테스트"가 화이트 박스 또는 블랙 박스 테스트에 해당합니까?

+0

솔직히 화이트 박스 테스트에 관한 위키 피 디아의 기사에서 충분히 설명하고 있습니다. –

+3

자주 리팩터링되는 코드의 화이트 박스 단위 테스트는 테스트 자체를 유지하기위한 많은 작업을 생성합니다. – airboss

답변

18

나는 이것을 article by Kent Beck가 TDD에 대해 더 많이 언급하고 단위 테스트가 이것을 상당히 잘한다고 생각합니다. 기본적으로 테스트를 실제로 작성하는 방법에 따라 다릅니다. Here is another article on the subject 등이 있습니다.

* 응용 프로그램 내에서 테스트하는 경우에는 화이트 박스입니다. 외부인이 공개 API를 호출하는 것처럼 테스트하는 경우 블랙 박스입니다.

+3

두 경우 모두 화이트 박스 테스트입니다. 두 가지 테스트 유형의 정의를 혼란스럽게하는 것 같습니다. 단위 테스트는 단순히 "코드"의 모든 단위 클래스를 테스트하는 것입니다. 화이트 박스 테스트입니다. 블랙 박스 테스트는 "앱"의 전반적인 기능을 테스트합니다. 원하는 경우 글을 쓰거나 자동화 할 수 있습니다. 하지만 단위 테스트 ... 음, 항상 화이트 박스 테스트입니다. –

+3

코드 뒤에 단위 테스트를 작성하고 코드 기반으로 * 도움말을 사용하여 * 단위 테스트는 화이트 박스 테스트입니다. * 코드 앞에 단위 테스트 *를 쓰거나 스펙을 기반으로 단위 테스트를 작성하면 단위 테스트는 백 박스 테스트입니다. – hellboy

9

화이트 박스 테스트의 일반적인 기준은 실행 경로 및 데이터 구조 민감성입니다. 이러한 기능을 "지점 테스트", "경로 테스트", "데이터 흐름 테스트"라고도합니다. 화이트 박스 테스트에 대한 Wikipedia를 참조하십시오.

즉, 단위 테스트는 시스템 구조에서 테스트가 수행되는 수준을 나타내지 만, 흰색 및 검정 상자 테스트는 테스트 접근법이 모든 수준에서 내부 설계 또는 장치의 외부 사양에만 적용됩니다.

따라서 유닛 테스트가 테스트중인 유닛의 모든 실행 경로와 데이터 구조를 과민하게 만드는 경우 화이트 박스 테스트입니다. 그러나 장치가 장치의 경로 및 데이터 구조의 대부분을 민감하게 만들 수 없으면 화이트 박스 테스트라고 주장 할 수 없습니다.

일부 조직에서는 단위 테스트가 해당 API가 아닌 유닛의 디자인을 기반으로하는지 여부에 관계없이 단위 테스트를 화이트 박스 테스트라고합니다. 이 시점에서 사장님과 논쟁하지 않는 것이 좋습니다.

관련 문제