Часть серии статей о |
Разработка программного обеспечения |
---|
Разработка на основе приемочных испытаний ( ATDD ) — это методология разработки , основанная на общении между бизнес-клиентами, разработчиками и тестировщиками. [1] ATDD охватывает многие из тех же практик, что и спецификация на примере (SBE), [2] [3] разработка на основе поведения (BDD), [4] разработка на основе примеров (EDD) [5] и разработка на основе поддержки, также называемая разработкой на основе тестовых историй (SDD). [6] Все эти процессы помогают разработчикам и тестировщикам понять потребности заказчика до внедрения и позволяют заказчикам общаться на их родном языке.
ATDD тесно связан с разработкой через тестирование (TDD). [7] Он отличается акцентом на сотрудничестве разработчика-тестировщика-бизнес-клиента. ATDD охватывает приемочное тестирование , но подчеркивает написание приемочных тестов до того, как разработчики начнут кодировать.
Приемочные тесты проводятся с точки зрения пользователя – внешнего вида системы. [1] Они проверяют внешне видимые эффекты, такие как указание правильного вывода системы при определенном вводе. Приемочные тесты могут проверять, как изменяется состояние чего-либо, например, заказ, который переходит из состояния «оплачен» в состояние «отправлен». Они также могут проверять взаимодействие с интерфейсами других систем, таких как общие базы данных или веб-сервисы. В целом они не зависят от реализации, хотя их автоматизация может быть иной. [8] [9]
Приемочные тесты создаются, когда требования анализируются и до кодирования. [1] Они могут быть разработаны совместно запрашивающим требования (владельцем продукта, бизнес-аналитиком, представителем заказчика и т. д.), разработчиком и тестировщиком. Разработчики реализуют систему с помощью приемочных тестов. Неудачные тесты обеспечивают быструю обратную связь о том, что требования не выполняются. Тесты указываются в терминах бизнес-домена. Затем термины формируют универсальный язык, который используется клиентами, разработчиками и тестировщиками. [10] Тесты и требования взаимосвязаны. [11] Требование, для которого отсутствует тест, может быть реализовано неправильно. Тест, который не ссылается на требование, является ненужным тестом. Приемочный тест, разработанный после начала реализации, представляет собой новое требование. [12]
Приемочные тесты являются частью общей стратегии тестирования. Это клиентские тесты, которые демонстрируют бизнес-намерение системы. Компонентные тесты — это технические приемочные тесты, разработанные архитектором, которые определяют поведение больших модулей. Модульные тесты создаются разработчиком для управления простым в обслуживании кодом. [13] Они часто выводятся из приемочных тестов и модульных тестов. Кросс-функциональное тестирование включает в себя тестирование удобства использования, [14] исследовательское тестирование, [15] и тестирование свойств (масштабирование и безопасность). [16]
Критерии приемки — это описание того, что будет проверяться тестом. Если задано требование, например «Как пользователь, я хочу взять книгу из библиотеки», критерием приемки может быть «проверить, что книга отмечена как взятая». Тест приемки для этого требования дает детали, чтобы тест можно было запускать с тем же эффектом каждый раз.
Приемочные испытания обычно проходят в следующем формате: [1]
Дано (настройка)
Когда (триггер)
Затем (проверка)
Кроме того, можно добавлять утверждения, начинающиеся с AND, в любой из разделов ниже (Дано, Когда, Тогда).
Для примера требования шаги могут быть перечислены следующим образом:
Дана Книга, которая не была взята, и Пользователь, который зарегистрирован в системе. Когда Пользователь выдает книгу, то Книга помечается как взятая.
Предыдущие шаги не включают никаких конкретных примеров данных, поэтому для завершения теста добавляется следующее:
Данный:
Книги | |
---|---|
Заголовок | Проверено |
Отличная книга. | Нет |
Пользователи | |
---|---|
Имя | Сэм |
Когда:
Действие оформления заказа | |||
---|---|---|---|
Пользователь | Сэм | Проверки | Отличная книга. |
Затем:
Книги | ||
---|---|---|
Заголовок | Проверено | Пользователь |
Отличная книга. | Да | Сэм |
Проверка теста с конкретными данными обычно приводит к многочисленным вопросам. Для выборки это могут быть:
Эти вопросы помогают выявить отсутствующие или неоднозначные требования. Дополнительные детали, такие как дата выполнения, могут быть добавлены к ожидаемому результату. Другие приемочные тесты могут проверить, что условия, такие как попытка выдачи книги, которая уже выдана, приводят к ожидаемой ошибке.
Предположим, что бизнес-клиент хотел бизнес-правила, что пользователь мог бы брать только одну книгу за раз. Следующий тест продемонстрирует это:
Сценарий: Проверьте, что правило кассового обслуживания применяется
Данный:
Книги | ||
---|---|---|
Заголовок | Проверено | Пользователь |
Отличная книга. | Да | Сэм |
Еще одна замечательная книга | Нет |
Пользователи |
---|
Имя |
Сэм |
Когда:
Действие оформления заказа | |||
---|---|---|---|
Пользователь | Сэм | Проверки | Еще одна замечательная книга |
Затем:
Произошла ошибка |
---|
Описание |
Нарушение правил кассового обслуживания |
В дополнение к приемочным испытаниям для требований приемочные испытания могут использоваться для всего проекта. [1] Например, если это требование было частью проекта по выдаче библиотечных книг, могут быть приемочные испытания для всего проекта. Их часто называют целями SMART . Пример теста: «Когда новая библиотечная система будет запущена в эксплуатацию, пользователи смогут выдавать и вносить книги в три раза быстрее, чем сегодня».