Раздел 01 — Тестирование и качество ПО

Что именно ищет тестировщик и почему «всё проверить» невозможно

Прогресс курса Раздел 1 из 12

Что вы освоите в этом разделе

4 академических часа: 2 теории, 2 практики. Для практики нужен запущенный «Задачник» — инструкция в приложении А1.
01

Ошибка, дефект, отказ

В разговоре всё называют «багом», но в работе различают три вещи — у каждой своя причина и свой способ найти.

ТерминЧто этоПример: скидка в интернет-магазине
Ошибка (error)Действие человека: неверно понял, опечатался, забыл случайАналитик написал «скидка 10% от 5000 ₽», программист понял как «больше 5000»
Дефект (defect, bug)Результат ошибки в коде, требованиях или документацииВ коде условие sum > 5000 вместо sum >= 5000
Отказ (failure)Видимое поведение, которое расходится с ожидаемымПокупатель с корзиной ровно на 5000 ₽ не получает скидку и пишет в поддержку

Дефект может годами не проявляться отказом: если никто не набирает корзину ровно на 5000 ₽, программа «работает». Тестировщик не ждёт случайного покупателя, а сам создаёт условия, при которых дефект превращается в отказ. Поэтому тестирование — это поиск таких условий, а не «потыкать и посмотреть».

02

Что такое качество

Качество — степень, в которой программа соответствует требованиям и ожиданиям пользователей. «Программа плохая» — не описание качества; «список задач открывается 8 секунд при 50 задачах» — описание. Чтобы говорить конкретно, используют характеристики из стандарта ГОСТ Р ИСО/МЭК 25010 (международный ISO/IEC 25010).

ХарактеристикаВопрос тестировщика
Функциональная пригодностьДелает ли программа то, что требуется, и правильно ли?
ПроизводительностьСколько времени и ресурсов уходит на операцию?
СовместимостьРаботает ли в нужных браузерах и рядом с другими программами?
Удобство использованияПонятно ли без инструкции, есть ли подписи и подсказки, доступно ли людям с ограничениями зрения?
НадёжностьЧто происходит при сбое, теряются ли данные?
ЗащищённостьВидит ли пользователь только своё, хранятся ли пароли безопасно?
СопровождаемостьЛегко ли исправить и изменить код?
ПереносимостьЗапускается ли на другой ОС, легко ли установить?

Ручное тестирование в этом курсе в основном проверяет первые шесть. Сопровождаемость и переносимость оценивают разработчики и администраторы.

03

Зачем тестировать и почему раньше дешевле

Тестирование даёт команде сведения о качестве: какие дефекты есть, насколько они серьёзны, можно ли выпускать версию. Решение «выпускать или нет» принимает не тестировщик, а руководитель продукта, — но на основании того, что нашёл тестировщик.

Цена исправления растёт с каждым этапом. Проследим один дефект — неоднозначное требование «скидка от 5000 ₽»:

Поэтому тестирование начинается не с готовой программы, а с требований — этому посвящён раздел 03.

04

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

Принципы собраны международной программой ISTQB (в России её экзамены принимает RSTQB). Это не правила оформления, а наблюдения, которые помогают принимать решения.

Принципы и что из них следует

  • 1. Тестирование показывает наличие дефектов, а не их отсутствие. «Мы ничего не нашли» значит «не нашли этими проверками». Поэтому в отчёте пишут, что проверено, а не «ошибок нет».
  • 2. Исчерпывающее тестирование невозможно. Поле названия длиной до 100 символов даже из одних русских букв допускает больше 33100 ≈ 10151 вариантов. Проверяют не всё, а представителей групп — этому учит тест-дизайн (разделы 05–06).
  • 3. Раннее тестирование экономит время и деньги. См. пример со скидкой выше.
  • 4. Дефекты скапливаются. Обычно большая часть дефектов сидит в немногих модулях — самых сложных или самых часто меняемых. Нашли два дефекта в фильтре — проверьте фильтр глубже.
  • 5. Парадокс пестицида. Одни и те же проверки со временем перестают находить новое. Набор тестов нужно пересматривать и дополнять.
  • 6. Тестирование зависит от контекста. Банковское приложение и учебный «Задачник» тестируют с разной глубиной: цена отказа разная.
  • 7. Заблуждение об отсутствии ошибок. Программа без дефектов бесполезна, если делает не то, что нужно пользователю. Проверяют и соответствие требованиям, и смысл требований.
05

QA, QC и тестирование

Три понятия вложены друг в друга. Вакансия «QA-инженер» на практике часто означает тестировщика, но разница пригодится, когда речь пойдёт о процессе (раздел 11).

ПонятиеНа что направленоПример
Обеспечение качества (QA, quality assurance)Процесс: чтобы дефекты не появлялисьПравило «каждое изменение кода смотрит второй программист», шаблон требований с критериями приёмки
Контроль качества (QC, quality control)Продукт: соответствует ли он требованиямРешение «версию 1.1 выпускаем: критических дефектов нет»
Тестирование (testing)Конкретные проверкиПрогон 40 тест-кейсов, 5 баг-репортов
06

Где тестирование в разработке

Жизненный цикл программы — требования, проектирование, разработка, тестирование, выпуск, сопровождение. В каскадной модели этапы идут друг за другом, и тестирование стоит в конце. В гибких подходах (Scrum, Kanban) работа идёт короткими итерациями по 1–4 недели, и тестирование есть в каждой: задача не считается сделанной, пока не проверена.

ЭтапЧто делает тестировщик
ТребованияЧитает, задаёт вопросы, ищет противоречия (раздел 03)
Проектирование и разработкаПишет чек-листы и тест-кейсы, готовит тестовые данные (разделы 04–06)
ТестированиеПроверяет интерфейс, API, данные; оформляет дефекты (разделы 07–10)
Перед выпускомРегресс, тест-отчёт, рекомендация «выпускать или нет» (раздел 11)
СопровождениеВоспроизводит дефекты из обращений пользователей

Рядом с тестировщиком работают аналитик (пишет требования), разработчик (пишет и исправляет код, пишет модульные тесты), руководитель продукта (решает, что и когда выпускать). Хороший баг-репорт пишется так, чтобы каждый из них понял его без устных пояснений.

07

Первый проход: исследовательское тестирование

Исследовательское тестирование — изучение программы без заранее написанных шагов: тестировщик одновременно узнаёт программу, придумывает проверки и выполняет их. Оно хорошо подходит для первого знакомства и находит дефекты, о которых никто не подумал. Чтобы проход не превратился в хаотичные щелчки, ему задают рамки:

Наблюдение — не обязательно дефект. Это всё, что удивило или вызвало вопрос. Запись должна позволять повторить: что сделали, на каких данных, что ожидали, что получили. Пример записи о вымышленном интернет-магазине:

№Что сделалОжидалПолучилВопрос или дефект?
1Положил в корзину товары на 5000 ₽ ровноСкидку 10% («скидка от 5000 ₽»)Скидки нет, итог 5000 ₽Дефект или «от» значит «больше»? — уточнить требование
2Ввёл в поле количества «-1»Сообщение об ошибкеКоличество стало 1 без сообщенияВопрос: так задумано?
3Обновил страницу корзиныТовары на местеТовары на месте— (записано, что проверено)

Строка 3 тоже нужна: по ней видно, что проверено и не дало отказа. Такие записи потом станут чек-листом (раздел 04).

Перед проходом выполните py tasker.py --reset (в Linux — python3 tasker.py --reset): тогда ваши наблюдения можно сравнить с наблюдениями одногруппников — у всех одинаковые исходные данные.

Ключевые выводы раздела

Запомните главное

  • Ошибка — действие человека, дефект — её след в продукте, отказ — видимое неправильное поведение
  • Качество описывают характеристиками и фактами, а не оценками
  • Тестирование даёт сведения для решения о выпуске; чем раньше найден дефект, тем дешевле
  • Всё проверить невозможно — поэтому проверки выбирают техниками тест-дизайна
  • QA — про процесс, QC — про продукт, тестирование — про конкретные проверки
  • Исследовательский проход ограничивают целью и временем, а наблюдения записывают так, чтобы их можно было повторить
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Все разделы Раздел 02: Виды и уровни тестирования