Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

436

.pdf
Скачиваний:
3
Добавлен:
07.01.2021
Размер:
495.54 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

«Сибирский государственный автомобильно-дорожный университет (СибАДИ)»

ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Методические указания

Составители: Л.И. Остринская, С.Ю. Пестова

Омск – 2018

УДК 004.9 ББК 30.2-5-05

Т91

_____________________________

Согласно 436-ФЗ от 29.12.2010 «О защите детей от информации, причиняющей вред их здоровью и развитию» данная продукция маркировке не подлежит.

_____________________________

Рецензент

д-р техн. наук В.А Мещеряков (СибАДИ)

Работа утверждена редакционно-издательским советом университета в качестве методических указаний.

Т91 Тестирование программного обеспечения [Электронный ресурс] :

методические указания по дисциплине к практическим и контрольным работам / сост. : Л.И.Остринская, С.Ю.Пестова. – (Серия внутривузовских методических

указаний СибАДИ). – Электрон. дан. – Омск : СибАДИ, 2018. – Режим доступа: http://bek.sibadi.org/fulltext/bn1171.pdf, свободный после авторизации. –

Загл. с экрана.

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

Имеется интерактивное оглавление в виде закладок.

Методические указания предназначены для магистрантов направления 09.04.01 «Информатика и вычислительная техника» и 09.03.03 и бакалавров «Прикладная информатика». Также могут быть использованы как дополнительный учебный материал в различных информационных дисциплинах для формирования профессиональных компетенций.

Текстовое (символьное) издание

Системные требования: Intel, 3,4 GHz; 150 Мб; Windows XP/Vista/7; DVD-ROM; 1 Гб свободного места на жестком диске; программа для чтения pdf-файлов:

Adobe Acrobat Reader; Foxit Reader

Техническая подготовка В.С. Черкашина Издание первое. Дата подписания к использованию 22.12.2018

Издательско-полиграфический комплекс СибАДИ. 644080, г. Омск, пр. Мира, 5 РИО ИПК СибАДИ. 644080, г. Омск, ул. 2-я Поселковая, 1

© ФГБОУ ВО «СибАДИ», 2018

ВВЕДЕНИЕ

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

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

Цель тестирования – выявление как можно большего количества ошибок. Тестовый прогон считается удачным, если он позволяет выявить ошибки; эффективным, если имеет высокую вероятность обнаружения большего числа ошибок.

Методические указания разработаны в соответствии с рабочей программой по дисциплине.

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

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

1. ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ К ПРАКТИЧЕСКИМ И ЛАБОРАТОРНЫМ РАБОТАМ, КОНТРОЛЬНЫМ ЗАДАНИЯМ

1.1. Основные понятия тестирования

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

Рекомендуемая литература: 7.

Перечень дополнительных ресурсов: 1, 3, 9, 10. Наименование вида самостоятельной работы: изучение

литературы; выполнение тестовых заданий; подготовка к практическим занятиям.

Тестирование программного обеспечения – проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. В более широком смысле, тестирование – это одна из техник контроля качества, включающая в себя активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).

Качество программного обеспечения (Software Quality) – это совокупность характеристик программного обеспечения, относящихся к его способности удовлетворять установленные и предполагаемые потребности.

Верификация (verification) – это процесс оценки системы или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа. Т.е. выполняются ли наши цели, сроки, задачи по разработке проекта, определенные в начале текущей фазы.

Валидация (validation) – это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе.

Цели тестирвоания:

повысить вероятность того, что приложение, предназначенное

для тестирования, будет работать правильно при любых обстоятельствах;

повысить вероятность того, что приложение, предназначенное для тестирования, будет соответствовать всем описанным требованиям;

предоставление актуальной информации о состоянии продукта на данный момент.

Этапы тестирования:

анализ;

разработка стратегии тестирования и планирование процедур контроля качества;

работа с требованиями;

создание тестовой документации;

тестирование прототипа;

основное тестирование;

стабилизация;

эксплуатация.

Основные артефакты тестирования:

план тестирования (основной документ, определяющий стратегию тестирования на каждой итерации);

сценарий тестирования (тест кейс или тестовый случай);

тестовые данные (призваны определять наборы входных данных для тестов, а также ожидаемые результаты, с которыми полученные результаты выполнения тестов должны сравниваться как

сэталонными);

тестовый скрипт;

набор тестов;

список идей тестов;

результаты тестирования (представляют собой суммарную информацию о прохождении тестов, на основе анализа которых и сравнения с ожидаемыми результатами выполняется детальная оценка качества тестируемого продукта и текущего статуса процесса тестирования);

дефекты (описывают обнаруженные факты несоответствия системы предъявляемым требованиям).

1.2. Циклы тестирования

Вопросы для рассмотрения: Общий и частный циклы тестирования и их задачи. Основные артефакты тестирования: план и сценарий тестирования, тестовые данные, тестовый скрипт, набор тестов. Результаты тестирования, дефекты. Дизайн и разработка тестов. Выполнение и оценка тестов. Полный цикл тестирования, определяющий основные активности специалистов.

Рекомендуемая литература: 5.

Перечень дополнительных ресурсов: 4, 5, 7. Наименование вида самостоятельной работы: изучение

литературы; выполнение тестовых заданий; подготовка к практическим занятиям.

Можно выделить два вида циклов тестирования, назовем их условно полный цикл тестирования и частный цикл тестирования:

полный цикл тестирования обычно совпадает с итерацией разработки или соответствует ее определенной части (очевидно, что,

вслучае разработки программного продукта по каскадной модели, полный цикл тестирования скорее всего будет иметь только одну итерацию);

частный цикл тестирования, как правило, проводится для конкретной сборки объекта тестирования (системы, подсистемы или отдельного компонента).

Краткие описания задач, входящих в частный цикл тестирования:

определить цели тестирования (включает выбор тестируемых фрагментов и формулирование задач тестирования);

верифицировать метод тестирования (настройка среды и инструментов тестирования, выполнение отдельных тестов, подтверждение возможности реализовать задачи и цели тестирования);

подтвердить правильность сборки (прежде, чем приступить к детальному тестированию выбранной сборки, проводятся ее тесты, которые должны показать, что сборка не содержит явных ошибок, делающих ее дальнейшее тестирование просто нецелесообразным);

тестировать и оценивать (разрабатываются необходимые тесты, после чего тесты выполняются в ручном или автоматическом режиме и проводится оценка результатов);

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

Выполнение задач жизненного цикла сопровождается разработкой различных артефактов (документов, моделей и других материалов проекта). Как обычно в RUP, разработка артефактов может проводиться в разной форме с разными требованиями к способу выполнения, рецензированию и качеству оформления.

Этапы полного цикла тестирования: 1) планирование тестов:

определение требований к тестам;

оценка рисков;

выбор стратегии тестирования;

определение ресурсов;

создание расписания/последовательностей;

разработка Плана тестирования; 2) дизайн тестов:

анализ объёма работ;

определение и описание тестовых случаев;

определение и структурирование тестовых процедур;

обзор и оценка тестового покрытия;

3) разработка тестов:

запись или программирование тестовых скриптов;определение тесто-критичной функциональности в Дизайне и

Модели реализации;создание/подготовка внешних наборов данных;

4) выполнение тестов:

выполнение тестовых процедур;оценка выполнения тестов;

восстановление после сбойных тестов;проверка результатов;исследование неожиданных результатов;запись ошибок; 5) оценка тестов:

оценка покрытия тестовыми случаями;оценка покрытия кода;анализ дефектов;

определение критериев завершения и успешности тестирования.

1.3. Метрики и критерии тестирования

Вопросы для рассмотрения: Оптимизация тестовых наборов. Принятие решения об окончании тестирования. Метрики тестирования и качества. Метрики покрытия по методологии RUP. Тестирование функциональных требований. Покрытие, основанное на спецификации. Покрытие, основанное на коде. Покрытие строк, ветвей и путей.

Рекомендуемая литература: 7.

Перечень дополнительных ресурсов: 2, 4, 10. Наименование вида самостоятельной работы: изучение

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

При проведении тестирования необходимо определить критерии окончания процесса тестирования. Ведь недостаток тестирования может вести к выпуску продукта с существенными недостатками. А «лишнее» тестирование может стоить достаточно дорого, задерживать выпуск продукта и отвлекать тестировщиков от других работ.

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

Еще одним важным понятием в теории тестирования является понятие критериев покрытия тестирования. Не следует путать метрики тестирования и критерии покрытия тестирования. Последние позволяют определить степень покрытия разрабатываемого продукта тестами. Поэтому часто критерии покрытия используются для определения метрик тестирования.

Приведем примеры самых распространенных критериев покрытия при тестировании функциональных требований в соответствии с методологией RUP.

При тестировании функциональных требований могут быть

выделены, по крайней мере, два типа покрытия: покрытие, основанное на спецификации, и покрытие, основанное на коде.

Покрытие, основанное на спецификации или на требованиях

(Specification-Based Coverage or Requirements-based Test Coverage).

Этот критерий оценивает степень покрытия, принимая во внимание требования Заказчика или системные спецификации. Основой может быть, например, таблица требований, use case модель и диаграмма состояний-переходов. Набор тестов должен покрывать все или конкретно определенные функциональные требования. На практике это чаще всего реализуется следующим образом: Заказчик (или системный аналитик) составляет набор требований, которые могут быть переведены в тестовые сценарии. После чего эти сценарии могут быть проверены на правильность и полноту.

Таким образом, данный критерий показывает в процентном отношении количество покрытых тестами требований. Чаще всего данный критерий используется при тестировании методом «черного ящика».

Покрытие, основанное на коде (Code-Based Coverage) имеет отношение к потоку управления и потоку данных программы. Чаще всего данный критерий используется при тестировании методом «белого ящика».

Основные критерии покрытия тестирования кода следующие:

Покрытие строк (Line Coverage) – мера измерения покрытия кода, указывающая процентное отношение строк программы, затронутых тестами, к общему числу строк. Это очень неточная метрика, потому что даже стопроцентное покрытие по ней пропускает много ошибок.

Покрытие ветвей (Branch Coverage) – мера измерения покрытия кода указывает в процентном отношении, сколько ветвей потока управления было протестировано во время теста. Она надежнее предыдущей метрики, но снова стопроцентное покрытие не гарантирует отсутствие ошибок.

Покрытие путей (Path Coverage). Эта единица измерения характеризует процент всевозможных путей (и/или комбинаций ветвей), которые покрываются тестами. Однако, даже не смотря на 100-процентное покрытие (достичь которого практически нереально

вкоммерческих системах) все еще могут присутствовать скрытые ошибки.

Метрики и критерии тестирования определяются в стратегии

тестирования наряду с остальными составляющими процесса.

1.4. Стратегии тестирования

Вопросы для рассмотрения: Определение стратегий тестирования. Тестирование как итерационный процесс. Критерии успешного завершения и оценки тестов. Методы и инструментальные средства тестирования и оценки качества ПО. Тестирование «белого ящика» и «черного ящика». Тестирование «серого ящика».

Рекомендуемая литература: 7.

Перечень дополнительных ресурсов: 1, 2, 4, 5. Наименование вида самостоятельной работы: изучение

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

Различие задач и целей тестирования на протяжении жизненного цикла продукта приводит к необходимости разрабатывать и реализовывать различные стратегии тестирования. Каждая такая стратегия определяет:

итерации, на которых используются стратегия тестирования и цели тестирования на каждой итерации;

стадии тестирования для каждой итерации;

критерий успешного завершения тестирования;

типы используемых тестов;

набор методов и инструментальных средств, необходимых для проведения тестирования и оценки качества;

критерии оценки тестов.

Стратегии тестирования должны разрабатываться на этапе планирования тестирования.

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

При тестировании белого ящика (англ. white-box testing, также говорят – прозрачного ящика), разработчик теста имеет доступ к исходному коду программ (см. открытое программное обеспечение) и

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]