1. Введение в QA: основные понятия, принципы тестирования и роль инженера по качеству
Введение в QA: основные понятия, принципы тестирования и роль инженера по качеству
Добро пожаловать на курс «Основы QA тестирования»! Если вы читаете эту статью, значит, вы решили освоить одну из самых востребованных и интересных профессий в IT. Многие считают, что работа тестировщика заключается лишь в том, чтобы «ломать» программы и искать ошибки. Но так ли это на самом деле?
В этой вводной лекции мы разберем фундамент, на котором строится вся индустрия обеспечения качества. Мы узнаем, чем QA отличается от тестирования, почему невозможно найти все баги и какова истинная роль инженера по качеству в современной разработке ПО.
Что такое качество и почему оно важно?
Прежде чем говорить о тестировании, нужно понять, что такое качество. В контексте программного обеспечения качество — это степень, в которой система, компонент или процесс удовлетворяют заданным требованиям и ожиданиям пользователя/заказчика.
Представьте, что вы купили новый смартфон. Он красивый, мощный, но каждый раз, когда вы пытаетесь позвонить, приложение «Телефон» закрывается. Качественный ли это продукт? Очевидно, нет. Даже если камера снимает идеально, основная функция не работает.
Ошибки в ПО могут стоить очень дорого. Это не только потеря денег или репутации компании, но иногда и угроза человеческим жизням (как в медицине или авиастроении). Именно поэтому существует целая отрасль, призванная предотвращать подобные ситуации.
QA, QC и Testing: разбираемся в терминах
Новички часто используют термины QA (Quality Assurance), QC (Quality Control) и Тестирование как синонимы. Однако это три разных понятия, вложенных друг в друга, как матрешка.
!Схема, показывающая иерархию понятий: Тестирование является частью QC, а QC является частью QA.
Давайте разберем каждый уровень подробнее:
1. Quality Assurance (QA) — Обеспечение качества
Это процесс, направленный на предотвращение дефектов. QA охватывает весь цикл разработки ПО. Это набор активностей, которые гарантируют, что процессы разработки и тестирования выстроены правильно.* Цель: Улучшить процессы, чтобы баги не появлялись вовсе. * Пример: Написание стандартов кодирования, проведение аудитов, обучение сотрудников, выбор инструментов разработки.
2. Quality Control (QC) — Контроль качества
Это набор действий, направленных на проверку готовности продукта и его соответствие требованиям. QC фокусируется на поиске дефектов в уже созданном (или частично созданном) продукте.* Цель: Найти дефекты до того, как продукт попадет к пользователю. * Пример: Проверка кода (Code Review), запуск тестов, анализ результатов тестирования.
3. Testing — Тестирование
Это непосредственное исполнение проверок. Это процесс исследования ПО с целью получения информации о его качестве.* Цель: Обнаружить конкретные ошибки и сбои. * Пример: Нажатие кнопок в приложении, ввод данных в формы, проверка API запросов.
Для наглядности сравним их в таблице:
| Характеристика | QA (Обеспечение качества) | QC (Контроль качества) | Testing (Тестирование) | | :--- | :--- | :--- | :--- | | Фокус | Процесс | Продукт | Исполнение | | Вопрос | «Как мы делаем продукт?» | «Что мы сделали?» | «Работает ли это?» | | Характер | Превентивный (предотвращение) | Корректирующий (обнаружение) | Исследовательский | | Активность | Планирование, улучшение процессов | Проверка соответствия требованиям | Поиск багов |
Семь принципов тестирования
Международная организация ISTQB (International Software Testing Qualifications Board) выделяет 7 фундаментальных принципов, которые должен знать каждый тестировщик. Это «заповеди» нашей профессии.
1. Тестирование демонстрирует наличие дефектов
Тестирование может показать, что дефекты есть, но не может доказать, что их нет. Даже если вы провели тысячи тестов и все они прошли успешно, это не гарантирует 100% отсутствия ошибок. Это лишь снижает вероятность их наличия.2. Исчерпывающее тестирование невозможно
Проверить все возможные комбинации входных данных, сценариев и условий невозможно (за исключением простейших случаев). Вместо того чтобы пытаться проверить «всё», мы используем анализ рисков и приоритеты, чтобы сфокусироваться на самом важном.> Представьте калькулятор. Попытка проверить сложение всех возможных чисел займет вечность. Мы проверяем граничные значения и типичные классы данных.
3. Раннее тестирование
Чем раньше мы начнем тестировать, тем дешевле исправить ошибку. Ошибка, найденная на этапе требований (в документации), стоит копейки — нужно просто переписать текст. Ошибка, найденная пользователем в продакшене, может стоить миллионы.!График, демонстрирующий, что исправление бага на этапе требований стоит 1000.
4. Скопление дефектов (Defect Clustering)
Этот принцип часто связывают с принципом Парето: примерно 80% всех проблем содержатся в 20% модулей. Обычно ошибки любят «кучковаться». Если вы нашли баг в одном модуле, велика вероятность, что рядом есть еще.5. Парадокс пестицида
Если прогонять одни и те же тесты снова и снова, рано или поздно они перестанут находить новые дефекты. Программа меняется, а тесты — нет. Как насекомые вырабатывают иммунитет к пестицидам, так и ПО «привыкает» к старым тестам. Тест-кейсы нужно регулярно обновлять и дополнять.6. Тестирование зависит от контекста
Тестирование банковского приложения для транзакций кардинально отличается от тестирования мобильной игры. В первом случае критична безопасность и точность расчетов, во втором — производительность и графика. Нельзя применять одни и те же подходы везде.7. Заблуждение об отсутствии ошибок
Отсутствие багов не гарантирует успешность продукта. Вы можете создать идеально работающее приложение, в котором нет ни одной технической ошибки, но оно будет неудобным или просто ненужным пользователю. Качество — это не только «без багов», но и «соответствие ожиданиям».Кто такой QA инженер и какова его роль?
Инженер по обеспечению качества (QA Engineer) — это не просто «охотник за багами». Это полноценный участник команды разработки, который влияет на продукт с момента зарождения идеи до выпуска.
Основные задачи QA инженера:
Важные навыки (Hard & Soft Skills)
Для успешной работы недостаточно знать теорию. Вот что ценится в специалистах:
* Внимательность к деталям: Умение замечать мелочи, которые другие пропускают. * Критическое мышление: Способность ставить под сомнение утверждения («А что, если пользователь нажмет сюда?»). * Умение четко формулировать мысли: Баг-репорт должен быть понятен разработчику без дополнительных вопросов. * Технический бэкграунд: Понимание того, как работает веб, базы данных и API (этому мы научимся в следующих статьях).
Жизненный цикл бага
Когда QA инженер находит ошибку, работа только начинается. Баг должен пройти определенный путь:
Заключение
QA тестирование — это искусство баланса. Баланса между скоростью и качеством, между желанием проверить всё и реальными сроками. Инженер по качеству — это адвокат пользователя внутри команды разработки. Ваша задача — сделать так, чтобы конечный продукт приносил радость, а не разочарование.
В следующей статье мы погрузимся в виды и уровни тестирования, узнаем, чем «черный ящик» отличается от «белого», и разберем пирамиду тестирования.