Мы разобрались с ошибкой, дефектом и отказом, с верификацией и валидацией, с местом тестирования среди QA и QC. За десятилетия практики тестирования у всей отрасли сложились ещё и несколько устойчивых наблюдений — не абстрактная теория, а типичные грабли, на которые наступали уже тысячи команд до нас. Их называют семью принципами тестирования, и они помогают не наступать на те же грабли снова.
Чему научишься за этот урок:
— назвать и объяснить своими словами семь принципов тестирования;
— опознать, какой именно принцип нарушает спорное утверждение;
— применить принцип, чтобы аргументированно возразить в спорной ситуации.
Семь принципов
- Тестирование показывает наличие дефектов, а не их отсутствие. Если тестировщик несколько раз прогнал сценарий и ничего не нашёл, это не доказывает, что дефектов в программе нет вообще, — возможно, просто не наткнулись на подходящую ситуацию.
- Исчерпывающее тестирование невозможно. Проверить вообще все комбинации входных данных за разумное время нельзя — их слишком много. Поэтому важно уметь осмысленно выбирать, что именно проверять в первую очередь; специальным приёмам такого выбора вы научитесь позже в курсе.
- Раннее тестирование экономит время и деньги. Чем раньше в разработке нашли проблему, тем дешевле её исправить — эта тема заслуживает отдельного большого разговора, и мы вернёмся к ней позже в курсе.
- Дефекты скапливаются в определённых местах. В большинстве продуктов небольшая часть модулей даёт большинство всех найденных дефектов — тот же эффект, что и в известном правиле «20% причин дают 80% последствий», только применительно к багам.
- Эффект пестицида. Если раз за разом гонять одни и те же тесты без изменений, они постепенно перестают находить новые дефекты — тесты как будто «привыкают» к программе, точно так же, как вредители со временем привыкают к одному и тому же пестициду. Тесты нужно регулярно пересматривать и обновлять.
- Тестирование зависит от контекста. Банковское приложение и лендинг-визитку компании нельзя тестировать одинаково: разный масштаб последствий ошибки требует разной глубины и разных подходов к проверке.
- Заблуждение об отсутствии ошибок. Даже если программа отработала весь цикл проверки без единого найденного дефекта, это не гарантирует успех — она может просто не решать ту задачу, которая реально нужна пользователю (вспомните валидацию из прошлого урока).
7 ПРИНЦИПОВ ТЕСТИРОВАНИЯ: 1. Наличие, не отсутствие -> нашли дефект - есть; не нашли - не значит, что нет 2. Не исчерпать всё -> все комбинации входных данных не проверить 3. Раньше - дешевле -> найти проблему пораньше выгоднее 4. Дефекты кучкуются -> 20% модулей дают 80% багов 5. Эффект пестицида -> старые тесты "привыкают", их надо обновлять 6. Зависит от контекста -> банк и лендинг тестируют по-разному 7. Ошибок нет - не "успех" -> нужна ещё и валидация из прошлого урока
Практика на полигоне
Коллега в общем чате команды предлагает: «Давайте протестируем вообще все возможные комбинации перед каждым релизом нашего полигона, чтобы дефектов точно не было». На первый взгляд звучит основательно и ответственно, но это утверждение спотыкается сразу о два из семи принципов выше — разберём, о какие именно.
Итог:
— семь принципов — это не абстрактная теория, а типичные грабли, замеченные многолетней практикой тестирования;
— в частности: тестирование не доказывает отсутствие дефектов, и исчерпывающе протестировать всё невозможно;
— в спорных заявлениях в духе «протестируем вообще всё» полезно сверяться именно с этими принципами.
Контрольный вопрос. Принцип «тестирование показывает наличие дефектов, а не их отсутствие» означает, что:
Подсказка: Отсутствие находок — это не то же самое, что доказанное отсутствие проблем.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Почему исчерпывающее тестирование (проверка вообще всех возможных комбинаций входных данных) невозможно на практике?
Подсказка: Дело в количестве вариантов, а не в правилах компании или технических ограничениях языка.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Что говорит принцип «дефекты скапливаются в определённых местах»?
Подсказка: Вспомни сравнение с правилом «20% причин дают 80% последствий» из этого же урока.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. В чём суть «эффекта пестицида» применительно к тестированию?
Подсказка: Вспомни сравнение с вредителями, которые со временем привыкают к одному и тому же средству.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Какие утверждения про принцип «тестирование зависит от контекста» верны (выбери все подходящие)?
Выберите все верные варианты.
Подсказка: Подумай, одинаковы ли последствия ошибки в банковском приложении и на лендинге-визитке.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Если дефект нашли ещё на этапе написания кода, а не после того, как продукт увидели тысячи реальных пользователей, — как это сказывается на затратах компании на исправление? Ответь одним словом.
Подсказка: Вспомни урок 1.1 про цену пропущенного дефекта — там его нашли уже после выпуска.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Модуль записи на курс на нашем полигоне отработал весь цикл проверки без единого найденного дефекта. Как называется проверка из прошлого урока, без которой нельзя быть уверенным, что модуль решает задачу пользователя? Ответь одним словом.
Подсказка: Отсутствие найденных дефектов — это не то же самое, что польза для пользователя: вспомни, как в прошлом уроке называлась проверка именно этой пользы.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Коллега предлагает: «Давайте протестируем вообще все возможные комбинации перед каждым релизом, чтобы дефектов точно не было». Какие минимум два из семи принципов нарушает это утверждение (выбери все подходящие)?
Выберите все верные варианты.
Подсказка: Утверждение обещает сразу и полный перебор всех вариантов, и гарантию нулевых дефектов — это два разных обещания.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Задание. Объясните в 2-3 предложениях, почему проверка всех возможных комбинаций входных данных не гарантирует «дефектов точно не будет», и что разумнее делать вместо погони за исчерпывающим перебором (без указания точного числа тестов).
Критерий приёмки: принято, если объяснено, что а) полный перебор физически не успеть провести за разумное время, и б) даже успешный прогон найденных тестов не доказывает полное отсутствие дефектов — вместо этого предложено осознанно выбирать, что проверять в первую очередь (например, ориентируясь на то, где чаще всего находятся дефекты).
Подсказка: Подумай отдельно про размер перебора и отдельно про то, что доказывает, а что не доказывает успешный прогон тестов.
✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.
Онлайн-проверка ответа появится позже
Задание. За последние 10 найденных на нашем полигоне дефектов восемь были там, где студент вводит данные карты и подтверждает покупку курса, и только два — во всех остальных местах платформы вместе взятых. Перед следующим релизом время тестировщика ограничено. Судя по одному из семи принципов, в какой модуль в первую очередь стоит вложить ограниченное время тестирования? Ответь одним словом.
Подсказка: Вспомни принцип про то, что дефекты не распределяются по программе равномерно.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Контрольный вопрос. Как точнее всего охарактеризовать семь принципов тестирования?
Подсказка: Подумай, откуда вообще взялись эти семь пунктов — из теоретических рассуждений или из практики многих команд.
Проверить ответ →
Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →
Что дальше
Мы разобрали семь принципов, которые задают общие рамки для всей дальнейшей работы. Но тестирование — это не одно действие «нажал и посмотрел», а последовательность связанных активностей, каждая из которых оставляет свой собственный результат. Как устроена эта последовательность и что остаётся после каждого её шага — тема следующего урока.
