Тестирование черный ящик: Особенности тестирования «черного ящика» — Лаборатория Качества
Тестирование по стратегии чёрного ящика — Википедия
Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций[1].
Понятие «чёрного» ящика
Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Понятие «чёрный ящик» предложено У. Р. Эшби. В кибернетике оно позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в то же время абстрагироваться от их внутреннего устройства.
Манипулируя только лишь со входами и выходами, можно проводить определённые исследования. На практике всегда возникает вопрос, насколько гомоморфизм «чёрного» ящика отражает адекватность его изучаемой модели, то есть как полно в модели отражаются основные свойства оригинала.
Описание любой системы управления во времени характеризуется картиной последовательности её состояний в процессе движения к стоящей перед нею цели. Преобразование в системе управления может быть либо взаимно-однозначным и тогда оно называется изоморфным, либо только однозначным, в одну сторону. В таком случае преобразование называют гомоморфным.
«Чёрный» ящик представляет собой сложную гомоморфную модель кибернетической системы, в которой соблюдается разнообразие. Он только тогда является удовлетворительной моделью системы, когда содержит такое количество информации, которое отражает разнообразие системы. Можно предположить, что чем большее число возмущений действует на входы модели системы, тем большее разнообразие должен иметь регулятор.
В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте. В таком случае в явной или неявной форме высказывается гипотеза о предсказуемости поведения «чёрного» ящика в вероятностном смысле. Без предварительной гипотезы невозможно любое обобщение, или, как говорят, невозможно сделать индуктивное заключение на основе экспериментов с «чёрным» ящиком.
Для обозначения модели «чёрного» ящика Н. Винером предложено понятие «белого» ящика. «Белый» ящик состоит из известных компонентов, то есть известных X, Y, δ, λ. Его содержимое специально подбирается для реализации той же зависимости выхода от входа, что и у соответствующего «чёрного» ящика. В процессе проводимых исследований и при обобщениях, выдвижении гипотез и установления закономерностей возникает необходимость корректировки организации «белого» ящика и смены моделей. В связи с этим при моделировании исследователь должен обязательно многократно обращаться к схеме отношений «чёрный» — «белый» ящик.
Исследование поведения «чёрного» ящика
Рассмотрим, как изучается и исследуется поведение «чёрного» ящика второго вида. Предположим, что дана некоторая система управления, внутреннее строение которой неизвестно. Система управления имеет входы X(x1,x2,x3,…,xn){\displaystyle X(x_{1},x_{2},x_{3},…,x_{n})} и выходы Y(y1,y2,y3,…,ym){\displaystyle Y(y_{1},y_{2},y_{3},…,y_{m})}.
Способ исследования поведения данного «чёрного» ящика заключается в проведении эксперимента, результаты которого можно представить в виде табл. 1.
Такой способ исследования «чёрного» ящика называется протокольным. Значения входных величин в моменты времени (t1,t2,…,tk){\displaystyle (t_{1},t_{2},…,t_{k})} могут выбираться произвольно.
Таблица 1
Состояние входов | Состояние выходов | Время |
---|---|---|
x1(t1),x2(t1),…,xn(t1){\displaystyle x_{1}(t_{1}),x_{2}(t_{1}),…,x_{n}(t_{1})} | y1(t1),y2(t1),…,ym(t1){\displaystyle y_{1}(t_{1}),y_{2}(t_{1}),…,y_{m}(t_{1})} | t1{\displaystyle t_{1}} |
x1(t2),x2(t2),…,xn(t2){\displaystyle x_{1}(t_{2}),x_{2}(t_{2}),…,x_{n}(t_{2})} | y1(t2),y2(t2),…,ym(t2){\displaystyle y_{1}(t_{2}),y_{2}(t_{2}),…,y_{m}(t_{2})} | t2{\displaystyle t_{2}} |
………… | ………… | …. |
………… | ………… | …. |
x1(tk),x2(tk),…,xn(tk){\displaystyle x_{1}(t_{k}),x_{2}(t_{k}),…,x_{n}(t_{k})} | y1(tk),y2(tk),…,ym(tk){\displaystyle y_{1}(t_{k}),y_{2}(t_{k}),…,y_{m}(t_{k})} | tk{\displaystyle t_{k}} |
Другой способ исследования заключается в подаче на входы некоторых стандартных последовательностей. Этот способ особенно привлекателен, потому что позволяет сравнивать поведение нескольких «чёрных» ящиков с условием выбора таких, которые будут соответствовать предъявляемым требованиям.
Исследование систем управления связано с понятиями «вероятностный автомат», «вероятностная система», что требует изучения их вероятностных свойств. Для этих целей можно построить матрицу вероятностей (табл. 2), в которой для каждого входа xi{\displaystyle x_{i}} и каждого выхода yi{\displaystyle y_{i}} указывается условная вероятность pi{\displaystyle p_{i}}, что yi{\displaystyle y_{i}} возникает в ответ на xi{\displaystyle x_{i}} [7], приведённой в табл. 2.
Разработка методов построения математических моделей «чёрного» ящика является одной из важных кибернетических проблем. При условии наличия математической модели «чёрного» ящика появляется возможность отнести его к какому-либо одному классу, все системы которого изоморфны по поведению.
Создание математического описания «чёрного» ящика является своего рода искусством. В некоторых случаях удаётся сформировать алгоритм, в соответствии с которым «чёрный» ящик реагирует на произвольный входной сигнал. Для большинства же случаев делаются попытки установить дифференциальные уравнения, которые связывают реакцию «чёрного» ящика с его входами или, как говорят, с его входными стимулами.
Для науки метод «чёрный» ящик имеет весьма большое значение. С его помощью в науке были сделаны очень многие выдающиеся открытия. Например, учёный Гарвей ещё в XVII веке предугадал строение сердца. Он моделировал работу сердца насосом, позаимствовав идеи из совершенно другой области современных ему знаний — гидравлики. Практическая ценность метода «чёрный» ящик заключается во-первых, в возможности исследования очень сложных динамических систем, и, во-вторых, в возможности замены одного «ящика» другим. Окружающая действительность и биология дают массу примеров выявления строения систем методом «чёрного» ящика.
Принципы тестирования чёрного ящика
В этом методе программа рассматривается как чёрный ящик. Целью тестирования ставится выяснение обстоятельств, в которых поведение программы не соответствует спецификации. Для обнаружения всех ошибок в программе необходимо выполнить исчерпывающее тестирование, то есть тестирование на всевозможных наборах данных. Для большинства программ такое невозможно, поэтому применяют разумное тестирование, при котором тестирование программы ограничивается небольшим подмножеством всевозможных наборов данных. При этом необходимо выбирать наиболее подходящие подмножества, подмножества с наивысшей вероятностью обнаружения ошибок.
Свойства правильно выбранного теста
- Уменьшает более чем на одно число других тестов, которые должны быть разработаны для разумного тестирования.
- Покрывает значительную часть других возможных тестов, что в некоторой степени свидетельствует о наличии или отсутствии ошибки до и после ограниченного множества тестов.
Приёмы тестирования чёрного ящика
- Эквивалентное разбиение.
- Анализ граничных значений.
- Анализ причинно-следственных связей.
- Предположение об ошибке.
Рассмотрим подробнее каждый из этих методов:
Эквивалентное разбиение
Основу метода составляют два положения:
- Исходные данные необходимо разбить на конечное число классов эквивалентности. В одном классе эквивалентности содержатся такие тесты, что если один тест из класса эквивалентности обнаруживает некоторую ошибку, то и любой другой тест из этого класса эквивалентности должен обнаруживать эту же ошибку.
- Каждый тест должен включать, по возможности, максимальное количество классов эквивалентности, чтобы минимизировать общее число тестов.
Разработка тестов этим методом осуществляется в два этапа: выделение классов эквивалентности и построение теста.
Классы эквивалентности выделяются путём выбора каждого входного условия, которые берутся с помощью технического задания или спецификации и разбиваются на две и более группы. Для этого используется следующая таблица:
Входное условие | Правильные классы эквивалентности | Неправильные классы эквивалентности |
‘ | ‘ | ‘ |
Выделение классов эквивалентности является эвристическим способом, однако существует ряд правил:
- Если входное условие описывает область значений, например «Целое число принимает значение от 0 до 999», то существует один правильный класс эквивалентности и два неправильных.
- Если входное условие описывает число значений, например «Число строк во входном файле лежит в интервале (1..6)», то также существует один правильный класс и два неправильных.
- Если входное условие описывает множество входных значений, то определяется количество правильных классов, равное количеству элементов в множестве входных значений. Если входное условие описывает ситуацию «должно быть», например «Первый символ должен быть заглавным», тогда один класс правильный и один неправильный.
- Если есть основание считать, что элементы внутри одного класса эквивалентности могут программой трактоваться по-разному, необходимо разбить данный класс на подклассы. На этом шаге тестирующий на основе таблицы должен составить тесты, покрывающие собой все правильные и неправильные классы эквивалентности. При этом составитель должен минимизировать общее число тестов.
Определение тестов:
- Каждому классу эквивалентности присваивается уникальный номер.
- Если ещё остались не включённые в тесты правильные классы, то пишутся тесты, которые покрывают максимально возможное количество классов.
- Если остались не включённые в тесты неправильные классы, то пишут тесты, которые покрывают только один класс.
Анализ граничных значений
Граничные условия — это ситуации, возникающие на высших и нижних границах входных классов эквивалентности.
Анализ граничных значений отличается от эквивалентного разбиения следующим:
- Выбор любого элемента в классе эквивалентности в качестве представительного осуществляется таким образом, чтобы проверить тестом каждую границу этого класса.
- При разработке тестов рассматриваются не только входные значения (пространство входов), но и выходные (пространство выходов).
Метод требует определённой степени творчества и специализации в рассматриваемой задаче.
Существует несколько правил:
- Построить тесты с неправильными входными данными для ситуации незначительного выхода за границы области значений. Если входные значения должны быть в интервале [-1.0 .. +1.0], проверяем −1.0, 1.0, −1.000001, 1.000001.
- Обязательно писать тесты для минимальной и максимальной границы диапазона.
- Использовать первые два правила для каждого из входных значений (использовать пункт 2 для всех выходных значений).
- Если вход и выход программы представляет упорядоченное множество, сосредоточить внимание на первом и последнем элементах списка.
Анализ граничных значений, если он применён правильно, позволяет обнаружить большое число ошибок. Однако определение этих границ для каждой задачи может являться отдельной трудной задачей. Также этот метод не проверяет комбинации входных значений.
Анализ причинно-следственных связей
Этапы построения теста:
- Спецификация разбивается на рабочие участки.
- В спецификации определяются множество причин и следствий. Под причиной понимается отдельное входное условие или класс эквивалентности. Следствие представляет собой выходное условие или преобразование системы. Здесь каждой причине и следствию присваивается номер.
- На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются всевозможные комбинации причин и определяются следствия для каждой комбинации причин.
Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации, которые невозможны. Недостатком этого подхода является плохое исследование граничных условий.
Предположение об ошибке
Тестировщик с большим опытом выискивает ошибки без всяких методов, но при этом он подсознательно использует метод предположения об ошибке. Данный метод в значительной степени основан на интуиции. Основная идея метода состоит в том, чтобы составить список, который перечисляет возможные ошибки и ситуации, в которых эти ошибки могли проявиться. Потом на основе списка составляются тесты.
Примечания
Литература
- Росс Эшби У. Глава 6. Чёрный ящик // Введение в кибернетику = An Introduction to Cybernetics. — Издательство иностранной литературы, 1959. — С. 127-169. — 432 с.
- Бейзер Б. Тестирование чёрного ящика. Технологии функционального тестирования программного обеспечения и систем. — Питер, 2004. — 320 с. — ISBN 5-94723-698-2.
Тестирование по стратегии черного ящика
Понятие «чёрного» ящика
Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Понятие «чёрный ящик» предложено У.Р. Эшби. В кибернетике оно позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в тоже время абстрагироваться от их внутреннего устройства. На рис. 1 приведено схемное построение входов X(x1,x2,…,xn), выходов Y(y1,y2,…,ym), характеризуемых функцией перехода (δ) и функцией выхода (λ) «чёрного» ящика.
Манипулируя только лишь со входами и выходами, можно проводить определенные исследования. На практике всегда возникает вопрос, насколько гомоморфизм «чёрного» ящика отражает адекватность его изучаемой модели, то есть как полно в модели отражаются основные свойства оригинала.
Описание любой системы управления во времени характеризуется картиной последовательности её состояний в процессе движения к стоящей перед нею цели. Преобразование в системе управления может быть либо взаимнооднозначным и тогда оно называется изоморфным, либо только однозначным, в одну сторону. В таком случае преобразование называют гомоморфным.
«Чёрный» ящик представляет собой сложную гомоморфную модель кибернетической системы, в которой соблюдается разнообразие. Он только тогда является удовлетворительной моделью системы, когда содержит такое количество информации, которое отражает разнообразие системы. Можно предположить, что чем большее число возмущений действует на входы модели системы, тем большее разнообразие должен иметь регулятор.
В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте. В таком случае в явной или неявной форме высказывается гипотеза о предсказуемости поведения «чёрного» ящика в вероятностном смысле. Без предварительной гипотезы невозможно любое обобщение, или, как говорят, невозможно сделать индуктивное заключение на основе экспериментов с «чёрным» ящиком. Для обозначения модели «чёрного» ящика Н. Винером [2] предложено понятие «белого» ящика. «Белый» ящик состоит из известных компонентов, то есть известных X, Y, δ, λ. Его содержимое специально подбирается для реализации той же зависимости выхода от входа, что и у соответствующего «чёрного» ящика. В процессе проводимых исследований и при обобщениях, выдвижении гипотез и установления закономерностей возникает необходимость корректировки организации «белого» ящика и смены моделей. В связи с этим, при моделировании исследователь должен обязательно многократно обращаться к схеме отношений «чёрный» – «белый» ящик.
Исследование поведения «черного» ящика
Рассмотрим, как изучается и исследуется поведение «черного» ящика второго вида. Предположим, что дана некоторая система управления, внутреннее строение которой неизвестно. Система управления имеет входы X(x1,x2,x3,…,xn) и выходы Y(y1,y2,y3,…,ym).
Способ исследования поведения данного «черного» ящика заключается в проведении эксперимента, результаты которого можно представить в виде табл. 1.
Такой способ исследования «черного» ящика называется протокольным. Значения входных величин в моменты времени t1,t2,…,tk) могут выбираться произвольно.
Таблица 1
Состояние входов | Состояние выходов | Время |
---|---|---|
x1(t1),x2(t1),…,xn(t1) | y1(t1),y2(t1),…,xn(t1) | t1 |
y1(t2),y2(t2),…,xn(t2) | y1(t2),y2(t2),…,yn(t2) | t2 |
………… | ………… | …. |
………… | ………… | …. |
y1(tk),y2(tk),…,xn(tk) | y1(tk),y2(tk),…,yn(tk) | tk |
Другой способ исследования заключается в подаче на входы некоторых стандартных последовательностей. Этот способ особенно привлекателен, потому что позволяет сравнивать поведение нескольких «черных» ящиков с условием выбора таких, которые будут соответствовать предъявляемым требованиям.
Исследование систем управления связано с понятиями «вероятностный автомат», «вероятностная система», что требует изучения их вероятностных свойств. Для этих целей можно построить матрицу вероятностей (табл. 2), в которой для каждого входа xi и каждого выхода yi указывается условная вероятность pi, что yi возникает в ответ на xi [7], приведенной в табл. 2.
Разработка методов построения математических моделей «черного» ящика является одной из важных кибернетических проблем. При условии наличия математической модели «черного» ящика появляется возможность отнести его к какому-либо одному классу, все системы которого изоморфны по поведению.
Создание математического описания «черного» ящика является своего рода искусством. В некоторых случаях удается сформировать алгоритм, в соответствии с которым «черный» ящик реагирует на произвольный входной сигнал. Для большинства же случаев делаются попытки установить дифференциальные уравнения, которые связывают реакцию «черного» ящика с его входами или, как говорят, с его входными стимулами.
Для науки метод «черный» ящик имеет весьма большое значение. С его помощью в науке были сделаны очень многие выдающиеся открытия. Например, ученый Гарвей еще в XVII веке предугадал строение сердца. Он моделировал работу сердца насосом, позаимствовав идеи из совершенно другой области современных ему знаний – гидравлики. Практическая ценность метода «черный» ящик заключается во-первых, в возможности исследования очень сложных динамических систем, и, во-вторых, в возможности замены одного «ящика» другим. Окружающая действительность и биология дают массу примеров выявления строения систем методом «черного» ящика.
Тестирование по стратегии черного ящика
В этой стратегии программа рассматривается как чёрный ящик. Целью тестирования ставится выяснение обстоятельств, в которых поведение программы не соответствует спецификации. Для обнаружения всех ошибок в программе необходимо выполнить исчерпывающее тестирование, то есть тестирование на всевозможных наборах данных. Для большинства программ такое невозможно, поэтому применяют разумное тестирование, при котором тестирование программы ограничивается небольшим подмножеством всевозможных наборов данных. При этом необходимо выбирать наиболее подходящие подмножества, подмножества с наивысшей вероятностью обнаружения ошибок.
Свойства правильно выбранного теста:
- Уменьшает более, чем на одно число других тестов, которые должны быть разработаны для разумного тестирования.
- Покрывает значительную часть других возможных тестов, что в некоторой степени свидетельствует о наличии или отсутствии ошибки до и после ограниченного множества тестов.
Стратегия чёрного ящика включает в себя следующие методы:
- Эквивалентное разбиение.
- Анализ граничных значений.
- Анализ причинно-следственных связей.
- Предположение об ошибке.
Рассмотрим подробнее каждый из этих методов:
Эквивалентное разбиение
Основу метода составляют два положения:
- Исходные данные необходимо разбить на конечное число классов эквивалентности. В одном классе эквивалентности содержатся такие тесты, что, если один тест из класса эквивалентности обнаруживает некоторую ошибку, то и любой другой тест из этого класса эквивалентности должен обнаруживать эту же ошибку.
- Каждый тест должен включать, по возможности, максимальное количество классов эквивалентности, чтобы минимизировать общее число тестов.
Разработка тестов этим методом осуществляется в два этапа: выделение классов эквивалентности и построение теста.
Классы эквивалентности выделяются путём выбора каждого входного условия, которые берутся с помощью технического задания или спецификации и разбиваются на две и более группы. Для этого используется следующая таблица:
Входное условие | Правильные классы эквивалентности | Неправильные классы эквивалентности |
‘ | ‘ | ‘ |
Выделение классов эквивалентности является эвристическим способом, однако существует ряд правил:
- Если входное условие описывает область значений, например «Целое число принимает значение от 0 до 999», то существует один правильный класс эквивалентности и два неправильных.
- Если входное условие описывает число значений, например «Число строк во входном файле лежит в интервале (1..6)», то также существует один правильный класс и два неправильных.
- Если входное условие описывает множество входных значений, то определяется количество правильных классов, равное количеству элементов в множестве входных значений. Если входное условие описывает ситуацию «должно быть», например «Первый символ должен быть заглавным», тогда один класс правильный и один неправильный.
- Если есть основание считать, что элементы внутри одного класса эквивалентности могут программой трактоваться по-разному, необходимо разбить данный класс на подклассы. На этом шаге тестирующий на основе таблицы должен составить тесты, покрывающие собой все правильные и неправильные классы эквивалентности. При этом составитель должен минимизировать общее число тестов.
Определение тестов:
- Каждому классу эквивалентности присваивается уникальный номер.
- Если еще остались не включенные в тесты правильные классы, то пишутся тесты, которые покрывают максимально возможное количество классов.
- Если остались не включенные в тесты неправильные классы, то пишут тесты, которые покрывают только один класс.
Анализ граничных значений
Граничные условия – это ситуации, возникающии на высших и нижних границах входных классов эквивалентности.
Анализ граничных значений отличается от эквивалентного разбиения следующим:
- Выбор любого элемента в классе эквивалентности в качестве представительного осуществляется таким образом, чтобы проверить тестом каждую границу этого класса.
- При разработке тестов рассматриваются не только входные значения (пространство входов), но и выходные (пространство выходов).
Метод требует определённой степени творчества и специализации в рассматриваемой задаче.
Cуществует несколько правил:
- Построить тесты с неправильными входными данными для ситуации незначительного выхода за границы области значений. Если входные значения должны быть в интервале [-1.0 .. +1.0], проверяем -1.0, 1.0, -1.000001, 1.000001.
- Обязательно писать тесты для минимальной и максимальной границы диапазона.
- Использовать первые два правила для каждого из входных значений (использовать пункт 2 для всех выходных значений).
- Если вход и выход программы представляет упорядоченное множество, сосредоточить внимание на первом и последнем элементах списка.
Анализ граничных значений, если он применён правильно, позволяет обнаружить большое число ошибок. Однако определение этих границ для каждой задачи может являться отдельной трудной задачей. Также этот метод не проверяет комбинации входных значений.
Анализ причинно-следственных связей
Этапы построения теста:
- Спецификация разбивается на рабочие участки.
- В спецификации определяются множество причин и следствий. Под причиной понимается отдельное входное условие или класс эквивалентности. Следствие представляет собой выходное условие или преобразование системы. Здесь каждой причине и следствию присваивается номер.
- На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются всевозможные комбинации причин и определяются следствия для каждой комбинации причин.
Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации, которые невозможны. Недостатком этого подхода является плохое исследование граничных условий.
Предположение об ошибке
Программист с большим опытом выискивает ошибки без всяких методов, но при этом он подсознательно использует метод предположения об ошибке. Данный метод в значительной степени основан на интуиции. Основная идея метода состоит в том, чтобы составить список, который перечисляет возможные ошибки и ситуации, в которых эти ошибки могли проявиться. Потом на основе списка составляются тесты.
Wikimedia Foundation.
2010.
Тестирование белого ящика и черного ящика
В зависимости от доступа разработчика тестов к исходному коду тестируемой программы различают «тестирование (по стратегии) белого ящика» и «тестирование (по стратегии) чёрного ящика».
При тестировании белого ящика (также говорят — прозрачного ящика), разработчик теста имеет доступ к исходному коду программ и может писать код, который связан с библиотеками тестируемого программного обеспечения. Это типично для модульного тестирования, при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции — работоспособны и устойчивы, до определённой степени. При тестировании белого ящика используются метрики покрытия
кода или мутационное тестирование.При тестировании чёрного ящика, тестировщик имеет доступ к программе только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования. Например, тестирующий модуль может виртуально нажимать клавиши или кнопки мыши в тестируемой программе с помощью механизма взаимодействия процессов, с уверенностью в том, все ли идёт правильно, что эти события вызывают тот же отклик, что и реальные нажатия клавиш и кнопок мыши.
Как правило, тестирование чёрного ящика ведётся с использованием спецификаций или иных документов, описывающих требования к системе. Обычно в данном виде тестирования критерий покрытия складывается из покрытия структуры входных данных, покрытия требований и покрытия модели (в тестировании на основе моделей).
При тестировании серого ящика разработчик теста имеет доступ к исходному коду, но при непосредственном выполнении тестов доступ к коду, как правило, не требуется.
Если «альфа-» и «бета-тестирование» относятся к стадиям до выпуска продукта (а также, неявно, к объёму тестирующего сообщества и ограничениям на методы тестирования), тестирование «белого ящика» и «чёрного ящика» имеет отношение к способам, которыми тестировщик достигает цели.
Бета-тестирование в целом ограничено техникой чёрного ящика (хотя постоянная часть тестировщиков обычно продолжает тестирование белого ящика параллельно бета-тестированию). Таким образом, термин «бета-тестирование» может указывать на состояние программы (ближе к выпуску чем «альфа»), или может указывать на некоторую группу тестировщиков и процесс, выполняемый этой группой. То есть, тестировщик может продолжать работу по тестированию белого ящика, хотя программа уже «бета-стадии», но в этом случае он не является частью «бета-тестирования».
Тестирование чёрного ящика или поведенческое тестирование
Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций.
Тестирование по стратегии белого ящика
Тестирование по стратегии белого ящика — тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.Тестирование по стратегии белого ящика, также называемое техникой тестирования, управляемой логикой программы, позволяет проверить
внутреннюю структуру программы. Исходя из этой стратегии тестировщик получает тестовые данные путем анализа логики работы программы.
Техника Белого ящика включает в себя следующие методы тестирования:
1. покрытие решений
2. покрытие условий
3. покрытие решений и условий
4. комбинаторное покрытие условий
Тестирование по стратегии чёрного ящика
Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций[1].
Понятие «чёрного» ящика
Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Понятие «чёрный ящик» предложено У. Р. Эшби. В кибернетике оно позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в то же время абстрагироваться от их внутреннего устройства.
Манипулируя только лишь со входами и выходами, можно проводить определённые исследования. На практике всегда возникает вопрос, насколько гомоморфизм «чёрного» ящика отражает адекватность его изучаемой модели, то есть как полно в модели отражаются основные свойства оригинала.
Описание любой системы управления во времени характеризуется картиной последовательности её состояний в процессе движения к стоящей перед нею цели. Преобразование в системе управления может быть либо взаимно-однозначным и тогда оно называется изоморфным, либо только однозначным, в одну сторону. В таком случае преобразование называют гомоморфным.
«Чёрный» ящик представляет собой сложную гомоморфную модель кибернетической системы, в которой соблюдается разнообразие. Он только тогда является удовлетворительной моделью системы, когда содержит такое количество информации, которое отражает разнообразие системы. Можно предположить, что чем большее число возмущений действует на входы модели системы, тем большее разнообразие должен иметь регулятор.
В настоящее время известны два вида «чёрных» ящиков. К первому виду относят любой «чёрный» ящик, который может рассматриваться как автомат, называемый конечным или бесконечным. Поведение таких «чёрных» ящиков известно. Ко второму виду относятся такие «чёрные» ящики, поведение которых может быть наблюдаемо только в эксперименте. В таком случае в явной или неявной форме высказывается гипотеза о предсказуемости поведения «чёрного» ящика в вероятностном смысле. Без предварительной гипотезы невозможно любое обобщение, или, как говорят, невозможно сделать индуктивное заключение на основе экспериментов с «чёрным» ящиком.
Для обозначения модели «чёрного» ящика Н. Винером предложено понятие «белого» ящика. «Белый» ящик состоит из известных компонентов, то есть известных X, Y, δ, λ. Его содержимое специально подбирается для реализации той же зависимости выхода от входа, что и у соответствующего «чёрного» ящика. В процессе проводимых исследований и при обобщениях, выдвижении гипотез и установления закономерностей возникает необходимость корректировки организации «белого» ящика и смены моделей. В связи с этим при моделировании исследователь должен обязательно многократно обращаться к схеме отношений «чёрный» — «белый» ящик.
Исследование поведения «чёрного» ящика
Рассмотрим, как изучается и исследуется поведение «чёрного» ящика второго вида. Предположим, что дана некоторая система управления, внутреннее строение которой неизвестно. Система управления имеет входы X(x1,x2,x3,…,xn){\displaystyle X(x_{1},x_{2},x_{3},…,x_{n})} и выходы Y(y1,y2,y3,…,ym){\displaystyle Y(y_{1},y_{2},y_{3},…,y_{m})}.
Способ исследования поведения данного «чёрного» ящика заключается в проведении эксперимента, результаты которого можно представить в виде табл. 1.
Такой способ исследования «чёрного» ящика называется протокольным. Значения входных величин в моменты времени (t1,t2,…,tk){\displaystyle (t_{1},t_{2},…,t_{k})} могут выбираться произвольно.
Таблица 1
Состояние входов | Состояние выходов | Время |
---|---|---|
x1(t1),x2(t1),…,xn(t1){\displaystyle x_{1}(t_{1}),x_{2}(t_{1}),…,x_{n}(t_{1})} | y1(t1),y2(t1),…,ym(t1){\displaystyle y_{1}(t_{1}),y_{2}(t_{1}),…,y_{m}(t_{1})} | t1{\displaystyle t_{1}} |
x1(t2),x2(t2),…,xn(t2){\displaystyle x_{1}(t_{2}),x_{2}(t_{2}),…,x_{n}(t_{2})} | y1(t2),y2(t2),…,ym(t2){\displaystyle y_{1}(t_{2}),y_{2}(t_{2}),…,y_{m}(t_{2})} | t2{\displaystyle t_{2}} |
………… | ………… | …. |
………… | ………… | …. |
x1(tk),x2(tk),…,xn(tk){\displaystyle x_{1}(t_{k}),x_{2}(t_{k}),…,x_{n}(t_{k})} | y1(tk),y2(tk),…,ym(tk){\displaystyle y_{1}(t_{k}),y_{2}(t_{k}),…,y_{m}(t_{k})} | tk{\displaystyle t_{k}} |
Другой способ исследования заключается в подаче на входы некоторых стандартных последовательностей. Этот способ особенно привлекателен, потому что позволяет сравнивать поведение нескольких «чёрных» ящиков с условием выбора таких, которые будут соответствовать предъявляемым требованиям.
Исследование систем управления связано с понятиями «вероятностный автомат», «вероятностная система», что требует изучения их вероятностных свойств. Для этих целей можно построить матрицу вероятностей (табл. 2), в которой для каждого входа xi{\displaystyle x_{i}} и каждого выхода yi{\displaystyle y_{i}} указывается условная вероятность pi{\displaystyle p_{i}}, что yi{\displaystyle y_{i}} возникает в ответ на xi{\displaystyle x_{i}} [7], приведённой в табл. 2.
Разработка методов построения математических моделей «чёрного» ящика является одной из важных кибернетических проблем. При условии наличия математической модели «чёрного» ящика появляется возможность отнести его к какому-либо одному классу, все системы которого изоморфны по поведению.
Создание математического описания «чёрного» ящика является своего рода искусством. В некоторых случаях удаётся сформировать алгоритм, в соответствии с которым «чёрный» ящик реагирует на произвольный входной сигнал. Для большинства же случаев делаются попытки установить дифференциальные уравнения, которые связывают реакцию «чёрного» ящика с его входами или, как говорят, с его входными стимулами.
Для науки метод «чёрный» ящик имеет весьма большое значение. С его помощью в науке были сделаны очень многие выдающиеся открытия. Например, учёный Гарвей ещё в XVII веке предугадал строение сердца. Он моделировал работу сердца насосом, позаимствовав идеи из совершенно другой области современных ему знаний — гидравлики. Практическая ценность метода «чёрный» ящик заключается во-первых, в возможности исследования очень сложных динамических систем, и, во-вторых, в возможности замены одного «ящика» другим. Окружающая действительность и биология дают массу примеров выявления строения систем методом «чёрного» ящика.
Принципы тестирования чёрного ящика
В этом методе программа рассматривается как чёрный ящик. Целью тестирования ставится выяснение обстоятельств, в которых поведение программы не соответствует спецификации. Для обнаружения всех ошибок в программе необходимо выполнить исчерпывающее тестирование, то есть тестирование на всевозможных наборах данных. Для большинства программ такое невозможно, поэтому применяют разумное тестирование, при котором тестирование программы ограничивается небольшим подмножеством всевозможных наборов данных. При этом необходимо выбирать наиболее подходящие подмножества, подмножества с наивысшей вероятностью обнаружения ошибок.
Свойства правильно выбранного теста
- Уменьшает более чем на одно число других тестов, которые должны быть разработаны для разумного тестирования.
- Покрывает значительную часть других возможных тестов, что в некоторой степени свидетельствует о наличии или отсутствии ошибки до и после ограниченного множества тестов.
Приёмы тестирования чёрного ящика
- Эквивалентное разбиение.
- Анализ граничных значений.
- Анализ причинно-следственных связей.
- Предположение об ошибке.
Рассмотрим подробнее каждый из этих методов:
Эквивалентное разбиение
Основу метода составляют два положения:
- Исходные данные необходимо разбить на конечное число классов эквивалентности. В одном классе эквивалентности содержатся такие тесты, что если один тест из класса эквивалентности обнаруживает некоторую ошибку, то и любой другой тест из этого класса эквивалентности должен обнаруживать эту же ошибку.
- Каждый тест должен включать, по возможности, максимальное количество классов эквивалентности, чтобы минимизировать общее число тестов.
Разработка тестов этим методом осуществляется в два этапа: выделение классов эквивалентности и построение теста.
Классы эквивалентности выделяются путём выбора каждого входного условия, которые берутся с помощью технического задания или спецификации и разбиваются на две и более группы. Для этого используется следующая таблица:
Входное условие | Правильные классы эквивалентности | Неправильные классы эквивалентности |
‘ | ‘ | ‘ |
Выделение классов эквивалентности является эвристическим способом, однако существует ряд правил:
- Если входное условие описывает область значений, например «Целое число принимает значение от 0 до 999», то существует один правильный класс эквивалентности и два неправильных.
- Если входное условие описывает число значений, например «Число строк во входном файле лежит в интервале (1..6)», то также существует один правильный класс и два неправильных.
- Если входное условие описывает множество входных значений, то определяется количество правильных классов, равное количеству элементов в множестве входных значений. Если входное условие описывает ситуацию «должно быть», например «Первый символ должен быть заглавным», тогда один класс правильный и один неправильный.
- Если есть основание считать, что элементы внутри одного класса эквивалентности могут программой трактоваться по-разному, необходимо разбить данный класс на подклассы. На этом шаге тестирующий на основе таблицы должен составить тесты, покрывающие собой все правильные и неправильные классы эквивалентности. При этом составитель должен минимизировать общее число тестов.
Определение тестов:
- Каждому классу эквивалентности присваивается уникальный номер.
- Если ещё остались не включённые в тесты правильные классы, то пишутся тесты, которые покрывают максимально возможное количество классов.
- Если остались не включённые в тесты неправильные классы, то пишут тесты, которые покрывают только один класс.
Анализ граничных значений
Граничные условия — это ситуации, возникающие на высших и нижних границах входных классов эквивалентности.
Анализ граничных значений отличается от эквивалентного разбиения следующим:
- Выбор любого элемента в классе эквивалентности в качестве представительного осуществляется таким образом, чтобы проверить тестом каждую границу этого класса.
- При разработке тестов рассматриваются не только входные значения (пространство входов), но и выходные (пространство выходов).
Метод требует определённой степени творчества и специализации в рассматриваемой задаче.
Существует несколько правил:
- Построить тесты с неправильными входными данными для ситуации незначительного выхода за границы области значений. Если входные значения должны быть в интервале [-1.0 .. +1.0], проверяем −1.0, 1.0, −1.000001, 1.000001.
- Обязательно писать тесты для минимальной и максимальной границы диапазона.
- Использовать первые два правила для каждого из входных значений (использовать пункт 2 для всех выходных значений).
- Если вход и выход программы представляет упорядоченное множество, сосредоточить внимание на первом и последнем элементах списка.
Анализ граничных значений, если он применён правильно, позволяет обнаружить большое число ошибок. Однако определение этих границ для каждой задачи может являться отдельной трудной задачей. Также этот метод не проверяет комбинации входных значений.
Анализ причинно-следственных связей
Этапы построения теста:
- Спецификация разбивается на рабочие участки.
- В спецификации определяются множество причин и следствий. Под причиной понимается отдельное входное условие или класс эквивалентности. Следствие представляет собой выходное условие или преобразование системы. Здесь каждой причине и следствию присваивается номер.
- На основе анализа семантического (смыслового) содержания спецификации строится таблица истинности, в которой последовательно перебираются всевозможные комбинации причин и определяются следствия для каждой комбинации причин.
Таблица снабжается примечаниями, задающими ограничения и описывающими комбинации, которые невозможны. Недостатком этого подхода является плохое исследование граничных условий.
Предположение об ошибке
Тестировщик с большим опытом выискивает ошибки без всяких методов, но при этом он подсознательно использует метод предположения об ошибке. Данный метод в значительной степени основан на интуиции. Основная идея метода состоит в том, чтобы составить список, который перечисляет возможные ошибки и ситуации, в которых эти ошибки могли проявиться. Потом на основе списка составляются тесты.
Примечания
Литература
- Росс Эшби У. Глава 6. Чёрный ящик // Введение в кибернетику = An Introduction to Cybernetics. — Издательство иностранной литературы, 1959. — С. 127-169. — 432 с.
- Бейзер Б. Тестирование чёрного ящика. Технологии функционального тестирования программного обеспечения и систем. — Питер, 2004. — 320 с. — ISBN 5-94723-698-2.
«Чёрный ящик» и короткий цикл тестирования / Блог компании YADRO / Хабр
Всем привет, меня зовут Александр, и я занимаюсь QA (обеспечением контроля качества) разрабатываемой нами продукции. Наши контрагенты-фабы в юго-восточной Азии, особенно китайцы — ребята резкие, шустрые, и готовы сделать много, быстро, но вот с качеством выходит не всегда. Как мы с этим боремся, попутно экономя деньги компании — написано под катом.
Печать и компоновку наших печатных плат далеко не всегда реалистично или целесообразно делать в нашей стране, поэтому часто производство выполняется там, где это проще, дешевле и быстрее, то есть в Китае и на Тайване. А когда речь заходит о больших партиях и массовом производстве, то выбор площадки производства становится всё более очевидным. Однако что для нас большая партия, для китайцев не такая уж и большая, поэтому и внимания в плане качества и его обеспечения уделяется меньше. Под каждого небольшого по их меркам заказчика методики тестирования и тестовые стенды разрабатывать китайским коллегам не хочется.
Сразу пример из личного опыта: на некоторой фабрике для одной из компаний, где я работал, выпустили полсотни серверных материнских плат с одинаковыми прошитыми MAC-адресами сетевых интерфейсов, что привело к интересным эффектам при их работе в одной сети. А так как такой подставы от них никто не ожидал — причина, по которой собранный из этих плат кластер отказывается работать, была обнаружена не сразу, и исследование причин неисправности заняло значительное время.
Конечно, можно предъявить претензию и отправить обратно на фабрику все «плохие» платы, но во-первых это долго, а во-вторых дорого, и не гарантирует того, что новые присланные платы не будут иметь какого-то другого недостатка. Всех этих проблем можно было бы избежать, если бы уникальность MAC-адресов в том случае кто-то проверил до того, как эти платы попали к заказчику.
Ещё часто бывает, что MAC-адреса просто не прошиты, либо же какие-либо микросхемы на плате непропаяны или повреждены, и даже иногда просто забывают что-то установить. По моей практике у китайцев особое отношение к версиям прошивок, которыми они снабжают платы на фабрике. В зависимости от настроения на производстве, количество различных версий прошивок одного и того же устройства может доходить до 3–4, и конечно же, не все из них релизные и рабочие.
Прекратите это безобразие!
Вопрос обеспечения качества серийной продукции можно решить, отправив кого-то из сотрудников в командировку на фабрику. Но это плохой вариант, учитывая что фабрика может быть не одна (в нашем случае как раз их пять), а наладка производства может занять немалое время. Обучать своим разработанным методикам контроля качества китайцев тоже не вариант, потому как у них и свои внутрифабричные есть, которые, однако, нас чаще всего не устраивают.
Наше решение для обеспечения контроля качества серийной продукции — «чёрный ящик». Устройство, которое максимально неинтерактивно в процессе теста, занимает мало места и требует минимум манипуляций со стороны персонала на производстве. Грубо говоря, коробочку подключают к тестируемой плате, затем через какое-то время загорается зелёная или красная лампочка. Зелёная — всё ок, плату можно упаковывать и отправлять, она исправна. Красная — не ок, с платой есть проблемы, их нужно устранить и затем протестировать ещё раз, и так далее до победного.
Конечно же, мы достаточно оцениваем изобретательность наших китайских коллег, поэтому предусмотрели несколько ступеней защиты от подтасовки результатов, получить 146% процентов успешных тестов не выйдет. Для этого каждая процедура тестирования логируется, логи хранятся в «чёрном ящике» в зашифрованном виде и присылаются к нам. Например, если плата не проходила тестирование с помощью «чёрного ящика» на фабрике, то мы об этом узнаем, посмотрев логи и записи в базе данных. Нет записи — плата не тестировалась, значит не должна была быть отправлена к нам. От ручной «генерации» логов и результатов тестов также есть защита. Описывать её мы, конечно же, не будем.
Что в чёрном ящике?
Сам «чёрный ящик» — это компактный компьютер типа Intel NUC или Gigabyte BRIX, подключаемый к сети через Wi-Fi или Ethernet, а также через USB-переходники к тестируемой плате. К компьютеру может быть подключен монитор, на котором отображается ход тестирования, и в случае ошибок — сами ошибки. Вообще подумываем перейти на использование формата Mini-ITX, чтобы можно было шире варьировать конфигурацию.
На диске компьютера содержится образ на основе Linux с набором тестовых утилит, необходимых для проведения тестирования конкретного типа плат. Для каждого типа готовится свой образ и набор тестовых скриптов. Если говорить конкретно про серверные материнские платы, то помимо образа тестового сервера на компьютере содержится ещё и образ тестового PXE-клиента.
Материнская плата загружает тестовый образ по PXE. Она подключается по Ethernet к «чёрному ящику» и её BMC получает IP адрес по DHCP. Процесс включения питания материнской платы инициируется через BMC, загружается тестовый образ, выполняются тесты. На экране монитора, подключенного к «чёрному ящику», отображаются результаты теста, затем питание платы автоматически отключается через BMC. После этого работник производства может отключать от тестового стенда плату и тестировать следующую. Так происходит до тех пор, пока нужное количество плат не будет протестировано.
Наш «чёрный ящик» подключен по Ethernet не только к тестируемой плате, но и в интернет: периодически «стучится» на наш сервер и присылает логи тестов, сделанных, например, за день. Таким образом мы видим, сколько плат было протестировано, как много брака, и можем примерно спрогнозировать, когда же мы получим долгожданную партию тех или иных плат.
Что и как проверяется?
Немного про сами тесты. Так как время для тестирования ограничено и производство не наше, то на тесты отводится небольшое время — около 5 минут на плату. Если говорить про тестирование материнских плат, то за это время наше тестовое ПО успевает загрузить на плате операционную систему, проверить уникальность MAC-адресов и других уникальных ID, версии прошивок микроконтроллеров и BMC, значения и работу сенсоров, работу всех слотов расширения, процессорных сокетов, видны ли операционной системе все процессоры и модули памяти и т.д.
Также запускается короткий цикл нагрузочных тестов для того чтобы «прогреть» плату и оценить по производительности возможные проблемы её сборки. То есть эти тесты — своеобразный smoke test, чтобы быстро увидеть какие-то явные проблемы. Для простоты поддержки и разработки тестов они в своём большинстве делаются на bash и под Linux.
Результаты тестов для сотрудника фабрики на экране монитора выглядят примерно следующим образом (варьируется от типа тестируемой платы):
PASSED 34 of 36 tests
FAILED: CPU2 temp; BMC version
Это пример для случая тестов с ошибками. Расшифровка ошибок и их описание обычно составляется отдельным файлом, либо распечатывается на бумажке — чтобы сотрудник на фабрике мог понять, что конкретно «не понравилось» тесту.
Сам список тестов и предполагаемые значения результатов тестов содержатся в отдельном конфигурационном файле. В нём прописаны, например, минимальные и максимальные значения температур датчиков какой-либо платы, количество устройств, которые должны быть видны на шине PCI или, например, USB. В ходе теста полученные значения сравниваются с указанными в конфигурационном файле. В зависимости от того, «попадают» ли полученные значения в ходе тестирования в конфигурационный файл или нет, тест считается успешно или неуспешно пройденным.
Для того, чтобы можно было идентифицировать протестированную плату, каждая плата подписывается уникальным ID, а при тесте ID считывается и записывается в базу данных. Плата которая ранее не тестировалась, этого ID не имеет, поэтому для новой платы генерируется новый и записывается. Для разных плат ID пишется в разные места в зависимости от того, какие чипы с энергонезависимой памятью есть на плате. То есть расположение ID зависит от архитектуры конкретной платы.
Использование «чёрного ящика» решило для нас сразу несколько задач:
- удалённый контроль за ходом тестирования плат,
- контроль объективности оценки результатов и их аутентичности,
- обеспечение проверки каждой платы, выходящей с производства, до отправки нам,
- и уменьшение частоты взаимодействия с производством в случае каких-либо неполадок или ошибок.
Все описанные выше процедуры тестирования выполняют специалисты QC (quality control) на контрагентных фабах. Эти быстрые проверки отфильтровывают наиболее распространённые проблемы. Платы, которые прошли базовый фильтр, попадают к нам — мы их проверяем более детально. После этого есть ещё один этап проверки, уже в составе конечного продукта.
QA и QC
На всякий случай скажу немного про отличие QA и QC. Казалось бы, те и другие занимаются тестированием, но есть существенные отличия. Одной из задач QA является разработка и поддержка процедур контроля качества — именно таким образом и обеспечивается качество серийной продукции, выпускаемой фабами. Для того, чтобы это было возможно, QA должен достаточно хорошо представлять, что именно он тестирует, какие результаты необходимо получить, и какие критерии оценки качества закладываются в тестовые процедуры.
Специалист QC как правило не знает, да и не обязан знать, как именно работает та или иная плата. Его задача следовать инструкции, и грубо говоря, следить за цветом лампочки на выданном ему стенде тестирования. QC нет разницы что проверять — сложные аппаратные комплексы или яркость свечения светодиодов. Он следует инструкции, и в соответствии с ней получает результат о прохождении или провале проверки качества.
После проверки силами QC всей партии и получения заказчиком, то есть нами, в дело снова вступает QA, о чём красочно написал asmolenskiy в одной из предыдущих наших статей. При этом отдельные образцы полученной партии тестируются снова, как по отдельности, так и в комплексе с другими платами и устройствами. А вот уже по результатам проверок QA может возникнуть новая ревизия одной или нескольких плат, и всё начинается снова.
Тестирование черного ящика — Информатика, информационные технологии
Основная идея в тестировании системы как черного ящика состоит в том, что все материалы, которые доступны тестировщику, – требования на систему, описывающие ее поведение, и сама система, работать с которой он может, только подавая на ее входы некоторые внешние воздействия и наблюдая на выходах некоторый результат. Все внутренние особенности реализации системы скрыты от тестировщика, – таким образом, система представляет собой черный ящик, правильность поведения которого по отношению к требованиям и предстоит проверить.
С точки зрения программного кода черный ящик может представлять с собой набор классов (или модулей) с известными внешними интерфейсами, но недоступными исходными текстами.
Основная задача тестировщика для данного метода тестирования состоит в последовательной проверке соответствия поведения системы требованиям. Кроме того, тестировщик должен проверить работу системы в критических ситуациях – что происходит в случае подачи неверных входных значений. В идеальной ситуации все варианты критических ситуаций должны быть описаны в требованиях на систему и тестировщику остается только придумывать конкретные проверки этих требований. Однако в реальности в результате тестирования обычно выявляется два типа проблем системы.
- Несоответствие поведения системы требованиям
- Неадекватное поведение системы в ситуациях, не предусмотренных требованиями.
<p>Отчеты об обоих типах проблем документируются и передаются разработчикам. При этом проблемы первого типа обычно вызывают изменение программного кода, гораздо реже – изменение требований. Изменение требований в данном случае может потребоваться из-за их противоречивости (несколько разных требований описывают разные модели поведения системы в одной и той же самой ситуации) или некорректности (требования не соответствуют действительности).
Проблемы второго типа однозначно требуют изменения требований ввиду их неполноты – в требованиях явно пропущена ситуация, приводящая к неадекватному поведению системы. При этом под неадекватным поведением может пониматься как полный крах системы, так и вообще любое поведение, не описанное в требованиях.
Особенности тестирования «серого ящика» — Лаборатория Качества
Каждый начинающий тестировщик слышал о методах тестирования black-box, white-box и gray-box (методы трех «ящиков»). В сети можно найти много информации о «черном» и «белом ящиках», но статьи о методе «серого ящика» встречаются редко. Такая ситуация кажется мне не совсем справедливой, ведь многие из нас используют в работе именно эту стратегию. Я попытаюсь немного исправить сложившееся положение, подробно рассмотрев плюсы и минусы «серого ящика» по сравнению с двумя другими методами и выяснив, в каких случаях его применение будет наиболее эффективным. Тестирование «серого ящика» сочетает в себе элементы black-box и white-box тестирования, а потому я начну свой рассказ с краткой характеристики каждого из методов.
Black-box
Проверка «черного ящика» – это метод тестирования программного обеспечения, при котором функциональность исследуется без рассмотрения кода, деталей реализации и знаний о внутреннем устройстве программного обеспечения (ПО). Тестировщики пишут тест-кейсы, опираясь только на требования и спецификацию программного обеспечения.
Достоинства метода:
- Позволяет быстро выявить ошибки в функциональных спецификациях.
- Тестировщику не нужна дополнительная квалификация.
- Тестирование проходит «с позиции» пользователя.
- Составлять тест-кейсы можно сразу после подготовки спецификации.
Метод имитирует поведение пользователя, у которого нет никаких знаний о внутреннем устройстве программы. Методом «черного ящика» проводятся следующие виды тестирования:
- функциональное;
- регрессионное;
- usability;
- smoke;
- GUI.
К сожалению, использование этого метода далеко не всегда является достаточным при тестировании, так как существует высокая вероятность пропуска ошибки. Рассмотрим пример из практики.
Мы занимались тестированием формы регистрации и оплаты для VPN-провайдера. При регистрации клиенту предлагался на выбор набор тарифных планов и дополнительных услуг. После выбора и оплаты регистрация завершалась, и клиент попадал в свой личный кабинет. Мы проверили эту процедуру вдоль и поперек: все работало так, как нужно, ровно до того чудесного дня, когда было принято решение ввести новый промоплан для привлечения клиентов. Первая акция такого рода прошла весьма успешно: при регистрации по промоплану клиенту начислялся бонус на счет, и давался бесплатный доступ на 30 дней к одному дружественному сервису.
Вторая промо-акция отличалась тем, что клиенту при регистрации предлагался на выбор один из трех дружественных сервисов для бесплатного доступа. И тут что-то пошло не так: всем новым клиентам отправлялся доступ только к дружественному сервису из первой акции. Мы получили волну возмущения в саппорте и отток клиентов.
Ошибка заключалась в том, что первая промо-акция была учтена в базе под названием promo_1, а вторая – под promo_12, promo_13 и promo_14, но при этом в базу все записывалось под именем promo_1. Данные промо-акции не внесли в спецификацию, поэтому тест-кейсы не были составлены для новых акций. У тестировщиков не было доступа в базу и они не могли проверить правильность записи о тарифном плане.
White-box
У этого метода существует несколько названий («стеклянный ящик», «открытый ящик» и др.), но чаще всего его все-таки именуют методом «белого ящика». Проверка «белого ящика» – это метод тестирования программного обеспечения, который предполагает, что внутренняя структура, устройство и реализация системы известны тестировщику.
Тестирование в «белом ящике» включает в себя несколько типов тестирования, применяемых для оценки удобства использования приложения, блока кода или конкретного программного пакета:
- Unit-тестирование;
- интеграционное;
- системное;
- тестирование безопасности.
Как правило, таким видом тестирования на проектах занимаются сами программисты, ведь для использования этого метода тестировщик должен обладать достаточно высокой квалификацией.
Достоинства метода «белого ящика»:
- Оптимизация кода путем нахождения скрытых ошибок.
- Доступность структуры кода позволяет выбрать тип входных данных, необходимых для эффективного тестирования.
- Возможность автоматизирования тест-кейсов.
Степень сложности тестирования методом «белого ящика» зависит от сложности вашего приложения/сервиса и от количества функций, которые оно выполняет.
Вернемся к нашему примеру. На входе мы имеем название подписки, на выходе – информацию по ней. Обычно список подписок хранится в базе данных, подписки могут добавляться в произвольные моменты времени. Black-box тестирование просто не сможет обеспечить стопроцентное покрытие, ведь с точки зрения этого метода набор тестов устареет в момент добавления новой подписки в базу данных. В данном случае white-box тестирование имеет неоспоримое преимущество в виде прямого доступа к информации из базы данных. Наш набор тестов может загрузить список всех имеющихся подписок из базы данных и проверить, выдает ли контроллер в backend-е информацию о подписке для всех элементов списка.
Gray-box
Проверка «серого ящика» – это метод тестирования программного продукта или приложения с частичным знанием его внутреннего устройства. Для выполнения тестирования «серого ящика» нет необходимости в доступе тестировщика к исходному коду. Тесты пишутся на основе знания алгоритма, архитектуры, внутренних состояний или других высокоуровневых описаний поведения программы.
Виды тестирования «серого ящика»:
- Матричное тестирование.
- Регрессионное тестирование.
- Шаблонное тестирование (pattern).
- Тестирование с помощью ортогонального массива.
Достоинства метода:
- Тестирование серого ящика включает в себя плюсы тестирования «черного» и «белого». Другими словами, тестировщик смотрит на объект тестирования с позиции «черного» ящика, но при этом проводит анализ на основе тех данных, что он знает о системе.
- Тестировщик может проектировать и использовать более сложные сценарии тестирования.
- Тестировщик работает совместно с разработчиком, что позволяет на начальном этапе убрать избыточные тест-кейсы. Это сокращает время функционального и нефункционального тестирования и положительно влияет на общее качество продукта.
- Предоставляет разработчику достаточно времени для исправления дефектов.
Недостатки метода:
- Возможность анализа кода и тестового покрытия ограничена, так как доступ к исходному коду отсутствует.
- Тесты могут быть избыточными в том случае, когда разработчик также проверяет свой код Unit-тестами.
- Нельзя протестировать все возможные потоки ввода и вывода, поскольку на это требуется слишком много времени
В нашем примере у каждого клиента мог быть набор дополнительных функций (capabilities):
- «can_vpn» – клиент мог подключиться к VPN;
- «can_double_vpn» – клиент получал возможность подключиться к VPN, используя функцию DoubleVPN;
- «can_port_forward» – клиент имел дополнительный порт для входящих подключений на стороне сервера;
- «can_promo1» – клиент имел доступ к дружественному сервису.
Для удобства проверки разработчики предусмотрели возможность тестировщикам читать набор разрешенных функций из таблицы capabilities для каждого клиента. Тестировщики ставили тарифный план (подписку) и проверяли правильность изменения флагов в этой таблице. Без использования методики «серого ящика» проверка возможности для клиента совершить VPN-соединение в сочетании с дополнительными функциями потребовала бы гораздо больших затрат времени и труда.
Подведем итоги
Из представленной информации можно понять, что метод «серого ящика» помогает в следующих случаях:
- когда нет возможности использовать «белый ящик»;
- когда необходимо более полное покрытие по сравнению с «черным ящиком».
Используя этот метод, тестировщики получают доступ к проектной документации и могут подготовить и создать более точные и полные тест-кейсы и сценарии тестирования. Наибольшая эффективность применения «серого ящика» достигается при тестировании web-приложений, web-сервисов, безопасности, GUI, а также для функционального тестирования.
Модульное тестирование, тестирование черного ящика и тестирование белого ящика
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.
Ключевые различия между тестированием черного ящика и тестированием белого ящика
Тщательное исследование тестирования черного ящика по сравнению с тестированием белого ящика:
Тестирование программного обеспечения включает в себя несколько типов тестирования, и как тестировщик программного обеспечения мы должны знать, как проходит каждый из них. выполнено.
Среди различных типов тестирования одна из самых запутанных тем — это тестирование «черный ящик против белого ящика». Многие тестировщики программного обеспечения задаются вопросом, есть ли какое-нибудь сходство между этими двумя типами тестирования.Как они оба исполняются? Они оба исполняются вместе?
Этот документ ответит на все ваши вопросы и даст вам общее представление о том, что такое тестирование черного ящика и тестирование белого ящика, а также простыми словами объяснит различия между ними .
Что такое тестирование черного ящика?
Определение ISTQB — Тестирование черного ящика: Тестирование тестируемого приложения (AUT) без ссылки на внутреннюю структуру называется тестированием черного ящика.Тестирование будет проводиться путем визуализации приложения в виде черного ящика.
Метод тестирования черного ящика: Метод тестирования для получения тестовых примеров на основе функциональности приложения и без учета внутренней структуры системы.
Синонимы: Тестирование на основе спецификаций
Тестирование черного ящика — это подход к тестированию, который используется для проверки функциональности AUT на основе спецификаций / SRS без каких-либо знаний технологии, используемой для реализации тестируемого приложения .
При тестировании черного ящика основное тестирование будет касаться возможных входных и ожидаемых выходов. Тестировщик должен уметь тщательно выбирать действительные тестовые данные. Проще говоря, тестировщик может видеть только действия AUT. Тестировщику не нужно знать, как эти действия выполняются.
Пример: Простым примером тестирования черного ящика является телевизор (Television). Как пользователь, мы смотрим телевизор, но нам не нужны знания о том, как устроен телевизор, как он работает и т. Д. Нам просто нужно знать, как управлять пультом дистанционного управления, чтобы включать, выключать, переключать каналы и т. Д. увеличить / уменьшить громкость и т. д.
В этом примере
TV — это ваш AUT (Тестируемое приложение).
Пульт дистанционного управления — это пользовательский интерфейс (UI), который вы используете для тестирования.
Вам просто нужно знать, как пользоваться приложением.
Рекомендуем прочитать => Все, что вам нужно знать о тестировании черного ящика
Что такое тестирование белого ящика?
Определение ISTQB — Тестирование белого ящика: Тестирование приложения со ссылкой на внутреннюю структуру программного компонента называется тестированием белого ящика.
Методика тестирования белого ящика: Процедура получения и / или выбора тестовых случаев на основе анализа внутренней структуры компонента или системы.
Синонимы: Тестирование с прозрачным ящиком, Тестирование на основе кода, Тестирование в стеклянном ящике, Тестирование логического покрытия, Тестирование на основе логики, Структурное тестирование, Тестирование на основе структуры и т. Д.
Тестирование белого ящика — это тестовый подход, который используется для тестирования части реализации тестируемого приложения.Чтобы выполнить это тестирование, тестировщик / возможно разработчик должен знать внутреннюю структуру приложения и то, как оно работает.
Пример: Автомеханик должен знать внутреннюю структуру двигателя автомобиля, чтобы отремонтировать его.
В этом примере
CAR — это AUT (Тестируемое приложение).
Пользователь — это тестер черного ящика .
Mechanic — это тестер в белом ящике.
Это основные определения тестирования белого и черного ящиков, и для каждого метода тестирования используются разные техники.
Рекомендуется прочитать => Углубленное руководство по тестированию «белого ящика»
Разница между тестированием «черного ящика» и «белого ящика»
Заключение
Тестирование «белого ящика» и «черного ящика» необходимо для успешной доставки программного обеспечения, но на 100% ни в том, ни в другом случае тестирование невозможно.
Основная ответственность тестировщика состоит в том, чтобы определить соответствующие типы и методы тестирования для конкретного приложения, которые приведут к обнаружению максимального количества дефектов и, таким образом, к повышению эффективности приложения.
Тестировщик должен уметь определять, какой объем тестирования можно провести в черном или белом ящике, чтобы подтвердить, что приложение работает должным образом.
Мы надеемся, что это руководство прояснило все ваши вопросы по тестированию «черный ящик против белого» !!
.
java — тестирование Whitebox и Blackbox
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
- Авторизоваться
зарегистрироваться текущее сообщество
.