Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП лекции Раздел 5.doc
Скачиваний:
19
Добавлен:
28.09.2019
Размер:
522.24 Кб
Скачать

Раздел 5. Тестирование, отладка и документирование по. Тема 5.1. Методы тестирования программ.

5.1.1. Виды контроля качества по.

Недостаточно выполнить проектирование и кодирование программного обеспечения, необходимо также обеспечить его соответствие требованиям и спецификациям. Многократно проводимые исследования показали, что чем раньше обнаруживаются те или иные несоответствия или ошибки, тем боль­ше вероятность их правильного исправления (рис. 9.1, а) и ниже его стои­мость (рис. 9.1, б) [7].

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

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

Примечание. Обычно на вопрос о цели тестирования начинающие программисты отве­чают, что целью тестирования является «доказательство правильности программы». Это абсо­лютно неверное мнение. Г. Майерс [47] предлагает очень удачную аналогию для пояснения этого положения. Представьте себе, что вы пришли на прием к врачу и пожаловались на боль в боку. Врач выслушал вас и направил на обследование. Через некоторое время вы возвращаетесь к врачу с ворохом заключений и результатов анализов, и во всех этих бумагах написано, что все исследуемые параметры у вас в норме. Но бок то болит, значит что-то не в порядке, хотя анализы этого и не показывают... Так и сложное программное обеспечение, безошибоч­но работающее на всех тестовых наборах, может содержать и обычно содержит некоторое ко­личество ошибок.

Процесс разработки программного обеспечения, в том виде, как он оп­ределяется в современной модели жизненного цикла программного обеспе­чения, предполагает три стадии тестирования:

  • автономное тестирование компонентов программного обеспечения;

  • комплексное тестирование разрабатываемого программного обеспече­ния;

  • системное или оценочное тестирование на соответствие основным критериям качества.

Для повышения качества тестирования рекомендуется соблюдать следующие основные принципы:

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

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

  • необходимо досконально изучать результаты каждого теста;

  • необходимо проверять действия программы на неверных данных;

  • необходимо проверять программу на неожиданные побочные эффекты на неверных данных.

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

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

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

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

Структурный подход базируется на том, что известна структура тести­руемого программного обеспечения, в том числе его алгоритмы («стеклян­ный ящик»). В этом случае тесты строят так, чтобы проверить правильность реализации заданной логики в коде программы.

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

Наборы тестов, полученные в соответствии с методами этих подходов, обычно объединяют, обеспечивая всестороннее тестирование программного обеспечения.

Более подробное рассмотрение перечисленных вопросов начнем с об­суждения методов ручного контроля.