Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Определение и принципы тестирования




ТЕСТИРОВАНИЕ ПРОГРАММНОГО ИЗДЕЛИЯ

Тестирование является одним из этапов жизненного цикла ПИ, направленным на повышение качественных характеристик. При создании типичного ПИ около 40% общего времени и более 40% общей стоимости расходуется на проверку (тестирование) разрабатываемой программы.

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

- отсутствие эталона (программы), которому должна соот­ветствовать тестируемая программа;

- высокая сложность программ и принципиальная невозмож­ность исчерпывающего тестирования;

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

Применительно к ПИ тестирование - это процесс многократного выполнения программы с целью обнаружения ошибок.

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

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

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

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

Принцип 1. Процесс тестирования более эффективен, если проводится не автором программы.

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

Это не означает, что программист не может тестировать свою программу. Речь идет о повышении эффективности тестиро­вания.

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

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

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

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

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

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

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

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

Принцип 4. Тесты для неправильных и непредусмотрен­ных входных данных должны разрабатываться также тщательно, как для правильных, предусмотренных.

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

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

Принцип 5. Необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она то, что не должна делать.

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

Принцип 6. Вероятность наличия необнаруженных оши­бок в части программы пропорциональна числу ошибок, уже обнаруженных в этой части.

Это свойство ошибок группироваться объясняется тем, что части программы, где при тестировании обнаружено большее число ошибок, либо были слабо проработаны идеологически, либо разрабатывались программистами более низкой квалифи­кации. Например, в одной из версий ОС/370 47% ошибок, обнаруженных пользователями в процессе первых лет эксплуа­тации (после полного ее тестирования), приходились на 4% модулей.

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

Итак, нужно помнить и знать, что:

- тестирование - это процесс многократного выполнения программы с целью выявления ошибок;

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

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




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 1538; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.006 сек.