Skip to content
IRC-CodingIRC-Coding
Acceptance TestsUATUser Acceptance TestingATDDBDDкритерии приёмки

Acceptance Tests: валидация ПО с точки зрения пользователя

Изучите Acceptance Tests, UAT, ATDD, BDD и критерии приёмки. Как проверить, соответствует ли ПО требованиям.

S

schutzgeist

6 min read
Acceptance Tests: валидация ПО с точки зрения пользователя

Тесты приёмки

Тесты приёмки проверяют, соответствует ли программное обеспечение требованиям пользователей или заказчика. Они проводятся в конце цикла тестирования и валидируют систему в целом относительно поставленных требований. Тесты приёмки можно выполнять вручную, но всё чаще их удаётся автоматизировать с помощью 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, используется для приёмочного тестирования.

Основные источники

  1. https://www.istqb.org
  2. https://cucumber.io/docs/bdd/
  3. 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 проверяет производительность под нагрузкой.

Назад к блогу
Share:

Похожие статьи