중복이없는 블랙 박스 유닛 테스트를 설계하는 데 문제가 있습니다. 여기 유닛 테스트 전략 : 블랙 박스를 사용하는 중복
은 예이다 :class A {
Float function operationA(int: aNumber){
if(aNumber > 0){
return aNumber * 10 + 5.2;
}
else if (aNumber < 0) {
return aNumber * 7 - 5.2;
}
else {
return aNumber * 78 + 9.3;
}
}
}
class B {
boolean status = true;
Float function opearationB(int: theNumber){
if(status == true){
return a.operationA(aNumber);
}
}
}
, I는 적어도 세 단위 테스트 (aNumber
= 0 aNumber
> 0 aNumber
< 0)를 작성해야 올바르게 A.operationA()를 테스트하기 위해 .
지금은 유사한 세 가지 단위 테스트 (theNumber
= 0, theNumber
> 0 theNumber
< 0)를 다시 작성해야,의 내가 블랙 박스 전략을 사용, B.functionB을 테스트 할 가정 해 봅시다? 이 경우 A.operationA 메서드를 사용할 때마다 많은 테스트를 만들어야합니다. ...
왜 블랙 박스 테스트 요구 사항이 있습니까? – dm03514
'class A '에 대한 검사만으로 충분할 것입니다. '클래스 A'는 클래스 B의 종속성입니다. 테스트 B에서는 클래스 A가 조롱/위장되어 B의 추가 기능 만 테스트 할 수 있습니다. 이미 적용된 기능을 다시 테스트 할 필요가 없습니다. – Nkosi
@ dm03514 그런 경우 black-box 전략을 사용하면 operationA가 변경 될 때 단위 테스트가 실패하고 operationB의 결과를 변경하는 결과가 반환됩니다. 이것은 operationA가 operationB (화이트 박스 전략)에서 호출되었는지 확인하는 것만으로는 달성 할 수 없습니다. –