Покрытие кода мало что значит. Важно то, покрыты ли все (или большинство) значений аргументов, влияющих на поведение.
Например, рассмотрим типичный метод сравнения (на языке Java, но применяется на большинстве языков):
//Return Negative, 0 or positive depending on x is <, = or > y
int compareTo(int x, int y) {
return x-y;
}
Пока у вас есть тест для compareTo(0,0)
, вы получаете покрытие кода. Тем не менее, вам нужно как минимум 3 тестовых случая здесь (для 3 результатов). Тем не менее, это не без ошибок. Также стоит добавить тесты, чтобы покрыть исключительные / ошибочные условия. В приведенном выше случае, если вы попытаетесь compareTo(10, Integer.MAX_INT)
, произойдет сбой.
Итог: попробуйте разделить входные данные на непересекающиеся наборы на основе поведения, проведите тестирование, по крайней мере, для одного входа из каждого набора Это добавит больше охват в истинном смысле.
Также проверьте наличие таких инструментов, как QuickCheck (если доступно для вашего языка).