Тестирование это проверка продукта, чтобы понять, насколько он соответствует требованиям и ожиданиям пользователей, и найти дефекты раньше клиентов. Но на собеседовании ждут, что ты видишь цель шире «искать баги»: тестирование даёт команде информацию о качестве, по которой бизнес решает, выпускать ли релиз.
QA, QC и тестирование
Три термина часто путают, а на собесе их любят спрашивать первыми.
- QA (quality assurance, обеспечение качества) смотрит на процесс: договорённости, ревью требований, стандарты, обучение. Цель: чтобы дефекты вообще не появлялись.
- QC (quality control, контроль качества) смотрит на продукт: проверяет, соответствует ли он требованиям.
- Тестирование основная часть QC: запуск продукта или проверка артефактов, чтобы найти дефекты.
Вложенность такая: тестирование входит в QC, QC входит в QA. В вакансиях «QA-инженером» называют любого тестировщика, но разницу знать надо.
Ошибка, дефект, сбой
Цепочка из трёх слов:
- Ошибка (error, mistake): действие человека. Разработчик перепутал
>и>=. - Дефект (defect, bug, fault): результат ошибки в артефакте. Неверное условие в коде, противоречие в требованиях.
- Сбой (failure): наблюдаемое отклонение при работе. Клиент с суммой ровно 5000 ₽ не получил скидку.
Дефект может годами не приводить к сбою, если до него не доходят данные. А сбой не обязательно падение: неверная сумма тоже сбой.
Верификация и валидация
- Верификация: «делаем продукт правильно?» Соответствует ли он требованиям и спецификации.
- Валидация: «делаем правильный продукт?» Решает ли он задачу пользователя.
Можно идеально выполнить требования и сделать продукт, который никому не нужен. Верификация пройдена, валидация нет.
Статическое и динамическое тестирование
Статическое проверяет без запуска кода: ревью требований и макетов, ревью кода, линтеры. Динамическое запускает программу. Статическое дешевле и находит дефекты раньше: ошибку в требовании исправляют правкой текста, а не кода.
Семь принципов тестирования
Классика из программы ISTQB, их почти всегда просят перечислить.
- Тестирование показывает наличие дефектов, а не их отсутствие. Ноль найденных багов не доказывает, что их нет.
- Исчерпывающее тестирование невозможно. Комбинаций ввода, состояний и окружений слишком много, поэтому тесты выбирают по рискам и техникам тест-дизайна.
- Раннее тестирование экономит время и деньги. Чем позже найден дефект, тем дороже его исправить.
- Дефекты скапливаются. Небольшое число модулей содержит большую часть дефектов. Туда и стоит направлять усилия.
- Тесты изнашиваются (парадокс пестицида). Одни и те же тесты со временем перестают находить новые дефекты, их нужно обновлять.
- Тестирование зависит от контекста. Банковское приложение и мобильную игру тестируют по-разному.
- Заблуждение об отсутствии ошибок. Продукт без дефектов может не решать задачу пользователей.
Пример, который удобно рассказать: «В прошлом релизе 70% дефектов нашли в модуле тарифов. По принципу скопления дефектов в этом релизе я начну регрессию с тарифов и проверю его глубже».
Зачем компании тестирование
- Информация для решения о релизе.
- Снижение рисков: денег, репутации, юридических.
- Предотвращение дефектов: ревью требований до разработки.
- Подтверждение соответствия договору или требованиям регулятора.
Частые ошибки на собеседовании
- Говорить, что цель тестирования «найти все баги». Все найти невозможно (принцип 2), а цель шире.
- Путать QA и тестирование или называть QC «процессом».
- Перечислять принципы без примеров. Один живой пример из опыта ценится выше точной формулировки.
- Считать, что тестирование начинается, когда разработчик отдал сборку. Начинается с требований.
Что спросят на собесе
- Что такое тестирование и зачем оно нужно?
- Чем отличаются QA, QC и тестирование?
- Ошибка, дефект и сбой: в чём разница?
- Перечисли принципы тестирования и приведи пример любого из них.
- Чем верификация отличается от валидации?