Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика и ВТ Брукшир.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.07 Mб
Скачать

6.6 Тестирование

В разделе 4.6 мы обсуждали математические методы проверки правильности алгоритмов и пришли к выводу, что сегодня большая часть программного обеспечения проверяется с помощью тестирования. К сожалению, тестирование не дает точных результатов. Проводя тестирование, мы не можем с достоверностью сказать, что система программного обеспечения работает правильно, если только мы не проведем достаточное количество испытаний, которые будут включать все возможные сценарии. Но существует более тысячи разных путей, по которым может пойти простой цикл, содержащий оператор if-then-else, когда цикл выполняется только десять раз. Поэтому проверить все возможные пути сложной программы просто невозможно.

С другой стороны, разработчики программного обеспечения создали методы тестирования, которые с достаточно большой вероятностью позволяют обнаружить ошибки в программе. Одна из методик основывается на наблюдении, что ошибки в программном обеспечении имеют свойство скапливаться в одном месте. То есть опыт показывает, что некоторые модули большой системы содержат больше ошибок, чем другие модули. Поэтому, определив эти модули и проверив их более тщательно, чем остальные, можно выявить больше ошибок, чем если проверять все модули достаточно тщательно, но одинаковым образом. Это пример применения принципа Парето (Pareto principle), названного в честь итальянского социолога и экономиста Вильфредо Парето (Vilfredo Pareto, 1848-1923), который заметил, что небольшая часть населения Италии контролирует большую часть богатства страны. В общем, принцип Парето говорит о том, что часто можно достичь больших результатов, если прикладывать усилия в ограниченном пространстве.

Другой метод тестирования называется тестированием базового пути (basis path testing). В этом случае создается набор контрольных данных, которые бы подтверждали, что каждая команда программы выполняется по меньшей мере один раз. Для определения контрольных данных была разработана методика, в которой используется теория графов. Хотя при таком способе тестирования и невозможно гарантировать, что были проверены все пути программной системы, однако можно утверждать, что в процессе проверки каждый оператор выполнялся, по крайней мере, один раз.

В методах тестирования, основанных на принципе Парето и проверке базового пути, подразумевается, что нам известно внутреннее строение тестируемой системы. Поэтому эти способы тестирования можно отнести к категории тестирования методом «прозрачного ящика» (glass-box testing), когда человеку, проводящему испытание системы, известно ее строение. В отличие от этого, при тестировании методом «черного ящика» (black-box testing) внутреннее строение системы остается неизвестным. Такое тестирование выполняется с точки зрения пользователя. Основное внимание при этом уделяется не тому, как именно система выполняет задачу, а тому, выполняется ли задача правильно, точно и вовремя.

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

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

Другая методика тестирования все более широко применяется разработчиками программного обеспечения, предназначенного для продажи. В этом случае часть предполагаемых покупателей снабжается предварительной версией программы, которая называется бета-версией (beta version). Прежде чем утвердить окончательную версию продукта и выпустить ее на рынок, разработчики пытаются выяснить, как программное обеспечение будет работать в реальных условиях.

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