Структурное тестирование (стратегия "белого ящика") основывается на детальном изучении логики программы и подборе тестов, обеспечивающих максимально возможное число проверяемых операторов, логических ветвлений и условий. При построении тестов используют следующие критерии:
- покрытие операторов путем выбора набора данных, обеспечивающего выполнение каждого оператора в программе по крайней мере один раз.
- покрытие условий путем подбора наборов данных, обеспечивающих в узлах ветвления с более чем одним условием принятие каждым условием значения "истина" или "ложь" хотя бы по одному разу.
- комбинаторное покрытие условий путем подбора тестовых наборов данных, обеспечивающих в узлах ветвления с более чем одним условием перебор всех возможных сочетаний значений условий в одном узле ветвления.
При структурном тестировании учитывается логика программы.
Покрытие операторов.
Критерии покрытия операторов подразумевает выполнение каждого оператора программы по крайней мере один раз.
Покрытие решений.
В соответствии с этим критерием необходимо составить такое число тестов, при которых каждое условие в программе примет как истинное значение, так и ложное значение.
Покрытие условий.
Данный критерий является более эффективным по сравнению с предыдущими.
Записывается число тестов, достаточное для того, чтобы все возможные результаты каждого условия в решении были выполнены по крайней мере один раз.
Однако этот критерий не всегда приводит к выполнению каждого оператора по крайней мере один раз. Поэтому к этому критерию добавляется дополнительное условие, каждый оператор должен быть выполнен хотя бы один раз.
Если после составления тестов у нас останутся не покрытые операторы, то мы должны дополнить свой набор тестов таким образом чтобы каждый оператор выполняется не менее одного раза.
Покрытие условий и решений.
В соответствии с этим критерием необходимо составить тесты так, чтобы результаты каждого условия выполнялись хотя бы один раз, результаты каждого решения так же выполнялись хотя бы один раз, и каждый оператор должен быть выполнен хотя бы один раз.
Хотя метод и является достаточно мощным и позволяет находить достаточно большое количество ошибок, он имеет и недостатки:
- не всегда можно проверить все условия;
- невозможно проверить условия, которые скрыты другими условиям;
- метод обладает недостаточной чувствительностью к ошибкам в логических выражениях.
Комбинаторное покрытие условий.
Этот критерий требует, чтобы все возможные комбинации результатов условий в каждом решении, а также каждый оператор выполнился по крайней мере один раз.
Таким образом, для программ, содержащих только одно условие на каждое решение, минимальным является критерий набора тестов которого:
- вызывает выполнение всех результатов каждого решения, по крайней мере, один раз;
- выполняет каждый оператор по крайней мере один раз.
Для программ содержащих более одного условия минимальный критерий состоит из набора тестов, вызывающих выполнение всех возможных комбинаций результатов условий и выполняющий каждый оператор минимум один раз.