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

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

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






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

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

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

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; просмотров: 318. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

Объект, субъект, предмет, цели и задачи управления персоналом Социальная система организации делится на две основные подсистемы: управляющую и управляемую...

Законы Генри, Дальтона, Сеченова. Применение этих законов при лечении кессонной болезни, лечении в барокамере и исследовании электролитного состава крови Закон Генри: Количество газа, растворенного при данной температуре в определенном объеме жидкости, при равновесии прямо пропорциональны давлению газа...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

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

Сосудистый шов (ручной Карреля, механический шов). Операции при ранениях крупных сосудов 1912 г., Каррель – впервые предложил методику сосудистого шва. Сосудистый шов применяется для восстановления магистрального кровотока при лечении...

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