|
Юзабилититестирование программного
4 Введение
Настоящее пособие направлено на получение студентами теоретических знаний и практических навыков по современным технологиям тестирования про- граммного обеспечения и включает основные разделы знаний, необходимые для специалистов по обеспечению качества программных продуктов:
классификация видов тестирования; планирование тестирования; разработка и тестирование требований к программному обеспечению; разработка тестов; поиск и описание дефектов; оценка качества и документирование результатов тестирования.
Подробно рассмотрены особенности юзабилити-тестрирования, направлен- ного на повышение эффективности человеко-компьютерного взаимодействия по- средством разработки эргономичных интерфейсов.
Пообие содержит базовые проверки графического интерфейса пользователя и функциональности программного обеспечения, примеры рабочей и отчетной те- стовой документации, поясняющие иллюстрации.
Авторы выражают особую благодарность компании A1QA ЗАО «Техноло- гии качества» и лично Надежде Кныш, компании «EPAM Systems» и лично Свято- славу Куликову за обучающие материалы и консультативную помощь.
Лабораторная работа №1 Виды тестирования. Планирование тестирования
Цель: изучить классификацию видов тестирования, разработать проверки для различных видов тестирования, научиться планировать тестовые активности в за- висимости от особенностей поставляемой на тестирование функциональности. Планзанятия:
Изучить теоретические сведения. Выполнить практическое задание по лабораторной работе. Оформить отчет и ответить на контрольные вопросы.
Теоретическиесведения
Тестирование (Testing) – процесс анализа программного средства и сопут- ствующей документации с целью выявления дефектов и повышения качества про- дукта [1].
Конечной целью тестирования является предоставление пользователю каче- ственного программного обеспечения (ПО) [2].
Качество (Quality) – степень, с которой компонент, система или процесс соот- ветствует зафиксированным требованиям и/или ожиданиям и нуждам пользовате- ля или заказчика [3].
Дефект (defect, bug, ошибка) – ключевой термин тестирования, означающий отклонение фактического результата от ожидаемого. Для обнаружения дефекта необходимо выполнить три условия: знать фактический результат, знать ожидае- мый результат, зафиксировать факт разницы между фактическим и ожидаемым результатом.
Процесс тестирования как процесс поиска дефектов сводится к следующей последовательности действий:
Узнаем ожидаемый результат. Узнаем фактический результат. Сравниваем ожидаемый и фактический результаты.
Источником ожидаемого результата является спецификация – детальное опи- сание того, как должно работать ПО.
В общем случае любой дефект представляет собой отклонение от специфика- ции. Важно обнаружить эти дефекты до того, как их найдут конечные пользователи.
Тестирование можно классифицировать по очень большому количеству при- знаков. Далее приведен обобщенный список видов тестирования по различным основаниям.
5
Виды тестирования в зависимости от объекта тестирования: функциональ- ные, пограничные, нефункциональные (рисунок 1.1).
Рисунок 1.1 – Классификация видов тестирования в зависимости от объекта Рассмотрим функциональные виды тестирования.
Функциональное тестирование (Functional Testing) – тестирование, основан- ное на сравнительном анализе спецификации и функциональности компонента или системы.
Тестирование безопасности (Safety Testing) – тестирование программного продукта с целью определить его способность при использовании оговоренным образом оставаться в рамках приемлемого риска причинения вреда здоровью, биз- несу, программам, собственности или окружающей среде.
6
Тестирование защищенности (Security Testing) – тестирование с целью оце- нить защищенность программного продукта от внешних воздействий (от проник- новений). На практике зачастую под термином тестирование безопасности пони- мают в том числе и тестирование защищенности.
Рассмотрим пограничные виды тестирования.
Тестирование совместимости (Compatibility Testing) – проверка работоспо- собности приложения в различных средах (браузеры и их версии, операционные системы, их типы, версии и разрядность). Виды тестирования совместимости: кроссбраузерное тестирование (различные браузеры или версии браузеров), крос- сплатформенное тестирование (различные операционные системы или версии операционных систем).
Рассмотрим нефункциональные виды тестирования, направленные на провер- ку характеристик или свойств программы (внешний вид, удобство использования, скорость работы и т. п.).
Тестирование требований (Requirements Testing) – проверка требований на соответствие основным атрибутам качества.
Тестирование прототипа (Prototype Testing) – метод выявления структурных, логических ошибок и ошибок проектирования на ранней стадии развития продук- та до начала фактической разработки.
Тестирование пользовательского интерфейса (GUI Testing) – тестирование, выполняемое путем взаимодействия с системой через графический интерфейс пользователя (правописание выводимой информации; расположение и выравнива- ние элементов GUI; соответствие названий форм/элементов GUI их назначению; унификация стиля, цвета, шрифта; окна сообщений; изменение размеров окна, по- ведение курсора и горячие клавиши).
Тестирование удобства использования (Usability Testing) – тестирование с це- лью определения степени понятности, легкости в изучении и использовании, при- влекательности программного продукта для пользователя при условии использо- вания в заданных условиях эксплуатации (на этом уровне обращают внимание на визуальное оформление, навигацию, логичность, наличие обратной связи и др.).
Тестирование доступности (Accessibility Testing) – тестирование, которое определяет степень легкости, с которой пользователи с ограниченными способно- стями могут использовать систему или ее компоненты.
Тестирование интернационализации (Internationalization Testing) – тестирова- ние адаптации продукта к языковым и культурным особенностям целого ряда ре- гионов, в которых потенциально может использоваться продукт.
Тестирование локализации (Localization Testing) – тестирование адаптации продукта к языковым и культурным особенностям конкретного региона, отлично- го от того, в котором разрабатывался продукт. 7
Тестирование производительности (Performance Testing) – процесс тестиро- вания с целью определения производительности программного продукта. В рам- ках тестирования производительности выделяют нагрузочное тестирование, объ- емное тестирование, тестирование стабильности и надежности, стрессовое тести- рование.
Нагрузочное тестирование (Performance and Load Testing) – вид тестирования производительности, проводимый с целью оценки поведения компонента или си- стемы при возрастающей нагрузке, например количестве параллельных пользова- телей и/или операций, а также определения, какую нагрузку может выдержать компонент или система.
Объемное тестирование (Volume Testing) – позволяет получить оценку произ- водительности при увеличении объемов данных в базе данных приложения.
Тестирование стабильности и надежности (Stability/Reliability Testing) – поз- воляет проверять работоспособность приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки.
Стрессовое тестирование (Stress Testing) – вид тестирования производитель- ности, оценивающий систему или компонент на граничных значениях рабочих нагрузок, или за их пределами, или же в состоянии ограниченных ресурсов, таких как память или доступ к серверу.
Тестирование на отказ и восстановление (Failover and Recovery Testing) – те- стирование при помощи эмуляции отказов системы или реально вызываемых от- казов в управляемом окружении.
Тестирование установки (Installability Testing) и лицензирования – процесс тестирования установки программного продукта. Включает формальный тест про- граммы установки приложения (проверка пользовательского интерфейса, навига- ции, удобства использования, соответствия общепринятым стандартам оформле- ния); функциональный тест программы установки; тестирование механизма ли- цензирования и функций защиты от пиратства; проверку стабильности приложе- ния после установки.
Виды тестирования в зависимости от знания кода: белый ящик, серый ящик, черный ящик.
Белый ящик (White Box Testing) – тестирование, основанное на анализе внут- ренней структуры компонентов или системы (у тестировщика есть доступ к внут- ренней структуре и коду приложения).
Черный ящик (Black Box Testing) – тестирование системы без знания внут- ренней структуры и компонентов системы (у тестировщика нет доступа к внут- ренней структуре и коду приложения либо в процессе тестирования он не обраща- ется к ним).
8
Серый ящик (Grey Box Testing) – комбинация методов белого и черного ящи- ка, состоящая в том, что у тестировщика есть доступ только к некоторой части внутренней структуры и кода приложения.
Виды тестирования в зависимости от степени автоматизации: ручное, ав- томатизированное тестирование.
Ручное тестирование – такое тестирование, в котором тест-кейсы выполняют- ся тестировщиком вручную без использования средств автоматизации.
Автоматизированное тестирование (Automated Testing) – набор техник, под- ходов и инструментальных средств, позволяющий исключить человека из выпол- нения некоторых задач в процессе тестирования. Тест-кейсы частично или полно- стью выполняет специальное инструментальное средство.
Виды тестирования в зависимости от степени изолированности тестируе- мых компонентов: модульное, интеграционное, системное тестирование.
Модульное тестирование (Unit/Component Testing) – тестируются отдельные части (модули) системы.
Интеграционное тестирование (Integration Testing) – тестируется взаимодей- ствие между отдельными модулями.
Системное тестирование (System Testing) – тестируется работоспособность системы в целом.
Виды тестирования в зависимости от подготовленности: интуитивное те- стирование, исследовательское тестирование, тестирование по документации.
Интуитивное тестирование выполняется без подготовки к тестам, без опреде- ления ожидаемых результатов, проектирования тестовых сценариев.
Исследовательское тестирование – метод проектирования тестовых сценариев во время выполнения этих сценариев.
Тестирование по документации – тестирование по подготовленным тестовым сценариям, руководству по осуществлению тестов.
Виды тестирования в зависимости от места и времени проведения тестиро- вания: приемочное тестирование, альфа-тестирование, бета-тестирование.
Приемочное тестирование (User Acceptance Testing, UAT) – формальное те- стирование по отношению к потребностям, требованиям и бизнес-процессам пользователя, проводимое с целью определения соответствия системы критериям приемки и предоставления возможности пользователям, заказчикам или иным ав- торизованным лицам решать, принимать систему или нет.
Альфа-тестирование (Alpha Testing) – моделируемое или действительное функциональное тестирование, выполняется в организации, разрабатывающей продукт, но не проектной командой (это может быть независимая команда тести- ровщиков, потенциальные пользователи, заказчики). Альфа-тестирование часто применяется к коробочному программному обеспечению в качестве внутреннего приемочного тестирования. 9
Бета-тестирование (Beta Testing) – эксплуатационное тестирование потенци- альными или существующими клиентами/заказчиками на внешней стороне (в сре- де, где продукт будет использоваться), никак не связанными с разработчиками, с целью определения, действительно ли компонент или система удовлетворяет тре- бованиям клиента/заказчика и вписывается в бизнес-процессы. Бета-тестирование часто проводится как форма внешнего приемочного тестирования готового про- граммного обеспечения для того, чтобы получить отзывы рынка.
Виды тестирования в зависимости от глубины тестового покрытия: Smoke, MAT, AT.
Тестовое покрытие – одна из метрик оценки качества тестирования, пред- ставляющая из себя плотность покрытия тестами требований либо исполняемого кода.
Smoke Test – поверхностное тестирование для определения пригодности сборки для дальнейшего тестирования, должно покрывать базовые функции про- граммного обеспечения; уровень качества: Acceptable/Unacceptable.
Minimal Acceptance Test (MAT, Positive Test) – тестирование системы или ее части только на корректных данных/сценариях; уровень качества: High/Medium/Low.
Acceptance Test (AT) – полное тестирование системы или ее части как на кор- ректных (Positive Test), так и на некорректных данных/сценариях (Negative Test); уровень качества: High/Medium/Low. Тест на этом уровне покрывает все возмож- ные сценарии тестирования: проверку работоспособности модулей при вводе кор- ректных значений; проверку при вводе некорректных значений; использование форматов данных, отличных от тех, которые указаны в требованиях; проверку ис- ключительных ситуаций, сообщений об ошибках; тестирование на различных комбинациях входных параметров; проверку всех классов эквивалентности; те- стирование граничных значений интервалов; сценарии, не предусмотренные спе- цификацией и т. д.
Виды тестирования в зависимости от тестовых активностей: NFT, RT, DV. Данная классификация тестирования иначе называется видами тестирования в за- висимости от ширины тестового покрытия.
Тестирование новых функциональностей (New Feature Test, NFT) – опреде- ление качества поставленной на тестирование новой функциональности, которая ранее не тестировалась. Данный тип тестирования включает в себя: проведение полного теста (АТ) непосредственно новой функциональности; тестирование но- вой функциональности на соответствие документации; проверку всевозможных взаимодействий ранее реализованной функциональности с новыми модулями и функциями.
10
Регрессионное тестирование (Regression Testing, RT) проводится с целью оценки качества ранее реализованной функциональности. Включает в себя про- верку стабильности ранее реализованной функциональности после внесения изме- нений, например добавления новой функциональности, исправление дефектов, оп- тимизация кода, разворачивание приложения на новом окружении. Регрессионное тестирование выполняется на уровнях MAT, AT.
Валидация дефектов (Defect Validation, DV) – проверка результатов исправ- ления дефектов; может включать элементы регрессионного тестирования; уровень проверки не определяется.
Процесс тестирования программного продукта включает следующие этапы:
Планирование тестирования. Разработка рабочей тестовой документации (тестов). Исполнение тестирования.
Планирование тестирования включает изучение и анализ предмета тестиро- вания, составление тест-плана. На стадии планирования тестирования перед те- стировщиком стоит задача поиска компромисса между объемом тестирования, ко- торый возможен в теории, и объемом тестирования, который возможен на практи- ке. Результирующий тест-план представляет собой документ, описывающий и ре- гламентирующий перечень работ по тестированию, а также соответствующие тех- ники и подходы, стратегию, области ответственности, ресурсы, расписание и клю- чевые даты.
Разработка тестов, как правило, выполняется до реализации программного обеспечения, основываясь исключительно на спецификации к программному про- дукту.
Выполнение тестирования начинается после поставки первой версии про- граммного продукта и представляет собой практический поиск дефектов с исполь- зованием тестовой документации, составленной ранее, а также контроль исправ- ления обнаруженных дефектов.
Для всех программных продуктов выполняют следующие типы тестов и их композиции.
Для первой поставки программного обеспечения рекомендуется проводить Smoke + NFTAT готовой функциональности: поверхностное тестирование (Smoke Test) выполняется для определения пригодности сборки для дальнейшего тестиро- вания; полное тестирование системы или ее части как на корректных, так и на не- корректных данных/сценариях (Acceptance Test, AT) позволяет обнаружить де- фекты и внести запись о них в багтрэкинговую систему.
Для последующих поставок программного обеспечения композиции тестов могут быть следующими.
11
Если не была добавлена новая функциональность, то DV + RTMAT. То есть выполняется проверка исправления дефектов программистом (Defect Validation, DV), а также проверка работоспособности остальной функциональности после ис- правления дефектов на позитивных сценариях (Minimal Acceptance Test, MAT).
Если была добавлена новая функциональность, то Smoke + DV + NFTAT + RTMAT. В частности, выполняется поверхностное тестиро- вание (Smoke Test), проверка исправления дефектов программистом (Defect Vali- dation, DV), тестирование новых функциональностей (New Feature Testing, NFT), проверка старых функциональностей, т. е. регрессионное тестирование (Regression Test).
Если была добавлена новая функциональность, то возможен также вариант DV + NFTAT + RTMAT, т. е. без выполнения Smoke Test.
Таким образом, для второй и последующих поставок обобщенная схема ком- позиции тестов выглядит следующим образом:
Smoke + DV + (NFTAT) + RTMAT.
В зависимости от типа и специфики приложения (web, desktop, mobile) вы- полняют специализированные тесты (например, кроссбраузерное или кроссплат- форменное тестирование, тестирование локализации и интернационализации и др.). Практическоезадание:
Выбрать объект реального мира (например, карандаш, стол, чашка, клавиа- тура, сумка и др.) с целью последующей разработки тестовых проверок для него. Разработать различные проверки в соответствии с классификацией видов тестирования для выбранного объекта реального мира. Результаты внести в таб- лицу 1.1. Разработать композицию тестов для первой поставки программного обес- печения (build 1), состоящей из трех модулей (модуль 1, модуль 2, модуль 3). Разработать композицию тестов для второй поставки программного обес- печения (build 2): исправлены заведенные дефекты, доставлена новая функцио- нальность – модуль 4. Разработать композицию тестов для третьей поставки программного обес- печения (build 3): заказчик решил расширять рынки сбыта и просит осуществить поддержку программного обеспечения на английском языке. Разработать композицию тестов для четвертой поставки программного обеспечения (build 4): заказчик хочет убедиться, что программное обеспечение выдержит нагрузку в 2000 пользователей. Оформить отчет и защитить лабораторную работу.
12
Таблица 1.1 – Тестовые проверки для различных видов тестирования
Объект тестирования: указать
| Вид тестирования
| Краткое определение вида тестирования
| Тестовые проверки
| Functional Testing
|
|
| Safety Testing
|
|
| Security Testing
|
|
| Compatibility Testing
|
|
| GUI Testing
|
|
| Usability Testing
|
|
| Accessibility Testing
|
|
| Internationalization Testing
|
|
| Performance Testing
|
|
| Stress Testing
|
|
| Negative Testing
|
|
| Black Box Testing
|
|
| Automated Testing
|
|
| Unit/Component Testing
|
|
| Integration Testing
|
|
|
Содержаниеотчета:
Цель работы. Разработанные проверки выбранного объекта реального мира для различ- ных видов тестирования. Тестовые активности для сформулированных задач. Выводы по работе.
Контрольныевопросы:
Что такое тестирование? Что такое качество программного обеспечения? Что такое дефект? Назовите три условия обнаружения дефекта. Какие существуют виды тестирования в зависимости от объекта тестиро- вания? Дайте характеристику каждому. Какие существуют виды функционального тестирования? Дайте характе- ристику каждому. Какие существуют виды нефункционального тестирования? Дайте харак- теристику каждому. Какие существуют виды тестирования в зависимости от глубины покры- тия? Дайте характеристику каждому.
13
14 Какие существуют тестовые активности? Дайте характеристику каждому. Какие существуют виды тестирования в зависимости от знания кода? Дайте характеристику каждому. Какие существуют виды тестирования в зависимости от степени автома- тизации? Дайте характеристику каждому. Какие существуют виды тестирования в зависимости от изолированности компонентов? Дайте характеристику каждому. Какие существуют виды тестирования в зависимости от подготовленно- сти? Дайте характеристику каждому. Какие существуют виды тестирования в зависимости от места и времени проведения? Дайте характеристику каждому. Какие этапы составляют процесс тестирования? Какая композиция тестов выполняется для первой поставки программного продукта? Какая композиция тестов выполняется для последующих поставок про- граммного продукта?
|
|
|