Пользовательское приемочное тестирование (UAT): процесс, контрольный список и реальные примеры

  1. Главная
  2. Блог
  3. Тестирование программного обеспечения

Тестирование программного обеспечения

Пользовательское приемочное тестирование (UAT): Процесс, контрольный список и реальные примеры

Программное обеспечение может пройти все испытания и при этом подвести тех, кто в нем нуждается. UAT — это последняя проверка того, что он решает реальную бизнес-задачу. Узнайте, кто должен его проводить, как его планировать и когда завершать работу.

9 мин чтения
Приемочное тестирование пользователей (UAT): процесс, контрольный список и реальные примеры

Главное

  • Пользовательское приемочное тестирование проверяет соответствие программного обеспечения реальным потребностям бизнеса с использованием реальных сценариев.
  • Им управляют бизнес-пользователи или клиенты, а не команда, создавшая программное обеспечение.
  • QA спрашивает: «Работает ли это так, как указано?», а UAT спрашивает: «Решает ли это проблему?».
  • Согласуйте критерии входа и выхода, а также тех, кто подпишется до начала UAT.

Однажды команда разрабатывает систему расходов, которая проходит все технические испытания. В первый же день финансовый отдел обнаруживает, что не может обрабатывать мультивалютные претензии, которые составляют значительную часть их работы. Ничего не «сломалось», но пользоваться было невозможно. Пользовательское приемочное тестирование предназначено для того, чтобы выявить именно такие пробелы перед запуском.

В этом руководстве рассказывается, чем UAT отличается от других тестов, как его выполнять шаг за шагом и как решить, когда вы готовы к выпуску. Приведенный выше сценарий и примеры ниже являются иллюстративными, и процесс следует масштабировать в соответствии с вашим проектом.

Что такое УАТ?

UAT обычно является заключительным этапом тестирования перед выпуском, на котором предполагаемые пользователи подтверждают, что программное обеспечение может выполнять свою работу в реальных условиях. Его также называют тестированием конечного пользователя или приемочным тестированием. Это происходит после разработки и тестирования системы, когда ожидается, что продукт будет стабильным.

Его цель не в том, чтобы найти каждую ошибку. К этому моменту большинство из них уже должно исчезнуть. Целью является проверка: правильно ли мы создали? Тестировщики проверяют соответствие продукта спецификации. UAT подтверждает, что спецификация и продукт действительно соответствуют потребностям.

UAT против тестирования качества

Аспект QA или тестирование системы УАТ
Главный вопрос Работает ли он так, как указано? Соответствует ли это потребностям бизнеса?
Исполнитель: Тестировщики и QA-инженеры Бизнес-пользователи или клиенты
Тайминг Во время и после разработки Незадолго до релиза
На основе Требования и конструкции Реальные бизнес-процессы
Фокус Дефекты, крайние случаи, интеграции Удобство использования и соответствие назначению
Технические знания Часто высокий Не требуется
Результат Отчеты об ошибках Принятие или отказ

UAT не заменяет другие тесты. Если пользователи продолжают сталкиваться с основными ошибками, значит, сборка не готова, и вы зря тратите их ограниченное время. Эти проблемы относятся к более ранним уровням тестирования и регрессионному тестированию.

Кто управляет UAT?

Роль Ответственность
Конечные пользователи Запускайте сценарии и оставляйте отзывы
Владелец продукта или бизнес-аналитик Определяет объем и пишет или проверяет сценарии
Координатор UAT или руководитель отдела контроля качества Планирует сессии, поддерживает тестировщиков, отслеживает проблемы
Разработчики Исправляйте проблемы и отвечайте на технические вопросы
Бизнес-спонсор Принимает окончательное решение о подписании

Выбирайте тестировщиков, которые действительно выполняют работу сегодня. Опытный специалист по обработке претензий обнаружит проблемы, которые никогда не обнаружит менеджер или доверенное лицо. Учитывайте разнообразный опыт, потому что новый сотрудник часто обнаруживает запутанные шаги, которые эксперт обходит, не замечая. И позаботьтесь о том, чтобы их менеджеры освободили для этого время, поскольку при полной загрузке УАТ не сможет добиться успеха.

Виды УАТ

Тип Что он проверяет Пример
Принятие бизнеса Соответствует бизнес-целям Сотрудники оформляют реальную заявку от начала до конца
Альфа-тестирование Внутреннее тестирование в контролируемых условиях Сотрудники пробуют новое приложение раньше внешних пользователей
Бета-тестирование Реальные клиенты в реальных условиях Ограниченная общедоступная предварительная версия
Принятие контракта Соответствует согласованным условиям контракта Клиент проверяет поставленную систему
Нормативное принятие Соответствует правовым нормам или правилам соответствия Проверки на соответствие медицинским или банковским правилам
Оперативная приемка Готов к запуску в производство Резервное копирование, мониторинг и поддержка процессов

Семиэтапный процесс UAT

1. Определите объем и цели

Решите, что принимается, что выходит за рамки и какие результаты бизнеса имеют значение. Например: «Финансовый персонал может подать, утвердить и оплатить требование о расходах в любой поддерживаемой валюте».

2. Согласуйте критерии приемки

Запишите простым языком, как выглядит успех, в идеале — в начале проекта, а не за неделю до запуска. Расплывчатые критерии позже приводят к спорам.

3. Выберите и проинструктируйте тестировщиков

Выберите реальных пользователей, объясните цель, покажите им, как записывать отзывы, и дайте понять, что они тестируют программное обеспечение, а не проходят тестирование сами. Многие люди переживают, что что-то сделают не так.

4. Подготовьте среду и данные

Среда UAT должна быть максимально приближена к производству. Используйте реалистичные данные, настройте правильные роли пользователей и проверьте интеграцию, например электронную почту. Если вы копируете производственные данные, сначала замаскируйте личную информацию. Запустите быстрый дымовой тест, чтобы тестировщики не пришли и не обнаружили сломанную сборку.

5. Пишите сценарии

Основывайте их на реальных рабочих процессах, а не на отдельных кнопках. Они должны читаться как работа, а не как программное обеспечение. Наше руководство по тестовому сценарию и сценарию тестирования объясняет, насколько подробно вам нужно.

6. Запустите тесты и соберите отзывы

Проводите сеансы с кем-нибудь, кто может помочь. Собирайте проблемы в одном месте, со скриншотами. Оставьте также немного времени для свободного исследования, поскольку люди пробуют вещи, которые сценарии никогда не предвидят. Исследовательское тестирование предлагает для этого полезные методы.

7. Исправьте, повторно протестируйте и подпишитесь.

Отсортируйте отзывы, исправьте то, что важно, и попросите тех же пользователей подтвердить исправления. Затем запишите официальное решение.

Тестовый пример UAT

Тестовый пример UAT должен быть простым для понимания человеком, не имеющим технических знаний. Вот пример системы расходов:

ID:        UAT-012
Scenario:  Submit a foreign currency expense claim
User role: Sales employee
Before:    Logged in, with a USD receipt ready

Steps:
  1. Create a new expense claim
  2. Enter a client dinner of 80 USD and attach the receipt
  3. Submit the claim for approval

Expected:  The amount is converted to INR at the current rate
           The manager receives an approval request
           The claim shows as "Awaiting approval"

Result:    Pass / Fail
Comments:
Tester / Date:

Обратите внимание, что здесь описана реальная задача, а не технические подробности, и оставляет место для комментариев. Эти комментарии часто оказываются самой ценной частью, например: «Это работает, но я никогда не найду эту кнопку».

Совет. Посмотрите, как хотя бы один пользователь делает это лично или по телефону. Люди часто работают с запутанным программным обеспечением и никогда не сообщают об этом. То, как они колеблются, скажет вам больше, чем когда-либо скажет «Пасс».

Критерии входа и выхода

Критерии входа (готовы начать) Критерии выхода (готово завершить)
Тестирование системы завершено Все критические сценарии реализованы.
Нет открытых критических или серьезных ошибок. Нет открытых критических ошибок
Среда и данные готовы Согласованный процент проходимости достигнут
Сценарии рассматриваются Остальные вопросы имеют согласованный план
Тестировщики проинструктированы и доступны Бизнес-спонсор подписал контракт

Они вписываются в более широкий жизненный цикл тестирования программного обеспечения. Заранее установите цифры вместе с заинтересованными сторонами. Фраза «Мы решим, когда будет удобно» обычно приводит к поспешному «да», обусловленному дедлайном.

Обработка отзывов

Обратная связь UAT — это смесь вещей, и не все из них являются ошибками. Рассортируйте его по категориям:

Тип Пример Обычное действие
Дефект Сумма посчитана неверно Исправление в зависимости от серьезности
Пропущенное требование Мультивалютность не поддерживается Исправьте перед запуском или перепланируйте
Проблема с удобством использования Пользователи не могут найти кнопку отправки Часто стоит исправить
Запрос на изменение «Может ли он также экспортироваться в PDF?» Добавить в резерв
Вопрос обучения Функция работает, но ее неправильно поняли Обновить руководства

Используйте четкие правила относительно того, что блокирует выпуск, как описано в разделе серьезность и приоритет. И отвечайте на каждый пункт, включая те, которые вы отклонили. Люди перестают давать обратную связь, если кажется, что она исчезла. Наше руководство по как написать отчет об ошибках может помочь тестировщикам четко описать проблемы.

Контрольный список UAT

До УАТ

  • Объем и критерии приемки согласовываются в письменной форме.
  • Завершено системное и регрессионное тестирование.
  • Тестировщиков выбирают, инструктируют и дают время
  • Среда, счета и реалистичные данные готовы
  • Персональные данные в копиях замаскированы
  • Сценарии рассматриваются бизнесом
  • Создано единое место для записи проблем.
  • Имя владельца подписи

Во время UAT

  • Доступен контакт службы поддержки
  • Проблемы решаются каждый день
  • Прогресс доводится до сведения заинтересованных сторон
  • Исправления развертываются и повторно тестируются контролируемым образом.

После UAT

  • Критерии выхода проверены
  • Известные проблемы задокументированы вместе с владельцами.
  • Официальное подписание записывается
  • Примечания к обучению и выпуску обновлены.
  • Состоялась небольшая ретроспектива

UAT в Agile-командах

Традиционный UAT представляет собой один большой завершающий этап, где сюрприз обходится дорого. Agile-команды сокращают этот цикл. Владельцы продукта проверяют каждую историю на соответствие ее критериям приемлемости во время спринта, а пользователи видят работающее программное обеспечение на обзорах спринта. Многие команды по-прежнему запускают специальный UAT перед выпуском основного релиза, особенно когда несколько функций объединяются в один рабочий процесс.

Благодаря частым выпускам такие методы, как флаги функций и канареечное развертывание, позволяют реальным пользователям постепенно опробовать новую работу. Обратите внимание, что они дополняют приемочные испытания, но не заменяют их автоматически, особенно в регулируемых отраслях, где требуется формальная запись.

Распространенные ошибки

  • Относиться к этому как к формальности. Подписание договора без реальной пользы никого не защищает.
  • Использование неправильных тестировщиков. Разработчики и специалисты по контролю качества слишком хорошо знают систему, чтобы представлять пользователей.
  • Начинаем с нестабильной сборки. Тестировщики быстро теряют доверие и интерес.
  • Оставляя это на последнюю минуту. Тогда не будет времени исправлять то, что вы узнали.
  • Использование нереалистичных данных. Тестовые данные редко бывают такими запутанными, как в реальной работе.
  • Давайте расширять возможности. Относитесь к новым идеям как к запросам на изменения, если только они не являются настоящими блокировщиками.

Итоги

UAT — это ваш последний шанс перед выпуском узнать, действительно ли программное обеспечение помогает людям, которые будут его использовать. Планируйте это с самого начала проекта, набирайте реальных пользователей и договоритесь о том, как выглядит успех. Для вашего следующего выпуска попробуйте одно простое изменение: сидите с одним пользователем во время реального сценария и ничего не говорите, пока он работает.

Часто задаваемые вопросы

Что такое приемочное тестирование пользователей простыми словами?

Это финальная проверка, во время которой реальные пользователи перед выпуском тестируют программное обеспечение с выполнением реалистичных задач, чтобы убедиться, что оно соответствует их потребностям.

Кто несет ответственность за UAT?

Бизнес-пользователи или клиенты проводят тесты. Владелец продукта или руководитель отдела контроля качества обычно координирует работу, а бизнес-спонсор обычно принимает окончательное решение.

В чем разница между UAT и системным тестированием?

Тестирование системы проверяет, что программное обеспечение работает должным образом и выполняется тестировщиками. UAT проверяет соответствие требованиям бизнеса и выполняется пользователями.

Когда происходит UAT?

Обычно после тестирования системы и перед выпуском рабочей версии, когда программное обеспечение становится стабильным. Agile-команды также могут проводить небольшие приемочные проверки в каждом спринте.

Можно ли автоматизировать ЕАТ?

Частично, например, повторные проверки бизнес-процессов. Однако для оценки того, полезно ли программное обеспечение и соответствует ли оно цели, по-прежнему нужны реальные люди.

Продолжайте учиться

Работайте с Stack Quora

Нужна помощь с тестированием, WordPress или SEO?

Мы помогаем командам выпускать лучшее программное обеспечение и развивать свои сайты. Расскажите нам, над чем вы работаете, и мы предложим четкий следующий шаг.

Продолжайте читать

Больше руководств по тестирование, искусственный интеллект и современные разработки

Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.

Искусственный интеллект

Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить

Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…

Читать статью →
DevOps

Объяснение переменных среды: файлы .env, секреты и правильно выполненная конфигурация

Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…

Читать статью →
Разработка ПО

Объяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429

Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…

Читать статью →
Автоматизация тестирования

Издевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут

Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …

Читать статью →
Тестирование ПО

Объяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%

Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…

Читать статью →
Базы данных и SQL

DELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них

Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…

Читать статью →
Базы данных и SQL

Объяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами

Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…

Читать статью →
Разработка ПО

Интерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора

Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…

Читать статью →
Разработка ПО

Объяснение Python *args и **kwargs: гибкие функции с понятными примерами

Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…

Читать статью →
Разработка ПО

Лямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать

Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …

Читать статью →
Искусственный интеллект

Что такое ИИ-агенты? Как они работают: можно запустить простой цикл агента

Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…

Читать статью →
DevOps

Мониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками

Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…

Читать статью →
DevOps

Docker Volumes против Bind Mounts: правильное сохранение данных контейнера

Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…

Читать статью →
Автоматизация тестирования

TDD против BDD: ключевые различия, одна функция, созданная для обоих способов, и когда использовать каждый

TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…

Читать статью →
Тестирование ПО

Пользовательское приемочное тестирование (UAT): процесс, контрольный список и реальные примеры

Приемочное тестирование пользователей объяснило: кто его проводит, чем оно отличается от контроля качества, семиэтапный процесс, шаблон тестового сц…

Читать статью →
Базы данных и SQL

Объяснение значений NULL в SQL: IS NULL, COALESCE, NULLIF и ловушки, которых следует избегать

Значения SQL NULL объяснены с помощью запросов, которые мы выполнили: трехзначная логика, IS NULL, COALESCE, NULLIF, как агрегаты, соединения и сорт…

Читать статью →
Базы данных и SQL

Оператор SQL CASE WHEN: синтаксис, реальные примеры и распространенные ошибки

SQL CASE WHEN объяснен с помощью запросов, которые мы выполняли: простые формы и формы для поиска, порядок условий, повороты с помощью SUM, трюки CO…

Читать статью →
Разработка ПО

Что такое JWT? Веб-токены JSON, объясненные на рабочем примере

Что такое JWT? Объяснение JSON Web Tokens: три части: токен, созданный и измененный в коде, который мы запускали, JWT и сеансы, хранилище, токены об…

Читать статью →
Разработка ПО

Объяснение цикла событий JavaScript: стек вызовов, микрозадачи и таймеры с примерами

Цикл событий JavaScript объясняется с помощью кода, который мы запускали: стек вызовов, очереди задач и микрозадач, почему setTimeout 0 не является …

Читать статью →
Разработка ПО

Генераторы Python и объяснение доходности: экономьте память с помощью реальных примеров

Генераторы Python и доходность, объясненные с помощью кода, который мы запускали: как они приостанавливаются и возобновляются, измеряют экономию пам…

Читать статью →
Искусственный интеллект

Что такое вложения? Простое объяснение векторов и косинусного сходства

Что такое вложения? Простое руководство по векторам, косинусному подобию и семантическому поиску с небольшим примером, который мы использовали, общи…

Читать статью →
DevOps

Сине-зеленое и канареечное развертывание: различия, компромиссы и как выбрать

Объяснение сине-зеленого и канареечного развертывания: как каждый из них работает, стоимость, риски и откат, стабильное группирование пользователей,…

Читать статью →
Разработка ПО

Git merge vs rebase: отличия, примеры и когда что использовать

Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.

Читать статью →
Разработка ПО

Генераторы списков в Python: синтаксис, примеры и когда их избегать

Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.

Читать статью →
Базы данных и SQL

SQL JOIN: объяснение с примерами (Inner, Left, Right, Full)

Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…

Читать статью →