Что такое QA-тестирование и как оно устроено
Или где прячутся жуки и легко ли их ловить.
Иллюстрация: Катя Павловская для Skillbox Media
Прописная истина гласит: любое приложение — будь то онлайн-магазин на CMS или многомодульная ERP-система — должно работать без ошибок, то есть быть качественным. Но реальность такова, что баги были, есть и будут во всех живых и развивающихся системах.
И если в небольших проектах заботы по обеспечению качества можно возложить на разработчиков, то в крупных проектах такие задачи принято выносить в отдельный процесс — QA. О нём мы и поговорим далее.
Содержание
- Что такое QA-тестирование
- Из чего оно состоит
- Каким бывает тестирование
- Какие бывают уровни тестирования
- Какими инструментами пользуются QA-инженеры
Эксперт
Дарья Савочкина
Head of QA в Skillbox / руководитель отдела тестирования.
Что такое QA-тестирование
QA (quality assurance) — процесс обеспечения качества программного обеспечения. Это весьма широкое понятие, которое включает в себя тестирование продукта и анализ технической документации перед передачей её в разработку.
Правильно настроенные процессы в QA позволяют сократить время работы и сэкономить бюджет. А внедрение QA на ранних стадиях — выпускать «чистый» продукт, который нравится пользователям, улучшает репутацию компании на рынке и прибыль.
Тестированием в команде разработки занимаются QA-инженеры. Их задача — тщательно проверить софт до того, как он попадёт в руки пользователей. Они выявляют ошибки в коде и следят за тем, чтобы ПО работало на всех поддерживаемых устройствах и платформах.
Разработчики получают от QA-инженеров отчёты об ошибках с подробным описанием проблемы. Эту информацию можно использовать, чтобы воспроизвести баг и понять, как его можно исправить.
Читайте также:
Из чего состоит QA
QA — сложный процесс, в котором участвует не только команда тестировщиков. Чтобы ПО работало стабильно и без ошибок, надо приложить немало усилий, а для удобства и оптимизации процесс проверки кода разделяют на несколько этапов.
Анализ. Сперва QA-инженеры оценивают слабые места в технической документации и потенциальные проблемы, на которые стоит обратить внимание в первую очередь. Чем тщательнее анализ, тем меньше вероятность, что на релизе пользователи получат приложение с ошибками и неисправностями.
Разработка сценариев тестирования. На следующем этапе QA-инженеры составляют тест-кейсы — специальные инструкции, в которых подробно описаны шаги для подготовки к тесту, алгоритм самой проверки и ожидаемый результат.
Тест-кейсы составляют для каждой функции в приложении, будь то сложный системный алгоритм или код для отдельной кнопки, с которой взаимодействует пользователь. Все найденные проблемы оформляются в виде баг-репортов — специальных документов для разработчиков с детальным описанием ошибок и условий, в которых они возникают.
Читайте также:
Тестирование. Ключевой этап, на котором проверяется работоспособность IT-продукта на всех платформах. Тестируют пользовательский интерфейс, системные функции, сторонние интеграции и рассматривают все возможные сценарии взаимодействия с приложением.
Читайте также:
Регрессионное тестирование. Как только разработчики устранили все недочёты, тестировщики проводят повторную проверку. На этом этапе надо убедиться, что после устранения багов не появились новые и приложение работает исправно. Ещё регрессионные тесты используют при переходе на новую архитектуру или платформу.
Отчёт. После проведения всех тестов QA-инженеры подготавливают отчёт о проделанной работе. В нём ещё раз описывают все проверки, выполненные во время разработки проекта. Отчёты помогают понять текущее состояние IT-продукта и составить план действий на будущее.
Каким бывает тестирование
В QA есть множество видов тестирования, которые позволяют проверить систему, исходя из имеющихся данных. Подходов много, но их не используют все разом. Для каждого проекта QA-инженеры выбирают наиболее подходящие методы, отвечающие техническим требованиям. Виды тестирования разделяют на следующие группы.
По степени автоматизации
Ручное тестирование. Инженеры сами проходят по всем тест-кейсам и выполняют описанные в них действия. Это занимает много времени и сил, поэтому такой способ больше подходит для контроля небольших изменений.
Автоматизированное тестирование. QA-инженер разрабатывает программу, которая имитирует действия пользователя. Благодаря этому тестировщики могут сэкономить время, используя код повторно, запуская все тест-кейсы одной кнопкой или автоматически — по времени или событию.
По целям
Функциональное тестирование заключается в проверке соответствия программного обеспечения требованиям. QA-специалисты тестируют все функциональные возможности приложения и предотвращают проблемы, которые могут возникнуть во время его использования.
Нефункциональное тестирование. Во время нефункционального тестирования QA-инженеры проверяют, как приложение работает в различных условиях. К этой категории тестирования относятся тесты безопасности, производительности, совместимости, локализации, стресс-тесты и другие проверки.
По знанию системы
Тестирование «белого ящика». Для работы по этому методу QA-инженер должен знать внутреннюю архитектуру продукта. Он самостоятельно создаёт тест-кейсы и выявляет ошибки, которые были допущены при написании кода, анализирует маршрутизацию, каталоги, циклы и может вносить правки в код.
Тестирование «чёрного ящика». В этом случае тестировщик не имеет доступа к коду. Он выступает в роли реального пользователя программы и ориентируется только на её интерфейс. Такой метод тестирования используется на всех этапах разработки и считается более доступным для начинающих специалистов, но не всегда позволяет исключить все ошибки.
Тестирование «серого ящика». Комбинированный подход, при котором специалисты видят часть кода и получают доступ к внутренним настройкам программы. Сама проверка подразумевает использование интерфейса, который видит конечный пользователь.
По позитивности сценария
Позитивное тестирование. В нём используются только допустимые входные данные. Задача QA-инженера — убедиться, что функция работает правильно в штатных сценариях эксплуатации.
Негативное тестирование. Цель этого вида тестов — проверить исключительные случаи. В качестве входных данных используются недопустимые значения. Представьте, что вместо своего имени пользователь ввёл дату рождения. Продолжит ли после этого работать программа? Если да, то какие данные вернёт пользователю? Ответы на эти вопросы и дают негативные тесты.
По исполнителям
Альфа-тестирование. Проверка ранней версии IT-продукта, которая пока работает только внутри компании. Иногда к этому процессу могут привлекать конечных пользователей, но чаще всего альфа-тестирование закрыто для внешних участников.
Бета-тестирование. Почти готовый продукт, который компания выпускает для ограниченного количества пользователей. На этом этапе разработчики собирают отзывы, вносят изменения в кодовую базу и готовятся к общедоступному релизу.
По хронологии выполнения
Подтверждающие. Повторные тесты, которые запускают для подтверждения успешного исправления дефекта.
Регрессионные. Используют после внесения изменений в кодовую базу проекта. Эти тесты помогают убедиться, что после правок не появились новые ошибки.
Приёмочные. Проверяют, что код проекта соответствует всем требованиям и потребностям IT-продукта.
Уровни тестирования
Обычно проверка ПО проходит на четырёх уровнях, которые входят в классическую «пирамиду тестирования».
Unit-тесты. На этом уровне QA-инженеры проверяют работоспособность отдельных модулей программного кода. В некоторых командах такие тесты пишут разработчики. Это позволяет найти ошибку раньше, чем код попадёт к тестировщикам.
Интеграционные тесты. С их помощью проверяют, как разные модули программы взаимодействуют между собой. К примеру, как код работает со сторонним сервисом или базой данных.
End-to-end-тесты. На этом этапе QA-инженеры тестируют весь проект. Особое внимание уделяется прохождению конкретных пользовательских сценариев. Нужно убедиться, что все модули и сторонние интеграции работают правильно.
UI-тесты. Проверяют все элементы пользовательского интерфейса, их дизайн, согласованность, удобство и соответствие сценариям использования.
Инструменты QA-инженеров
Опытные тестировщики используют в своей работе десятки инструментов и сервисов. Начинающим QA-инженерам не обязательно знать все, но некоторые утилиты встречаются чаще всего:
- BrowserStack — облачная платформа, позволяющая тестировать ПО на разных устройствах и операционных системах. Если под рукой нет Android-смартфона, то тесты можно запустить в BrowserStack.
- Jira — система управления проектами и отслеживания ошибок, связывающая разработчиков, тестировщиков и пользователей.
- Selenium — открытая библиотека для автоматизации работы браузера. Чаще всего используется для тестирования веб-приложений.
- Postman — инструмент тестирования API. С его помощью QA-инженеры проверяют запросы с клиента на сервер.
- Apache JMeter — открытое приложение для проведения нагрузочного тестирования.
- Git — система контроля версий, хранящая историю изменений в коде.
Читайте также:
Что в итоге
QA — один из ключевых этапов разработки любого IT-продукта. От этого процесса зависит, в каком виде программа попадёт в руки пользователей.
Специалисты по контролю качества участвуют во всех этапах разработки программы и проверяют каждый компонент продукта — от технического задания до удобства использования и дизайна.
Существует множество типов QA-тестирования, каждый из которых относится к определённому этапу разработки продукта. Для некоторых из них вовсе не обязательно знать языки программирования, но большая часть всё-таки требует понимания внутреннего устройства и архитектуры ПО.