Студопедия — Задача для иллюстрации подходов к тестированию программ по требованиям
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Задача для иллюстрации подходов к тестированию программ по требованиям






Наименование:

Определение номера максимального параметра.

Формат обращения:

Max(A, B, C),

Например, вызов функции Max(25,44,13) должен вернуть значение 2.

Спецификация: (в формате С)

int Max(int A,B,C)

Требования (1 версия):

[SRD 0001] Процедура должна вычислять порядковый номер параметра с максимальным значением. Параметры процедуры нумеруются слева направо.

Реализация (1 версия):

 

Рисунок 1. Первый вариант реализации тела процедуры

Тест-план:

Очевидно, что для тестирования данной программы необходимо создать группу тестов, относящихся, по меньшей мере, к трем классам эквивалентности. Каждому из них будут соответствовать тесты, дающие на выходе одно из возможных значений номера параметра: 1, 2, и 3 соответственно. Простейший анализ приводит примерно к следующему составу тест-плана:

Номер Требование Вход Выход ожид. Выход факт.
  [SRD 0001] Max(1,2,3)    
  [SRD 0001] Max(1,3,2)    
  [SRD 0001] Max(3,2,1)    

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

Номер Требование Вход Выход ожид. Выход факт.
  [SRD 0001] Max(1,2,3)    
  [SRD 0001] Max(1,3,2)    
  [SRD 0001] Max(3,2,1)    
  [SRD 0001] Max(3,3,3) ?  

Однако при построении этого варианта тест-плана мы сталкиваемся с проблемой задания значения ожидаемого выхода. Действительно, реализация на Рис.1 возвратит значение 3. Но является ли оно правильным. Наше единственное требование [SRD 0001] ничего не говорит о параметрах с одинаковыми значениями. Видимо в жизненном цикле нашей программной разработки придется вернуться к этапу определения требований и добавить в него, по крайней мере, еще одно. После чего выполнить новую реализацию.

 

Требования (2 версия):

[SRD 0001] Процедура должна вычислять порядковый номер параметра с максимальным значением. Параметры процедуры нумеруются слева направо.

[SRD 0002] При одинаковых значениях параметров процедура должна выдавать порядковый номер с наименьшим значением.

 

Ой, как плохо получилось. При вызове Max(3,4,4) можно подумать, что речь идет о первом параметре. Давайте лучше напишем так:

 

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

 

Опять возможно двоякое понимание, но оставим, как получилось.

Реализация (2 версия):

Рисунок 2. Второй вариант реализации тела процедуры

Тест-план:

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

 

Номер Требование Вход Выход ожид. Выход факт.
  [SRD 0001] Max(1,2,3)    
  [SRD 0001] Max(1,3,2)    
  [SRD 0001] Max(3,2,1)    
  [SRD 0002] Max(3,3,3)    
  [SRD 0002] Max(3,3,1)    
  [SRD 0002] Max(3,1,3)    
  [SRD 0002] Max(1,3,3)    

Все получилось просто чудесно. Для поверки двух простых требований мы написали всего 7 тестов. При этом, шутки ради, любопытно взглянуть на тест с входными значениями Max(3,3,4). На основании требования [SRD 0002] он должен соответствовать выходному значению 1, а требование [SRD 0001], с очевидностью, относит этот случай тому же классу эквивалентности, что и тест 3. То есть третий параметр имеет максимальное значение.

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

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

Более детальный уровень покрытия реализации требует прохождения тестов по каждой ветви нашего графа управления. Проверив выполнение всех наших семи тестов, можно убедиться, что одна ветвь осталась не выполнена. Это случай, когда первый параметр предпочтительней второго, но третий предпочтительней первого. Такой случай возникает при обращении к программе Max(2,1,3) или в том самом случае Max(3,3,4), который мы рассматривали как спорный.

Номер Требование Вход Выход ожид. Выход факт.
  [SRD 0001] Max(1,2,3)    
  [SRD 0001] Max(1,3,2)    
  [SRD 0001] Max(3,2,1)    
  [SRD 0002] Max(3,3,3)    
  [SRD 0002] Max(3,3,1)    
  [SRD 0002] Max(3,1,3)    
  [SRD 0002] Max(1,3,3)    
  [SRD 0001] Max(2,1,3)    

Включение такого теста не добавляет нам полноты покрытия требований. С точки зрения классов эквивалентности, это модифицированный вариант первого теста. Часто говорят, что тест типа восьмого добавляется к тест-плану специально для покрытия кода. Другими словами, эта часть тест-плана обусловлена конкретной реализацией.

Рисунок 3 Последовательная реализация проверок

Пример реализации, приведенной на Рис. 3 показывает, что для полного покрытия подобного программного кода достаточно всего двух тестов: Max(1,2,3) и Max(3,2,1), но их очевидно недостаточно для проверки требований. Поэтому пест план будет содержать все те же семь тестов.

Если же и добавлять восьмой тест, то он скорее должен быть дополнительным подтверждением того, что требование [SRD 0001] является доминирующим, определяя тем самым основное назначение разрабатываемой процедуры. Из этих соображений такой тест можно добавить и для первой реализации программы.

Номер Требование Вход Выход ожид. Выход факт.
  [SRD 0001] Max(1,2,3)    
  [SRD 0001] Max(1,3,2)    
  [SRD 0001] Max(3,2,1)    
  [SRD 0002] Max(3,3,3)    
  [SRD 0002] Max(3,3,1)    
  [SRD 0002] Max(3,1,3)    
  [SRD 0002] Max(1,3,3)    
  [SRD 0001] [SRD 0002] Max(3,3,4)    

 

Литература:

1. Синицын С.В., Налютин Н.Ю. Верификация программного обеспечения: Учебное пособие. М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2008.-368с.

 







Дата добавления: 2015-08-31; просмотров: 310. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Studopedia.info - Студопедия - 2014-2024 год . (0.017 сек.) русская версия | украинская версия