Файл: Технология разработки программного обеспечения.pdf

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

 

 
 

51

ТЕСТИРОВАНИЕ

 

 
Проведение  тестирования — цель  второй  части  второй  ла-

бораторной  работы.  Также  результаты  тестирования  являются 
четвертым разделом курсовой работы. 

 
4.1 

Общие

 

принципы

 

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

 

 
Этап  тестирования  обычно  в  финансовых  затратах  состав-

ляет половину расходов на создание системы. Плохо спланиро-
ванное  тестирование  приводит  к  существенному  увеличению 
сроков разработки системы и является основной причиной сры-
вов графиков разработки.

 

В  процессе  тестирования  используются  данные,  характер-

ные для системы в рабочем состоянии, т.е. данные для тестиро-
вания выбираются случайным образом. План проведения испы-
таний должен быть составлен заранее, обычно на этапе проекти-
рования.

 

Тестирование подразумевает три стадии:

 

 

автономное;

 

 

комплексное;

 

 

системное.

 

При автономном тестировании модуль проверяется с помо-

щью  данных,  подготовленных  программистом.  При  этом  про-
граммная  среда  модуля  имитируется  с  помощью  программ 
управления  тестированием,  содержащих  фиктивные  программы 
вместо реальных подпрограмм, к которым имеется обращение из 
данного модуля (заглушки). Подобную процедуру называют про-
граммным  тестированием,  а  программу  тестирования — UUT 
(тестирующей  программой).  Модуль,  прошедший  автономное 
тестирование, подвергается комплексному тестированию.

 

В  процессе  комплексного  тестирования  проводится  совме-

стная  проверка  групп  программных  компонентов.  В  результате 
имеем  полностью  проверенную  систему.  На  данном  этапе  тес-
тирование обнаруживает ошибки, пропущенные на стадии авто-
номного тестирования. Исправление этих ошибок может состав-
лять до четверти от общих затрат.

 


background image

 

 

 
 

52

Системное  (или  оценочное)  тестирование — это  завер-

шающая стадия проверки системы, т.е. проверка системы в це-
лом  с  помощью  независимых  тестов.  Независимость  тестов  яв-
ляется  главным  требованием.  Обычно  Заказчик  на  стадии  при-
емки работ настаивает на проведении собственного системного 
тестирования.  Для  случая,  когда  сравниваются  характеристики 
нескольких  систем  (имеется  альтернативная  разработка),  такая 
процедура известна как сравнительное тестирование.

 

В  процессе  тестирования  для  определения  правильности 

выполнения программы вводится ряд критериев:

 

1) каждый оператор должен быть выполнен, по крайней ме-

ре, один раз для заданного набора тестов, и программа должна 
выдать правильный результат;

 

2) каждая ветвь программы должна быть опробована, и про-

грамма при этом должна выдать правильный результат;

 

3) каждый путь в программе должен быть испытан хотя бы 

один раз с использованием набора тестовых данных, и програм-
ма должна выдать правильный результат;

 

4)  для  каждой  спецификации  программы  необходимо  рас-

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

 

Хотя критерии п.п. 1 и 2 кажутся схожими, в действитель-

ности  они  сильно  разнятся.  Например,  арифметический  опера-
тор IF в Fortran

 

IF (

Выражение) N

1

, N

2

, N

3

 

Критерий  п. 1 подразумевает,  что  IF  должен  быть  выпол-

нен,  в  то  время  как  п. 2 подразумевает  различные  наборы  дан-
ных, для того чтобы выполнились условия N

1

, N

2

, N

3

 (т.е. пере-

дачу на эти метки).

 

В общем случае не существует единого программного кри-

терия, определяющего «хорошо проверенную» программу.

 

Тесно  связаны  с  тестированием  понятия  «верификация»  и 

«испытание».

 

Испытание  системы  осуществляется  посредством  тестиро-

вания. Цель такой проверки — показать, что система функцио-
нирует в соответствии с разработанными на нее спецификация-
ми.

 


background image

 

 

 
 

53

Верификация заключается в выполнении доказательств, что 

программа удовлетворяет своим спецификациям.

 

Современный  процесс  разработки  программ  не  позволяет 

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

 

Общий процесс создания правильных программ с помощью 

процедур испытания и верификации называется аттестацией.

 

Различаются  три  вида  отклонения  системы  от  нормальной 

работы.

 

Сбой системы — это явление, связанное с нарушением сис-

темой установленных на нее спецификаций.

 

Данные, при обработке которых правильными алгоритмами 

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

 

Ошибка — это  алгоритмический  дефект,  который  создает 

выброс (программная ошибка).

 

Различают понятия «правильная» и «надежная» программа. 

Правильная программа — это та, что удовлетворяет своим спе-
цификациям. Что касается надежной программы, то она не обя-
зательно является правильной, но выдает приемлемый результат 
даже  в  том  случае,  когда  входные  данные  либо  условия  ее 
использования не удовлетворяют принятым допущениям. Есте-
ственно  стремление  иметь  «живую» (robustness) систему,  т.е. 
систему,  способную  воспринимать  широкий  спектр  входных 
данных при неблагоприятных условиях.

 

Система  является  правильной,  если  в  ней  нет  ошибок,  а  ее 

внутренние данные не содержат выбросов. Система называется 
надежной,  если,  несмотря  на  сбои,  она  продолжает  удовлетво-
рительно функционировать. Это особо видно на примере опера-
ционной системы (ОС), включающей систему обработки сбоев. 
При  обнаружении  выброса  такая  система  прекращает  работу  с 


background image

 

 

 
 

54

сохранением текущей информации и возможности продолжения 
работы после устранения выброса. 

 
4.2 

Организация

 

испытаний

 

программных

 

изделий

 

 
Под испытаниями понимают не отладку, призванную опре-

делить,  почему  в  программе  возникает  та  или  иная  ошибка  и 
устранить  ее  причины,  а  процесс  установления  самого  факта 
наличия дефектов и расхождения между истинными свойствами 
программного  изделия  и  его  спецификациями.  Нельзя  сказать, 
что испытания программного изделия гарантируют обеспечение 
его  качества.  Обеспечение  качества  программного  изделия 
включает  помимо  испытаний  еще  целый  ряд  других  процедур 
(анализ эксплуатационных характеристик, использование «стан-
дартных»  методов  проектирования  и  программирования,  вос-
станавливаемость  после  отказа,  простота  сопровождения,  по-
вторяемость результатов и др.) Однако испытания — важнейшая 
из этих процедур.

 

Группа  испытаний  оказывает  значительное  влияние  на  ка-

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

 

 

проведение испытаний;

 

 

выработка оценок;

 

 

участие в фазовых обзорах с целью влияния на ход раз-

работок. 

 

4.3 

Виды

 

испытаний

 

программного

 

изделия

Стадии

 

испытаний

 

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

разделенных по времени.

 


background image

 

 

 
 

55

К  первой  стадии  относятся  испытания  класса A, которые 

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

 

Ко  второй  стадии  относятся  испытания  класса B, когда 

осуществляется  независимая  (от  группы  разработки)  проверка 
компонентов законченного изделия как отдельно, так и во взаи-
модействии друг с другом. В идеальном случае испытания клас-
са B начинаются  после  того,  как  разработчики  объявляют,  что 
изделие  готово  к  передаче  потребителю.  В  ходе  испытаний 
класса B функционирование проверяется на соответствие требо-
ваниям, спецификациям, документации и цели.

 

Испытания класса C осуществляются после того, как группа 

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

 

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

проверки правильности работы программы выбран класс B (тес-
тирование  после  разработки).  Испытания  класса A (тестирова-
ние  в  процессе  разработки)  отвергаются,  а  класс C (предпро-
дажное тестирование) не может быть выбран потому, что тести-
руемая  программа  является  учебной  и  не  предназначена  для 
продажи. 

 
4.4 

Режимы

 

испытаний

 

программ

 

 
Испытания различаются в зависимости от того, кто их про-

водит. Основная идея — независимость функции испытаний от 
функции разработки.

 

Режим  I  испытаний  подразумевает  полный  цикл  деятельно-

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