Что такое теория тестирования
Что проверяют
Есть ли у вас системная база или вы работаете только по интуиции.
Как отвечать
Это набор понятий, принципов и техник, дающий общий язык и системный подход вместо проверки наугад.
Базовые понятия, которые надо различать: ошибка человека, дефект в коде и отказ, наблюдаемый пользователем. Дефект не всегда приводит к отказу, а отказ не всегда вызван дефектом в коде.
Принципы, из которых самые практичные:
- тестирование показывает наличие дефектов, но не доказывает их отсутствие;
- исчерпывающее тестирование невозможно, поэтому нужны техники выбора;
- раннее тестирование дешевле: правка требования стоит копейки, правка в проде дорого;
- скопление дефектов: они группируются в определённых модулях, и это подсказывает, где искать;
- парадокс пестицида: одни и те же тесты перестают находить новое, набор нужно обновлять.
Уровни: модульный, интеграционный, системный, приёмочный.
Виды: функциональное и нефункциональное, а также проверка после изменений и повторная проверка исправления.
Техники проектирования тестов, и это самая полезная часть:
- классы эквивалентности: вместо всех значений берём по одному представителю из группы;
- граничные значения: большинство дефектов на границах, поэтому проверяем границу и соседние значения;
- таблицы решений для комбинаций условий;
- диаграммы состояний и переходов для сценариев со статусами;
- попарное тестирование для сокращения числа комбинаций;
- исследовательское тестирование и предугадывание ошибок на основе опыта.
Ценность теории именно в техниках: они превращают вопрос «что проверить» из интуиции в процедуру и дают обоснование, почему выбраны именно эти проверки. Отдельно стоит помнить про статическое тестирование, то есть ревью требований и кода: там дефекты ловятся ещё до запуска.
Где спотыкаются
Перечисляют определения, не применяя техники на практике.
Не знают про классы эквивалентности и проверяют случайные значения.
Считают, что полное покрытие достижимо.
Годами гоняют один и тот же набор и не находят нового.