Тесты по принципу белого ящика для программы пример

Тема 2. Пакеты прикладных программ

Модель программы в виде «белого ящика» предполагает
знание исходного текста программы или спецификации
программы в виде потокового графа управления.
Структурная информация понятна и доступна
разработчикам подсистем и модулей приложения, поэтому
данный вид тестирования часто используется на этапах
модульного и интеграционного тестирования (Unit testing,
Integration testing).
Структурные критерии тестирования базируются на
основных элементах управляющего графа программы операторах, ветвях и путях.
Павловская Т.А. (СПбГУ ИТМО)
2

3. Управляющий граф программы

Управляющий граф программы (УГП) отображает поток
управления программы. Это граф G(V, A), где V(V1,… Vm) –
множеств вершин (операторов), A(A1,… An) – множество дуг

Управление качеством ПО. Лекция 3 часть 3. Метод белого ящика


(управлений), соединяющих вершины.
Путь – последовательность вершин и дуг УГП, в которой любая
дуга выходит из вершины Vi и приходит в вершину Vj
Ветвь – путь(V1, V2, … Vk), где V1 — либо первый, либо условный
оператор, Vk — либо условный оператор, либо оператор выхода из
программы, а все остальные операторы – безусловные.
Число путей в программе может быть не ограничено (пути,
различающиеся хотя бы числом прохождений цикла – разные).
Ветви — линейные участки программы, их конечноe число.
Существуют реализуемые и нереализуемые пути в программе, в
нереализуемые пути в обычных условиях попасть нельзя.
Павловская Т.А. (СПбГУ ИТМО)
3

4. Реализуемые и нереализуемые пути

float Calc(float x, float y) <
float H;
1
if (x*x+y*y+2 <=0)
2
H = 17;
3
else H = 64;
4
return H*H+x*x; >
Павловская Т.А. (СПбГУ ИТМО)
4

5. Пример

/* Функция вычисляет неотрицательную
степень n числа x */
1
double Power(double x, int n) 2
double z=1; int i;
3
for ( i = 1;
4
i 5
i++ )
< z = z*x; >/* Возврат в п.4 */
6
7
return z;
>
Управляющий граф
программы
примеры путей: (3,4,7), (3,4,5,6,4,5,6), (3,4), (3,4,5,6)
примеры ветвей: (3,4) (4,5,6,4) (4,7)
Павловская Т.А. (СПбГУ ИТМО)
5

6. Примеры необозримого множества входных значений

1.
Если программа P(x:int, y:int) реализована в машине
с 64-разрядными словами, то мощность множества тестов
||(X,Y)||=2**64 (для перебора при 1Ггц потребуется ~ 3K лет)
2.
Программа управления схватом робота, где интервал
между моментами срабатывания схвата не определен (пример
требует прогона бесконечного множества последовательностей входных значений).
Павловская Т.А. (СПбГУ ИТМО)

Черный, белый, серый ящик. Методы тестирования / Урок 11 / Тестировщик с нуля


6

7. Основные проблемы тестирования

Тестирование программы на всех входных значениях
невозможно.
Невозможно тестирование и на всех путях.
Следовательно, надо отбирать конечный набор тестов,
позволяющий проверить программу на основе
интуитивных представлений
Требование к тестам — программа на любом из них
должна останавливаться, т.е. не зацикливаться.
В теории алгоритмов доказано, что не существует общего
метода для решения этого вопроса, а также вопроса,
достигнет ли программа на данном тесте заранее
фиксированного оператора.
Задача о выборе конечного набора тестов (X,Y) для
проверки программы в общем случае неразрешима.
Павловская Т.А. (СПбГУ ИТМО)
7

8. Требования к идеальному критерию тестирования

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

Читайте также:
Как исправить уязвимости программ

9. Классы критериев

Структурные критерии используют информацию о
структуре программы (критерии «белого ящика»)
Функциональные критерии формулируются в описании
требований к программному изделию (критерии
«черного ящика»)
Критерии стохастического тестирования формулируются
в терминах проверки наличия заданных свойств у
тестируемого приложения средствами проверки
некоторой статистической гипотезы.
Мутационные критерии.
Павловская Т.А. (СПбГУ ИТМО)
9

10. Структурные критерии

Используются на этапах модульного и интеграционного тестирования
(Unit testing, Integration testing).
Тестирование команд (критерий С0) — набор тестов в
совокупности должен обеспечить прохождение каждой команды не
менее одного раза.
Тестирование ветвей (критерий С1) — набор тестов в
совокупности должен обеспечить прохождение каждой ветви не
менее одного раза.
Тестирование путей (критерий С2) — набор тестов в
совокупности должен обеспечить прохождение каждого пути не
менее 1 раз. Если программа содержит цикл (в особенности с
неявно заданным числом итераций), то число итераций
ограничивается константой.
Тестирование условий — покрытие всех булевских условий в
программе. Критерии покрытия решений (ветвей — С1) и условий
не заменяют друг друга, поэтому на практике используется
комбинированный критерий покрытия условий/решений,
совмещающий требования по покрытию и решений, и условий.
Павловская Т.А. (СПбГУ ИТМО)
10

11. Пример

2)x > 17
3)x = 17 — x
1
public void Method (ref int x) 2
if (x>17)
x = 17-x;
3
4
5)x = 0
if (x==-13)
x = 0;
5
6
4)x = 13
>
критерий команд (C0):
(вх, вых) = <(30, 0)>- все операторы трассы 1-2-3-4-5-6
критерий ветвей (C1):
(вх, вых) = <(30, 0),
(17, 17)>
критерий путей (C2):
(вх, вых) = (-13,0), (21,-4)>
Павловская Т.А. (СПбГУ ИТМО)
Условия операторов if
(30,0)
(17,17)
(-13,0)
(21,-4)
2 if (x>17)
>
>
4 if (x==-13)
=
!=
=
!=
11

12. Недостаток структурных критериев

Критерий ветвей С2 проверяет программу более
тщательно, чем критерии — C1, однако даже если он
удовлетворен, нет оснований утверждать, что программа
реализована в соответствии со спецификацией.
Например, если спецификация задает условие, что|x| невыполнимость которого можно подтвердить на тесте
(-177,-177).
Структурные критерии не проверяют соответствие
спецификации, если оно не отражено в структуре
программы. Поэтому при успешном тестировании
программы по критерию C2 мы можем не заметить ошибку,
связанную с невыполнением некоторых условий
спецификации требований.
Павловская Т.А. (СПбГУ ИТМО)
12

13. Функциональные критерии

Функциональный критерий — важнейший для программной
индустрии критерий тестирования. Он обеспечивает,
прежде всего, контроль степени выполнения требований
заказчика в программном продукте. Поскольку
требования формулируются к продукту в целом, они
отражают взаимодействие тестируемого приложения с
окружением.
При функциональном тестировании преимущественно
используется модель «черного ящика» (см. остальную
часть курса).
Проблема функционального тестирования — это, прежде
всего, трудоемкость.
Павловская Т.А. (СПбГУ ИТМО)
13

14. Частные виды функциональных критериев

1.
Тестирование пунктов спецификации — набор тестов в
совокупности должен обеспечить проверку каждого тестируемого
пункта не менее одного раза.
2.
Тестирование классов входных данных — набор тестов в
совокупности должен обеспечить проверку представителя каждого
класса входных данных не менее одного раза.
3.
Тестирование правил — набор тестов в совокупности должен
обеспечить проверку каждого правила, если входные и выходные
значения описываются набором правил некоторой грамматики.
4.
Тестирование классов выходных данных — набор тестов в
совокупности должен обеспечить проверку представителя каждого
выходного класса
5.
Тестирование функций — набор тестов в совокупности должен
обеспечить проверку каждого действия, реализуемого
тестируемым модулем, не менее одного раза («полупрозрачный
ящик«).
6.
Комбинированные критерии для программ и спецификаций
Павловская Т.А. (СПбГУ ИТМО)
14

Читайте также:
Как с диска устанавливать программы на мак

15. Стохастические критерии

Стохастическое тестирование применяется при тестировании сложных
программных комплексов. Когда набор детерминированных тестов
(X,Y) имеет громадную мощность и его невозможно разработать и
исполнить, можно применить следующую методику:
Разработать программы-имитаторы случайных
последовательностей входных сигналов .
Вычислить независимым способом значения для
соответствующих входных сигналов и получить тестовый
набор (X,Y).
Протестировать приложение на тестовом наборе (X,Y), используя
два способа контроля результатов:
Детерминированный контроль — проверка соответствия
вычисленного значения значению, полученному в результате
прогона теста на наборе .
Стохастический контроль — проверка соответствия множества
значений, полученного в результате прогона тестов на наборе
входных значений , заранее известному распределению
результатов F(Y). В этом случае множество Y неизвестно (его
вычисление невозможно), но известен его закон
распределения.
Павловская Т.А. (СПбГУ ИТМО)
15

16. Cтатистические методы окончания тестирования

Cтатистические методы окончания тестирования стохастические методы принятия решений о совпадении гипотез
о распределении случайных величин. К ним принадлежат:
метод Стьюдента (St), метод Хи-квадрат (χ2) и т.п.
Метод оценки скорости выявления ошибок — основан на модели
скорости выявления ошибок, согласно которой тестирование
прекращается, если оцененный интервал времени между
текущей ошибкой и следующей слишком велик для фазы
тестирования приложения.
Павловская Т.А. (СПбГУ ИТМО)
16

17. Мутационный критерий

Подход базируется на следующих понятиях:
Мутации — мелкие ошибки в программе.
Мутанты — программы, отличающиеся друг от друга
мутациями.
Метод мутационного тестирования — в разрабатываемую
программу P вносят мутации, т.е. искусственно создают
программы-мутанты P1, P2. Затем программа P и ее
мутанты тестируются на одном и том же наборе тестов (X,Y).
Если на наборе (X,Y) подтверждается правильность
программы P и, кроме того, выявляются все внесенные в
программы-мутанты ошибки, то набор тестов (X,Y)
соответствует мутационному критерию, а тестируемая
программа объявляется правильной.
Если некоторые мутанты не выявили всех мутаций, то надо
расширять набор тестов (X,Y) и продолжать тестирование.
Павловская Т.А. (СПбГУ ИТМО)
17

18. Модульное тестирование (Unit testing)

Модульное тестирование — это тестирование программы
на уровне отдельно взятых модулей, функций или классов.
Цель модульного тестирования состоит в выявлении
локализованных в модуле ошибок в реализации алгоритмов,
а также в определении степени готовности системы к
переходу на следующий уровень разработки и
тестирования.
Модульное тестирование проводится по принципу «белого
ящика».
Модульное тестирование обычно подразумевает создание
вокруг каждого модуля определенной среды
Павловская Т.А. (СПбГУ ИТМО)
18

19. Принципы создания тестов

На основе анализа потока управления. В этом случае элементы,
которые должны быть покрыты при прохождении тестов,
определяются на основе структурных критериев тестирования С0,
С1,С2. К ним относятся вершины, дуги, пути управляющего графа
программы (УГП), условия, комбинации условий и т. п.
К популярным критериям относятся критерий покрытия функций
программы (каждая функция программы должна быть вызвана хотя
бы один раз), и критерий покрытия вызовов (каждый вызов
каждой функции в программе должен быть осуществлен хотя бы
один раз).
На основе анализа потока данных (элементы, которые должны
быть покрыты, определяются на основе информационного графа
программы).
Этот вид направлен на выявление ссылок на неинициализированные переменные и избыточные присваивания тестирования
всех взаимосвязей, включающих в себя использование и
определение переменной.
Недостаток стратегии в том, что она не гарантирует покрытия
решений.
Павловская Т.А. (СПбГУ ИТМО)
19

20. Построение набора тестов

1.
Конструирование УГП
2.
Выбор тестовых путей:
3.
Статические методы
Динамические методы
Методы реализуемых путей
Генерация тестов, соответствующих тестовым путям
Павловская Т.А. (СПбГУ ИТМО)
20

21. Методы построения множества тестов

Статические методы. Построение каждого пути посредством
постепенного его удлинения за счет добавления дуг, пока не будет
достигнута выходная вершина.
Недостатки – не учитывается возможная нереализуемость
построенных путей тестирования (непредсказуемый процент
брака).
— Трудоемкость (переход от покрывающего множества путей к
полной системе тестов осуществляется вручную)
Достоинство — сравнительно небольшое количество необходимых
ресурсов
Динамические методы. Построение полной системы тестов,
удовлетворяющих заданному критерию, путем одновременного
решения задачи построения покрывающего множества путей и
тестовых данных. При этом можно автоматически учитывать
реализуемость или нереализуемость ранее рассмотренных путей
или их частей.
Достоинство — некоторый качественный уровень — реализуемость
путей.
Методы реализуемых путей. Выделение из множества путей
подмножества всех реализуемых путей, из которых строится
покрывающее множество путей.
Павловская Т.А. (СПбГУ ИТМО)
21

Читайте также:
Создание и использование вредоносных программ для эвм

22. Сравнение методов

Достоинство статических методов состоит в сравнительно
небольшом количестве необходимых ресурсов. Однако их
реализация может содержать непредсказуемый процент
брака (нереализуемых путей). Кроме того, в этих системах
переход от покрывающего множества путей к полной
системе тестов пользователь должен осуществить вручную
(трудоемко).
Динамические методы требуют значительно больших
ресурсов как при разработке, так и при эксплуатации,
однако увеличение затрат происходит, в основном, за счет
разработки и эксплуатации аппарата определения
реализуемости пути (символический интерпретатор,
решатель неравенств). Достоинство этих методов
заключается в том, что их продукция имеет некоторый
качественный уровень — реализуемость путей. Методы
реализуемых путей дают самый лучший результат.
Павловская Т.А. (СПбГУ ИТМО)
22

23. Методы отладки

Результат выполнения теста ничего не говорит о том, где
была допущена ошибка.
Процедура исправления ошибки заключается в анализе
протокола промежуточных вычислений с помощью
следующих методов:
«Выполнение программы в уме» (deskchecking).
Вставка операторов протоколирования промежуточных
результатов (logging).
Пошаговое выполнение программы.
Выполнение с заказанными остановками (breakpoints),
анализом трасс (traces) или состояний памяти — дампов
(dump).
обратное выполнение (reversible execution) – возможно в
режиме off-line анализа при фиксации в log–файле всей
истории выполнения трассы.
Павловская Т.А. (СПбГУ ИТМО)
23

Источник: ppt-online.org

Тесты по принципу белого ящика для программы пример

Каждый начинающий тестировщик слышал о методах тестирования black-box, white-box и gray-box (методы трех «ящиков»). В сети можно найти много информации о «черном» и «белом ящиках», но статьи о методе «серого ящика» встречаются редко. Такая ситуация кажется мне не совсем справедливой, ведь многие из нас используют в работе именно эту стратегию. Я попытаюсь немного исправить сложившееся положение, подробно рассмотрев плюсы и минусы «серого ящика» по сравнению с двумя другими методами и выяснив, в каких случаях его применение будет наиболее эффективным. Тестирование «серого ящика» сочетает в себе элементы black-box и white-box тестирования, а потому я начну свой рассказ с краткой характеристики каждого из методов.

Black-box

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

Достоинства метода:

    • Позволяет быстро выявить ошибки в функциональных спецификациях.
    • Тестировщику не нужна дополнительная квалификация.
    • Тестирование проходит «с позиции» пользователя.
    • Составлять тест-кейсы можно сразу после подготовки спецификации.

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

      • функциональное;
      • регрессионное;
      • usability;
      • smoke;
      • GUI.

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

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

      Презентации » Информатика » Тестирование белого ящика

      Тестирование белого ящикаВведение Модель программы в виде Управляющий граф программы Управляющий граф программы (УГП) отображает поток управленияРеализуемые и нереализуемые пути float Calc(float x, float y) <Пример /* Функция вычисляет неотрицательную степень n числа xПримеры необозримого множества входных значенийОсновные проблемы тестирования Тестирование программы на всех входных значениях невозможно. Требования к идеальному критерию тестирования Критерий должен быть достаточным, т.е.Классы критериев Структурные критерии используют информацию о структуре программы (критерии Структурные критерии Используются на этапах модульного и интеграционного тестирования (UnitПример public void Method (ref int x) < if (x>17) » /><img decoding=Частные виды функциональных критериев Тестирование пунктов спецификации - набор тестов вСтохастические критерии Стохастическое тестирование применяется при тестировании сложных программных комплексов.Cтатистические методы окончания тестирования Cтатистические методы окончания тестирования - стохастические методыМутационный критерий Подход базируется на следующих понятиях: Мутации - мелкиеМодульное тестирование (Unit testing) Модульное тестирование - это тестирование программы наПринципы создания тестов На основе анализа потока управления. В этом случаеПостроение набора тестов Конструирование УГП Выбор тестовых путей: Статические методы Методы построения множества тестов Статические методы. Построение каждого пути посредством постепенногоСравнение методов Достоинство статических методов состоит в сравнительно небольшом количестве необходимых Методы отладки Результат выполнения теста ничего не говорит о том, где

      Источник: myslide.ru

      Рейтинг
      ( Пока оценок нет )
      Загрузка ...
      EFT-Soft.ru