«Белый ящик» — тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка на котором она писалась.
Техника тестирования по принципу Белого ящика, также называемая техникой тестирования управляемая логикой программы, позволяет проверить внутреннюю структуру программы. Исходя из этой стратегии тестировщик получает тестовые данные путем анализа логики работы программы.
Техника Белого ящика включает в себя следующие методы тестирования:
Содержание |
Критерии покрытия операторов подразумевает выполнение каждого оператора программы по крайней мере один раз.
Рассмотрим пример:
void func(int a, int b, float x) { if ((a > 1) && (b == 0)) x = x/a; // пути с (истина) и b (ложь) if (a == 2 || x > 1) x++; // пути e (истина) и d (ложь) }
Чтобы выполнить каждый оператор не менее одного раза, нужно составить единственный тест со следующими значениями входных данных (a = 2 b = 0 x = 3).
Данный подход обладает недостатками. Вот, например, если в условии x > 1 программист допускает ошибку и пишет x < 1 или x > - 1, то с помощью нашего теста эта ошибка не будет обнаружена.
В соответствии с этим критерием необходимо составить такое число тестов, при которых каждое условие в программе примет как истинное значение, так и ложное значение.
Данный критерий является более эффективным по сравнению с предыдущими.
Записывается число тестов достаточное для того, чтобы все возможные результаты каждого условия в решении были выполнены по крайней мере один раз.
Однако этот критерий не всегда приводит к выполнению каждого оператора по крайней мере один раз. Поэтому к этому критерию добавляется дополнительное условие, каждый оператор должен быть выполнен хотя бы один раз.
Если после составления тестов у нас останутся не покрытые операторы, то мы должны дополнить свой набор тестов таким образом чтобы каждый оператор выполняется не менее одного раза.
В соответствии с этим критерием необходимо составить тесты так, чтобы результаты каждого условия выполнялись хотя бы один раз, результаты каждого решения так же выполнялись хотя бы один раз, и каждый оператор должен быть выполнен хотя бы один раз.
Хотя метод и является достаточно мощным и позволяет находить достаточно большое количество ошибок, он имеет и недостатки:
Этот критерий требует, чтобы все возможные комбинации результатов условий в каждом решении, а также каждый оператор выполнились по крайней мере один раз. В нашем примере должны быть покрыты восемь комбинаций:
При этом условие на значение х
налагает второй оператор if
. Поскольку х
может быть изменено до выполнения второго оператора, то значения, необходимые для проверки, следует восстановить, исходя из логики программы для того, чтобы найти соответствующие входные значение.
Для покрытия этих восьми комбинаций достаточно 4 теста.
(Заметим, что эти 4 теста не покрывают всех путей, они пропускают путь а—-с—-d.)
Таким образом, для программ, содержащих только одно условие на каждое решение, минимальным является критерий набора тестов которого:
Для программ содержащих более одного условия минимальный критерий состоит из набора тестов, вызывающих выполнение всех возможных комбинаций результатов условий и выполняющий каждый оператор минимум один раз.
Стратегия тестирования по принципу «Белого ящика».