57
когда A=True и B=False, так как вторая часть условия (!B) будет равна True и
общий результат логического выражения будет True;
• защитный код. Эта часть кода используется для предотвращения
исключительных ситуаций, которые могут возникнуть в процессе работы
программы. Как пример, это может быть ветка default в операторе выбора
switch, причем входное условие оператора switch может принимать
определенные значения, которые он описывает, и как следствие, ветка default
никогда не будет выполнена.
ТЕМА 3. Повторяемость тестирования (лекция 6)
3.1. Задачи и цели обеспечения повторяемости тестирования при
промышленной разработке программного обеспечения
Как уже было сказано в предыдущих темах, тестирование программной системы – не
разовое мероприятие, а постоянный процесс, активный в течение всего жизненного цикла
разработки системы. В течение этого процесса система неизбежно изменяется – либо в
результате исправления ошибок, либо в результате расширения ее функциональности.
Задача тестировщика в такой ситуации – подтвердить, что новая или
исправленная
функциональность не вызвала новые ошибки, а если ошибки все-таки возникли –
определить причины их возникновения.
Самый простой, но в то же время действенный способ такого подтверждения –
полное выполнение всех тестовых примеров после каждого существенного изменения
системы и сравнение результатов выполнения тестов до и после изменения.
Если результаты выполнения тестов
до внесения изменений были положительными
(все тесты проходили успешно), то появление неуспешно пройденных тестов может
означать, что в системе появились новые дефекты, вызванные исправлением старых.
В общем случае повторное выполнение тестов может завершиться одним из трех
способов:
1. Все тесты пройдены успешно. В этом случае изменения не затрагивают уже
протестированные функции, но может потребоваться разработка новых
тестовых примеров для новых функций системы.
2. Часть тестов, ранее выполнявшихся успешно, завершается с отрицательным
результатом. Причины этого могут быть следующие:
• корректное изменение функциональности тестируемой системы, в
результате которого тестовый пример перестал соответствовать
требованиям;
• некорректное изменение функциональности системы, в результате
которого тестовый пример
выявил расхождение с требованиями;
• влияние остаточных данных от предыдущих тестовых примеров, ранее
остававшееся незамеченным.
Первые две причины различимы только при помощи анализа изменений в
функциональных требованиях и тест-требованих, а также текущего состояния
тест-планов и тестового окружения. По результатам этого анализа в первом
случае тестировщик вносит изменения в
тестовый пример (и, возможно,
разрабатываются новые тестовые примеры), во втором случае тестировщик
уведомляет разработчиков о наличии дефекта.
3. Выполнение тестов аварийно завершается в самом начале или при
выполнении определенного тестового примера.
Данная проблема чаще всего связана с изменением внешнего окружения
тестируемой части системы, которое моделирует тестовое окружение. В
результате таких изменений могут меняться внешние интерфейсы, а также