Комбинаторное покрытие условий

Основные принципы тестирования

Принцип 1. Определение. Для того чтобы протестировать программу, нужно попытаться заставить ее работать неверно.

Принцип 2. Тесты или спецификации. Тесты не заменяют спецификации.

Принцип 3. Регрессивное тестирование. Любое неудачное выполнение должно порождать тестовый случай, который навсегда становится частью тестового пакета данного проекта.

Принцип 4. Использование предсказаний. Определение успеха или неудачи тестов должно происходить автоматически.

Принцип 5. Тестовые случаи, проверяемые вручную и автоматически. Э ффективный процесс тестирования должен включать в себя тестовые случаи, проверяемые как вручную, так и автоматически.

Принцип 6. Эмпирические оценки стратегий тестирования. Оценивайте любую стратегию тестирования, однако, какой бы интересной она ни казалась, прибегайте к объективной оценке, используя точные критерии в воспроизводимом процессе тестирования.

Тестирование по принципам «белого» и «черного» ящиков.

"Белый ящик" - тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка на котором она писалась.

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

Стратегия Белого ящика включает в себя следующие методы тестирования:

Покрытие операторов

Критерии покрытия операторов подразумевает выполнение каждого оператора программы, по крайней мере, один раз.

Покрытие решений

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

Покрытие условий

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


Покрытие решений и условий

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

1. не всегда можно проверить все условия

2. невозможно проверить условия, которые скрыты другими условиям

3. метод обладает недостаточной чувствительностью к ошибкам в логических выражениях

 


комбинаторное покрытие условий

Этот критерий требует, чтобы все возможные комбинации результатов условий в каждом решении, а также каждый оператор выполнились по крайней мере один раз.

 

"Чёрный ящик" - тестирование функционального поведения программы с точки зрения внешнего мира (текст программы не используется).

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

[править] Свойства правильно выбранного теста

1. Уменьшает более, чем на одно число других тестов, которые должны быть разработаны для разумного тестирования.

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

[править] Методы стратегии чёрного ящика

1. Эквивалентное разбиение.

2. Анализ граничных значений.

3. Анализ причинно-следственных связей.

4. Предположение об ошибке.

Рассмотрим подробнее каждый из этих методов:

[править] Эквивалентное разбиение

Основу метода составляют два положения:

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

2. Каждый тест должен включать, по возможности, максимальное количество классов эквивалентности, чтобы минимизировать общее число тестов.

Разработка тестов этим методом осуществляется в два этапа: выделение классов эквивалентности и построение теста.

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

Входное условие Правильные классы эквивалентности Неправильные классы эквивалентности
' ' '

Выделение классов эквивалентности является эвристическим способом, однако существует ряд правил:

1. Если входное условие описывает область значений, например «Целое число принимает значение от 0 до 999», то существует один правильный класс эквивалентности и два неправильных.

2. Если входное условие описывает число значений, например «Число строк во входном файле лежит в интервале (1..6)», то также существует один правильный класс и два неправильных.

3. Если входное условие описывает множество входных значений, то определяется количество правильных классов, равное количеству элементов в множестве входных значений. Если входное условие описывает ситуацию «должно быть», например «Первый символ должен быть заглавным», тогда один класс правильный и один неправильный.

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

Определение тестов:

1. Каждому классу эквивалентности присваивается уникальный номер.

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

3. Если остались не включенные в тесты неправильные классы, то пишут тесты, которые покрывают только один класс.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: