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