на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Тестирование информационных систем
Предварительные предположения о вероятности потока управления или данных в программе часто бывают некорректны. В результате типовым может стать маршрут, модель вычислений по которому проработана слабо.

· При записи алгоритма программного обеспечения в виде текста на языке программирования возможно внесение типовых ошибок трансляции (синтаксических и семантических).

· Некоторые результаты в программе зависят не от исходных данных, а от внутренних состояний программы.

Каждая из этих причин является аргументом для проведения тестирования по принципу «белого ящика». Тесты «черного ящика» не смогут реагировать на ошибки таких типов.

Способ тестирования базового пути.

Тестирование базового пути - это способ, который основан на принципе «белого ящика». Автор этого способа - Том МакКейб (1976).

Способ тестирования базового пути дает возможность:

· Получить оценку комплексной сложности программы.

· Использовать эту оценку для определения необходимого количества тестовых вариантов.

Тестовые варианты разрабатываются для проверки базового множества путей (маршрутов) в программе. Они гарантируют однократное выполнение каждого оператора программы при тестировании.

Потоковый граф.

Для представления программы используется потоковый граф. Перечислим его особенности.

· Граф строится отображением управляющей структуры программы. В ходе отображения закрывающие скобки условных операторов и операторов циклов рассматриваются как отдельные (фиктивные) операторы.

· Узлы (вершины) потокового графа соответствуют линейным участкам программы, включают один или несколько операторов программы.

· Дуги потокового графа отображают поток управления в программе (передачи управления между операторами). Дуга - это ориентированное ребро.

· Различают операторные и предикатные узла. Из операторного узла выходит одна дуга, а из предикатного - две дуги.

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

· Замкнутые области, образованные дугами и узлами, называют регионами.

· Окружающая граф среда рассматривается как дополнительный регион.

Цикломатическая сложность.

Цикломатическая сложность - метрика программного обеспечения, которая обеспечивает количественную оценку логической сложности программы. В способе тестирования базового пути цикломатическая сложность определяет:

· Количество независимых путей в базовом множестве программы.

· Верхнюю оценку количества тестов, которое гарантирует однократное выполнение всех операторов.

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

Все независимые пути графа образуют базовое множество.

Свойства базового множества:

· Тесты, обеспечивающие его проверку гарантируют:

1. однократное выполнение каждого оператора;

2. выполнение каждого условия по True-ветви и по False-ветви.

· Мощность базового множества равна цикломатической сложности потокового графа.

Значение второго свойства трудно переоценить - оно дает априорную оценку количества независимых путей, которое имеет смысл искать в графе.

Цикломатическая сложность вычисляется одним из трех способов:

· Цикломатическая сложность равна количеству регионов потокового графа.

· Цикломатическая сложность определяется по формуле
V(G)=E - N + 2, где E - количество дуг, N - количество узлов потокового графа.

· Цикломатическая сложность формируется по выражению V(G)=p+1, где p - количество предикатных узлов в потоковом графе G.

Шаги способа тестирования базового пути.

· На основе текста программы формируется потоковый граф:

1. нумеруются операторы текста.

2. производится отображение пронумерованного текста программы в узлы и вершины потокового графа.

· Определяется цикломатическая сложность потокового графа - по каждой из трех формул.

· Определяется базовое множество независимых линейных путей.

· Подготавливаются тестовые варианты, инициирующие выполнение каждого пути.

Каждый тестовый вариант формируется в следующем виде:

Исходные данные (ИД):

Ожидаемые результаты (ОЖ.РЕЗ.):

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

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

Важно отметить, что некоторые независимые пути не могут проверяться изолированно. Такие пути должны проверяться при тестировании другого пути (как часть другого тестового варианта).

Способы тестирования условий.

Цель этого семейства способов тестирования - строить тестовые варианты для проверки логических условий программы. При этом желательно обеспечить охват операторов из всех ветвей программы.

Рассмотрим используемую здесь терминологию.

Простое условие - булева переменная или выражение отношения.

Выражение отношения имеет вид

E1<оператор отношения>E2,

Где E1, E2 - арифметические выражения, а в качестве оператора отношения используется один из следующих операторов:

Составное условие состоит из нескольких простых условий, булевых операторов и круглых скобок. Будем применять булевы операторы OR, AND (&), NOT. Условия, не содержащие выражений отношения, называют булевыми выражениями.

Таким образом, элементами условия являются: булев оператор, булева переменная, пара скобок (заключающая простое или составное условие), оператор отношения, арифметическое выражение. Эти элементы определяют типы ошибок в условиях.

Если условие некорректно, то некорректен по меньшей мере один из элементов условия. Следовательно, в условии возможны следующие типы ошибок:

· Ошибка булева оператора (наличие некорректных/ отсутствующих/ избыточных булевых операторов).

· Ошибка булевой переменной.

· Ошибка оператора отношения.

· Ошибка арифметического выражения.

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

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

Существует несколько методик тестирования условий.

Простейшая методика - тестирование ветвей. Здесь для составного условия С проверяется:

· каждое простое условие;

· True-ветвь;

· False-ветвь.

Другая методика - тестирование области определения в ней для выражения отношения требуется генерация 3-4 тестов. Выражение вида

Е1<оператор отношения>Е2

проверяется тремя тестами, которые формируют значение Е1 большим, чем Е2, равным Е2 и меньшим, чем Е2.

Если оператор отношения неправилен, а Е1 и Е2 корректны, то эти три теста гарантируют обнаружение ошибки оператора отношения.

Для определения ошибок в Е1 и Е2 тест должен сформировать значение Е1 большим или меньшим, чем Е2, причем обеспечить как можно меньшую разницу между этими значениями.

Способ тестирования потоков данных.

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

Работу любой программы можно рассматривать как обработку потока данных, передаваемых от входа в программу к ее выходу.

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

Под определением данных понимают действия, изменяющие элемент данных.

Использование данных - это применение элемента в выражении, где происходит обращение к элементу данных, но не изменение элемента.

Назовем DU-цепочкой (цепочкой определения-использования) конструкцию [x, i, j], где i, j - имена вершин; x определена в i-й вершине и используется в j-й вершине.

Способ DU-тестирования требует охвата всех DU-цепочек программы. Таким образом, разработка тестов здесь проводится на основе анализа жизни всех данных программы.

Очевидно, что для подготовки тестов требуется выделение маршрутов - путей выполнения программы на управляющем графе. Критерий выбора пути - покрытие максимального количества DU-цепочек.

Шаги способа DU-тестирования:

· построение управляющего графа программы;

· построение информационного графа;

· формирование полного набора DU-цепочек;

· формирование полного набора отрезков путей в управляющем графе;

· построение маршрутов - полных путей на управляющем графе, покрывающих набор отрезков путей управляющего графа;

· подготовка тестовых вариантов.

Достоинства DU-тестирования:

· простота необходимого анализа операционно-управляющей структуры программы;

· простота автоматизации.

Недостаток DU-тестирования: трудности в выборе минимального количества максимально эффективных тестов.

Область использования DU-тестирования: программы со вложенными условными операторами и операторами цикла.

Тестирование циклов.

Цикл - наиболее распространенная конструкция алгоритмов, используемых в ПО. Тестирование циклов производится по принципу «белого ящика», при проверке циклов основное внимание обращается на правильность конструкций циклов.

Различают 4 типа циклов: простые, вложенные, объединенные, неструктурированные.

Простые циклы.

Для проверки циклов с количеством повторений n может использоваться один из следующих наборов тестов:

· прогон всего цикла;

· только один проход цикла;

· два прохода цикла;

· m проходов циклов, где m<n;

· n-1, n, n+1 проходов цикла.

Вложенные циклы.

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

Шаги тестирования:

· Выбирается самый внутренний цикл. Устанавливаются минимальные значения параметров всех остальных циклов.

· Для внутреннего цикла проводятся тесты простого цикла. Добавляются тесты для исключенных значений и значений, выходящих за пределы рабочего диапазона.

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

· Работа продолжается до тех пор, пока не будут протестированы все циклы.

Объединенные циклы.

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

Неструктурированные циклы.

Неструктурированные циклы тестированию не подлежат. Этот тип циклов должен быть переделан с помощью структурированных программных конструкций.

2.2. Тестирование «черного ящика»

Известны: функции программы.

Исследуется: работа каждой функции на всей области определения.

Основное место приложения тестов «черного ящика» - интерфейс ПО.

Эти тесты демонстрируют:

· Как выполняются функции программы.

· Как принимаются исходные данные.

· Как вырабатываются результаты.

· Как сохраняется целостность внешней информации.

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

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

· Набор, образуемый такими входными данными, которые приводят к аномалиям в поведении программы (назовем его IT);

· Набор, образуемый такими входными данными, которые демонстрируют дефекты программы (назовем его OT).

Любой способ тестирования «черного ящика» должен:

· Выявить такие входные данные, которые с высокой вероятностью принадлежат набору IT;

· Сформулировать такие ожидаемые результаты, которые с высокой вероятностью являются элементами набора OT.

Во многих случаях определение таких тестовых вариантов основывается

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

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.