Можно ли построить здание без проекта? Можно, если оно не слишком большое. Например, шалаш или скворечник. В более сложных случаях скорее всего придётся учитывать рельеф местности и особенности почвы, где здание будет стоять, характеристики материалов, из которых оно будет построено, и не следует забывать об эстетической привлекательности того, что получится. Проектируя здания, мы опираемся на знания, накопленные бесчисленными поколениями строителей и архитекторов, используем в своей работе их успешные находки и стараемся не повторять их ошибок. Этот опыт частично преобразовался в научные теории, а какая-то его часть продолжает оставаться на уровне эвристики.
В тестировании дизайн, или проектирование, тестов также занимает центральное место. Выполняем ли мы тесты вручную или автоматизируем их, используем ли мы тестирование методом свободного поиска или фиксируем тесты в виде готовых к повторному использованию сценариев -- во всех случаях сначала нам приходится эти тесты спроектировать, то есть придумать. И чтобы не потеряться в хаосе бесконечного количества тестов, которые можно придумать, нам нужен систематический подход к отбору некоторого ограниченного количества тестов, которые достаточно выполнить.
Тестирование, как и программная инженерия в целом, достаточно молодая дисциплина. По этой причине практически всё знание в области тестирования имеет эвристическую форму. На тренинге мы рассмотрим различные эвристики, начиная от известного всем тестировщикам разбиения данных на классы эквивалентности и до тестирования на основе рисков.
Программа тренинга:
- Построение карты функций приложения и проектирование тестов по этой карте.
- Разделение областей данных на поддомены (классы эквивалентности), эвристики выбора представителей.
- Способы проектирования тестов для цепочек функций.
- Проектирование тестов на основе вариантов использования.
- Проектирование тестов на основе гипотез об ошибках.
- Подход к тестированию, основанный на анализе рисков.
- Комбинирование различных эвристик.
- Особенности проектирования тестов для регрессионного тестирования.
- Особенности проектирования тестов для автоматизации их выполнения.
- Особенности проектирования тестов различных уровней (модульные, интеграционные, системные).