Тесты приёмки
Тесты приёмки проверяют, соответствует ли программное обеспечение требованиям пользователей или заказчика. Они проводятся в конце цикла тестирования и валидируют систему в целом относительно поставленных требований. Тесты приёмки можно выполнять вручную, но всё чаще их удаётся автоматизировать с помощью BDD или ATDD.
В двух словах
- Тесты приёмки проверяют ПО с точки зрения бизнеса.
- Они валидируют выполнение требований и критериев приёмки.
- Пользовательское тестирование обычно проводит заказчик или представитель бизнеса.
- ATDD и BDD помогают автоматизировать тесты приёмки.
- Чётко сформулированные критерии приёмки — основа успешного тестирования.
Краткое описание
Тесты приёмки оценивают, выполняет ли система согласованные требования и готова ли к развёртыванию. Они отличаются от технических тестов, которые часто проверяют внутреннюю реализацию. Тесты приёмки обычно основаны на сценариях использования и ориентированы на потребности конечных пользователей.
Тесты приёмки — последний этап в процессе тестирования. Их проводят после завершения системного тестирования и интеграционного тестирования. Результат теста приёмки — одобрение или отказ в приёмке ПО заказчиком.
Виды тестов приёмки
User Acceptance Tests (UAT)
Пользовательское тестирование проводится конечными пользователями или представителями бизнеса в приближённой к реальности среде. Оно проверяет, поддерживает ли ПО ежедневные рабочие процессы и даёт ли ожидаемые результаты. UAT — наиболее распространённая форма тестирования приёмки.
Business Acceptance Tests
Бизнес-тестирование проводят бизнес-подразделения или Product Owners. Они проверяют, выполняет ли ПО бизнес-требования и приносит ли ожидаемую ценность. Внимание сосредоточено на бизнес-процессах и ROI.
Contract Acceptance Tests
Контрактные тесты приёмки проверяют соблюдение критериев, установленных в контракте. Они особенно важны при работе с внешними подрядчиками. Критерии определены в контракте и должны быть объективно измеримы.
Operational Acceptance Tests
Операционные тесты проверяют аспекты эксплуатации: резервное копирование, восстановление, мониторинг, логирование и масштабируемость. Их часто проводит команда операций и убеждается, что ПО управляемо в производстве.
Compliance Acceptance Tests
Тесты соответствия проверяют выполнение правовых и нормативных требований. К ним относятся защита данных, доступность и отраслевые стандарты. Они особенно важны в регулируемых отраслях, таких как финансы и здравоохранение.
Формулирование критериев приёмки
Критерии приёмки — основа тестов приёмки. Они определяют, когда функция считается завершённой и приемлемой. Хорошие критерии приёмки обладают следующими свойствами:
- Понятность: Все заинтересованные стороны интерпретируют их одинаково. Нет двусмысленностей.
- Проверяемость: Их можно оценить как «да» или «нет». Нет субъективных суждений.
- Измеримость: Они содержат конкретные значения или условия, например время отклика менее 200 мс.
- Релевантность: Они описывают действительно важные функции, а не второстепенные детали.
Формат Given-When-Then
Проверенный формат для критериев приёмки — Given-When-Then. Он описывает начальное условие (Given), действие (When) и ожидаемый результат (Then). Этот формат читается машинами и может быть автоматизирован с помощью BDD-инструментов, таких как Cucumber.
ATDD и BDD
Acceptance Test Driven Development (ATDD)
ATDD требует написания тестов приёмки до реализации. Команда обсуждает с бизнесом, какие критерии должна выполнять функция, и формулирует их как тесты. Затем начинается разработка. Это гарантирует, что все заинтересованные стороны имеют одинаковое понимание.
Behavior Driven Development (BDD)
BDD расширяет ATDD, добавляя естественноязыковое описание поведения. Тесты записывают в формате Given-When-Then в инструментах вроде Cucumber, SpecFlow или Behave. Эти описания понятны как бизнесу, так и разработчикам, и могут быть автоматизированы.
Практический пример
Пример ниже показывает критерии приёмки в формате Given-When-Then для входа пользователя. Выбран этот пример, потому что это частая и легко понимаемая функция, которая демонстрирует все аспекты тестирования приёмки: положительные и отрицательные сценарии, ясные предусловия и измеримые результаты.
Feature: Вход пользователя
Сценарий: Успешный вход
Given пользователь с корректными именем и паролем
When он входит в систему
Then его перенаправляет на главную страницу
And отображаются его личные данные
Сценарий: Неудачный вход
Given пользователь с некорректным паролем
When он входит в систему
Then отображается сообщение об ошибке
And доступ отказан
Почему этот пример?
- Два сценария: Положительный случай показывает успешный вход, отрицательный — ошибку. Оба важны для приёмки.
- Given-When-Then: Структура понятна и бизнесу, и разработчикам.
- Измеримость: Перенаправление на главную страницу и сообщение об ошибке объективно проверяются.
- Автоматизируемость: С помощью Cucumber или подобных инструментов эти сценарии можно прямо автоматизировать.
Преимущества и недостатки
| Преимущества | Недостатки |
|---|---|
| Ясное определение момента завершения функции | Формулирование хороших критериев требует опыта |
| Улучшенная коммуникация между бизнесом и разработкой | Ручное UAT требует много времени |
| Снижение количества недоразумений до начала разработки | Бизнес не всегда доступен для тестирования |
| Документация выполнения требований | Автоматизация тестов приёмки может быть затратной |
| Повышение удовлетворённости пользователей | UAT-среда должна быть приближена к продакшену |
| Раннее обратное связь благодаря ATDD и BDD | Обучение BDD-инструментам требует затрат |
Основные инструменты
- Cucumber: BDD-фреймворк, описывающий сценарии Given-When-Then на естественном языке и автоматизирующий их.
- SpecFlow: BDD-фреймворк для .NET, похож на Cucumber.
- Behave: BDD-фреймворк для Python.
- JBehave: BDD-фреймворк для Java.
- FitNesse: Вики-подобный инструмент для тестов приёмки.
- Postman: Для тестирования приёмки API с автоматизированными наборами тестов.
Лучшие практики
- Начните рано: Сформулируйте критерии приёмки до разработки.
- Вовлеките бизнес: Тесты приёмки полезны только если участвует бизнес.
- Начните с малого: Не автоматизируйте все тесты сразу, начните с критических сценариев.
- Приближённая к продакшену среда: UAT следует проводить в среде, похожей на продакшен.
- Документируйте: Задокументируйте критерии приёмки и результаты тестов для отслеживаемости.
- Повторяйте регулярно: Перепроводите тесты приёмки при каждом релевантном изменении.
Ключевые моменты для экзамена
- Приёмочный тест: тест, который проверяет, соответствует ли программное обеспечение требованиям с точки зрения пользователя.
- Виды: UAT, Business Acceptance, Contract Acceptance, Operational Acceptance, Compliance Acceptance.
- UAT: User Acceptance Testing, проводимое конечными пользователями или бизнес-подразделениями.
- Критерии приёмки: конкретные условия, которые функция должна выполнить для принятия.
- Признаки хороших критериев приёмки: ясность, проверяемость, измеримость, релевантность.
- Given-When-Then: формат для критериев приёмки с предусловием, действием и ожидаемым результатом.
- ATDD: Acceptance Test Driven Development пишет приёмочные тесты перед реализацией.
- BDD: Behavior Driven Development описывает поведение на естественном языке в виде тестов.
- Cucumber: инструмент BDD, который автоматизирует сценарии Given-When-Then.
- Operational Acceptance Test: проверяет операционные аспекты, такие как резервное копирование, мониторинг и восстановление.
- Compliance Acceptance Test: проверяет соответствие правовым и нормативным требованиям.
- UAT-окружение: тестовое окружение, похожее на production, используется для приёмочного тестирования.
Основные источники
- https://www.istqb.org
- https://cucumber.io/docs/bdd/
- https://en.wikipedia.org/wiki/Acceptance_testing
Часто задаваемые вопросы
Что такое приёмочный тест?
Приёмочный тест проверяет, соответствует ли программное обеспечение согласованным требованиям с точки зрения пользователя. Это последний этап процесса тестирования и определяет, будет ли выпущена программа.
Кто проводит UAT?
User Acceptance Testing проводят конечные пользователи, бизнес-подразделения или Product Owners. Они тестируют в реалистичном окружении, поддерживает ли программа их рабочие процессы.
Что такое ATDD?
Acceptance Test Driven Development пишет приёмочные тесты перед реализацией. Команда формулирует критерии вместе с бизнесом, прежде чем начать разработку.
Что такое критерии приёмки?
Критерии приёмки — это конкретные, измеримые условия, которые функция должна выполнить для принятия. Они должны быть ясными, проверяемыми, измеримыми и релевантными.
Что такое UAT-окружение?
UAT-окружение — это тестовое окружение, максимально похожее на production. Оно используется для User Acceptance Testing, чтобы обеспечить реалистичные результаты.
Можно ли автоматизировать приёмочные тесты?
Да, с помощью BDD-инструментов, таких как Cucumber, SpecFlow или Behave, приёмочные тесты можно автоматизировать в формате Given-When-Then.
В чём разница между UAT и системным тестированием?
Системное тестирование проверяет технические требования и проводится командой тестирования. UAT проверяет с точки зрения пользователя и проводится бизнес-подразделением.
Что такое Operational Acceptance Test?
Operational Acceptance Test проверяет операционные аспекты, такие как резервное копирование, восстановление, мониторинг, логирование и масштабируемость. Его проводит операционная команда.
Что такое Compliance Acceptance Test?
Compliance Acceptance Test проверяет соответствие правовым и нормативным требованиям, таким как защита данных, доступность и отраслевые стандарты.
Как писать хорошие критерии приёмки?
Они должны быть ясными, проверяемыми, измеримыми и релевантными. Формат Given-When-Then зарекомендовал себя, потому что он понятен всем участникам и поддаётся автоматизации.
Что такое BDD?
Behavior Driven Development описывает поведение программного обеспечения на естественном языке в виде тестов. Оно использует формат Given-When-Then и позволяет автоматизацию с помощью инструментов, таких как Cucumber.
В чём преимущество приёмочных тестов?
Они показывают, действительно ли программа соответствует потребностям пользователей, уменьшают недопонимание и дают чёткое определение done.
В чём недостаток ручного приёмочного тестирования?
Оно требует много времени и зависит от доступности бизнес-подразделений. Кроме того, такие тесты сложно повторять и масштабировать.
Когда функция готова?
Функция готова, когда она выполняет все критерии приёмки и прошла приёмочные тесты. Это определение done.
Что такое приёмочный тест в Scrum?
В Scrum приёмочный тест проверяет Product Increment на соответствие критериям приёмки элемента backlog. Он определяет, считается ли элемент done.
В чём разница между ATDD и BDD?
ATDD пишет приёмочные тесты перед реализацией. BDD расширяет ATDD, добавляя естественноязычные описания в формате Given-When-Then, которые можно автоматизировать.
Что такое Business Acceptance Test?
Business Acceptance Test проводят бизнес-подразделения или Product Owners и проверяют, обеспечивает ли программа бизнес-требования и ожидаемую ценность.
Что такое Contract Acceptance Test?
Contract Acceptance Test проверяет соответствие договорно согласованным критериям. Критерии определены в контракте и должны быть объективно измеримы.
Какие инструменты есть для автоматизированного приёмочного тестирования?
Cucumber, SpecFlow, Behave и JBehave — это BDD-фреймворки. Postman подходит для приёмочного тестирования API. FitNesse — это вики-инструмент.
Что такое Definition of Done?
Definition of Done — это соглашение о том, когда функция считается готовой. Она включает выполненные критерии приёмки, пройденные приёмочные тесты и завершённую документацию.
Продолжение пути обучения Software Testing
Следующая статья в пути обучения Software Testing посвящена Load Testing — как Load Testing проверяет производительность под нагрузкой.



