Общая стратегия тестирования. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Общая стратегия тестирования.



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

Приемлемая стратегия состоит в следующем:

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

 

Стратегия тестирования

Тестирование включает в себя виды деятельности, аналогичные последовательности разработки программного обеспечения:

- постановка задачи для тестов;

- проектирование тестов;

- написание(кодирование) тестов;

- тестирование тестов;

- выполнение тестов;

- изучение результатов тестирования.

Стратегия тестирования может лежать между двумя крайними проявлениями:

Тестирование модуля.

Цель тестирования модуля – выявление несоответствия между логикой работы модуля и его внешними спецификациями (описанием функций, входных и выходных данных, внешних эффектов). Сначала модуль рассматривается как «Черный ящик», после чего исследуется внутреннее устройство для подготовки дополнительных тестов.

 

Процесс состоит из 4 шагов:

1) В соответствие со спецификациями подготавливается тест (данные) для каждой ситуации: для каждой границы областей допустимых значений всех входных данных, областей изменения выходных данных, для всех недопустимых условий.

2) По тексту программы тесты подготавливают так, чтобы все условные переходы были выполнены хотя бы один раз в каждом направлении.

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

4) Проверить чувствительность к входным данным (возникновение ситуаций деления на ноль и т.д.)

Выполнение тестов.

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

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

Тестирование внешних функций – выполняется после тестирования модулей и сопряжений между ними. Назначение - найти несоответствие программной системы и ее внешних спецификаций.

Спецификации программной системы составляются для отдельных функций на этапе проектирования.

 

Класс исключений Exception -базовый класс всех исключений в Delphi.(Модуль SysUtils).

Все предопределенные в Delphi классы исключений являются прямыми или косвенными наследниками класса Exception. Класс Exception наследует также все функции своего базового класса TObject, в частности, полезную для идентификации неизвестного исключения функцию ClassName.

2. Для написания защищенного кода в Delphi используются следующие структуры как try … except … end и try … finalli … end.

Рассмотрим первую структуру:

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

Раздел except может использоваться двумя способами. При первом способе в нем могут располагаться любые выполняемые операторы, кроме обработчиков исключений on...do. Это могут быть операторы сообщений об ошибке, операторы освобождения ресурсов и т.д. Второй и главный способ использования раздела except - обработка исключений. В этом случае в него могут включаться только обработчики исключений: операторы on...do и необязательный обработчик любых исключений, предваряемый ключевым словом else. При наличии такого обработчика блок имеет вид:

try

{Исполняемый код}

except

on............;

on............;

else <обработчик всех не перехваченных ранее событий>;

end;

 

Если при выполнении операторов раздела try генерируется исключение, выполнение этого раздела прерывается и управление передается операторам раздела except. Если среди обработчиков встретился соответствующий сгенерированному исключению, выполняется оператор этого обработчика, исключение разрушается и управление передается оператору, следующему за блоком on...do, т.е. оператору, следующему за последним оператором блока end. Если же обработчик не нашелся, то управление передается на следующий уровень, т.е. разделу except следующего обрамляющего блока try...except (если таковой есть). То же самое происходит, если в процессе обработки генерируется новое исключение (при обработке ошибки произошла новая ошибка). Если в результате прохода по всем уровням подходящий обработчик так и не будет найден, произойдет обработка системным обработчиком исключений.

3. Операторы on … do

Оператор on...do служит для обработки исключений в разделе except блока try...except. Он имеет две формы:

 

on < класс исключения> do <оператор>;

и

on <имя>: <класс исключения>

do <операторы, в которых можно использовать конструкцию

<имя>.<имя свойства>>

 

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

После обработки исключения оно разрушается.

Первая форма оператора не позволяет получить доступ к свойствам исключения. Вторая форма создает временное имя исключения и позволяет через него с помощью конструкции <имя>.<имя свойства> иметь доступ к свойствам.



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 143; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.137.17 (0.007 с.)