Методы тестирования

Содержание

Слайд 2

Agenda Техника анализа классов эквивалентности Техника анализа граничных значений Тестирование состояний переходов

Agenda

Техника анализа классов эквивалентности
Техника анализа граничных значений
Тестирование состояний переходов

Слайд 3

Testing Methods Black Box Equivalence Class Testing Boundary Value Testing State

Testing Methods

Black Box
Equivalence Class Testing
Boundary Value Testing
State Transition Testing

White Box
Code Coverage

Слайд 4

Equivalence classes Example Программа должна принимать два числа от -99 до

Equivalence classes Example

Программа должна принимать два числа от -99 до 99

и складывать их
Всего вариантов 199*199 = 39 601
Слайд 5

Equivalence classes Почему? Потому что могут использоваться на разных уровнях –

Equivalence classes

Почему?
Потому что могут использоваться на разных уровнях – от отдельных

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

Equivalence classes Это техника, которая заключается в разбиении всего набора тестов

Equivalence classes

Это техника, которая заключается в разбиении всего набора тестов на

классы эквивалентности с последующим сокращением числа тестов
Слайд 7

Equivalence classes Цель: Сокращение числа тестов с сохранением тестового покрытия

Equivalence classes

Цель:
Сокращение числа тестов с сохранением тестового покрытия

Слайд 8

Equivalence classes Слишком большое количество эквивалентных классов увеличивает вероятность того, что

Equivalence classes

Слишком большое количество эквивалентных классов увеличивает вероятность того, что множество

тестов будет избыточным

Слишком малое число эквивалентных классов увеличивает вероятность пропуска ошибок

Слайд 9

Equivalence classes Definition Два теста считаются эквивалентными, если: Они тестируют одну

Equivalence classes Definition

Два теста считаются эквивалентными, если:
Они тестируют одну и ту

же вещь (функцию, модуль, часть системы)
Если один из тестов ловит ошибку, то второй скорее всего тоже ее поймает
Если один из тестов не ловит ошибку, то другой тоже скорее всего ее не поймает
Слайд 10

Equivalence classes Algorithm Определить классы эквивалентности Выбрать одного представителя из каждого класса Выполнить тесты

Equivalence classes Algorithm

Определить классы эквивалентности
Выбрать одного представителя из каждого класса
Выполнить тесты

Слайд 11

Equivalence classes Example Комиссия при отмене бронирования авиабилета: За 5 суток

Equivalence classes Example

Комиссия при отмене бронирования авиабилета:
За 5 суток – 0%
Меньше

5 суток, но больше 24 часов – 50%
Меньше 24 часов, но до вылета – 75%
После вылета – 100%
Слайд 12

Equivalence classes Example 1. Определим классы эквивалентности: t > 5 суток 24 часа 0 часов t

Equivalence classes Example

1. Определим классы эквивалентности:
t > 5 суток
24 часа <

t < 5 суток
0 часов < t < 24 часа
t < 0 (вылет состоялся)
Слайд 13

Equivalence classes Example 2. Выберем представителя от каждого класса: t =

Equivalence classes Example

2. Выберем представителя от каждого класса:
t = 10 суток
t

= 3 суток
t = 12 часов
t = -30 минут
Слайд 14

Equivalence classes Example 3. Выполним тесты: t = 10 суток –

Equivalence classes Example

3. Выполним тесты:
t = 10 суток – комиссия 0%
t

= 3 суток – комиссия 50 %
t = 12 часов – комиссия 75%
t = -30 минут – комиссия 100%

4 vs 950400 тестов

Слайд 15

Equivalence classes Плюсы: Сокращение времени Улучшение структурированности Минусы: При неправильном использовании рискуем потерять баги

Equivalence classes

Плюсы:
Сокращение времени
Улучшение структурированности

Минусы:
При неправильном использовании рискуем потерять баги

Слайд 16

Equivalence classes Search Не забывайте о классах, охватывающих заведомо неверные или

Equivalence classes Search

Не забывайте о классах, охватывающих заведомо неверные или недопустимые

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

Equivalence classes Search Поищите переменные, значения которых должны быть равны Поищите

Equivalence classes Search

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

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

Equivalence classes Table

Equivalence classes Table

Слайд 19

Equivalence classes Plan

Equivalence classes Plan

Слайд 20

Equivalence classes Plan

Equivalence classes Plan

Слайд 21

Equivalence classes Plan

Equivalence classes Plan

Слайд 22

Equivalence classes Task Для полей или параметров, принимающих фиксированные перечни значений,

Equivalence classes Task

Для полей или параметров, принимающих фиксированные перечни значений, выясните,

какие из значений в них входят
Слайд 23

Equivalence classes Task Поищите классы значений, зависящих от времени

Equivalence classes Task

Поищите классы значений, зависящих от времени

Слайд 24

Equivalence classes Task Выявите группы переменных, совместно участвующих в определенных вычислениях,

Equivalence classes Task

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

которых ограничивается конкретным набором или диапазоном значений
Слайд 25

Boundary values Почему? Давно замечено, что при разработке большое число проблем

Boundary values

Почему?
Давно замечено, что при разработке большое число проблем возникает на

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

Boundary values Типы границ: Физические (не могут существовать) Логические (не имеют

Boundary values

Типы границ:
Физические (не могут существовать)
Логические (не имеют смысла)
Произвольные (так решили)
Технологические

(так устроено)
Слайд 27

Boundary values Физические Это такие границы, которые физически нельзя преодолеть Пример: строка отрицательной длины

Boundary values

Физические
Это такие границы, которые физически нельзя преодолеть
Пример: строка отрицательной длины

Слайд 28

Boundary values Логические Определяются здравым смыслом или законами природы. Это границы

Boundary values

Логические
Определяются здравым смыслом или законами природы. Это границы обусловленные логикой

работы самого продукта
Пример: длина строки – отрицательное число
Слайд 29

Boundary values Произвольные Данный тип границ отличается от всех остальных тем,

Boundary values

Произвольные
Данный тип границ отличается от всех остальных тем, что они

устанавливаются разработчиком в процессе разработки
Слайд 30

Boundary values Технологические Они опасны тем, что они были придуманы или,

Boundary values

Технологические
Они опасны тем, что они были придуманы или, правильнее сказать,

оговорены стандартами и средствами разработки, которые мы с вами используем
Слайд 31

Boundary values Цель: Найти ошибки, связанные с граничными значениями

Boundary values

Цель:
Найти ошибки, связанные с граничными значениями

Слайд 32

Boundary values Algorithm Выделить классы эквивалентности Определить граничные значения классов Понять

Boundary values Algorithm

Выделить классы эквивалентности
Определить граничные значения классов
Понять к какому классу

относится граница
Провести тесты: на границе, чуть левее, чуть правее
Слайд 33

Boundary values Example Комиссия при отмене бронирования авиабилета: За 5 суток

Boundary values Example

Комиссия при отмене бронирования авиабилета:
За 5 суток – 0%
Меньше

5 суток, но больше 24 часов – 50%
Меньше 24 часов, но до вылета – 75%
После вылета – 100%
Слайд 34

Boundary values Example 1. Выделим классы эквивалентности: t > 5 суток 24 часа 0 часов t

Boundary values Example

1. Выделим классы эквивалентности:
t > 5 суток
24 часа <

t < 5 суток
0 часов < t < 24 часа
t < 0 (вылет состоялся)
Слайд 35

Boundary values Example 2. Определим границы: 5 суток 24 часа 0 часов

Boundary values Example

2. Определим границы:
5 суток
24 часа
0 часов

Слайд 36

Boundary values Example 3. Определим, к какому классу относятся границы: 5

Boundary values Example

3. Определим, к какому классу относятся границы:
5 суток –

2 класс
24 часа – 2 класс
0 часов – 4 класс
Слайд 37

Boundary values Example 3. Тестируем на границе, чуть левее и чуть

Boundary values Example

3. Тестируем на границе, чуть левее и чуть правее:
5

суток + 1 секунда – 0%
5 суток – 50%
5 суток – 1 секунда – 50%
24 часа + 1 секунда – 50%
24 часа – 50%
24 часа – 1 секунда – 75%
1 секунда до вылета – 75%

8) Время вылета – 100%
9) Через 1 секунду после вылета – 100%

Слайд 38

Summary 4 + 9 = 13 тестов вместо 950400

Summary

4 + 9 = 13 тестов вместо 950400

Слайд 39

State transition testing Definition Тестирование состояний переходов – тестирование методом черного

State transition testing Definition

Тестирование состояний переходов – тестирование методом черного ящика,

в котором сценарии тестирования строятся на основе выполнения корректных и некорректных переходов состояний
Используется в случае, если систему можно классифицировать как «машину с конечными состояниями», т.е. система может находиться в конечном количестве разных состояний. Переходы между состояниями определены некоторыми правилами
Слайд 40

State transition testing Example

State transition testing Example

Слайд 41

State transition testing Example

State transition testing Example

Слайд 42

State transition testing Протестируйте все наиболее вероятные последовательности действий пользователей Если

State transition testing

Протестируйте все наиболее вероятные последовательности действий пользователей
Если возможно предположить,

что действия пользователей в одном режиме могут воздействовать на представление данных или набор представляемых программой возможностей в другом режиме, протестируйте эту зависимость
Кроме проведения самых необходимых тестов стоит поработать с программой в произвольном режиме, случайным образом выбирая путь ее выполнения
Слайд 43

White box test design techniques Методы: Покрытие операторов Покрытие решений Покрытие условий Комбинаторное покрытие условий

White box test design techniques

Методы:
Покрытие операторов
Покрытие решений
Покрытие условий
Комбинаторное покрытие условий

Слайд 44

White box test design techniques Критерий покрытия операторов подразумевает выполнение каждого

White box test design techniques

Критерий покрытия операторов подразумевает выполнение каждого оператора

программы по крайней мере один раз

a = 2 b = 0 x = 3

Слайд 45

White box test design techniques Покрытие решений. В соответствии с этим

White box test design techniques

Покрытие решений. В соответствии с этим критерием

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

a=3, b=0, x=3
a=2, b=1, x=1

Слайд 46

White box test design techniques Покрытие условий. Записывается число тестов достаточное

White box test design techniques

Покрытие условий. Записывается число тестов достаточное для

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

a=2, b=0, x=4
a=1, b=1, x=1

Слайд 47

White box test design techniques Комбинаторное покрытие условий. Такое число тестов,

White box test design techniques

Комбинаторное покрытие условий. Такое число тестов, чтобы

в каждом решении все точки входа выполнялись по крайней мере один раз

a=2, b=0, x=4
a=2, b=1, x=1
a=1, b=0, x=2
a=1, b=1, x=1

Слайд 48

Testing Methods Practice Сколько нужно провести тестов, чтобы получить 100% statement

Testing Methods Practice

Сколько нужно провести тестов, чтобы получить 100% statement coverage?
READ

A
READ B
IF A>B
THEN C = 0
ENDIF

1 тест. Например A=10, B=5

Слайд 49

Testing Methods Practice Сколько нужно провести тестов, чтобы получить 100% branch

Testing Methods Practice

Сколько нужно провести тестов, чтобы получить 100% branch coverage?
READ

A
READ B
C = A - 2 *B
IF C <0 THEN
PRINT "C negative"
END IF

2 теста. Например A=11, B=5 (С>=0)
A=10, B=15, (С<0)

Слайд 50

Testing Methods Practice Возраст Возраст >=18 – допустимый класс Некорректные символы

Testing Methods Practice

Возраст <18 – недопустимый класс
Возраст >=18 – допустимый класс
Некорректные

символы – недопустимый класс
Протестируем:
17, 18, 19
1000, abc, $, 0, -1, @, 1$, …

Определите классы эквивалентности и граничные условия.
Возраст – не менее 18