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

Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций [1] .

Содержание

Понятие «чёрного» ящика [ править | править код ]

Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Понятие «чёрный ящик» предложено У. Р. Эшби. В кибернетике оно позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в то же время абстрагироваться от их внутреннего устройства.

Манипулируя только лишь со входами и выходами, можно проводить определённые исследования. На практике всегда возникает вопрос, насколько гомоморфизм «чёрного» ящика отражает адекватность его изучаемой модели, то есть как полно в модели отражаются основные свойства оригинала.

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

«Чёрный» ящик представляет собой сложную гомоморфную модель кибернетической системы, в которой соблюдается разнообразие. Он только тогда является удовлетворительной моделью системы, когда содержит такое количество информации, которое отражает разнообразие системы. Можно предположить, что чем большее число возмущений действует на входы модели системы, тем большее разнообразие должен иметь регулятор.

В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте. В таком случае в явной или неявной форме высказывается гипотеза о предсказуемости поведения «чёрного» ящика в вероятностном смысле. Без предварительной гипотезы невозможно любое обобщение, или, как говорят, невозможно сделать индуктивное заключение на основе экспериментов с «чёрным» ящиком. Для обозначения модели «чёрного» ящика Н. Винером предложено понятие «белого» ящика. «Белый» ящик состоит из известных компонентов, то есть известных X, Y, δ, λ. Его содержимое специально подбирается для реализации той же зависимости выхода от входа, что и у соответствующего «чёрного» ящика. В процессе проводимых исследований и при обобщениях, выдвижении гипотез и установления закономерностей возникает необходимость корректировки организации «белого» ящика и смены моделей. В связи с этим при моделировании исследователь должен обязательно многократно обращаться к схеме отношений «чёрный» — «белый» ящик.

Исследование поведения «чёрного» ящика [ править | править код ]

Рассмотрим, как изучается и исследуется поведение «чёрного» ящика второго вида. Предположим, что дана некоторая система управления, внутреннее строение которой неизвестно. Система управления имеет входы X ( x 1 , x 2 , x 3 , . . . , x n ) <displaystyle X(x_<1>,x_<2>,x_<3>. x_)> и выходы Y ( y 1 , y 2 , y 3 , . . . , y m ) <displaystyle Y(y_<1>,y_<2>,y_<3>. y_)> .

Способ исследования поведения данного «чёрного» ящика заключается в проведении эксперимента, результаты которого можно представить в виде табл. 1.

Такой способ исследования «чёрного» ящика называется протокольным. Значения входных величин в моменты времени ( t 1 , t 2 , . . . , t k ) <displaystyle (t_<1>,t_<2>. t_)> могут выбираться произвольно.

Способ исследования «чёрного» ящика

Состояние входов Состояние выходов Время
x 1 ( t 1 ) , x 2 ( t 1 ) , . . . , x n ( t 1 ) <displaystyle x_<1>(t_<1>),x_<2>(t_<1>). x_(t_<1>)> y 1 ( t 1 ) , y 2 ( t 1 ) , . . . , y m ( t 1 ) <displaystyle y_<1>(t_<1>),y_<2>(t_<1>). y_(t_<1>)> t 1 <displaystyle t_<1>>
x 1 ( t 2 ) , x 2 ( t 2 ) , . . . , x n ( t 2 ) <displaystyle x_<1>(t_<2>),x_<2>(t_<2>). x_(t_<2>)> y 1 ( t 2 ) , y 2 ( t 2 ) , . . . , y m ( t 2 ) <displaystyle y_<1>(t_<2>),y_<2>(t_<2>). y_(t_<2>)> t 2 <displaystyle t_<2>>
. . .
. . .
x 1 ( t k ) , x 2 ( t k ) , . . . , x n ( t k ) <displaystyle x_<1>(t_),x_<2>(t_). x_(t_)> y 1 ( t k ) , y 2 ( t k ) , . . . , y m ( t k ) <displaystyle y_<1>(t_),y_<2>(t_). y_(t_)> t k <displaystyle t_>

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

Исследование систем управления связано с понятиями «вероятностный автомат», «вероятностная система», что требует изучения их вероятностных свойств. Для этих целей можно построить матрицу вероятностей (табл. 2), в которой для каждого входа x i <displaystyle x_> и каждого выхода y i <displaystyle y_> указывается условная вероятность p i <displaystyle p_> , что y i <displaystyle y_> возникает в ответ на x i <displaystyle x_> [7], приведённой в табл. 2.

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

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

Для науки метод «чёрный» ящик имеет весьма большое значение. С его помощью в науке были сделаны очень многие выдающиеся открытия. Например, учёный Гарвей ещё в XVII веке предугадал строение сердца. Он моделировал работу сердца насосом, позаимствовав идеи из совершенно другой области современных ему знаний — гидравлики. Практическая ценность метода «чёрный» ящик заключается во-первых, в возможности исследования очень сложных динамических систем, и, во-вторых, в возможности замены одного «ящика» другим. Окружающая действительность и биология дают массу примеров выявления строения систем методом «чёрного» ящика.

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

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

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

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

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

  1. Эквивалентное разбиение.
  2. Анализ граничных значений.
  3. Анализ причинно-следственных связей.
  4. Предположение об ошибке.

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

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

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

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

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

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

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

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

  1. Если входное условие описывает область значений, например «Целое число принимает значение от 0 до 999», то существует один правильный класс эквивалентности и два неправильных.
  2. Если входное условие описывает число значений, например «Число строк во входном файле лежит в интервале (1..6)», то также существует один правильный класс и два неправильных.
  3. Если входное условие описывает множество входных значений, то определяется количество правильных классов, равное количеству элементов в множестве входных значений. Если входное условие описывает ситуацию «должно быть», например «Первый символ должен быть заглавным», тогда один класс правильный и один неправильный.
  4. Если есть основание считать, что элементы внутри одного класса эквивалентности могут программой трактоваться по-разному, необходимо разбить данный класс на подклассы. На этом шаге тестирующий на основе таблицы должен составить тесты, покрывающие собой все правильные и неправильные классы эквивалентности. При этом составитель должен минимизировать общее число тестов.
  1. Каждому классу эквивалентности присваивается уникальный номер.
  2. Если ещё остались не включённые в тесты правильные классы, то пишутся тесты, которые покрывают максимально возможное количество классов.
  3. Если остались не включённые в тесты неправильные классы, то пишут тесты, которые покрывают только один класс.

Анализ граничных значений [ править | править код ]

Граничные условия — это ситуации, возникающие на высших и нижних границах входных классов эквивалентности.

Анализ граничных значений отличается от эквивалентного разбиения следующим:

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

Метод требует определённой степени творчества и специализации в рассматриваемой задаче.

Существует несколько правил:

  1. Построить тесты с неправильными входными данными для ситуации незначительного выхода за границы области значений. Если входные значения должны быть в интервале [-1.0 .. +1.0], проверяем −1.0, 1.0, −1.000001, 1.000001.
  2. Обязательно писать тесты для минимальной и максимальной границы диапазона.
  3. Использовать первые два правила для каждого из входных значений (использовать пункт 2 для всех выходных значений).
  4. Если вход и выход программы представляет упорядоченное множество, сосредоточить внимание на первом и последнем элементах списка.

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

Анализ причинно-следственных связей [ править | править код ]

Этапы построения теста:

  1. Спецификация разбивается на рабочие участки.
  2. В спецификации определяются множество причин и следствий. Под причиной понимается отдельное входное условие или класс эквивалентности. Следствие представляет собой выходное условие или преобразование системы. Здесь каждой причине и следствию присваивается номер.
  3. На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются всевозможные комбинации причин и определяются следствия для каждой комбинации причин.

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

Предположение об ошибке [ править | править код ]

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

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

Методы

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

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

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

Динамические техники следующие:

  1. Тестирование методом белого ящика. Это подробное исследование внутренней логики и структуры программы. При этом необходимо знание исходного кода.
  2. Тестирование методом черного ящика. Данная техника не требует каких-либо знаний о внутренней работе приложения. Рассматриваются только основные аспекты системы, не связанные или мало связанные с ее внутренней логической структурой.
  3. Метод серого ящика. Сочетает в себе предыдущие два подхода. Отладка с ограниченным знанием о внутреннем функционировании приложения сочетается со знанием основных аспектов системы.

Прозрачное тестирование

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

Тестирование программ методом белого ящика обладает следующими преимуществами:

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

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

1) тестирование управления потоком – структурная стратегия, использующая поток управления программой в качестве модели и отдающая предпочтение большему количеству простых путей перед меньшим числом более сложных;

2) отладка ветвления имеет целью исследование каждой опции (истинной или ложной) каждого оператора управления, который также включает в себя объединенное решение;

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

4) проверка потока данных – стратегия исследования потока управления путем аннотации графа информацией об объявлении и использовании переменных программы;

Читайте также:  Code 1 message lowdifficultyshare

5) тестирование циклов – полностью сосредоточено на правильном выполнении циклических процедур.

Поведенческая отладка

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

Преимущества такого подхода:

  • эффективность для большого сегмента кода;
  • простота восприятия тестировщиком;
  • перспектива пользователя четко отделена от перспективы разработчика (программист и тестировщик независимы друг от друга);
  • более быстрое создание теста.

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

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

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

К данной категории можно отнести следующие методы тестирования программного обеспечения:

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

2) краевой анализ фокусируется на проверке границ или экстремальных граничных значений – минимумах, максимумах, ошибочных и типичных значениях;

3) фаззинг – используется для поиска погрешностей реализации с помощью ввода искаженных или полуискаженных данных в автоматическом или полуавтоматическом режиме;

4) графы причинно-следственных связей – методика, основанная на создании графов и установлении связи между действием и его причинами: тождественность, отрицание, логическое ИЛИ и логическое И – четыре основных символа, выражающие взаимозависимость между причиной и следствием;

5) проверка ортогональных массивов, применяемая к проблемам с относительно небольшой областью ввода, превышающей возможности исчерпывающего исследования;

6) тестирование всех пар – техника, набор тестовых значений которой включает все возможные дискретные комбинации каждой пары входных параметров;

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

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

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

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

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

Какое количество тестов необходимо произвести, чтобы проверить все возможные значения для 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/x) 1/2 используется три последовательности данных, три эквивалентных разбиения:

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

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

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

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

Краевой анализ

Обработка данных на границах эквивалентного разбиения может выполняться иначе, чем ожидается. Исследование граничных значений – хорошо известный способ анализа поведения ПО в таких областях. Эта техника позволяет выявить такие ошибки:

  • неправильное использование операторов отношения ( , =, ≠, ≥, ≤);
  • единичные ошибки;
  • проблемы в циклах и итерациях,
  • неправильные типы или размер переменных, используемых для хранения информации;
  • искусственные ограничения, связанные с данными и типами переменных.

Полупрозрачное тестирование

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

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

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

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

Такие методы тестирования обладают следующими преимуществами:

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

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

К этой категории относят такие методы тестирования:

1) ортогональный массив – использование подмножества всех возможных комбинаций;

2) матричная отладка с использованием данных о состоянии программы;

3) регрессивная проверка, проводимая при внесении новых изменений в ПО;

4) шаблонный тест, который анализирует дизайн и архитектуру добротного приложения.

Сравнение методов тестирования ПО

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

Читайте также:  Есть ли мозги у бабочки

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

Ниже приведены основные отличия трех динамических техник тестирования — дана таблица сравнения между тремя формами отладки ПО.

Метод черного ящика

Метод серого ящика

Метод белого ящика

Наличие сведений о составе программы

Анализируются только базовые аспекты

Частичное знание о внутреннем устройстве программы

Полный доступ к исходному коду

Степень дробления программы

Кто производит отладку?

Конечные пользователи, тестировщики и разработчики

Конечные пользователи, отладчики и девелоперы

Разработчики и тестировщики

Тестирование базируется на внешних внештатных ситуациях.

Диаграммы БД, диаграммы потока данных, внутренние состояния, знание алгоритма и архитектуры

Внутреннее устройство полностью известно

Наименее исчерпывающая и требует минимума времени

Потенциально наиболее исчерпывающая. Требует много времени

Данные и внутренние границы

Отладка исключительно методом проб и ошибок

Могут проверяться домены данных и внутренние границы, если они известны

Лучшее тестирование доменов данных и внутренних границ

Пригодность для тестирования алгоритма

Автоматизация

Автоматические методы тестирования программных продуктов намного упрощают процесс проверки независимо от технической среды или контекста ПО. Их используют в двух случаях:

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

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

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

  • управление тестированием, которое включает поддержку управления проектом, версиями, конфигурациями, риск-анализ, отслеживание тестов, ошибок, дефектов и инструменты создания отчетов;
  • управление требованиями, которое включает хранение требований и спецификаций, их проверку на полноту и многозначность, их приоритет и отслеживаемость каждого теста;
  • критический просмотр и статический анализ, включая мониторинг потока и задач, запись и хранение комментариев, обнаружение дефектов и плановых коррекций, управление ссылками на проверочные списки и правила, отслеживание связи исходных документов и кода, статический анализ с обнаружением дефектов, обеспечением соответствия стандартам написания кода, разбором структур и их зависимостей, вычислением метрических параметров кода и архитектуры. Кроме того, используются компиляторы, анализаторы связей и генераторы кросс-ссылок;
  • моделирование, которое включает инструменты моделирования бизнес-поведения и проверки созданных моделей;
  • разработка тестов обеспечивает генерацию ожидаемых данных исходя из условий и интерфейса пользователя, моделей и кода, управление ими для создания или изменения файлов и БД, сообщений, проверки данных исходя из правил управления, анализа статистики условий и рисков;
  • критический просмотр путем ввода данных через графический интерфейс пользователя, API, командные строки с использованием компараторов, помогающих определить успешные и неудавшиеся тесты;
  • поддержка сред отладки, которая позволяет заменить отсутствующее оборудование или ПО, в т. ч. симуляторы оборудования на основе подмножества детерминированного выхода, эмуляторы терминалов, мобильных телефонов или сетевого оборудования, среды для проверки языков, ОС и аппаратного обеспечения путем замены недостающих компонентов драйверами, фиктивными модулями и др., а также инструменты для перехвата и модификации запросов ОС, симуляции ограничений ЦПУ, ОЗУ, ПЗУ или сети;
  • сравнение данных файлов, БД, проверка ожидаемых результатов во время и по окончании тестирования, в т. ч. динамическое и пакетное сравнение, автоматические «оракулы»;
  • измерение покрытия для локализации утечек памяти и некорректного управления ею, оценки поведения системы в условиях симулированной нагрузки, генерации нагрузки приложений, БД, сети или серверов по реалистичным сценариям ее роста, для измерения, анализа, проверки и отчета о системных ресурсах;
  • обеспечение безопасности;
  • тестирование производительности, нагрузки и динамический анализ;
  • другие инструменты, в т. ч. для проверки правописания и синтаксиса, сетевой безопасности, наличия всех страниц веб-сайта и др.

Перспектива

С изменением тенденций в индустрии ПО процесс его отладки также подвержен изменениям. Существующие новые методы тестирования программных продуктов, такие как сервис-ориентированнае архитектура (SOA), беспроводные технологии, мобильные услуги и т. д., открыли новые способы проверки ПО. Некоторые из изменений, которые ожидаются в этой отрасли в течение следующих нескольких лет, перечислены ниже:

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

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

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

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

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

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

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

  • • число не повторяющих друг друга маршрутов в программе — астрономическое;
  • • даже если каждый маршрут программы будет проверен, сама программа может содержать ошибки.