юзабилити тестирование. Юзабилититестирование программного обеспечения
Скачать 3.74 Mb.
|
Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Факультет компьютерного проектирования Кафедра инженерной психологии и эргономики ЮЗАБИЛИТИ-ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Рекомендовано УМО по образованию в области информатики и радиоэлектроники для специальности 1-58 01 01 «Инженерно-психологическое обеспечение информационных технологий», направлений специальности 1-40 05 01-09 «Информационные системы и технологии (в обеспечении промышленной безопасности)» и 1-40 05 01-10 «Информационные системы и технологии (в бизнес-менеджменте)» в качестве пособия Минск БГУИР 2017 УДК 004.415.53(076) ББК 32.972.1я73 Ю20 А в т о р ы: М. М. Меженная, Т. В. Гордейчук, М. М. Борисик, О. С. Медведев, И. Ф. Киринович Р е ц е н з е н т ы: кафедра интеллектуальных систем Белорусского национального технического университета (протокол №11 от 17.05.2016); заведующий лабораторией биоинформатики государственного научного учреждения «Объединенный институт проблем информатики Национальной академии наук Беларуси», кандидат технических наук, доцент И. Э. Том; заведующая кафедрой программного обеспечения информационных технологий учреждения образования «Белорусский государственный университет информатики и радиоэлектроники», кандидат технических наук, доцент Н. В. Лапицкая Юзабилити-тестирование программного обеспечения : пособие / Ю20 М. М. Меженная [и др.]. – Минск : БГУИР, 2017. – 72 с. : ил. ISBN 978-985-543-349-2. Посвящено вопросам анализа, планирования, проведения тестовых испытаний и оценки качества программного обеспечения на всех стадиях его жизненного цикла. УДК 004.415.53(076) ББК 32.972.1я73 ISBN 978-985-543-349-2 © УО «Белорусский государственный университет информатики и радиоэлектроники», 2017 3 Содержание Введение ............................................................................................................................4 Лабораторная работа №1 Виды тестирования. Планирование тестирования ........................................................5 Лабораторная работа №2 Разработка требований .................................................................................................. 15 Лабораторная работа №3 Тестирование требований ............................................................................................. 22 Лабораторная работа №4 Тестирование программного обеспечения: разработка тестов ................................. 30 Лабораторная работа №5 Поиск и документирование дефектов .......................................................................... 47 Лабораторная работа №6 Документирование результатов тестирования ........................................................... 56 Лабораторная работа №7 Тестирование юзабилити .............................................................................................. 62 Литература ...................................................................................................................... 71 4 Введение Настоящее пособие направлено на получение студентами теоретических знаний и практических навыков по современным технологиям тестирования про- граммного обеспечения и включает основные разделы знаний, необходимые для специалистов по обеспечению качества программных продуктов: классификация видов тестирования; планирование тестирования; разработка и тестирование требований к программному обеспечению; разработка тестов; поиск и описание дефектов; оценка качества и документирование результатов тестирования. Подробно рассмотрены особенности юзабилити-тестрирования, направлен- ного на повышение эффективности человеко-компьютерного взаимодействия по- средством разработки эргономичных интерфейсов. Пообие содержит базовые проверки графического интерфейса пользователя и функциональности программного обеспечения, примеры рабочей и отчетной те- стовой документации, поясняющие иллюстрации. Авторы выражают особую благодарность компании A1QA ЗАО «Техноло- гии качества» и лично Надежде Кныш, компании «EPAM Systems» и лично Свято- славу Куликову за обучающие материалы и консультативную помощь. 5 Лабораторная работа №1 Виды тестирования. Планирование тестирования Цель: изучить классификацию видов тестирования, разработать проверки для различных видов тестирования, научиться планировать тестовые активности в за- висимости от особенностей поставляемой на тестирование функциональности. План занятия: 1. Изучить теоретические сведения. 2. Выполнить практическое задание по лабораторной работе. 3. Оформить отчет и ответить на контрольные вопросы. Теоретические сведения Тестирование (Testing) – процесс анализа программного средства и сопут- ствующей документации с целью выявления дефектов и повышения качества про- дукта [1]. Конечной целью тестирования является предоставление пользователю каче- ственного программного обеспечения (ПО) [2]. Качество (Quality) – степень, с которой компонент, система или процесс соот- ветствует зафиксированным требованиям и/или ожиданиям и нуждам пользовате- ля или заказчика [3]. Дефект (defect, bug, ошибка) – ключевой термин тестирования, означающий отклонение фактического результата от ожидаемого. Для обнаружения дефекта необходимо выполнить три условия: знать фактический результат, знать ожидае- мый результат, зафиксировать факт разницы между фактическим и ожидаемым результатом. Процесс тестирования как процесс поиска дефектов сводится к следующей последовательности действий: 1. Узнаем ожидаемый результат. 2. Узнаем фактический результат. 3. Сравниваем ожидаемый и фактический результаты. Источником ожидаемого результата является спецификация – детальное опи- сание того, как должно работать ПО. В общем случае любой дефект представляет собой отклонение от специфика- ции. Важно обнаружить эти дефекты до того, как их найдут конечные пользователи. Тестирование можно классифицировать по очень большому количеству при- знаков. Далее приведен обобщенный список видов тестирования по различным основаниям. 6 1. Виды тестирования в зависимости от объекта тестирования: функциональ- ные, пограничные, нефункциональные (рисунок 1.1). Рисунок 1.1 – Классификация видов тестирования в зависимости от объекта Рассмотрим функциональные виды тестирования. Функциональное тестирование (Functional Testing) – тестирование, основан- ное на сравнительном анализе спецификации и функциональности компонента или системы. Тестирование безопасности (Safety Testing)– тестирование программного продукта с целью определить его способность при использовании оговоренным образом оставаться в рамках приемлемого риска причинения вреда здоровью, биз- несу, программам, собственности или окружающей среде. 7 Тестирование защищенности (Security Testing)– тестирование с целью оце- нить защищенность программного продукта от внешних воздействий (от проник- новений). На практике зачастую под термином тестирование безопасности пони- мают в том числе и тестирование защищенности. Рассмотрим пограничные виды тестирования. Тестирование совместимости (Compatibility Testing) – проверка работоспо- собности приложения в различных средах (браузеры и их версии, операционные системы, их типы, версии и разрядность). Виды тестирования совместимости: кроссбраузерное тестирование (различные браузеры или версии браузеров), крос- сплатформенное тестирование (различные операционные системы или версии операционных систем). Рассмотрим нефункциональные виды тестирования, направленные на провер- ку характеристик или свойств программы (внешний вид, удобство использования, скорость работы и т. п.). Тестирование требований (Requirements Testing) – проверка требований на соответствие основным атрибутам качества. Тестирование прототипа (Prototype Testing) – метод выявления структурных, логических ошибок и ошибок проектирования на ранней стадии развития продук- та до начала фактической разработки. Тестирование пользовательского интерфейса (GUI Testing) – тестирование, выполняемое путем взаимодействия с системой через графический интерфейс пользователя (правописание выводимой информации; расположение и выравнива- ние элементов GUI; соответствие названий форм/элементов GUI их назначению; унификация стиля, цвета, шрифта; окна сообщений; изменение размеров окна, по- ведение курсора и горячие клавиши). Тестирование удобства использования (Usability Testing) – тестирование с це- лью определения степени понятности, легкости в изучении и использовании, при- влекательности программного продукта для пользователя при условии использо- вания в заданных условиях эксплуатации (на этом уровне обращают внимание на визуальное оформление, навигацию, логичность, наличие обратной связи и др.). Тестирование доступности (Accessibility Testing) – тестирование, которое определяет степень легкости, с которой пользователи с ограниченными способно- стями могут использовать систему или ее компоненты. Тестирование интернационализации (Internationalization Testing) – тестирова- ние адаптации продукта к языковым и культурным особенностям целого ряда ре- гионов, в которых потенциально может использоваться продукт. Тестирование локализации (Localization Testing) – тестирование адаптации продукта к языковым и культурным особенностям конкретного региона, отлично- го от того, в котором разрабатывался продукт. 8 Тестирование производительности (Performance Testing) – процесс тестиро- вания с целью определения производительности программного продукта. В рам- ках тестирования производительности выделяют нагрузочное тестирование, объ- емное тестирование, тестирование стабильности и надежности, стрессовое тести- рование. Нагрузочное тестирование (Performance and Load Testing) – вид тестирования производительности, проводимый с целью оценки поведения компонента или си- стемы при возрастающей нагрузке, например количестве параллельных пользова- телей и/или операций, а также определения, какую нагрузку может выдержать компонент или система. Объемное тестирование (Volume Testing) – позволяет получить оценку произ- водительности при увеличении объемов данных в базе данных приложения. Тестирование стабильности и надежности (Stability/Reliability Testing) – поз- воляет проверять работоспособность приложения при длительном (многочасовом) тестировании со средним уровнем нагрузки. Стрессовое тестирование (Stress Testing) – вид тестирования производитель- ности, оценивающий систему или компонент на граничных значениях рабочих нагрузок, или за их пределами, или же в состоянии ограниченных ресурсов, таких как память или доступ к серверу. Тестирование на отказ и восстановление (Failover and Recovery Testing) – те- стирование при помощи эмуляции отказов системы или реально вызываемых от- казов в управляемом окружении. Тестирование установки (Installability Testing) и лицензирования – процесс тестирования установки программного продукта.Включает формальный тест про- граммы установки приложения (проверка пользовательского интерфейса, навига- ции, удобства использования, соответствия общепринятым стандартам оформле- ния);функциональный тест программы установки;тестирование механизма ли- цензирования и функций защиты от пиратства;проверку стабильности приложе- ния после установки. 2. Виды тестирования в зависимости от знания кода: белый ящик, серый ящик, черный ящик. Белый ящик (White Box Testing) – тестирование, основанное на анализе внут- ренней структуры компонентов или системы (у тестировщика есть доступ к внут- ренней структуре и коду приложения). Черный ящик (Black Box Testing) – тестирование системы без знания внут- ренней структуры и компонентов системы (у тестировщика нет доступа к внут- ренней структуре и коду приложения либо в процессе тестирования он не обраща- ется к ним). 9 Серый ящик (Grey Box Testing) – комбинация методов белого и черного ящи- ка, состоящая в том, что у тестировщика есть доступ только к некоторой части внутренней структуры и кода приложения. 3. Виды тестирования в зависимости от степени автоматизации: ручное, ав- томатизированное тестирование. Ручное тестирование – такое тестирование, в котором тест-кейсы выполняют- ся тестировщиком вручную без использования средств автоматизации. Автоматизированное тестирование (Automated Testing) – набор техник, под- ходов и инструментальных средств, позволяющий исключить человека из выпол- нения некоторых задач в процессе тестирования. Тест-кейсы частично или полно- стью выполняет специальное инструментальное средство. 4. Виды тестирования в зависимости от степени изолированности тестируе- мых компонентов: модульное, интеграционное, системное тестирование. Модульное тестирование (Unit/Component Testing) – тестируются отдельные части (модули) системы. Интеграционное тестирование (Integration Testing) – тестируется взаимодей- ствие между отдельными модулями. Системное тестирование (System Testing) – тестируется работоспособность системы в целом. 5. Виды тестирования в зависимости от подготовленности: интуитивное те- стирование, исследовательское тестирование, тестирование по документации. Интуитивное тестирование выполняется без подготовки к тестам, без опреде- ления ожидаемых результатов, проектирования тестовых сценариев. Исследовательское тестирование – метод проектирования тестовых сценариев во время выполнения этих сценариев. Тестирование по документации – тестирование по подготовленным тестовым сценариям, руководству по осуществлению тестов. 6. Виды тестирования в зависимости от места и времени проведения тестиро- вания: приемочное тестирование, альфа-тестирование, бета-тестирование. Приемочное тестирование (User Acceptance Testing, UAT) – формальное те- стирование по отношению к потребностям, требованиям и бизнес-процессам пользователя, проводимое с целью определения соответствия системы критериям приемки и предоставления возможности пользователям, заказчикам или иным ав- торизованным лицам решать, принимать систему или нет. Альфа-тестирование (Alpha Testing) – моделируемое или действительное функциональное тестирование, выполняется в организации, разрабатывающей продукт, но не проектной командой (это может быть независимая команда тести- ровщиков, потенциальные пользователи, заказчики). Альфа-тестирование часто применяется к коробочному программному обеспечению в качестве внутреннего приемочного тестирования. 10 Бета-тестирование (Beta Testing) – эксплуатационное тестирование потенци- альными или существующими клиентами/заказчиками на внешней стороне (в сре- де, где продукт будет использоваться), никак не связанными с разработчиками, с целью определения, действительно ли компонент или система удовлетворяет тре- бованиям клиента/заказчика и вписывается в бизнес-процессы. Бета-тестирование часто проводится как форма внешнего приемочного тестирования готового про- граммного обеспечения для того, чтобы получить отзывы рынка. 7. Виды тестирования в зависимости от глубины тестового покрытия: 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. Тест на этом уровне покрывает все возмож- ные сценарии тестирования: проверку работоспособности модулей при вводе кор- ректных значений; проверку при вводе некорректных значений; использование форматов данных, отличных от тех, которые указаны в требованиях; проверку ис- ключительных ситуаций, сообщений об ошибках; тестирование на различных комбинациях входных параметров; проверку всех классов эквивалентности; те- стирование граничных значений интервалов; сценарии, не предусмотренные спе- цификацией и т. д. 8. Виды тестирования в зависимости от тестовых активностей: NFT, RT, DV. Данная классификация тестирования иначе называется видами тестирования в за- висимости от ширины тестового покрытия. Тестирование новых функциональностей (New Feature Test, NFT) – опреде- ление качества поставленной на тестирование новой функциональности, которая ранее не тестировалась. Данный тип тестирования включает в себя: проведение полного теста (АТ) непосредственно новой функциональности; тестирование но- вой функциональности на соответствие документации; проверку всевозможных взаимодействий ранее реализованной функциональности с новыми модулями и функциями. 11 Регрессионное тестирование (Regression Testing, RT) проводится с целью оценки качества ранее реализованной функциональности. Включает в себя про- верку стабильности ранее реализованной функциональности после внесения изме- нений, например добавления новой функциональности, исправление дефектов, оп- тимизация кода, разворачивание приложения на новом окружении. Регрессионное тестирование выполняется на уровнях MAT, AT. Валидация дефектов (Defect Validation, DV) – проверка результатов исправ- ления дефектов; может включать элементы регрессионного тестирования; уровень проверки не определяется. Процесс тестирования программного продукта включает следующие этапы: 1. Планирование тестирования. 2. Разработка рабочей тестовой документации (тестов). 3. Исполнение тестирования. Планирование тестирования включает изучение и анализ предмета тестиро- вания, составление тест-плана. На стадии планирования тестирования перед те- стировщиком стоит задача поиска компромисса между объемом тестирования, ко- торый возможен в теории, и объемом тестирования, который возможен на практи- ке. Результирующий тест-план представляет собой документ, описывающий и ре- гламентирующий перечень работ по тестированию, а также соответствующие тех- ники и подходы, стратегию, области ответственности, ресурсы, расписание и клю- чевые даты. Разработка тестов, как правило, выполняется до реализации программного обеспечения, основываясь исключительно на спецификации к программному про- дукту. Выполнение тестирования начинается после поставки первой версии про- граммного продукта и представляет собой практический поиск дефектов с исполь- зованием тестовой документации, составленной ранее, а также контроль исправ- ления обнаруженных дефектов. Для всех программных продуктов выполняют следующие типы тестов и их композиции. Для первой поставки программного обеспечения рекомендуется проводить Smoke + NFT AT готовой функциональности: поверхностное тестирование (Smoke Test) выполняется для определения пригодности сборки для дальнейшего тестиро- вания; полное тестирование системы или ее части как на корректных, так и на не- корректных данных/сценариях (Acceptance Test, AT) позволяет обнаружить де- фекты и внести запись о них в багтрэкинговую систему. Для последующих поставок программного обеспечения композиции тестов могут быть следующими. 12 Если не была добавлена новая функциональность, то DV + RT MAT . То есть выполняется проверка исправления дефектов программистом (Defect Validation, DV), а также проверка работоспособности остальной функциональности после ис- правления дефектов на позитивных сценариях (Minimal Acceptance Test, MAT). Если была добавлена новая функциональность, то Smoke + DV + NFT AT + RT MAT . В частности, выполняется поверхностное тестиро- вание (Smoke Test), проверка исправления дефектов программистом (Defect Vali- dation, DV), тестирование новых функциональностей (New Feature Testing, NFT), проверка старых функциональностей, т. е. регрессионное тестирование (Regression Test). Если была добавлена новая функциональность, то возможен также вариант DV + NFT AT + RT MAT , т. е. без выполнения Smoke Test. Таким образом, для второй и последующих поставок обобщенная схема ком- позиции тестов выглядит следующим образом: Smoke + DV + (NFT AT ) + RT MAT В зависимости от типа и специфики приложения (web, desktop, mobile) вы- полняют специализированные тесты (например, кроссбраузерное или кроссплат- форменное тестирование, тестирование локализации и интернационализации и др.). Практическое задание: 1. Выбрать объект реального мира (например, карандаш, стол, чашка, клавиа- тура, сумка и др.) с целью последующей разработки тестовых проверок для него. 2. Разработать различные проверки в соответствии с классификацией видов тестирования для выбранного объекта реального мира. Результаты внести в таб- лицу 1.1. 3. Разработать композицию тестов для первой поставки программного обес- печения (build 1), состоящей из трех модулей (модуль 1, модуль 2, модуль 3). 4. Разработать композицию тестов для второй поставки программного обес- печения (build 2): исправлены заведенные дефекты, доставлена новая функцио- нальность – модуль 4. 5. Разработать композицию тестов для третьей поставки программного обес- печения (build 3): заказчик решил расширять рынки сбыта и просит осуществить поддержку программного обеспечения на английском языке. 6. Разработать композицию тестов для четвертой поставки программного обеспечения (build 4): заказчик хочет убедиться, что программное обеспечение выдержит нагрузку в 2000 пользователей. 7. Оформить отчет и защитить лабораторную работу. 13 Таблица 1.1 – Тестовые проверки для различных видов тестирования |