1. Введение в тестирование ПО: основные понятия, цели и жизненный цикл разработки (SDLC)
Введение в тестирование ПО: основные понятия, цели и жизненный цикл разработки (SDLC)
Добро пожаловать в мир обеспечения качества! Если вы читаете эту статью, значит, вы решили освоить профессию QA-инженера (Quality Assurance Engineer). Существует распространенный миф, что работа тестировщика заключается лишь в том, чтобы хаотично нажимать на кнопки и ломать программы. На самом деле, это структурированный, инженерный и творческий процесс, цель которого — сделать продукт лучше, надежнее и удобнее для пользователя.
В этой первой статье курса мы заложим фундамент ваших знаний: разберемся, чем QA отличается от тестирования, изучим жизненный цикл разработки программного обеспечения (SDLC) и поймем, почему находить ошибки на ранних этапах выгоднее для бизнеса.
Что такое тестирование и зачем оно нужно?
Тестирование программного обеспечения — это процесс исследования программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определенным образом.
Простыми словами, мы сравниваем то, как программа работает, с тем, как она должна работать согласно требованиям.
Основные цели тестирования
> Качество — это не действие, а привычка. (Аристотель)
QA, QC и Тестирование: в чем разница?
Новички часто путают понятия QA, QC и Testing. Давайте разберем их иерархию, так как это один из самых популярных вопросов на собеседованиях.
!Схема, показывающая вложенность понятий: Тестирование является частью QC, а QC является частью QA.
1. Quality Assurance (QA) — Обеспечение качества
Это процесс, направленный на предотвращение дефектов. QA охватывает весь цикл разработки. Это набор активностей, гарантирующих, что процессы разработки и тестирования выстроены правильно. * Пример: Внедрение стандартов кодирования, проведение ревью документации, выбор методологии разработки.2. Quality Control (QC) — Контроль качества
Это продукт-ориентированная деятельность. Цель QC — проверить, соответствует ли готовый продукт требованиям качества. Это поиск дефектов в уже созданном (или частично созданном) продукте. * Пример: Проверка готовой сборки приложения перед релизом.3. Testing — Тестирование
Это непосредственное исполнение тестов. Это часть QC, которая отвечает за фактическую проверку системы. * Пример: Ручной запуск программы, ввод данных в форму логина и проверка, что вход выполнен успешно.Краткий итог: * QA создает процессы, чтобы ошибки не появлялись. * QC проверяет продукт, чтобы найти пропущенные ошибки. * Testing — это инструмент в руках QC.
Основные термины: Ошибка, Дефект, Сбой
В разговорной речи мы часто говорим «баг» или «глюк», но профессионал должен различать нюансы терминологии ISTQB (International Software Testing Qualifications Board).
Цепочка выглядит так: Человек совершает ошибку -> В коде появляется дефект -> При использовании происходит сбой.
Жизненный цикл разработки ПО (SDLC)
Чтобы понять, когда и как нужно тестировать, необходимо знать, как вообще создаются программы. Этот процесс называется Software Development Life Cycle (SDLC).
!Классическая схема жизненного цикла разработки программного обеспечения.
Рассмотрим каждый этап и роль QA-инженера на нем:
1. Сбор и анализ требований (Requirement Analysis)
На этом этапе заказчик рассказывает, что он хочет получить. Аналитики превращают эти желания в техническую документацию (спецификации). * Роль QA: Тестирование требований. Мы проверяем их на полноту, непротиворечивость и однозначность. Найти ошибку здесь — дешевле всего.2. Дизайн и проектирование (Design)
Архитекторы и дизайнеры решают, как система будет выглядеть и работать изнутри (базы данных, интерфейсы, API). Роль QA: Создание тест-плана, определение стратегии тестирования. Мы решаем, как* будем тестировать то, что еще не написано.3. Разработка (Implementation / Coding)
Программисты пишут код. * Роль QA: Написание тестовой документации (тест-кейсов, чек-листов). Иногда — начало модульного тестирования (если это не делают разработчики).4. Тестирование (Testing)
Самый активный этап для нас. Код передается тестировщикам. * Роль QA: Выполнение тестов, поиск багов, заведение отчетов о дефектах (баг-репортов), проверка исправлений (ретест).5. Развертывание и поддержка (Deployment & Maintenance)
Продукт выходит на рынок (продакшн). Пользователи начинают с ним работать. * Роль QA: Смоук-тестирование (быстрая проверка) на боевом сервере, анализ отзывов пользователей, тестирование обновлений и патчей.Стоимость исправления ошибки
Один из фундаментальных принципов тестирования гласит: чем позже найдена ошибка, тем дороже ее исправить.
Представьте, что ошибка была допущена в требованиях (аналитик написал «кнопка должна быть красной», а заказчик хотел синюю).
* Если QA найдет это на этапе требований: Аналитик просто перепишет одно предложение в Word. Цена: 1. * Если ошибку найдут на этапе разработки: Программист уже написал код для красной кнопки. Ему нужно переписывать код и стили. Цена: 100 и выше.
Этот закон экспоненциального роста стоимости ошибки (Boehm's Curve) можно условно описать формулой:
где — итоговая стоимость исправления ошибки, — базовая стоимость исправления на этапе требований, а — коэффициент времени (этапа), прошедшего с момента появления ошибки.
Именно поэтому современный подход к разработке призывает к раннему тестированию (Shift Left Testing) — тестировщики должны подключаться к работе как можно раньше, еще на этапе обсуждения идеи.
Резюме
В этой статье мы разобрали базовые понятия, необходимые для старта в профессии:
В следующей статье мы углубимся в виды и уровни тестирования, узнаем, что такое «черный ящик» и чем функциональное тестирование отличается от нефункционального.