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

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

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

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

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

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

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

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

• 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

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