Lecture 05 11/21/2011 11:44:00 AM Blackbox testing : Equivalence

advertisement
Lecture 05
1/16/2016 11:21:00
AM
Blackbox testing : Equivalence partitioning, Boundary value analysis, State transition testing, Use case testing,
Test script
Техники тестирования.
Black Box testing

Техника нацеленая на функциональность определённую в спецификациях или документированой
модели системы. Техника также известная как BlackBox (or specification-based)
Черный ящик (Blackbox testing/Specification-based testing)
Основная идея в тестировании системы, как черного ящика состоит в том, что все материалы, которые
доступны тестировщику: требования на систему, описывающие ее поведение и сама система, работать с
которой он может только подавая на ее входы некоторые внешние воздействия и наблюдая на выходах
некоторый результат. Все внутренние особенности реализации системы скрыты от тестировщика, таким
образом, система и представляет собой «черный ящик», правильность поведения которого по отношению к
требованиям и предстоит проверить.
С точки зрения программного кода черный ящик может представлять с собой набор классов (или
модулей) с известными внешними интерфейсами, но недоступными исходными текстами.
Основная задача тестировщика для данного метода тестирования состоит в последовательной проверке
соответствия поведения системы требованиям. Важно понимать, что требования или спецификации не
определяют (и не должны определять) как система должна достигнуть желаемого поведения. В
спецификациях описывается желаемый результат, то что система должна делать. Описание же того «как»
система должна работать содержиться в описании архитектуры (design) системы. При тестировании чёрного
ящика проверяется именно «что» делает система.
Очень важно помнить, что не все системы созданы по чётким спецификациям. В некоторых случаях
спецификации отсутсвуют и тестеру приходится самостоятельно через общение с Project Manager’ом и
девелоперами составлять модель системы. И лишь затем эти модели используются как основа тестов.
Существует 5 техник тестирования основаных на спецификациях:





Equivalence partitioning (Классы эквивалентности)
Boundary value analysis (Граничные условия)
Decision table testing
State transition testing
Use case testing
Equivalence partitioning (Классы эквивалентности)
При разработке тестовых примеров может возникнуть такая ситуация, в которой различные входные
значения приводят к одним и тем же реакциям системы. Если при этом такие входные значения имеют что-то
общее, то возможно объединение таких значений в классы эквивалентности, т.е. выполнение эквивалентного
разбиения множества допустимых входных значений.
Разбиение на классы эквивалентности - в первую очередь, способ уменьшения необходимого числа
тестовых примеров. Обычно, если в тест-требованиях специально не оговорено иное, при тестировании
достаточно выполнить только один тестовый пример для каждого класса эквивалентности. Разбиение на
классы эквивалентности особенно полезно, когда на вход системы может быть подано большое количество
1
Lecture 05
1/16/2016 11:21:00
AM
различных значений; тестирование каждого возможного значения привело бы к слишком большому объему
тестирования.
Рассмотренные выше граничные условия могут служить примером классов эквивалентности:
1. Значение из середины интервала.
2. Граничные значения.
3. Недопустимые значения за границами интервала.
Вместо того, чтобы тестировать все недопустимые значения, выбираются только соседние с граничными.
При определении классов эквивалентности следует руководствоваться следующими правилами:
1. Всегда будет, по меньшей мере, два класса: корректный и некорректный
2. Если входное условие определяет диапазон значений, то, как правило бывает три класса: меньше чем
диапазон, внутри диапазона и больше чем диапазон. (Значения на концах диапазона могут
трактоваться как граничные значения.)
3. Если элементы диапазона обрабатываются по-разному, то каждому варианту обработки буду
соответствовать разные требования.
Другим примером разбиения на классы эквивалентности может служить тестирование открытия файла
по его имени. В результате тестирования необходимо определить, все ли варианты имен обрабатываются
системой согласно следующим тест-требованиям:
1. Проверить, что в случае присутствия в имени файла символов, не являющимися буквами
латинского алфавита и цифрами, система выводит сообщение об ошибке.
2. Проверить, что в том случае, когда длина имени файла превышает 11 символов, система выдает
сообщение об ошибке
3. Проверить, что система не различает регистр символов имени при открытии файла.
4. Проверить, что при открытии файлов с именами, не противоречащими требованиям 1-3, система
открывает файл.
Входными значениями тестового примера являются различные имена файлов, выходными – реакция системы
(ошибка или успешное открытие). Можно выделить следующие классы эквивалентности:
По длине имени:
1. Длина имени меньше 11 символов
2. Длина имени равна 11 символам
3. Длина имени больше 11 символов По символам:
4. Имя, состоящее из цифр и букв смешанного регистра
5. Имя, состоящее из цифр и букв нижнего регистра
6. Имя, состоящее из цифр и букв верхнего регистра
7. Имя, состоящее только из цифр
8. Имя, состоящее только из букв
9. Имя, включающее знаки препинания (не буквенно-цифровые символы)
10. Имя, включающее управляющие символы (не буквенно-цифровые символы)
Эти классы эквивалентности иллюстрируют, что проверки на границах интервалов применимы не только
для тестирования арифметических операций и операций сравнения. Практически для любых данных, даже
текстовых, можно определить «минимальные» и «максимальные» допустимые значения.
2
Lecture 05
1/16/2016 11:21:00
AM
Exercise: Предположим, что у вас есть банк предоставляющий кредит с плавающей процентной ставкой:
1.5 % если сумма не превышает $1000
1% если сумма кредита не превышает $2000
0.5% если сумма кредита не превышает $3000
Вам нужно убедиться, что банк правильно обрабатывает ваши запросы на кредиты. Какие классы
эквивалентности тут можно выделить?
Также могут выделяться классы эквивалентности выходных данных. Подход обратный классу эквивалентности
входных данных: на выходе будет получена процентная ставка в 1.5% если в качестве кредита была
использована сумма от $1 до $1000.
Boundary value analysis (Граничные значения)
Анализ граничных значений. Помимо ошибок вызываемых каким-то значением из списка допустимых часто
возникают ошибки на околограничных значениях: значениях наиболее приблежённых к граничным, но в
допустимой зоне, непосредственно граничное значение (всё ещё допустимо) и недопустимые значения
приближённые к граничному значению.
Ошибки граничных значений могут быть вызваны неправильными заданием типа принимающей переменной,
неправильной валидацией и т.п.
То есть, предположим, что программа принимает в качестве допустимых значения от 1 до 99. Минимально
допустимое значение 1, максимально допустимое 99. Это граничные значения. Проверка граничных значений
подразумивыает тест 0, 1, 2 и 98, 99, 100.
Например, температура кипения воды – граничные значения, которые необходимо было бы проверить – 99,
100 и 101 градус.
►Exercise:
Для оценки результатов проведения собеседований была введена стобалловая система. 100 – максимум, 1 –
минимум.
Собеседование считается пройденым при 40 баллах. Существует следующая градация:
1 - 40 баллов – отказать
41 – 60 – добавить в базу данных потенциальных сотрудников в будущем
61 – 100 – принять на работу
Каковы здесь граничные значения?
Decision table testing (таблица принятия решений)
Часто спецификации описывают функциональность, которая становится доступной при выполнении некоторых
условий. Если рассматривать какую-то одну конкретную функциональность, то список логических условий
обычно коротким, но если брать какую-то комплексную функциональность список логических условий может
быть достаточно большим.
Таблица принятия решений перечисляет все возможные условия, которые могут влиять на функциональность
и непосредстенно действия, которые будут иметь место при различных комбинациях условий.
3
1/16/2016 11:21:00
AM
Lecture 05
Структура Decision table
Business rule 1
Business rule 2
Business rule 3
Condition 1
True
False
True
Condition 2
True
True
True
Condition 3
True
-
False
Action 1
Yes
No
Yes
Action 2
No
Yes
Yes
Для Business rule 1 – если выполняются все три Conditions то происходит Action 1.
Action 2 – не происходит.
В реальности количество условий, которые приводят к каким-то действиям может быть очень большим, но
список условий влияющих непосредственно на одно действие не так велик.
То есть для того чтобы ограничить список тестируемых условий и сконцентрироваться на нужной части
выбираются только необходимые условия для получения action. Условия, которые также могут быть
выполнены в программе, но не имею непосредственного отношения к выбраной функциональности
упускаются.
Пример:
Таблица принятия решений для системы скидок в супермаркете.
Business rule 1
Business rule 2
Business rule 3
False
True
False
-
-
True
Скидка
No
Yes
No
Очки за лояльность
No
Yes
No
Выдать loyalty card
No
Yes
Yes
Conditions:
Клиент c loyalty card
Потрачено более 1000 лей
Actions:
Основываясь на этой таблице приниятия решений составляются тест кейсы. Благодаря таблице мы уверены,
что покроем все комбинации и напишем кейсы с необходимым покрытием.

ПРИШЁЛ ПОКУПАТЕЛЬ И СОВЕРШИЛ ПОКУПКИ НА 5000 ЛЕЙ С LOYALTY CARD. ЧТО СДЕЛАЕТ
СИСТЕМА?
4
Lecture 05
1/16/2016 11:21:00
AM
State transition testing (тестирование изменения состояния)
Предыдущие подходы были применимы в сетуациях когда разная комбинация условий приводит к действиям.
Рассмотрим подход, применяемый к системам в которых действия провоцируются изменением состояния.
Другими словами, поведение зависит от текущего и предыдущего состояния. И это изменение провоцирует
действие.
Диаграмы state transition
Для построения state transition diagram используются следующие символы:
Первый:
State 1
Cимвол состояния. Система находится в указаном состоянии и изменится только если произойдёт какое-то
событие.
Второй:
Символ изменения одного состояния в другое. Изменением может быть вызвано событием (например,
нажатием кнопки). Этот символ будет сопровождаться описанием действия, которое произошло (например,
была нажата кнопка “Ok”)
К событиям также можно отнести какой-то input данных, например, было проапдейтчено поле в базе данных.
Пример
Надо обратить внимание на то, что не все действия приводят к изменению состояния.
5
1/16/2016 11:21:00
AM
Lecture 05
Помимо создания схем существует близкий подход. Создаются таблицы состояния (state table).
State Table описывает все возможнные события и все возможные статусы.
State tables являются промежуточным слоем между state transition diagram и непосредствено
созданием кейсов.
State Table основаный на диаграме описаной выше
Mode
Alt
Set
Set Hrs
Mode = Time
N
Mode =
Altimeter/Change
Display to Altimeter
Mode = Altimeter
N
Mode = Time/Change
Display to Time
Set Hrs
Set Mins
N
Set Mins/Change
Display to Mins
N
Set Hrs/Add 1 to Hrs
Mode = Time/Change
Display time
N
Set Mins/Add 1 to Mins
6
Lecture 05
1/16/2016 11:21:00
AM
Use case testing
Эти тест сценарии описывают взаимодействие между «пользователем» и системой. Под
«пользователем» здесь подразумивается определённый тип пользователя. Use cases – тест сценарии
направленые на симуляцию действий пользователя определённого типа (или просто пользователя)
Например, существует приложение по удалённому преподаванию через интернет. У этой системы
будут как минимум два пользователя:
- Учитель – создаёт курс
- Студент – изучает курс, сдаёт экзамен.
То есть в зависимости от типа пользователя будет использоватся определённая функциональность.
Или одна и та же функциональность но с разными целями.
7
Download