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

Презентации / Lecture06p

.pdf
Скачиваний:
0
Добавлен:
23.06.2026
Размер:
1 Мб
Скачать
☆

Тестирование ПО

Основы программной инженерии

Кулямин В.В., ВМК МГУ

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

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

• Software Engineering Body of Knowledge

https://www.computer.org/education/bodies-of-knowledge/software-engineering

•Под это определение подходят методы, о которых будет рассказано

•Важные детали

•Разновидность верификации

«… соответствие требованиям …»

• Разновидность динамического анализа

«… реального поведения системы …»

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

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

2

За рамками определения

• Cem Kaner использует другое определение

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

•Подходят вообще все виды верификации и даже анализа, нет специфики (тесты?)

•Анализ – дает обычно числовые или качественные характеристики, над которыми часто нужно думать дальше

•Верификация – дает ответ «соответствует» или «не соответствует», может быть степень несоответствия, «существенно» или «незначительно»

•Он же часто утверждает, что явные требования необязательны

•Без явных требований замечание об ошибке чаще всего превращается в спор с разработчиками

•Даже в случае «подразумеваемых требований» их экспликация повышает качество результатов и сокращает трудоемкость дальнейшей работы

•Иногда «подразумеваемые требования» некорректны

•Для системных библиотек аварийное завершение работы или зацикливание может быть в рамках требований

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

3

За рамками определения

•Тестирование удобства использования

•Описать достаточно точно и полно требования к удобству использования крайне тяжело

•Поэтому для его проверки используется валидация

•Действия

•Выделяются «типичные» виды пользователей с некоторыми характеристиками

•Набираются соответствующие люди

•Они выполняют определенный набор задач с помощью системы, находясь под незаметным наблюдением

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

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

4

Связанные понятия

•Тестируемая система (system under test, SUT) – система, работа которой проверяется

•Тест (test) – сценарий проверки, в рамках которого формируется одна из нужных ситуаций, связанных с работой SUT, и выполняется проверка корректности поведения SUT в ней

•Тест = ситуация + проверка

•Частая ошибка – тестом называют только саму ситуацию

•Тестовая ситуация – ситуация, создаваемая одним из тестов

•Тестовый набор (test suite) – множество тестов, совместно решающих одну из задач оценки качества или разработки

•Тестируемая реализация (implementation under test, IUT) – та часть SUT, свойства которой нас интересуют при тестировании, обычно совпадает с SUT, но не всегда (не может работать сама, отдельно от SUT)

•При отличии нужны специальные усилия, чтобы тестовые ситуации были связаны с работой IUT, а не других частей SUT

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

5

Связанные понятия

•

Тестовый интерфейс (test interface) – набор операций,

 

 

Test interface

 

команд или сообщений, которые можно выполнять или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

посылать SUT в рамках тестов

 

 

 

 

 

 

 

 

 

 

Tests

 

• Часто называют точками управления и наблюдения (points of control

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

and observation, PCO), разделяя элементы интерфейса на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

управляющие и используемые для наблюдения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

• Иногда интерфейс недостаточен для проверки необходимых свойств

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– нужно либо искать возможности расширить его, либо упрощать

 

 

 

System under test

 

свойства до проверяемых

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

•

Тестовая заглушка (test stub) – специальный компонент,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Test

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

встраиваемый в SUT вместо рабочего компонента на время

 

 

 

stub

 

 

 

 

 

 

 

тестирования, чтобы получить работоспособную систему

 

 

 

Implementation

 

или доступ к дополнительным PCO

Test harness

•

Тестовая обвязка (test harness) – все дополнительные к SUT

 

 

 

 

 

 

 

under test

 

 

 

 

 

 

 

 

 

 

 

 

 

 

компоненты, нужные для тестирования (тесты, заглушки, др.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вспомогательные)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

6

Составляющие тестовых ситуаций

В тестовую ситуацию входят

•Тестовое воздействие (test action) – вызываемая функция, выполняемая команда, действие пользователя или посылаемое сообщение

•Тестовые данные – данные воздействия: аргументы функции, опции команды, данные формы, значения полей сообщения

•Внутреннее состояние системы

•Обычно в тестах управляется за счет создания последовательности воздействий – тестовой последовательности (test sequence)

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

•Состояние планировщика процессов и часов, влияющее на работу параллельных компонентов системы

•Все остальные характеристики окружения, которые система отслеживает и использует в своей работе

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

7

Создание тестовых ситуаций – окружение

•Параллелизм

•Приводит к недетерминированному поведению

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

Нет гарантий достижения произвольной ситуации

•Реже – с помощью инструментации кода – вставок разнообразных задержек между синхронизациями

Это часто дает более широкий набор ситуаций, но гарантий все равно нет

• Внешнее окружение

•Как можно больше стараются заменить программными заглушками, специальной конфигурацией БД и пр.

Вместо датчика температуры – программный модуль, выдающий нужные значения

•Важно получать только реалистичные состояния окружения, для этого иногда нужны специальные модели компонентов окружения

•Модели, заглушки и реальные компоненты интегрируются на специализированных тестовых стендах

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

8

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

Цели тестирования – для чего оно нужно в рамках более широкого процесса разработки

•Выявление ошибок

•Наиболее понятная цель, но если считать ее единственной – неясно

•Что делать, если ошибки не находятся после тщательной работы над тестами

•Когда останавливаться

Нужны точные процедуры проверки требований (аккуратная модель поведения)

•Оценка качества системы

•Если тестирование аккуратное и систематическое, даже если ошибок не найдено, получаем высокую оценку качества

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

Набор тестов д.б. как можно более представителен, покрывать как можно большее разнообразие возможных поведений системы и его возможных аспектов

Нужен критерий полноты

•Обеспечение стабильного развития системы

•Редко вспоминается

•Хороший набор тестов, развиваясь вместе с системой, становится инструментом контроля ее развития, отслеживания важных изменений

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

9

Отчеты о результатах тестирования

• Информация о полноте

• Какая полнота достигнута по нескольким критериям

100% требований + 75% ветвлений в коде + 95% интерфейсных операций

• Информация об ошибках

• Тип ошибки: что вообще случилось

Аварийное завершение, зацикливание, некорректный результат, слишком много памяти, запись неверных данных в БД и пр.

•Что некорректно: какая проверка не прошла, какое требование нарушено

•Условия возникновения: в какой ситуации случилась

•Как можно более короткий и как можно более детерминированный сценарий, демонстрирующий ошибку

•Детерминизм предпочтителен, но из полностью детерминированного сценария на 50 шагов и демонстрирующего ошибку с вероятностью 25% на 5 шагов во многих случаях лучше второй

Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ

Основы инженерии программного обеспечения

10

Соседние файлы в папке Презентации