автор:Минмин Руюэ старший, CSDN Блог-эксперт, старший в Дачане Java Инженер, автор книг «Методология оптимизации производительности», «Разблокирование большого фабричного мышления: анализ «Руководства по разработке Java для Alibaba»», «Переучивание классики: «Эффективно»» Обозреватель журнала "Эксклюзивный анализ Java".
Тест «белого ящика» — это программный метод. тесты, он проверяет логическую структуру внутри программы. В тесте «белого ящика» варианты использования тестов основаны на внутреннем коде и логике программы. Вот несколько распространенных случаев использования метода «Объяснение» с использованием «белого ящика». концепции и соответствующий им Пример Java-кода。
Метод испытания | Объяснение концепции | Пример Java-кода |
---|---|---|
покрытие заявлений | Протестируйте достаточное количество случаев, чтобы убедиться, что каждый оператор в программе выполняется хотя бы один раз. Это самые основные рекомендации по страхованию. | см. ниже |
Покрытие решения | Протестируйте достаточное количество случаев, чтобы убедиться, что каждая ветвь каждого решения (например, оператора if) в программе выполняется хотя бы один раз. | см. ниже |
Комбинированное покрытие условий | Достаточно случаев, чтобы убедиться, что все возможные комбинации различных условий были выполнены. Этот подход является более строгим, чем простые решения по закрытию, поскольку он учитывает каждую комбинацию условий. | см. ниже |
Покрытие комбинации условных суждений | Протестируйте достаточное количество случаев, чтобы гарантировать, что каждое условие оценивается хотя бы один раз для каждого возможного результата (истинного или ложного) и что каждый возможный результат каждого суждения выполняется хотя бы один раз. Это очень детальная дисциплина тестового покрытия. | см. ниже |
логическое покрытие | Он включает в себя покрытие условий, покрытие решений и покрытие условных решений. Он используется для оценки изменений истинного и ложного значений каждого логического компонента в составном логическом выражении, чтобы гарантировать, что каждая часть логического выражения может быть полностью протестирована. | см. ниже |
Предположим, у нас есть следующий метод Java, мы будем использовать этот метод, чтобы продемонстрировать применение различных методов проектирования тестовых примеров, упомянутых выше:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
}
add
иmax
методсерединаиз Каждый оператор выполняется хотя бы один раз。дляadd
метод,Мы можем просто вызвать его один раз;дляmax
метод,Нам нужно как минимум два звонка:Гарантированный возврат один разa
изветка выполнена,Другой Гарантированный возврат один разb
изветка выполнена。
max
методизif
заявлениеиз Каждая ветвь выполняется один раз。Это связано спокрытие Требования заявлений те же, но больше внимания уделяется оценке двух возможных выходов.
max
методс точки зрения,Потому что есть только одно условиеa > b
,Таким образом, его экземпляр такой же, как Покрытие решения те же. Но если имеется несколько логических комбинаций условий, необходимо убедиться, что проверяется каждая комбинация условий.
max
методизслучай,Это означает, что нам необходимо обеспечитьтест Варианты использования могут охватыватьa > b
это правдаи Фальшивыйиз Состояние。
if((a > b) && (c > d))
,Таклогическое покрытиеспроси насдизайнтест Варианты использования для отдельного тестированияa > b
иc > d
это правда Фальшивый时из所有Состояние,и влияние их объединенных результатов на общее суждение.Разрабатывая тестовые сценарии, соответствующие вышеуказанным критериям покрытия, мы можем гарантировать, что каждая часть программного обеспечения будет адекватно протестирована, тем самым находя и исправляя больше потенциальных ошибок.
if(a > b && c < d)
,Комбинированное покрытие Условия требуют, чтобы тестовые варианты использования содержали как минимум сколько ситуаций?
A. 2
B. 3
C. 4
D. 6
if(a > b && c < d)
,Комбинированное покрытие условий Требоватьтествариант использования至少Включать4ситуация:a > b
иc < d
все правда,a > b
это правдаc < d
ложно,a > b
ложноc < d
это правда,а такжеa > b
иc < d
Вселожно。