Семь принципов тестирования

Мы разобрались с ошибкой, дефектом и отказом, с верификацией и валидацией, с местом тестирования среди QA и QC. За десятилетия практики тестирования у всей отрасли сложились ещё и несколько устойчивых наблюдений — не абстрактная теория, а типичные грабли, на которые наступали уже тысячи команд до нас. Их называют семью принципами тестирования, и они помогают не наступать на те же грабли снова.

Чему научишься за этот урок:
— назвать и объяснить своими словами семь принципов тестирования;
— опознать, какой именно принцип нарушает спорное утверждение;
— применить принцип, чтобы аргументированно возразить в спорной ситуации.

Семь принципов

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

  1. Наличие, не отсутствие  -> нашли дефект - есть; не нашли - не значит, что нет
  2. Не исчерпать всё        -> все комбинации входных данных не проверить
  3. Раньше - дешевле        -> найти проблему пораньше выгоднее
  4. Дефекты кучкуются       -> 20% модулей дают 80% багов
  5. Эффект пестицида        -> старые тесты "привыкают", их надо обновлять
  6. Зависит от контекста    -> банк и лендинг тестируют по-разному
  7. Ошибок нет - не "успех" -> нужна ещё и валидация из прошлого урока

Практика на полигоне

Коллега в общем чате команды предлагает: «Давайте протестируем вообще все возможные комбинации перед каждым релизом нашего полигона, чтобы дефектов точно не было». На первый взгляд звучит основательно и ответственно, но это утверждение спотыкается сразу о два из семи принципов выше — разберём, о какие именно.

Итог:
— семь принципов — это не абстрактная теория, а типичные грабли, замеченные многолетней практикой тестирования;
— в частности: тестирование не доказывает отсутствие дефектов, и исчерпывающе протестировать всё невозможно;
— в спорных заявлениях в духе «протестируем вообще всё» полезно сверяться именно с этими принципами.

Контрольный вопрос. Принцип «тестирование показывает наличие дефектов, а не их отсутствие» означает, что:

АДаже если тестировщик ничего не нашёл, это не доказывает, что дефектов в программе нет
БЕсли тестирование ничего не нашло, дефектов в программе точно нет
ВТестирование обязательно находит абсолютно все дефекты в программе

Подсказка: Отсутствие находок — это не то же самое, что доказанное отсутствие проблем.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Почему исчерпывающее тестирование (проверка вообще всех возможных комбинаций входных данных) невозможно на практике?

АКоличество возможных комбинаций слишком велико, чтобы проверить их все за разумное время
БЭто технически невозможно из-за ограничений языков программирования
ВЭто запрещено внутренними стандартами большинства компаний

Подсказка: Дело в количестве вариантов, а не в правилах компании или технических ограничениях языка.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Что говорит принцип «дефекты скапливаются в определённых местах»?

АНебольшая часть модулей программы обычно даёт большинство всех найденных дефектов
БДефекты равномерно распределены по всем модулям программы
ВДефекты появляются только в самых новых модулях программы

Подсказка: Вспомни сравнение с правилом «20% причин дают 80% последствий» из этого же урока.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. В чём суть «эффекта пестицида» применительно к тестированию?

АЕсли повторять одни и те же тесты без изменений, они со временем перестают находить новые дефекты
БТесты становятся более эффективными с каждым повторным прогоном
ВОдни и те же тесты нужно вообще перестать запускать после первого успешного прогона

Подсказка: Вспомни сравнение с вредителями, которые со временем привыкают к одному и тому же средству.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Какие утверждения про принцип «тестирование зависит от контекста» верны (выбери все подходящие)?

Выберите все верные варианты.

АБанковское приложение и лендинг-визитку разумно тестировать по-разному
БГлубина и подход к тестированию зависят от того, что именно тестируется
ВВсе продукты нужно тестировать одинаково глубоко, независимо от их назначения
ГКонтекст никак не влияет на выбор того, что и как проверять

Подсказка: Подумай, одинаковы ли последствия ошибки в банковском приложении и на лендинге-визитке.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. Если дефект нашли ещё на этапе написания кода, а не после того, как продукт увидели тысячи реальных пользователей, — как это сказывается на затратах компании на исправление? Ответь одним словом.

Подсказка: Вспомни урок 1.1 про цену пропущенного дефекта — там его нашли уже после выпуска.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. Модуль записи на курс на нашем полигоне отработал весь цикл проверки без единого найденного дефекта. Как называется проверка из прошлого урока, без которой нельзя быть уверенным, что модуль решает задачу пользователя? Ответь одним словом.

Подсказка: Отсутствие найденных дефектов — это не то же самое, что польза для пользователя: вспомни, как в прошлом уроке называлась проверка именно этой пользы.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Коллега предлагает: «Давайте протестируем вообще все возможные комбинации перед каждым релизом, чтобы дефектов точно не было». Какие минимум два из семи принципов нарушает это утверждение (выбери все подходящие)?

Выберите все верные варианты.

АТестирование показывает наличие дефектов, а не их отсутствие
БИсчерпывающее тестирование невозможно
ВДефекты скапливаются в определённых местах
ГТестирование зависит от контекста

Подсказка: Утверждение обещает сразу и полный перебор всех вариантов, и гарантию нулевых дефектов — это два разных обещания.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Задание. Объясните в 2-3 предложениях, почему проверка всех возможных комбинаций входных данных не гарантирует «дефектов точно не будет», и что разумнее делать вместо погони за исчерпывающим перебором (без указания точного числа тестов).

Критерий приёмки: принято, если объяснено, что а) полный перебор физически не успеть провести за разумное время, и б) даже успешный прогон найденных тестов не доказывает полное отсутствие дефектов — вместо этого предложено осознанно выбирать, что проверять в первую очередь (например, ориентируясь на то, где чаще всего находятся дефекты).

Подсказка: Подумай отдельно про размер перебора и отдельно про то, что доказывает, а что не доказывает успешный прогон тестов.

✅ Готово, если: ответ раскрывает то, что просит критерий приёмки в задании выше.

Онлайн-проверка ответа появится позже

Задание. За последние 10 найденных на нашем полигоне дефектов восемь были там, где студент вводит данные карты и подтверждает покупку курса, и только два — во всех остальных местах платформы вместе взятых. Перед следующим релизом время тестировщика ограничено. Судя по одному из семи принципов, в какой модуль в первую очередь стоит вложить ограниченное время тестирования? Ответь одним словом.

Подсказка: Вспомни принцип про то, что дефекты не распределяются по программе равномерно.

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Контрольный вопрос. Как точнее всего охарактеризовать семь принципов тестирования?

АПрактические ограничения и типичные ловушки, выявленные многолетней практикой тестирования
БОбязательный государственный стандарт, одинаковый для всех стран
ВАбстрактная теория, не имеющая отношения к повседневной работе тестировщика

Подсказка: Подумай, откуда вообще взялись эти семь пунктов — из теоретических рассуждений или из практики многих команд.

Проверить ответ →

Реальная проверка — на нашей платформе, бесплатно и без регистрации. Открыть задачу и ввести ответ →

Что дальше

Мы разобрали семь принципов, которые задают общие рамки для всей дальнейшей работы. Но тестирование — это не одно действие «нажал и посмотрел», а последовательность связанных активностей, каждая из которых оставляет свой собственный результат. Как устроена эта последовательность и что остаётся после каждого её шага — тема следующего урока.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева