1. Основы тестирования: жизненный цикл разработки и виды тестирования на практике
Основы тестирования: жизненный цикл разработки и виды тестирования на практике
Представьте ситуацию: вы запускаете приложение интернет-банка, чтобы срочно перевести деньги за аренду квартиры. Вы вводите сумму, нажимаете «Отправить», и приложение закрывается с ошибкой. Деньги со счета списались, но получателю не пришли. Для пользователя это катастрофа, для банка — репутационный риск и финансовые потери.
Тестирование — это не просто поиск ошибок. Это процесс исследования программного обеспечения с целью получения информации о его качестве. В этой статье мы разберем, как устроена эта профессия изнутри, какие этапы проходит программа перед релизом и как именно тестировщики находят дефекты.
QA, QC и Тестирование: разберемся в понятиях
В индустрии часто путают термины QA (Quality Assurance), QC (Quality Control) и Testing. Чтобы стать профессионалом, важно понимать разницу.
Quality Assurance (Обеспечение качества)
Это процесс, направленный на предотвращение дефектов. QA-инженер выстраивает систему так, чтобы ошибки не возникали в принципе. Это включает в себя настройку процессов разработки, выбор инструментов, обучение команды и анализ требований до начала написания кода.Quality Control (Контроль качества)
Это проверка готовности продукта. QC проверяет, соответствует ли результат заявленным требованиям. Если QA — это превентивная медицина (профилактика), то QC — это диагностика уже существующего состояния.Testing (Тестирование)
Это непосредственное исполнение проверок. Тестировщик нажимает кнопки, вводит данные, сверяет фактический результат с ожидаемым. Это часть QC, которая, в свою очередь, является частью QA.!Вложенность понятий: Тестирование входит в QC, а QC входит в QA
Жизненный цикл разработки ПО (SDLC)
Программное обеспечение не появляется из ниоткуда. Оно проходит через определенные стадии, называемые SDLC (Software Development Life Cycle). Тестировщик участвует почти на каждом этапе.
!Этапы жизненного цикла разработки программного обеспечения
Жизненный цикл тестирования (STLC)
Внутри этапа «Тестирование» есть свой собственный цикл — STLC (Software Testing Life Cycle). Нельзя просто сесть и начать «тыкать» в приложение. Процесс выглядит так:
* Анализ требований. Изучаем документацию. Планирование. Решаем, что будем тестировать, кто это будет делать и сколько* времени это займет. Пишем Тест-план. * Разработка тестов. Пишем тест-кейсы (инструкции по проверке) и чек-листы. * Выполнение тестов. Проходим по написанным инструкциям и заводим баг-репорты (отчеты об ошибках), если что-то не работает. * Завершение. Пишем отчет о результатах тестирования.
Виды тестирования: классификация на практике
Тестирование можно разделить на категории по разным признакам. Рассмотрим самые важные для начинающего специалиста.
По доступу к коду
Метод черного ящика (Black Box). Вы не видите код и внутреннюю структуру программы. Вы действуете как обычный пользователь: вводите данные и смотрите на результат. Пример: проверка формы регистрации на сайте.* * Метод белого ящика (White Box). Вы видите код, знаете архитектуру и пишете тесты, проверяющие логику работы функций. Этим чаще занимаются разработчики (Unit-тесты). * Метод серого ящика (Grey Box). Комбинация методов. Вы видите базу данных или логи сервера, но тестируете через интерфейс.
По уровню детализации (Пирамида тестирования)
По цели тестирования
Это самое важное разделение для ежедневной работы.
#### Функциональное тестирование Отвечает на вопрос: «Что делает система?». Мы проверяем функции продукта. * Может ли пользователь войти в систему? * Добавляется ли товар в корзину? * Рассчитывается ли скидка правильно?
#### Нефункциональное тестирование Отвечает на вопрос: «Как работает система?». * Тестирование производительности: Как быстро загружается страница при 1000 пользователей одновременно? * Тестирование безопасности: Можно ли взломать аккаунт, не зная пароля? * Юзабилити (UI/UX): Удобно ли пользоваться приложением? Не перекрывает ли кнопка текст?
Практический кейс: Тестирование формы логина
Перейдем к практике. Допустим, вам нужно протестировать простую форму входа на сайте, состоящую из полей «Email», «Пароль» и кнопки «Войти».
1. Позитивное тестирование (Happy Path)
Это сценарий, при котором пользователь не совершает ошибок. Мы проверяем основной функционал. * Действие: Ввести валидный (существующий) email, ввести верный пароль, нажать «Войти». * Ожидаемый результат: Успешный вход, перенаправление в личный кабинет.2. Негативное тестирование
Мы проверяем, как система реагирует на некорректные данные. Система не должна «падать» (ломаться), она должна выдавать понятные сообщения об ошибках.Сценарий А: Неверный пароль * Действие: Ввести верный email, ввести неверный пароль. * Ожидаемый результат: Сообщение «Неверный логин или пароль». Доступ запрещен.
Сценарий Б: Пустые поля * Действие: Оставить поля пустыми, нажать «Войти». * Ожидаемый результат: Подсветка полей красным, сообщение «Поля обязательны для заполнения».
Сценарий В: SQL-инъекция (Безопасность)
* Действие: Ввести в поле пароля спецсимволы, например ' OR '1'='1.
* Ожидаемый результат: Система воспринимает это как текст, вход не выполнен, база данных не скомпрометирована.
3. Граничные значения
Ошибки часто прячутся на границах допустимых диапазонов. Если пароль должен быть от 6 до 20 символов, мы проверим: * 5 символов (негативный тест) * 6 символов (позитивный тест, нижняя граница) * 20 символов (позитивный тест, верхняя граница) * 21 символ (негативный тест)Жизненный цикл дефекта (Bug Lifecycle)
Когда вы находите ошибку, вы создаете баг-репорт. У этого отчета тоже есть свой жизненный путь: