Тестирование лекция 2 весна 2014

67
Лекция 2. Критерии выбора тестов или в поисках картофелины Развенская Ксения

Upload: technopark

Post on 15-Jun-2015

408 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Тестирование лекция 2 весна 2014

Лекция №2. Критерии выбора тестов

или в поисках картофелины

Развенская Ксения

Page 2: Тестирование лекция 2 весна 2014

В предыдущей лекции

§  Качество – совокупность характеристик, определяющих насколько продукт хорош с точки зрения заинтересованных лиц.

§  Тестирование - техническое исследование, которое проводится с целью предоставить заинтересованным лицам информацию о качестве тестируемого продукта.

§  Тестирование на стадии разработки – сокращает время и риски.

2

Page 3: Тестирование лекция 2 весна 2014

В предыдущей лекции

Техники тестирования

•  На основе спецификации (Specification-based) •  На основе выбора входных данных/Доменное (Input Domain-based)

•  На основе кода (Code-based) •  Поток управления (control-flow)

•  Поток данных (data-flow) •  На основе модели (Model-based)

•  Конечный автомат •  Таблица принятия решений

•  Формальная спецификация

•  На основе интуиции и опыта •  Ad-hoc

•  Исследовательское •  Прогнозирование ошибок

•  … + комбинации

3

Page 4: Тестирование лекция 2 весна 2014

План

1. Sanity-check

2. Тестовое покрытие

3. Критерии покрытия

4. Критерии выбора тестов

4

Page 5: Тестирование лекция 2 весна 2014

Sanity-check

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

5

Page 6: Тестирование лекция 2 весна 2014

Sanity-check

1.  Позитивный тест, разносторонний (3, 4, 5)

2.  Позитивный тест, равнобедренный (3, 4, 4)

3.  Позитивный тест, равносторонний (3, 3, 3)

4.  Перестановки п.2 (3, 4, 4) (3, 4, 3) (4, 4, 3)

5.  Негативный, одна сторона – 0 (3, 4, 0)

6.  Негативный, все нули (0, 0, 0)

7.  Негативный, отрицательное значение (3, 4, -5)

8.  Не треугольник a+b=c (1, 2, 3)

9.  Перестановки п. 8 (1, 2, 3) (3, 2, 1) (1, 3, 2)

10.  Не треугольник a+b<c (1, 2, 4)

11.  Перестановки п. 10 (1, 2, 4) (4, 2, 1) (1, 4, 2)

12.  Дробные значения (3,5; 4,5; 5,5)

13.  2 аргумента / или не числа

14.  Был ли указан ожидаемый результат для негативных тестов?

6

Page 7: Тестирование лекция 2 весна 2014

Sanity-check

Набрал больше

8 баллов?

Круто! 7

Page 8: Тестирование лекция 2 весна 2014

Тестовое покрытие

Покрытие (coverage) – метрика, применяемая для оценки полноты/качества тестов.

Зависит от выбранной техники тестирования и может измеряться, например:

•  В процентах покрытой функциональности (например, по спецификации)

•  В количестве покрытых строк кода (в % от общего кол-ва строк)

•  В процентах покрытых ветвей в графе потока управления

8

Page 9: Тестирование лекция 2 весна 2014

Гарантии качества

Протестировать все – невозможно, даже 100% покрытие не обеспечивает 100% тестирования.

Чтобы протестировать все, мы должны:

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

§  Проверить все возможные комбинации значений переменных

§  Проверить каждую конфигурацию ПО и оборудования, а также конфигурации серверов, которые мы не контролируем

§  Протестировать взаимодействие с другими программами, работающими параллельно с нашей

9

Page 10: Тестирование лекция 2 весна 2014

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

Проверить все допустимые значения каждой переменной на входе. Реально ли?

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

10

232 значений (4 294 967 296) У Дага Хоффмана автоматизированная проверка всех валидных значений заняла 6 минут.

Page 11: Тестирование лекция 2 весна 2014

Почему невозможно протестировать все

А если число 64-битное?

11

264=232*232 =232 * 6 минут

Проверка займет ~ 49 000 лет

Page 12: Тестирование лекция 2 весна 2014

Пример неуловимого бага

12

Page 13: Тестирование лекция 2 весна 2014

Критерии выбора тестов

Задача: составить минимальный

набор тестов, обеспечивающий

максимальное покрытие.

13

Page 14: Тестирование лекция 2 весна 2014

Критерии выбора тестов

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

§  Критерии черного ящика/Функциональные критерии

§  Критерии белого ящика/Структурные критерии

§  Мутационные критерии

§  Стохастические критерии

14

Page 15: Тестирование лекция 2 весна 2014

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

§  Классы эквивалентности

§  Анализ граничных значений

§  Попарное тестирование (pairwise)

§  Таблицы принятия решений

§  Диаграммы состояний

15

Page 16: Тестирование лекция 2 весна 2014

Разбиение на классы эквивалентности (Equivalence partitioning)

Класс эквивалентности (КЭ) – множество входных данных (домен), для которых, как мы ожидаем, поведение системы/модуля будет одинаковым.

Все значения из одного КЭ эквивалентны с точки зрения тестирования:

§  Если один тест-кейс из КЭ обнаруживает баг, то все остальные тоже его обнаружат

§  Если один тест-кейс из КЭ не обнаруживает баг, то остальные тоже не обнаружат

Гипотеза – кейсы, соответствующие некоторым КЭ, обрабатываются некорректно. Критерий покрытия – каждый класс должен быть представлен как минимум одним тестом.

16

Page 17: Тестирование лекция 2 весна 2014

Классы эквивалентности Пример

N – кол-во посещенных лекций по тестированию

§  0 ≤ N ≤ 1– автомат, незачет §  2 ≤ N < 5 – сдает зачет §  N = 5 – автомат, зачет

17

Классы эквивалентности допустимых значений:

[0;1] [2;5) [5] Тестовый набор:

(0, 3, 5)

Page 18: Тестирование лекция 2 весна 2014

Разбиение на классы эквивалентности

Классы эквивалентности:

§  Допустимые (позитивные тесты) §  Недопустимые (негативные тесты) §  КЭ окружения/конфигурации

18

КЭ недопустимых значений

(-∞, 0)

(5, +∞) N - из множества вещественных чисел

N – не число Для значений из недопустимых КЭ ожидаем получить корректное сообщение об ошибке.

Тестовый набор

(-10, 42, 2.7, ‘technopark’)

Page 19: Тестирование лекция 2 весна 2014

Разбиение на классы эквивалентности

Чуть более сложный пример.

Программа получает на вход строку. Результатом работы является перевернутая строка.

19

КЭ:

§  Пустая строка §  Длина == 1 символ §  >1 символа палиндром §  >1 символа не палиндром

Тестовый набор: §  <пустая строка> §  ‘а’ §  ‘ререферер’ §  ‘technopark1’

Page 20: Тестирование лекция 2 весна 2014

Разбиение на классы эквивалентности

Возможная реализация (найдите ошибку):

20

Строки четной и нечетной длины – разные КЭ!

Page 21: Тестирование лекция 2 весна 2014

Разбиение на классы эквивалентности

КЭ окружения/конфигурации

Приложение голосового поиска для iPhone надо протестировать на разных версиях iOs + 3G, WiFi, без интернета.

Возможные конфигурации также разбиваются на КЭ.

Если переменные независимые (как в случае с сетью и версиями ОС) – необязательно проверять все комбинации, достаточно проверить их попарно:

§  iOs 6 + 3G

§  iOs 5 + WiFi

§  iOs 5 или 6 + откл. интернет

21

Page 22: Тестирование лекция 2 весна 2014

Анализ граничных значений

Что делаем?

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

Кроме того, желательно добавить значения, лежащие очень близко к границам (∆=~0.0001).

22

Page 23: Тестирование лекция 2 весна 2014

Анализ граничных значений

КЭ допустимых значений:

§  [0;1]

§  [2;5)

§  [5]

КЭ недопустимых значений:

§  (-∞, 0)

§  (5, +∞)

§  N - из класса рациональных чисел

§  N – не число

23

Добавим в тестовый набор значения из границ диапазона + добавим значения, выходящие за тип int. Итоговый тестовый набор: (-1, 0, 1, 2, 3, 4, 5, 6, MaxInt, MaxInt+1, MaxInt+0.001, MaxInt-1, MaxInt-0.001, MinInt, …, -42, 100, 2.7, ‘technopark’, <оч длинная строка>, <пустая строка>)

Page 24: Тестирование лекция 2 весна 2014

Анализ граничных значений

Какого рода ошибки обнаруживает:

§  Выход за границы диапазона (найдите ошибку в коде ниже, С++)

24

Hint: integer (32 bit) -2 147 483 648   ..  2 147 483 647

Подробно тут: http://en.wikipedia.org/wiki/Two%27s_complement

Page 25: Тестирование лекция 2 весна 2014

2147483646: 0111 1111 1111 1111 1111 1111 1111 1110

0111 1111 1111 1111 1111 1111 1111 1110 +

0111 1111 1111 1111 1111 1111 1111 1110

1111 1111 1111 1111 1111 1111 1111 1100 – дополнительный код, надо получить обратный код

Инвертируем:

0000 0000 0000 0000 0000 0000 0000 0011

Добавляем 1:

0000 0000 0000 0000 0000 0000 0000 0100

Берем со знаком «-»

Ответ: -4

Анализ граничных значений

25

Page 26: Тестирование лекция 2 весна 2014

Пример из жизни

26

Page 27: Тестирование лекция 2 весна 2014

Анализ граничных значений

Какого рода ошибки обнаруживает:

§  Проверка итераторов цикла

27

Ошибки в операциях сравнения (“>” вместо “>=” и тд)

Page 28: Тестирование лекция 2 весна 2014

Анализ граничных значений

Граничное значение – необязательно является границей диапазона допустимых значений входного параметра.

Примеры других граничных значений:

§  Максимально допустимый размер файла для отправки по эл. почте.

§  Сервер должен обрабатывать 100500 запросов в секунду

28

Page 29: Тестирование лекция 2 весна 2014

Метод всех пар

Что делать, если входных параметров много и невозможно протестировать все комбинации значений из разных КЭ?

Пример:

1)  Спутник должен корректно устанавливаться на: Windows 8, Windows 7, Win Vista, с вкл. UAC, выкл. UAC, с установленными на них антивирусами: Касперский, Eset, NOD32, McAffee. В браузеры IE7, IE8, IE9, IE10, Opera 11, 12, Chrome 22, Firefox 19, 20. С установленными Яндекс.Элементами и без Яндекс.Элементов. Поверх установленного Спутника и на «чистую» машину.

Итого:

-  3 ОС -  2 конфигурации UAC -  4 конфигурации антивирусов -  9 браузеров -  2 конфигурации ПО от конкурентов -  2 версии Спутника

29

864 комбинации!

Page 30: Тестирование лекция 2 весна 2014

Метод всех пар (Pairwise testing)

Критерий выбора тестов – проверка всех комбинаций значений для любой пары входных параметров

Предпосылки:

§  “Большинство ошибок проявляются либо при конкретных значениях одного параметра, либо взаимным влиянием значений двух параметров.” ("The Combinatorial Design Approach to Automatic Test Generation" [Telcordia 1997])

§  Оптимальный компромисс “трудозатраты vs. покрытие” между полным перебором и проверкой по каждому параметру независимо.

30

Page 31: Тестирование лекция 2 весна 2014

Номер ОС Браузер Яндекс.Элементы

1 Win 7 IE Да

2 Win 8 IE Да

3 Vista IE Да

4 Win 7 Firefox Да

5 Win 8 Firefox Да

6 Vista Firefox Да

7 Win 7 Chrome Да

8 Win 8 Chrome Да

9 Vista Chrome Да

10 Win 7 IE Нет

11 Win 8 IE Нет

12 Vista IE Нет

13 Win 7 Firefox Нет

14 Win 8 Firefox Нет

15 Vista Firefox Нет

16 Win 7 Chrome Нет

17 Win 8 Chrome Нет

18 Vista Chrome Нет

Метод всех пар (Pairwise testing)

31

Page 32: Тестирование лекция 2 весна 2014

Номер ОС Браузер Yandex

1 Win 7 IE Да

3 Vista IE Да

5 Win 8 Firefox Да

8 Win 8 Chrome Да

9 Vista Chrome Да

11 Win 8 IE Нет

13 Win 7 Firefox Нет

15 Vista Firefox Нет

16 Win 7 Chrome Нет

9 тестов вместо 18-ти

32

Метод всех пар (Pairwise testing)

Page 33: Тестирование лекция 2 весна 2014

•  Пример

•  система с 75 параметрами yes/no

•  Полный перебор:

•  275 = 37 778 931 862 957 161 709 568

•  Метод всех пар:

28 !

Метод всех пар (Pairwise testing)

33

Page 34: Тестирование лекция 2 весна 2014
Page 35: Тестирование лекция 2 весна 2014

Факторы, влияющие на результаты применения (и применимость) метода:

•  Степень зависимости между параметрами конкретной системы

•  Распределение вероятности комбинаций значений параметров (5 существительных подряд!)

•  Выбор параметров и их проверяемых значений

Метод всех пар

35

Page 36: Тестирование лекция 2 весна 2014

Критерий выбора тестов – проверка всех комбинаций значений для любой пары входных параметров

Метод всех пар (Pairwise testing)

36

Page 37: Тестирование лекция 2 весна 2014

Номер формат условие расположение

1 W ВС ГУ

2 W ВС З

3 W ВС ОЧ

4 W ТФ ГУ

5 W ТФ З

6 W ТФ ОЧ

7 W ЛС ГУ

8 W ЛС З

9 W ЛС ОЧ

10 P ВС ГУ

11 P ВС З

12 P ВС ОЧ

13 P ТФ ГУ

14 P ТФ З

15 P ТФ ОЧ

16 P ЛС ГУ

17 P ЛС З

18 P ЛС ОЧ

Метод всех пар (Pairwise testing)

37

Page 38: Тестирование лекция 2 весна 2014

Выберем кейсы с помощью PICT: http://www.pairwise.org/tools.asp

Метод всех пар (Pairwise testing)

38

Page 39: Тестирование лекция 2 весна 2014

16 кейсов вместо 90

Метод всех пар (Pairwise testing)

39

Page 40: Тестирование лекция 2 весна 2014

Таблица принятия решений

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

Правило 1 Правило 2 …

Условия

Условие 1

Условие 2

Действия

Действие 1

Действие 2

Критерий покрытия – как минимум один тест на столбец.

Гипотеза – при некоторой комбинации условий, может выполниться неправильное действие. Или при некоторой комбинации условий не выполнится необходимое действие.

40

Page 41: Тестирование лекция 2 весна 2014

Таблицы решений Пример

41

Page 42: Тестирование лекция 2 весна 2014

Таблица принятия решений для avia.mail.ru

Пр-ло 1

Пр-ло 2

Пр-ло 3 Пр-ло 4 Пр-ло 5 Пр-ло 6 Пр-ло 7 Пр-ло 8

Условия

Выбран город откуда

Да Да Нет Нет Да Да Нет Нет

Выбран город куда

Да Да Да Да Нет Нет Нет Нет

Туда-обратно Да Нет Да Нет Да Нет Да Нет

Действия

Действие 1 ищем ищем ворнинг ворнинг ворнинг ворнинг ворнинг ворнинг

Таблицы решений Пример

42

Page 43: Тестирование лекция 2 весна 2014

Диаграмма состояний – ориентированный граф, в котором вершины обозначают состояния, а дуги показывают переходы между 2мя состояниями.

Критерий (самый слабый) – покрытие всех состояний и всех переходов.

Диаграмма состояний

43

Page 44: Тестирование лекция 2 весна 2014

На основе:

§ Потока управления § Потока данных

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

44

Page 45: Тестирование лекция 2 весна 2014

Граф потока управления - множество всех возможных путей исполнения программы, представленное в виде графа (Википедия).

Критерии покрытия:

§  Покрытие ветвей потока управления §  Покрытие путей потока управления

Control-flow diagram

45

Page 46: Тестирование лекция 2 весна 2014

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

Тестовый набор (входные данные): (0,30)

x = 17 - x

x = 0

x>17

x == -13

Control-flow diagram

46

Page 47: Тестирование лекция 2 весна 2014

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

Тестовый набор: (0, 30) (-13, 31)

x = 17 - x

x = 0

x>17

x == -13

Control-flow diagram

47

Page 48: Тестирование лекция 2 весна 2014

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

Чтобы построить граф потока данных, сначала лучше построить граф потока управления.

Data-flow diagram

48

Page 49: Тестирование лекция 2 весна 2014

Инструкция, в которой используется некоторая переменная, называется ее использованием (use). Инструкция, в которой определяется новое значение для некоторой переменной, называется ее определением (definition).

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

Метрика покрытия использований (all-uses coverage) — доля покрытых использований всех переменных по отношению к количеству достижимых использований. Метрика покрытия du-путей (du-path coverage) — доля покрытых du-путей для всех переменных программы по отношению к достижимым du-путям.

Data-flow diagram

49

Page 50: Тестирование лекция 2 весна 2014

Вычисление НОД

использование

определение

Data-flow diagram

50

Page 51: Тестирование лекция 2 весна 2014

Определение b

Использование b

Пример du-путей для переменной a: 0-3, 0-6, 0-7, 0-7’…

Data-flow diagram

51

Page 52: Тестирование лекция 2 весна 2014

§  Покрытие операторов (== строк кода) §  Покрытие ветвей IEEE Unit Testing Standart: покрыто 100% операторов и 100% ветвей.

Code-coverage Unit Testing

52

Page 53: Тестирование лекция 2 весна 2014

Покрытие 100% инструкции (операторов) == покрытие всех строк кода

Тестовый набор: a==6, b==‘Hello’

Покрытие операторов

53

Page 54: Тестирование лекция 2 весна 2014

Покрытие 100% ветвей:

Тестовый набор: (a==6, b==‘Hello’) (a==4, b==‘Goodbye’)

Покрытие ветвей

54

Page 55: Тестирование лекция 2 весна 2014

100% покрытие инструкций и ветвей – необходимый, но не достаточный критерий полноты тестирования.

Пример:

Любые 2 протестированных значения a и b обеспечивают 100% покрытие кода. При этом не обнаруживает ошибку.

Division by Zero.

Code-coverage Unit-testing

55

Page 56: Тестирование лекция 2 весна 2014

Комбинируйте техники тестирования

Резюме

56

Page 57: Тестирование лекция 2 весна 2014

Как еще выбрать кейсы для проверки?

§  Отнеситесь критично к требованиям -  Полнота -  Однозначность -  Непротиворечивость

§  Отнеситесь критично к реализации (самое сложное)

§  Исследуйте продукт

§  Попытайтесь спрогнозировать ошибку, используя эвристики

Главный вопрос: «А что, если.. ?»

В крайнем случае – поставьте ботинок на клавиатуру и идите пить кофе

57

Page 58: Тестирование лекция 2 весна 2014

Критерии завершения тестирования

§  Обнаружили блокирующий баг

§  Обнаружили слишком много багов

§  Проверили все, что хотели/Выполнили все тесты

§  Исчерпали ресурсы

§  Нам стало лень, мы демотивированы, озлоблены

58

Приостанавливаем

Page 59: Тестирование лекция 2 весна 2014

Критерии завершения тестирования

§  Обнаружили блокирующий баг

§  Обнаружили слишком много багов

§  Проверили все, что хотели/Выполнили все тесты

§  Исчерпали ресурсы

§  Нам стало лень, мы демотивированы, озлоблены

59

Приостанавливаем

Page 60: Тестирование лекция 2 весна 2014

Особенности тест-дизайна для автотестов

§  Не можем позволить избыточные кейсы

§  Кейсы должны быть изолированы

§  Тесты должны быть надежными/стабильными

§  Кейсы должны быть максимально устойчивыми к изменениям

60

Page 61: Тестирование лекция 2 весна 2014

Мутация – применение к исходному коду программы 1 оператора мутации. Операторы мутации: -  удаление определенной инструкции -  добавление новой инструкции -  замена переменных в выражениях на другие переменные того же

типа или на константные выражения того же типа -  замена операторов арифметических действий +, –, *, / друг на друга -  замена логических операций друг на друга -  …

Программа, получаемая из тестируемой применением одного оператора мутации, называется мутантом.

Метрика полноты тестов – доля обнаруженных мутантов. Если все мутанты обнаружены – программа корректна и тесты полны.

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

61

Page 62: Тестирование лекция 2 весна 2014

Критерии стохастического тестирования

Тестовые данные - множество случайных величин.

Сравниваем распределение полученных результатов с ожидаемыми распределениями случайных величин – проверяем статистическую гипотезу.

62

Page 63: Тестирование лекция 2 весна 2014

Проверка X2-критерия

Есть генератор псевдослучайных последовательностей.

Проверяем гипотезу о равномерности распределения.

Проводим 60 испытаний

Пусть вектор наблюдаемых частот {Oi} равен (9, 11, 8, 12, 7, 13).

Итак, нам надо сравнить два вектора частот {Ei} и {Oi}.

Вектор средних частот {Ei} - ?

X 2Pearson = S((Oi-Ei)/Ei

1/2) 2 =S(Oi-Ei) 2/Ei

X 2Pearson = (9-10) 2/10+(11-10) 2/10+(8-10) 2/10+(12-10) 2 /

10+(7-10) 2/10+(13-10) 2/10

=0.1+0.1+0.4+0.4+0.9+0.9 =2.8

63

Page 64: Тестирование лекция 2 весна 2014

Проверка X2-критерия

Какие значения хи-квадрат следует считать слишком малыми и слишком большими?

X 2Pearson = 2.8

Полученное значение сравнивают со значением X2

крит: большая часть распределения заключена в пределах от  X2

α,n до X21-α,n , где n-кол-во степеней

свободы. В нашем случае n= 6-1=5 и

X2α,5 = 1,1455, X2

1-α,5 = 11,0705 при уровне значимости

α =5%

=> Принимаем гипотезу, тк 2.8 < X21-α,5 и > X2

α,5

64

Page 65: Тестирование лекция 2 весна 2014

Проверка X2-критерия

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

Пусть вектор наблюдаемых частот {Oi} равен (5, 15, 6, 14, 4, 16).

X 2Pearson = 15.4

⇒ 15.4 > 11,0704

⇒  отвергаем H0

Вопрос: о чем говорит X 2Pearson < X2

α,5 ?

65

Page 66: Тестирование лекция 2 весна 2014

Материалы

1.  Lee Copeland "A Practitioner'S Guide To Software Test Design“ 2.  Rex Black «Advanced Software Testing», Vol.3 3.  Борис Бейзер «Тестирование черного ящика» 4.  http://www.uchi-it.ru/7/10/soder.html 5.  http://www.pairwise.org/tools.asp 6.  http://www.developsense.com/pairwiseTesting.html 7.  http://www.intuit.ru/department/se/testing/3/2.html 8.  Rikard Edgren, In search of the potato…,

http://thetesteye.com/blog/2009/12/in-search-of-the-potato/

66

Page 67: Тестирование лекция 2 весна 2014

Спасибо за внимание

Спасибо за внимание!

Развенская Ксения,

[email protected]