Стратегия тестирования представляет собой описание общего подхода к тестированию и целей тестирования. Различают
несколько уровней (компонент, интеграция и система в целом) и видов (функции, производительность, нагрузка,
отказоустойчивость) тестирования.
В состав стратегии входят:
-
Технологии и инструменты тестирования.
-
Условия завершения и успешного выполнения тестов. Например, можно решить, что после успешного выполнения 95% тестов
можно перейти к приемке продукта. Другим примером условия может служить охват кода. Например, в системах
безопасности может требоваться стопроцентный охват кода при тестировании.
-
Особые обстоятельства, влияющие на требования к ресурсам и график тестирования, например:
-
тестирование всех интерфейсов ко внешним системам
-
имитация угрозы безопасности или физического повреждения системы
В некоторых организациях применяются корпоративные стратегии тестирования, и в этих случаях необходимо адаптировать эти
стратегии к конкретным проектам.
Важнейшие обстоятельства для планирования тестирования:
-
Какая итерация выполняется в данный момент и каковы ее цели?
-
Какой уровень тестирования выполняется в данный момент (тестирование компонентов, интеграции или системы в целом)?
Иногда все три уровня выполняются в ходе одной итерации.
Обратите внимание на то, как могут меняться характеристики задач тестирования в зависимости от того, на каком этапе
находится тестирование с точки зрения указанных выше параметров. Существует много важных характеристик, например, объем
необходимых ресурсов и затраченное время, но в данном случае нужно сконцентрироваться на важнейших факторах с точки
зрения разработки стратегии тестирования:
-
типы тестов (функциональные тесты, тесты под нагрузкой, тесты объема, производительности, удобства работы,
распределения и т.д.)
-
критерии оценки результатов (охват кода, охват требований, количество обнаруженных ошибок, средняя
продолжительность бесперебойной работы и т.п.)
-
применяемые технологии тестирования (автоматического тестирования и тестирования вручную)
Не существует единого шаблона распределения тестов по циклам тестирования. Типы тестов зависят от количества итераций,
размера итерации и типа проекта.
При тестировании центральное внимание уделяется охвату всех требований, подлежащих тестированию, то есть выполнению
всех предусмотренных тестов. Это значит, что критерии завершения тестирования обычно привязаны к количественному охвату
множества тестов, каждый из которых, в свою очередь, напрямую связан с каким-либо требованием. При тестировании
компонентов и интеграции удобнее пользоваться критериями завершения на основе охвата кода. На следующем рисунке
проиллюстрировано изменение этих двух критериев охвата на разных этапах итерационного процесса разработки программного
обеспечения.
-
План тестирования должен содержать наборы критериев завершения тестирования для тестирования компонентов,
интеграции и системы в целом.
-
Для разных итераций могут быть определены разные наборы критериев завершения.
Постарайтесь автоматизировать как можно больше тестов, особенно тех, что выполняются несколько раз (в рамках
регрессионного тестирования). Помните о том, что создание и обслуживание автоматизированных тестов требует определенных
ресурсов и затрат. В каждом проекте определенный объем тестирования выполняется вручную. На следующем рисунке приведены
примеры ситуаций и этапов тестирования, на которых может потребоваться выполнение тестов вручную.
Пример
В следующих таблицах показаны различные типы тестов и примеры условий завершения тестирования. В первой таблице показан
типичный пример проекта по разработке управленческой информационной системы.
Итерация
|
Тест системы
|
Тест интеграции
|
Тест компонента
|
Итерация 1
|
Автоматизированное тестирование производительности всех вариантов использования.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезности 1.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной ошибки серьезности 1.
|
Нет
|
Неформальное тестирование
|
Итерация 2
|
Автоматизированное тестирование производительности и функций всех новых вариантов использования, а
также тестирование старых вариантов использования в качестве регрессионного тестирования.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезностей 1 и 2.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной ошибки серьезности 1 или 2.
|
Нет
|
Неформальное тестирование
|
Итерация 3
|
Автоматическое тестирование функций и негативное тестирование всех новых вариантов использования, а
также всех старых вариантов использования в качестве регрессионного тестирования; 95% тестов должны
быть выполнены успешно.
· Выполнены все запланированные тесты.
· Выявлены все ошибки серьезностей 1, 2 и 3.
|
Автоматизированное тестирование, охват 70% кода.
|
Неформальное тестирование
|
Итерация 4
|
Автоматическое тестирование функций и негативное тестирование всех вариантов использования,
тестирование вручную всех неавтоматизированных частей, а также проведение всех прежних тестов в
качестве регрессионного тестирования. Должно быть успешно проведено 100% тестов.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезностей 1, 2 и 3.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной ошибки серьезности 1 или 2.
|
Автоматизированное тестирование, охват 80% кода.
|
Неформальное тестирование
|
Во второй таблице показаны типы тестов и критерии завершения для типичной системы безопасности.
Итерация
|
Тест системы
|
Тест интеграции
|
Тест компонента
|
Итерация 1
|
Автоматизированное тестирование производительности всех вариантов использования; охват 100%
тестов.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезности 1.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной новой ошибки.
|
Нет
|
Нет
|
Итерация 2
|
Автоматизированное тестирование производительности и функций, а также негативное тестирование всех
вариантов использования; охват 100% тестов.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезностей 1 и 2.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной новой ошибки.
|
Автоматизированное тестирование производительности
|
Неформальное тестирование
|
Итерация 3
|
Автоматизированное тестирование производительности и функций, а также негативное тестирование и
тестирование документации всех вариантов использования; охват 100% тестов.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезностей 1, 2 и 3.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной новой ошибки.
|
Автоматическое тестирование производительности и повтор предыдущих тестов в качестве регрессионного
тестирования.
|
Автоматизированное тестирование, охват 70% кода
|
Итерация 4
|
Автоматизированное тестирование производительности и функций, а также негативное тестирование и
тестирование документации всех вариантов использования; охват 100% тестов.
· Выполнены все запланированные тесты.
· Устранены все ошибки серьезностей 1, 2 и 3.
· Все запланированные тесты выполнены повторно и не обнаружено ни одной ошибки.
|
Автоматическое тестирование производительности и повтор предыдущих тестов в качестве регрессионного
тестирования.
|
Автоматизированное тестирование, охват 80% кода.
|
|