ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 88
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Различные средства автоматизации тестирования.
Тестирование программного обеспечения
Раздел 1. Основные понятия тестирования Раздел 2. Критерии выбора тестов Раздел 3. Разновидности тестирования
Раздел 4. Особенности индустриального тестирования
Раздел 5. Регрессионное тестирование
Раздел 4. Особенности индустриального тестирования
Автоматизация тестирования
Автоматизация тестирования – использование специального ПО (помимо тестового ПО), для выполнения и контроля выполнения тестов, а также сравнения ожидаемого и фактического результатов работы ПО.
Автоматизация тестирования ПО позволяет осуществлять выполнение часто повторяющихся рутинных и необходимых для максимизации тестового покрытия задач.
Основные виды автоматизированного тестирования:
-автоматизированное тестирование кода, т.е. тестирование на уровне программных модулей, классов и библиотек;
-автоматизированное тестирование графического пользовательского интерфейса, позволяющее генерировать пользовательские события, т.е. нажатия клавиш, события от манипулятора графической информации
("мыши"), отслеживающие реакцию ПО и соответствие этой реакции спецификации;
-автоматизированное тестирование программного интерфейса ПО, предназначенного для взаимодействия с другим ПО.
Автоматизированные тесты ПО – это ПО, предназначенное для тестирования другого ПО.
Автоматизация тестирования
Структура инструментальной системы автоматизации тестирования
Автоматизация тестирования
В ходе выполнения инструментальной системы автоматизации тестирования на каждом из соответствующих этапов создается и сохраняется следующая информация:
1)набор тестов, достаточный для покрытия тестируемого приложения в соответствии с выбранным критерием тестирования, как результат ручной или автоматической разработки (генерации) тестовых наборов и драйвер/монитор пропуска тестового набора;
2)результаты прогона тестового набора, зафиксированные в Log-файле.
3)статистика тестового цикла, содержащая:
- результаты пропуска каждого теста из тестового набора и их сравнения с эталонными величинами;
-факты, послужившие основанием для принятия решения о продолжении или окончании тестирования;
-критерий покрытия и степень его удовлетворения, достигнутая в цикле тестирования.
Издержки тестирования
Чем больше трудозатрат вкладывается в процесс тестирования, тем меньше ошибок в продукте остается незамеченными (A).
Со временем, по мере обнаружения более сложных ошибок и дефектов
(В), эффективность низкозатратных методов падает вместе с количеством обнаруживаемых ошибок (С).
Таком образом, соответствующие методы тестирования имеют свою нишу, где они хорошо обнаруживают ошибки, тогда как вне ниши их эффективность падает. Поэтому необходимо совмещать различные методы и стратегии отладки и тестирования с целью обеспечения запланированного качества программного продукта при ограниченных затратах, что может быть
достигнуто использованием процесса управления качеством программного продукта.
На практике используются следующие методы тестирования и отладки, упорядоченные по связанным с их применением затратам:
-статические методы тестирования
-модульное тестирование
-интеграционное тестирование
-системное тестирование
-тестирование реального окружения и реального времени
Фазы процесса тестирования
Впроцессе тестирования целесообразно выделить следующие фазы:
-определение целей (требований к тестированию): какие части системы будут тестироваться, какие аспекты их работы будут выбраны для проверки, каково желаемое качество и т.п.
-планирование: создание графика (расписания) разработки тестов для каждой тестируемой подсистемы; оценка необходимых человеческих, программных И аппаратных ресурсов; разработка расписания тестовых циклов.
-разработка тестов, то есть тестового кода для тестируемой системы, если необходимо - кода системы автоматизации тестирования и тестовых процедур
(выполняемых вручную)
-выполнение тестов - реализация тестовых циклов.
-анализ результатов.
После анализа результатов возможно повторение процесса тестирования, начиная с планирования, разработки тестов или даже с уточнения и/или переопределения целей. естовый цикл
Тестовый цикл – это цикл исполнения тестов, включающий выполнение тестов и анализ результатов тестового процесса.
Тестовый цикл включает следующую последовательность действий:
1)Проверка готовности системы и тестов к проведению тестового цикла
2)Подготовка тестовой машины в соответствии с требованиями, определенными на этапе планирования (например, полная очистка ипереустановка системного программного обеспечения). Конфигурация тестовой машины, так же, как и срез системы, должны быть однозначно воспроизводимыми.
3)Воспроизведение среза системы.
4)Прогон тестов в соответствии с задокументированными процедурами.
5)Сохранение тестовых протоколов (test log)
6)Анализ протоколов тестирования и принятие решения о том прошел или не прошел каждый из тестов (Pass/Fail)
7)Анализ и документирование результатов цикла.
Планирование тестирования
Тестовый план - это документ или набор документов, содержащий:
1)Тестовые ресурсы.
На практике используются следующие методы тестирования и отладки, упорядоченные по связанным с их применением затратам:
-статические методы тестирования
-модульное тестирование
-интеграционное тестирование
-системное тестирование
-тестирование реального окружения и реального времени
Фазы процесса тестирования
Впроцессе тестирования целесообразно выделить следующие фазы:
-определение целей (требований к тестированию): какие части системы будут тестироваться, какие аспекты их работы будут выбраны для проверки, каково желаемое качество и т.п.
-планирование: создание графика (расписания) разработки тестов для каждой тестируемой подсистемы; оценка необходимых человеческих, программных И аппаратных ресурсов; разработка расписания тестовых циклов.
-разработка тестов, то есть тестового кода для тестируемой системы, если необходимо - кода системы автоматизации тестирования и тестовых процедур
(выполняемых вручную)
-выполнение тестов - реализация тестовых циклов.
-анализ результатов.
После анализа результатов возможно повторение процесса тестирования, начиная с планирования, разработки тестов или даже с уточнения и/или переопределения целей. естовый цикл
Тестовый цикл – это цикл исполнения тестов, включающий выполнение тестов и анализ результатов тестового процесса.
Тестовый цикл включает следующую последовательность действий:
1)Проверка готовности системы и тестов к проведению тестового цикла
2)Подготовка тестовой машины в соответствии с требованиями, определенными на этапе планирования (например, полная очистка ипереустановка системного программного обеспечения). Конфигурация тестовой машины, так же, как и срез системы, должны быть однозначно воспроизводимыми.
3)Воспроизведение среза системы.
4)Прогон тестов в соответствии с задокументированными процедурами.
5)Сохранение тестовых протоколов (test log)
6)Анализ протоколов тестирования и принятие решения о том прошел или не прошел каждый из тестов (Pass/Fail)
7)Анализ и документирование результатов цикла.
Планирование тестирования
Тестовый план - это документ или набор документов, содержащий:
1)Тестовые ресурсы.
2)Перечень функций и подсистем, подлежащих тестированию.
3)Тестовую стратегию, включающую:
-анализ функций и подсистем с целью определения наиболее слабых мест, то есть областей функциональности тестируемой системы, где появление дефектов наиболее вероятно
-определение стратегии выбора входных данных для тестирования
-определение потребности в автоматизированной системе тестирования идизайн такой системы
4)Расписание тестовых циклов
5)Фиксацию тестовой конфигурации: состава и конкретных параметров аппаратуры и программного окружения
6)Определение списка тестовых метрик, которые на тестовом цикле необходимо собрать и проанализировать, например, метрик, оценивающих степень покрытия тестами набора требований, степень покрытия кода тестируемой системы, количество и уровень серьезности дефектов, объем тестового кода и другие характеристики.
Типы тестирования
В тестовом плане определяются и документируются различные типы тестов. Типы тестов могут быть классифицированы по двум категориям:
-по тому, что подвергается тестированию (по виду подсистемы или продукта)
-по способу выбора входных данных
Типы тестирования по виду подсистемы или продукта
1 2 3 4 5
:
1)Тестирование основной функциональности, когда тестированию подвергается собственно система, являющаяся основным выпускаемым продуктом
2)Тестирование инсталляции включает тестирование сценариев первичной инсталляции системы, сценариев повторной инсталляции (поверх уже существующей копии), тестирование деинсталляции, тестирование инсталляции в условиях наличия ошибок в инсталлируемом пакете, в окружении или в сценарии и т.п.
3)Тестирование пользовательской документации включает проверку полноты и понятности описания правил и особенностей использования продукта, наличие описания всех сценариев и функциональности, синтаксис и грамматику языка, работоспособность примеров и т.п.
Типы тестирования по способу выбора входных данных:
1)Функциональное тестирование, при котором проверяется:
-покрытие функциональных требований.
-покрытие сценариев использования.
2)стрессовое тестирование, при котором проверяются экстремальные режимы использования продукта.
3)Тестирование граничных значений.
4)Тестирование производительности.
5)Тестирование на соответствие стандартам.
6)Тестирование совместимости с другими программно-аппаратными комплексами.
7)Тестирование работы с окружением.
8)Тестирование работы на конкретной платформе
На практике используются и комбинируются различные типы тестов для обеспечения заданного качества продукта.
Подходы к разработке тестов
-подходы, основанные на выборе тестовых данных (тестирование спецификаций, тестирование сценариев)
-и подходы, основанные на реализации тестового кода (ручная разработка тестов, генерация тестов)
Тестирование спецификации
При разработке тестов, основанных на функциональной спецификации продукт требования к продукту являются основным источником, определяющим, какие тест будут разработаны. Для каждого требования пишется один или более тестов, которые в совокупности должны проверить выполнение данного требования в продукте.
Тестирование сценариев осуществляется следующим образом:
-определяется модель использования, включающая операционное окружение продукта и "актеров". Актером может быть пользователь, другой продукт, аппаратная часть и др.
-разрабатываются сценарии использования продукта, которые могут быть строго определенным, параметризованным или разрешать некоторую степень неопределенности.
-разрабатывается набор тестов, покрывающих заданные сценарии, с учетом степени неопределенности, заложенной в сценарии, и, при этом, каждый тест покрывает один сценарий, несколько сценариев, или, наоборот, часть сценария.
Ручная разработка тестов
Наиболее распространенным способом разработки тестов является создание тестового кода вручную. Это наиболее гибкий способ разработки тестов, однако характерная для него производительность труда инженеров- тестировщиков в создании тестового кода не намного выше скорости создания кода продукта, а объемы тестового кода на практике зачастую превышают объем кода продукта в 5 и более раз.
Генерация тестов
Учитывая существенные трудозатраты на ручную разработку тестов целесообразно использование автоматизированных способов получения тестового кода, таких как использование специальных тестовых языков
(скриптов) игенерации тестов. В настоящее время некоторые языки спецификаций, используемые для описания алгоритмов тестирования, могут быть использованы
идля генерации тестового кода, одним из примеров является язык MSC.
Использование подхода генерации тестового кода позволяет значительно поднять производительность тестирования, а также преобразовать формализацию (кодировку) сценариев в достаточно интеллектуальную деятельность.
Выполнение тестов:
-подход ручного тестирования
-подход автоматического исполнения (прогон) тестов.
Ручное тестирование
Ручное тестирование заключается в выполнении задокументированной процедуры, где описана методика выполнения тестов, задающая порядок тестов и для каждого теста - список значений параметров, который подается на вход, и список результатов, ожидаемых на выходе. Поскольку процедура предназначена для выполнения человеком, в ее описании для краткости могут использоваться некоторые значения по умолчанию, ориентированные на здравый смысл, или ссылки на информацию, хранящуюся в другом документе.
Пример фрагмента процедуры ручного тестирования:
1)Подать на вход три разных целых числа.
2)Запустить тестовое исполнение.
3)Проверить, соответствует ли полученный результат таблице [ссылка на документ1] с учетом поправок [ссылка на документ2].
4)Убедиться в понятности и корректности выдаваемой сопроводительной информации.
Автоматизированное тестирование
Автоматизация рассмотренного ранее примера приводит к созданию скрипта, задающего тестируемому продукту три конкретных числа и перенаправляющего вывод продукта в файл с целью его анализа, а также содержащего конкретное значение желаемого результата, с которым сверяется получаемое при прогоне теста значение.
Пример фрагмента скрипта автоматизированного тестирования:
1)Выдать на консоль имя или номер теста и время его начала.
2)Вызвать продукт с фиксированными параметрами.
3)Перенаправить вывод продукта в файл.
4)Проверить равенство возвращенного продуктом значения ожидаемому
(эталонному) результату, зафиксированному в тесте.
5)Проверить вывод продукта, сохраненный в файле (п.3), на равенство заранее приготовленному эталону.
6)Выдать на консоль результаты теста в виде вердикта PASS/FAIL и в случае FAIL - краткого пояснения, какая именно проверка не прошла.
7)Выдать на консоль время окончания теста.
Сравнение ручного и автоматизированного подхода
Ручное
Автоматизированное
Задание
Гибкость в задании данных. Позволяет
Входные значения строго
Использование подхода генерации тестового кода позволяет значительно поднять производительность тестирования, а также преобразовать формализацию (кодировку) сценариев в достаточно интеллектуальную деятельность.
Выполнение тестов:
-подход ручного тестирования
-подход автоматического исполнения (прогон) тестов.
Ручное тестирование
Ручное тестирование заключается в выполнении задокументированной процедуры, где описана методика выполнения тестов, задающая порядок тестов и для каждого теста - список значений параметров, который подается на вход, и список результатов, ожидаемых на выходе. Поскольку процедура предназначена для выполнения человеком, в ее описании для краткости могут использоваться некоторые значения по умолчанию, ориентированные на здравый смысл, или ссылки на информацию, хранящуюся в другом документе.
Пример фрагмента процедуры ручного тестирования:
1)Подать на вход три разных целых числа.
2)Запустить тестовое исполнение.
3)Проверить, соответствует ли полученный результат таблице [ссылка на документ1] с учетом поправок [ссылка на документ2].
4)Убедиться в понятности и корректности выдаваемой сопроводительной информации.
Автоматизированное тестирование
Автоматизация рассмотренного ранее примера приводит к созданию скрипта, задающего тестируемому продукту три конкретных числа и перенаправляющего вывод продукта в файл с целью его анализа, а также содержащего конкретное значение желаемого результата, с которым сверяется получаемое при прогоне теста значение.
Пример фрагмента скрипта автоматизированного тестирования:
1)Выдать на консоль имя или номер теста и время его начала.
2)Вызвать продукт с фиксированными параметрами.
3)Перенаправить вывод продукта в файл.
4)Проверить равенство возвращенного продуктом значения ожидаемому
(эталонному) результату, зафиксированному в тесте.
5)Проверить вывод продукта, сохраненный в файле (п.3), на равенство заранее приготовленному эталону.
6)Выдать на консоль результаты теста в виде вердикта PASS/FAIL и в случае FAIL - краткого пояснения, какая именно проверка не прошла.
7)Выдать на консоль время окончания теста.
Сравнение ручного и автоматизированного подхода
Ручное
Автоматизированное
Задание
Гибкость в задании данных. Позволяет
Входные значения строго
входных использовать разные значения на разных циклах заданы значений прогона тестов, расширяя покрытие
Проверка результата
Гибкая, позволяет тестировщику оценивать
Строгая. Нечетко нечетко сформулированные критерии сформулированные критерии могут быть проверены только путем сравнения с эталоном
Повторяемость
Низкая. Человеческий фактор и нечеткое
Высокая определение данных приводят к неповторяемости тестирования
Надежность
Низкая. Длительные тестовые циклы приводят к
Высокая, не зависит от длины снижению внимания тестировщика тестового цикла
Чувствительность
Зависит от детальности описания процедуры.
Высокая. Незначительные к незначительным
Обычно тестировщик в состоянии выполнить изменения в интерфейсе часто изменениям в тест, если внешний вид продукта и текст ведут к коррекции эталонов продукте сообщений несколько изменились
Скорость выполнения
Низкая
Высокая тестового набора
Возможность
Отсутствует. Низкая скорость выполнения
Поддерживается генерации тестов обычно не позволяет исполнить сгенерированный набор тестов
Документирование тестовых процедур
Проверка результата
Гибкая, позволяет тестировщику оценивать
Строгая. Нечетко нечетко сформулированные критерии сформулированные критерии могут быть проверены только путем сравнения с эталоном
Повторяемость
Низкая. Человеческий фактор и нечеткое
Высокая определение данных приводят к неповторяемости тестирования
Надежность
Низкая. Длительные тестовые циклы приводят к
Высокая, не зависит от длины снижению внимания тестировщика тестового цикла
Чувствительность
Зависит от детальности описания процедуры.
Высокая. Незначительные к незначительным
Обычно тестировщик в состоянии выполнить изменения в интерфейсе часто изменениям в тест, если внешний вид продукта и текст ведут к коррекции эталонов продукте сообщений несколько изменились
Скорость выполнения
Низкая
Высокая тестового набора
Возможность
Отсутствует. Низкая скорость выполнения
Поддерживается генерации тестов обычно не позволяет исполнить сгенерированный набор тестов
Документирование тестовых процедур
Тестовые процедуры - это формальный документ, содержащий описание необходимых шагов для выполнения тестового набора.
Вслучае описания ручных тестов тестовые процедуры должны содержать полное описание всех шагов и проверок, позволяющих протестировать продукт ивынести вердикт PASS/FAIL.
Вслучае описания автоматизированных тестов тестовые процедуры должны содержать достаточную информацию для запуска тестов и анализа результатов.
Описание тестов разрабатывается для облегчения анализа и поддержки тестового набора, может быть реализовано в произвольной форме, но при этом должно выполнять следующие задачи:
-анализировать степень покрытия продукта тестами на основании описания тестового набора.
-для любой функции тестируемого продукта найти тесты, в которых функция используется.
-для любого теста определить все функции и их сочетания, которые данный тест использует (затрагивает)
-вывить структуру и взаимосвязи тестовых файлов
-выявить принцип построения системы автоматизации тестирования
Документирование дефекта
Каждый дефект, обнаруженный в процессе тестирования, должен быть задокументирован и отслежен. При обнаружении нового дефекта его заносят в базу дефектов. Для этого лучше всего использовать специализированные базы, поддерживающие хранение и отслеживание дефектов, например, вида
DDTS.
При занесении нового дефекта рекомендуется указывать:
-наименование подсистемы, в которой обнаружен дефект.
-версия продукта (номер build ), на котором дефект был найден.
-описание дефекта.
-описание процедуры (шагов, необходимых для воспроизведения дефекта).
-номер теста, на котором дефект был обнаружен.
-уровень дефекта, то есть степень его серьезности с точки зрения критериев качества продукта или заказчика.
Тестовый отчет
Тестовый отчет обновляется после каждого цикла тестирования и должен содержать следующую информацию для каждого цикла: