Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Принципы тестирования




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

Тестирование – процесс творческий, т.е. неформализуемый.

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

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

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

Следует избегать тестирования программы ее автором.

Этот принцип следует из предыдущего положения.

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

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

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

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

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

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

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

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

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

Не следует выбрасывать тесты.

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

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

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

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

Этот принцип, не согласующийся с интуитивным представлением, иллюстрируется на рис. 3.5.

 


Рис. 3.5. Неожиданное соотношение числа оставшихся и числа обнаруженных ошибок

 

На первый взгляд он лишен смысла, но тем не менее подтверждается многими программами. Например, допустим, что некоторая программа со­стоит из модулей или подпрограмм А и В. К определенному сроку в мо­дуле А обнаружено пять ошибок, а в модуле В – только одна, причем мо­дуль А не подвергался более тщательному тестированию. Тогда из рас­сматриваемого принципа следует, что вероятность необнаруженных оши­бок в модуле А больше, чем в модуле В. Справедливость этого принципа подтверждается еще и тем, что для ошибок свойственно располагаться в программе в виде неких скоплений, хотя данное явление пока никем еще не объяснено. Преимущество рассматриваемого принципа заключается в том, что он позволяет ввести обратную связь в процесс тестирования. Если в какой-нибудь части программы обнаружено больше ошибок, чем в дру­гих, то на ее тестирование должны быть направлены дополнительные уси­лия.

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

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

Хорошим считается тест, который имеет высокую вероятность обнаружения еще не выявленной ошибки.

Удачным считается тест, который обнаруживает еще не выяв­ленную ошибку.





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


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


Поиск на сайте:

Лучшие изречения:

Студент всегда отчаянный романтик! Хоть может сдать на двойку романтизм. © Эдуард А. Асадов
==> читать все изречения...

2866 - | 2578 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.