У меня возникла проблема с проектированием модульных тестов черного ящика без избыточности.Стратегия единичных тестов: избыточность с использованием Black-box
Вот пример:
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);
}
}
}
Для того, чтобы правильно протестировать A.operationA(), я должен был бы написать по крайней мере, три единичных испытаний (aNumber
= 0, aNumber
> 0 и aNumber
< 0) ,
Теперь, скажем, я хочу проверить B.functionB, используя стратегию черного ящика, я должен заново написать аналогичные три модульных тестов (theNumber
= 0, theNumber
> 0 и theNumber
< 0)? В этом случае мне пришлось бы создавать множество тестов каждый раз, когда я использую метод A.operationA ...
Почему существует требование проверки черного ящика? – dm03514
Испытаний для класса «A» было бы достаточно. 'class A' является зависимостью класса B. при тестировании B, класс A может быть изделен/подделан, чтобы проверить только дополнительные функциональные возможности B. Нет необходимости повторять те функции, которые уже были покрыты. – Nkosi
@ dm03514 Использование стратегии «черного ящика» в этом случае позволит сбой модульных тестов при изменении операции А и возвращает результат, который изменит результат операции Б. Этого не может быть достигнуто, просто проверив, что операцияA вызывается в операцииB (стратегия белого ящика). –