Тестирование программного обеспечения
Рефераты >> Программирование и компьютеры >> Тестирование программного обеспечения

ПЛАН РЕФЕРАТА.

I. ВСТУПЛЕНИЕ.

1. ОБЩИЕ ПОНЯТИЯ.

2. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ.

II. ТЕСТИРОВАНИЕ ПРОГРАММНЫХ ПРОДУКТОВ.

1. ФИЛОСОФИЯ ТЕСТИРОВАНИЯ.

2. ИНТЕГРАЦИЯ МОДУЛЕЙ.

3. ВОСХОДЯЩЕЕ ТЕСТИРОВАНИЕ.

4. НИСХОДЯЩЕЕ ТЕСТИРОВАНИЕ.

5. МОДИФИЦИРОВАННЫЙ НИСХОДЯЩИЙ МЕТОД.

6. МЕТОД БОЛЬШОГО СКАЧКА.

7. МЕТОД САНДВИЧА.

8. МОДИФИЦИРОВАННЫЙ МЕТОД САНДВИЧА.

9. СРАВНИТЕЛЬНАЯ ХАРАКТЕРИСТИКА МЕТОДОВ ТЕСТИРОВАНИЯ.

III. ИСПЫТАНИЕ ПРОГРАММНЫХ ПРОДУКТОВ (АНАЛИЗ).

1. ЦЕЛЬ И ОСОБЕННОСТИ ИСПЫТАНИИ.

2. ТЕХНОЛОГИЧЕСКАЯ СХЕМА ИСПЫТАНИЯ.

3. ПЛАНИРОВАНИЕ И ОЦЕНКА ЗАВЕРШЕННОСТИ ИСПЫТАНИЙ.

4. СТЕНДЫ ОТЛАДКИ И ИСПЫТАНИЯ ПРОГРАММ.

IV. СЕРТИФИКАЦИЯ ПРОГРАММНЫХ ПРОДУКТОВ.

1. СТАНДАРТИЗАЦИЯ СИСТЕМ КАЧЕСТВА.

2. КЛАССИФИКАЦИЯ ПОКАЗАТЕЛЕЙ КАЧЕСТВА.

3. ВЫБОР НОМЕНКЛАТУРЫ ПОКАЗАТЕЛЕЙ КАЧЕСТВА

4. ГРУППЫ ПОКАЗАТЕЛЕЙ КАЧЕСТВА

I. ВСТУПЛЕНИЕ.

1. ОБЩИЕ ПОНЯТИЯ.

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

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

«Тестирование — процесс, подтверждающий правильность програм­мы и демонстрирующий, что ошибок в программе нет.» Основной недостаток подобного определения заключается в том, что оно совершенно неправильно; фактически это почти определение анто­нима слова «тестирование». Читатель с некоторым опытом програм­мирования уже, вероятно, понимает, что невозможно продемонст­рировать отсутствие ошибок в программе. Поэтому определение описывает невыполнимую задачу, а так как тестирование зачастую все же выполняется с успехом, по крайней мере с некоторым успе­хом, то такое определение логически некорректно. Правильное определение тестирования таково: Тестирование — процесс выполнения программы с намерением найти ошибки.

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

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

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

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

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

Еще одна причина, по которой трудно говорить о тестирова­нии — это тот факт, что о нем известно очень немногое. Если сегодня мы располагаем 5% тех знании о проектировании и собствен­но программировании (кодировании), которые будут у нас к 2000 г., то о тестировании нам известно менее 1%.

2. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ.

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

Тестирование (testing), как мы уже выяснили,—процесс вы­полнения программы (или части программы) с намерением (или це­лью) найти ошибки.

Доказательство (proof) — попытка найти ошибки в программе безотносительно к внешней для программы среде. Большинство методов доказательства предполагает формулировку утверждений о поведении программы и затем вывод и доказательство математиче­ских теорем о правильности программы. Доказательства могут рассматриваться как форма тестирования, хотя они и не предпола­гают прямого выполнения программы. Многие исследователи счи­тают доказательство альтернативой тестированию — взгляд во многом ошибочный; более подробно это обсуждается в гл. 17.

Контроль (verification) — попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.

Испытание (validation) — попытка найти ошибки, выполняя программу в заданной реальной среде.

Аттестация (certification) — авторитетное подтверждение правильности программы, аналогичное аттестации электротехниче­ского оборудования Underwriters Laboratories. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом.


Страница: