Что такое приемочное тестирование
Приемочное тестирование
Ключевые преимущества
Основные этапы приемочного тестирования
Сопровождение клиента во время проведения приемочных тестов (заведение дефектов, отслеживание корректности и скорости выполнения тестирования). Возможно проведение приемочного тестирования полностью силами специалистов «Апланы», в таком случае услуга ничем не отличается от ручного функционального тестирования.
Инструменты
Для выполнения проверки используются инструменты ведущих вендоров: HP Application Lifecycle Management, IBM Rational Quality Manager и IBM Rational Team Concert.
Направления приемочного тестирования
Проверка системы на способность выполнять свою роль в среде эксплуатации согласно бизнес-модели
Проверка пригодности системы для внедрения конечными пользователями
Проверка независимой командой тестирования
Тестирование внешними пользователями, потенциальными клиентами
Протестируем системы любой сложности: поисковые, биллинговые, процессинговые, SAP и многие другие
Провести тестирование функционала CRM при взаимодействии со смежными системами.
Была протестирована интеграционная цепочка из трех ESB-сервисов по получению информации о пластиковых картах клиентов банка.
Усилить внутрибанковские компетенции в области автоматизации тестирования и развернуть инфраструктуру управления жизненным циклом прикладного программного обеспечения.
Выбрана функциональность, покрывающая следующие бизнес-области: лимиты, мониторинги, фондирование, планирование кредитных и некредитных операций.
В задачи проекта входили: анализ требований, подготовка тест-кейсов, поддержка тестирования разработчиков, внутреннее системное тестирование (включая интеграционное), приемочное тестирование.
Функциональное тестирование системы осуществлялось в процессе ее внедрения. Была проведена проверка широкого спектра интерфейсов и back-end-разработок. Проектная команда «Апланы» осуществила проверку взаимодействия Oracle Siebel CRM с системами ЦФТ РБО, 1С, скоринга, а также с функционалом колл-центра..
Уровни тестирования
Существует 4 уровня тестирования [1]:
В этой статье разберемся что такое уровни тестирования, зачем они нужны и что собой представляет каждый из них.
Начнем с простого примера.
Давай вспомним, что такое конструктор LEGO.
Это набор разноцветных деталей разной формы и размеров, которые после «магического» соединения превращаются в прикольную игрушку.
Обычно, процесс сборки игрушки выглядит так:
Программное обеспечение очень похоже на такой конструктор.
Но оно намного круче, ведь мы сами можем создавать любые детали и использовать детали (и даже блоки), созданные другими людьми (привет Open Source) 😉
Если посмотреть на процесс сборки с точки зрения тестирования, его можно описать так:
Суть процесса проста: проверка любой системы (будь то конструктор LEGO или мобильное приложение) начинается с ее наименьших элементов и двигается в сторону их объединения / увеличения до максимального размера.
Благодаря этому подходу ты никогда не попадешь в ситуацию, когда «колеса не того размера», «двери не от той машины» или «мы хотели самолет, а получили вертолет, платить не будем» 🙂
Теперь ты осознаешь уровни тестирования, но для эффективной работы этого недостаточно. Давай разбираться глубже)
Что такое уровень тестирования?
Уровень тестирования — активности тестирования, объединенные в группу исходя из общих характеристик, связанных с SDLC.
К характеристикам относятся:
Перед тем, как мы перейдем к рассмотрению каждого конкретного уровня и его характеристик, давайте рассмотрим реальный пример этапов тестирования ПО, который поможет нам совместить теорию и практику.
Пример реальной задачи по разработке
Предположим, перед вашей командой ставят задачу:
Создать страницу Contact Us на сайте Х. После отправки формы отдел поддержки должен получить Email, содержащий введенные данные и контактную информацию клиента.
Этап разработки требований и критериев приемки завершен, команда может приступать к реализации, задача переходит на этап дизайна (см. SDLC)
Первым делом разработчики прорабатывают дизайн системы.
Он может представлять собой следующую схему:
Дизайн системы Contact Us
Далее, разработчики детализируют схему добавляя описание шагов:
* логика проверки (валидации данных) опущена для упрощения схемы. Но, это не означает, что ее нет!
** логика отправки Email опущена для упрощения схемы
Имея требования к странице, описание дизайна и логики работы, проект переходит на этап разработки. Разработчики начинают писать код, а тестировщики могут приступать к продумыванию тестов.
Как ты уже знаешь, процесс начинается с наименьших частей системы — модулей / компонентов.
Модульное / Компонентное / Unit тестирование
Модульное / Компонентное / Unit тестирование фокусируется на компонентах / модулях, которые должны быть проверены в изоляции, как самостоятельные, независимые блоки.
Module / Component / Unit testing: A test level that focuses on individual hardware or software components [ISTQB Glossary]
Характеристики модульного тестирования
Цель: проверка правильности реализации функциональных / нефункциональных требований в модуле, раннее обнаружение ошибок
Объект: модуль / компонент / unit
Базис: дизайн системы, код, спецификация компонента
Типичные ошибки: ошибка в реализации требований, ошибка в коде
Ответственный: разработчик (редко тестировщик)
На этом уровне тестирования создаются модульные тесты (unit тесты), которые проверяют правильность работы модуля в тестовых условиях. Эти проверки всегда автоматизированы и выполняются очень быстро (несколько тысяч тестов в минуту).
Unit тесты, кроме поиска ошибок, также помогают оценивать качество кода, измерять покрытие кода тестами, сокращать время и затраты на тестирование.
Продолжая рассмотрение примера со страницей сайта, мы можем выделить следующие модули:
Для примера, рассмотрим модуль «страница Contact Us».
Требования:
В свою очередь, требования к модулю «Contact Us Controller»:
Все описанные выше требования должны проверяться Unit тестами.
Когда проверки компонентов закончены и мы уверены, что модули по отдельности работают как ожидалось, можем переходить на следующий уровень.
Интеграционное тестирование
Интеграционное тестирование фокусируется на взаимодействии между компонентами / модулями / под-системами / системами.
Выделяют 2 подтипа:
Integration testing. Testing performed to expose defects in the interfaces and in the interactions between integrated components or systems. [ISTQB Glossary]
Component integration testing. Testing performed to expose defects in the interfaces and interaction between integrated components. [ISTQB Glossary]
System integration testing. Testing the integration of systems and packages; testing interfaces to external organizations (e.g. Electronic Data Interchange, Internet). [ISTQB Glossary]
Характеристики интеграционного тестирования
Цель: проверка правильности реализации взаимодействия между компонентами / модулями / частями системы
Объект: модули, состоящие из нескольких компонентов; под-системы, API, микросервисы
Базис: дизайн системы, архитектура системы, описание связей компонентов
Типичные ошибки: отсутствие / неправильные связи между элементами системы, неправильные передаваемые данные, отсутствие обработки ошибок, отказы и падения при обращениях к API
Ответственный: разработчик и тестировщик
Системные интеграционные тесты выполняются дольше (несколько десятков в минуту), чем модульные интеграционные тесты (несколько сотен-тысяч в минуту) и являются более творческими.
Продолжим рассмотрение примера.
Теперь, обратим внимание на связи между компонентами / под-системами:
Интеграционное тестирование
Начнем с компонентного интеграционного тестирования.
Обрати внимание на стрелки 5 и 7.
Они описывают связь между компонентами Contact Us Controller и Email Sender внутри под-системы Backend.
Contact Us Controller обращается к Email Sender с запросом для отправки Email сообщения (5), Email Sender отправляет письмо (6) и отвечает Contact Us Controller что все прошло удачно (7). Если при отправке (6) произошла ошибка, в ответе (7) вернется информация об ошибке.
В нашем случае интеграционные тесты проверят, что описанный выше процесс работает и что модуль Contact Us Controller инициирует отправку Email сообщения, а не SMS.
Тестирование интерфейсов (частично) и тестирование API являются примерами интеграционного компонентного тестирования.
В случае с тестированием API мы «имитируем» запрос от клиента — (3) и анализируем ответ сервера — (9), таким образом проверяя интеграцию всех задействованных модулей для конкретного API Endpoint внутри Backend.
Interface Testing. An integration test type that is concerned with testing the interfaces between components or systems. [ISTQB Glossary]
API testing. Testing performed by submitting commands to the software under test using programming interfaces of the application directly. [ISTQB Glossary]
Далее посмотрим на системное интеграционное тестирование.
Обрати внимание на стрелки 3 и 9.
Они описывают связь между двумя под-системами: Frontend, который формирует и отправляет запрос со страницы Contact Us с данными формы, и Backend, который обрабатывает и реагирует на запрос.
Тестирование на этом уровне показывает, что интеграция под-систем реализована в соответствии с заявленными требованиями.
В нашем случае для проверки правильности достаточно написать 1 тест: отправить форму Contact Us с ожидаемым результатом в виде показанного сообщения об успешной отправке — (10) и полученного Email сообщения с данными, оставленными с формы Contact Us.
Теперь, когда мы проверили интеграции компонентов внутри под-систем и интеграции под-систем, мы можем двигаться дальше.
Системное тестирование
Системное тестирование фокусируется на поведении всей системы в целом с точки зрения конечных пользователей.
Внимание уделяется задачам, на решение которых направлена система. Также во внимание берется нефункциональное поведение системы (скорость работы, нагрузка, и т.п.) при выполнении бизнес-задач.
Системное тестирование может проверять выполнение стандартов или законодательных / нормативных требований.
Тестовая среда для системного тестирования должна быть максимально приближенной (в идеальном варианте — идентичной) к окружению для эксплуатации (production).
System testing The process of testing an integrated system to verify that it meets specified requirements. [ISTQB Glossary]
Характеристики системного тестирования
Цель: проверка работы системы в целом
Объект: система, конфигурации системы, рабочее окружение
Базис: системные требования, бизнес требования, сценарии использования, User Stories, системные руководства, инструкции
Типичные ошибки: невозможность выполнять функциональные задачи, для которых создавалась система, неправильная передача данных внутри системы, неспособность системы работать правильно в среде эксплуатации, нефункциональные сбои (уязвимости, зависания, выключения)
Ответственный: тестировщик
Системное тестирование для нашего примера может включать в себя такие типы тестирования:
Системное тестирование системы Contact Us
* слово «тестирование» — убрано с изображения для упрощения 🙂
Помимо проверки отправки формы Contact Us, получения Email сообщения на почту суппорта и показа Success сообщения, в ходе системного тестирования мы должны ответить на вопросы:
На этом уровне тестирования создаются end-to-end тесты, имитирующие бизнес процессы, Use Cases и Use Stories от начала до конца.
Эти тесты все чаще автоматизируется и именно этот вид автоматизации сейчас очень востребован (JAVA, Python, JavaScript, C#, Selenium и т.п. — все здесь).
E2e тесты очень медленные (обычно 5-10 тестов в минуту) и коварные, с их автоматизацией нужно быть очень осторожным 😉
Системное тестирование — одна из самых творческих и объемных областей тестирования. Кроме end-to-end (e2e) тестирования, к этому уровню относятся все виды нефункционального тестирования.
Очень часто начинающие тестировщики видят только одно направление развития: автоматизация.
Но на самом деле направлений много.
Именно в системном тестировании можно развиваться бесконечно, становясь профессионалом в нагрузочном тестировании, юзабилити, тестировании безопасности, производительности и т.п. Конечно, автоматизация не помешает, но не все любят и хотят программировать 🙂
End-to-End Testing A type of testing in which business processes are tested from start to finish under production-like circumstances. [ISTQB Glossary]
После завершения тестирования всей системы нас ждет последняя проверка перед сдачей работы.
Приемочное тестирование
Приемочное тестирование фокусируется на готовности всей системы в целом.
Существуют несколько форм приемочного тестирования:
Пользовательское приемочное тестирование (User Acceptance testing, UAT) — проверяет пригодность системы к эксплуатации конечными пользователями.
Контрактное приемочное тестирование — проводится в соответствии с критериями, указанными в контракте приемки специального ПО.
Альфа-тестирование (alpha testing) и бета-тестирование (beta-testing) — используются для получения обратной связи от потенциальных или существующих клиентов.
Альфа-тестирование проводится “внутри” компании, без участия разработчиков / тестировщиков продукта.
Бета-тестирование проводится реальными пользователями системы.
Acceptance testing A test level that focuses on determining whether to accept the system. [ISTQB Glossary]
User acceptance testing (UAT) A type of acceptance testing performed to determine if intended users accept the system. [ISTQB Glossary]
Contractual acceptance testing A type of acceptance testing performed to verify whether a system satisfies its contractual requirements. [ISTQB Glossary]
Alpha testing A type of acceptance testing performed in the developer’s test environment by roles outside the development organization. [ISTQB Glossary]
Beta testing A type of acceptance testing performed at an external site to the developer’s test environment by roles outside the development organization. [ISTQB Glossary]
Характеристики приемочного тестирования
Цель: проверка готовности системы
Объект: система, конфигурация системы, бизнес процессы, отчеты, аналитика
Базис: системные требования, бизнес требования, сценарии использования, User Stories
Типичные ошибки: бизнес-требования неправильно реализованы, система не соответствует требованиям контракта
Ответственный: заказчик / клиент / бизнес-аналитик / product owner и тестировщик
Завершая рассмотрение примера можем написать приемочный тест, который выполнит заказчик:
Количество тестов на приемочном уровне намного меньше, чем на других уровнях, потому что в этот момент времени вся система уже проверена. Приемочные тесты практически никогда не автоматизируются.
В Agile разработке, конкретно в Scrum, для всех User Stories обязательно прописываются Acceptance Criteria. Именно они являются основой для приемочных тестов и показывают, что команда сделала именно то, что было нужно.
После завершения приемочного тестирования задача передается клиенту.
Резюме
В этой статье мы описали, что такое уровни тестирования, зачем они нужны и что собой представляет каждый из них.
Мы рассмотрели пример тестирования формы Contact Us.
Мы поняли, что тестирование нужно начинать с самых маленьких частей системы — компонентов / модулей.
Далее стоит проверить взаимосвязи между компонентами и всю систему в целом.
А завершает тестирование — заказчик, выполняя приемочное тестирование.
Для того, чтоб ты смог проверить себя — мы создали специальный тест! Он поможет тебе узнать, насколько хорошо ты разобрался в определениях уровней тестирования и подскажет, что нужно повторить)
🔥 А если ты готов к настоящему вызову и хочешь попробовать применить полученные знания на практике, мы подготовили практические задания по тестированию сайтов разной сложности, выполнение которых покажет, на сколько хорошо ты понимаешь и умеешь применять теорию, связанную с уровнями тестирования.
Если тебе интересна тема тестирования и ты хотел бы получать актуальную информацию по этой теме — подписывайся на наш Телеграм канал! Там интересно: статьи, тесты, опросы, нет спама 😉
Если ты хочешь продолжить разбираться с тестированием — узнай больше о тестировании в целом, разберись с типами тестирования или посмотри принципы тестирования ПО, которые являются основой для понимания тестирования ПО в целом.
Если у тебя возникли вопросы или есть предложения по статье — обращайся к нам в Телеграм, будем рады 🙂
Источники
Что такое уровень тестирования?
Уровень тестирования — активности тестирования, объединенные в группу исходя из общих характеристик, связанных с SDLC.
Что такое компонентное тестирование (unit testing)?
Компонентное / модульное / unit testing — фокусируется на компонентах / модулях / классах, которые могут быть проверены изолированно / отдельно.
Что такое интеграционное тестирование (integration testing)?
Интеграционное тестирование / integration testing — фокусируется на взаимодействии между компонентами / модулями, системами.
Что такое системное тестирование (system testing)?
Системное тестирование / system testing — фокусируется на поведении всей системы в целом с точки зрения конечных пользователей.
Что такое приемочное тестирование (acceptance testing)?
Приемочное тестирование / acceptance testing — фокусируется на поведении всей системы в целом. Оно дает возможность оценить готовность системы к развертыванию и использованию.
Формальное тестирование в отношении потребностей, требований и бизнес-процессов пользователя, проводимое для определения того, удовлетворяет ли система критериям приемки, и для того, чтобы пользователь, клиенты или другой уполномоченный орган могли определить, принимать ли систему.
Испытание дыма может быть использовано в качестве приемочного испытания перед введением сборки программного обеспечения для основного процесса тестирования.
СОДЕРЖАНИЕ
Обзор
Тестовые примеры UAT и OAT идеально подходят для совместной работы с бизнес-клиентами, бизнес-аналитиками, тестировщиками и разработчиками. Важно, чтобы эти тесты включали как тесты бизнес-логики, так и условия операционной среды. Бизнес-клиенты (владельцы продуктов) являются основными участниками этих тестов. Поскольку условия испытаний успешно достигают своих критериев приемлемости, заинтересованные стороны уверены, что разработка идет в правильном направлении.
Процесс
Набор приемочных тестов может потребоваться выполнить несколько раз, поскольку не все тестовые примеры могут быть выполнены в рамках одной итерации теста.
Набор приемочных испытаний запускается с использованием предопределенных процедур приемочных испытаний, чтобы указать тестировщикам, какие данные использовать, пошаговые процессы и ожидаемый результат после выполнения. Фактические результаты сохраняются для сравнения с ожидаемыми. Если фактические результаты соответствуют ожидаемым результатам для каждого тестового примера, тестовый пример считается пройденным. Если количество непроходящих тестовых случаев не превышает заранее установленный порог проекта, набор тестов считается пройденным. Если это так, система может быть отклонена или принята на условиях, предварительно согласованных между спонсором и производителем.
Ожидаемый результат успешного выполнения теста:
Приемочное тестирование пользователей
Пользовательское приемочное тестирование (UAT) состоит из процесса проверки того, что решение работает для пользователя. Это не тестирование системы ( проверка того, что программное обеспечение не дает сбоев и соответствие задокументированным требованиям), а скорее гарантия того, что решение будет работать для пользователя (т. Е. Проверка того, что пользователь принимает решение); поставщики программного обеспечения часто называют это «бета-тестированием».
Это тестирование должно проводиться профильным экспертом (SME), предпочтительно владельцем или клиентом тестируемого решения, и предоставлять сводку результатов для подтверждения, чтобы продолжить после испытания или обзора. При разработке программного обеспечения UAT как один из заключительных этапов проекта часто происходит до того, как клиент или заказчик принимает новую систему. Пользователи системы проводят тесты в соответствии с тем, что происходит в реальных сценариях.
Важно, чтобы материалы, предоставленные тестеру, были аналогичны материалам, которые будут у конечного пользователя. Тестировщикам должны быть предложены сценарии из реальной жизни, такие как три наиболее распространенных или сложных задачи, которые будут выполнять пользователи, которых они представляют.
UAT действует как окончательная проверка требуемой бизнес-функциональности и надлежащего функционирования системы, имитируя реальные условия от имени платящего клиента или конкретного крупного клиента. Если программное обеспечение работает должным образом и без проблем при нормальном использовании, можно разумно экстраполировать тот же уровень стабильности в производственной среде.
UAT следует выполнять по тестовым сценариям. Сценарии тестирования обычно отличаются от системных или функциональных тестов тем, что они представляют собой путь «игрока» или «пользователя». Широкий характер сценария тестирования гарантирует, что основное внимание уделяется путешествию, а не техническим или системным деталям, избегая этапов тестирования «щелчок за щелчком», чтобы учесть различия в поведении пользователей. Сценарии тестирования можно разбить на логические «дни», в которые обычно меняются субъект (игрок / заказчик / оператор) или система (бэк-офис, клиентская часть).
В промышленности обычным UAT является заводское приемочное испытание (FAT). Этот тест проводится перед установкой оборудования. В большинстве случаев тестировщики проверяют не только соответствие оборудования спецификации, но и его полную работоспособность. FAT обычно включает проверку полноты, проверку соответствия контрактным требованиям, подтверждение функциональности (путем моделирования или обычного функционального теста) и окончательную проверку.
Результаты этих тестов вселяют в клиентов уверенность в том, как система будет работать в производственной среде. Также могут быть юридические или договорные требования для принятия системы.
Оперативно-приемочные испытания
Приемочное тестирование по экстремальному программированию
Виды приемочных испытаний
Типичные типы приемочных испытаний включают следующие
Приемочное тестирование пользователей Это может включать заводские приемочные испытания (FAT), т. Е. Тестирование, проводимое поставщиком перед перемещением продукта или системы на место назначения, после чего приемочные испытания сайта (SAT) могут быть выполнены пользователями на сайте. Оперативно-приемочные испытания Также известное как тестирование эксплуатационной готовности, это относится к проверке, выполняемой в системе, чтобы гарантировать, что процессы и процедуры существуют, позволяющие использовать и поддерживать систему. Это может включать проверки, выполняемые для средств резервного копирования, процедуры аварийного восстановления, обучение конечных пользователей, процедуры обслуживания и процедуры безопасности. Приемочные испытания контрактов и нормативных документов При приемочных испытаниях по контракту система проверяется на соответствие критериям приемки, задокументированным в контракте, прежде чем система будет принята. При приемочных испытаниях в соответствии с нормативными требованиями система проверяется на соответствие государственным и юридическим стандартам и стандартам безопасности. Заводские приемочные испытания Приемочные испытания, проводимые на объекте, на котором разрабатывается продукт, и выполняются сотрудниками организации-поставщика, чтобы определить, удовлетворяет ли компонент или система требованиям, обычно включая аппаратное обеспечение и программное обеспечение. Альфа- и бета-тестирование Альфа-тестирование проводится на сайтах разработчиков и включает тестирование операционной системы внутренним персоналом, прежде чем она будет передана внешним клиентам. Бета-тестирование проводится на объектах клиентов и включает тестирование группой клиентов, которые используют систему в своих местах и предоставляют отзывы, прежде чем система будет передана другим клиентам. Последнее часто называют «полевыми испытаниями».