Детерминированное тестирование. Тестирование по методу «черного ящика». Эквивалентное разбиение.




Тест – процесс многократного выполнения программы с целью обнаружения ошибки.

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

Детерминированное тестирование основывается на двух подходах:

  • Структурное (по белому ящику):

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

  • Функциональное (по черному ящику, по спецификации):

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

Эффективный тестовый набор данных – это подмножество всех возможных тестов, которое имеет наивысшую вероятность обнаружения большинства ошибок.

Тестирование методом черного ящика: примеры

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

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

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

Какое количество тестов необходимо произвести, чтобы проверить все возможные значения для 4 окон флажка и одного двухпозиционного поля, задающего время в секундах? На первый взгляд расчет прост: 4 поля с двумя возможными состояниями – 24 = 16, которые необходимо умножить на число возможных позиций от 00 до 99, то есть 1600 возможных тестов.

Тем не менее этот расчет ошибочен: мы можем определить, что двухпозиционное поле может также содержать пробел, т. е. оно состоит из двух буквенно-цифровых позиций и может включать символы алфавита, специальные символы, пробелы и т. д. Таким образом, если система представляет собой 16-битный компьютер, то получится 216 = 65 536 вариантов для каждой позиции, результирующих в 4 294 967 296 тестовых случаев, которые необходимо умножить на 16 комбинаций для флажков, что в общей сложности дает 68 719 476 736. Если их выполнить со скоростью 1 тест в секунду, то общая продолжительность тестирования составит 2 177,5 лет. Для 32 или 64-битных систем, длительность еще больше.

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

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

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

1) Выделение классов эквивалентности.

2) Построение теста.

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

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

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

Правила выделения классов эквивалентности:

1. Если входное условие описывает область значений, то определен один правильный класс и 2 неправильных:

1960 ≤ год ≤ 2016

Правильный: год ∈ [1960;2016]

Неправильный: (год < 1960) и (год >2016)

 

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

Специальность врача ∈ {хирург, лор, терапевт, окулист}

Правильный: спец=хирург, спец=лор, спец=терапевт, спец=окулист.

Неправильный: спец=уборщик.

 

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

Фамилия – заглавная буква.

Правильный: Фамилия начинается с большой буквы.

Неправильный: Фамилия не начинается с большой буквы.

Пример 2:

В используется три последовательности данных, три эквивалентных разбиения:

1. Все положительные числа будут обрабатываться таким же образом и должны давать правильные результаты.

2. Все отрицательные числа будут обрабатываться так же, с таким же результатом. Это неверно, так как корень из отрицательного числа является мнимым.

3. Ноль будет обрабатываться отдельно и даст ошибку «деление на ноль». Это раздел с одним значением.

Таким образом, мы видим три различных раздела, один из которых сводится к единственному значению. Есть один «правильный» раздел, дающий достоверные результаты, и два «неправильных», с некорректными результатами.

 


 

Раздел Информатика



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: