SlideShare a Scribd company logo
1 of 58
Download to read offline
Лекция №2.
Критерии выбора тестов.

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

2
В предыдущей лекции
Техники тестирования
• На основе спецификации (Specification-based)
• На основе выбора входных данных/Доменное (Input Domain-based)
• На основе кода (Code-based)
• Поток управления (control-flow)
• Поток данных (data-flow)
• На основе модели (Model-based)
• Конечный автомат
• Таблица принятия решений
• Формальная спецификация
• На основе интуиции и опыта
• Ad-hoc
• Исследовательское
• Прогнозирование ошибок
• …
+ комбинации
3
План
1. Sanity-check
2. Тестовое покрытие
3. Критерии покрытия
4. Критерии выбора тестов

4
Sanity-check

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

5
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
Sanity-check

Набрал больше
8 баллов?
Круто!
7
Тестовое покрытие
Покрытие (coverage) – метрика, применяемая для оценки
полноты/качества тестов.
Зависит от выбранной техники тестирования и может
измеряться, например:
• В процентах покрытой функциональности (например, по
спецификации)
• В количестве покрытых строк кода (в % от общего кол-ва
строк)
• В процентах покрытых ветвей в графе потока управления
…
8
Критерии выбора тестов
Протестировать все – невозможно, даже 100% покрытие не
обеспечивает 100% тестирования.
Чтобы протестировать все, мы должны:
 Проверить все возможные значения каждой входной
переменной
 Проверить все возможные комбинации значений переменных
 Проверить каждую конфигурацию ПО и оборудования, а также
конфигурации серверов, которые мы не контролируем
 Протестировать взаимодействие с другими программами,
работающими параллельно с нашей
…
9
Почему нельзя
протестировать все
Проверить все допустимые значения каждой переменной
на входе. Реально ли?
Пример: функция, вычисляющая квадратный корень из
32-битного числа без знака.
Сколько значений мы должны проверить?

32
2

значений (4 294 967 296)

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

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

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

264=232*232 =232 * 6 минут
Проверка займет ~ 49 000 лет

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

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

Задача:
составить минимальный
набор тестов,
обеспечивающий
максимальное покрытие.
13
Критерии выбора тестов
Классы критериев
 Критерии черного ящика/Функциональные критерии
 Критерии белого ящика/Структурные критерии
 Мутационные критерии
 Стохастические критерии

14
Критерии черного ящика
 Классы эквивалентности
 Анализ граничных значений
 Попарное тестирование (pairwise)
 Таблицы принятия решений
 Диаграммы состояний

15
Разбиение на классы эквивалентности
(Equivalence partitioning)
Класс эквивалентности (КЭ) – множество входных данных
(домен), для которых, как мы ожидаем, поведение системы/модуля
будет одинаковым.
Все значения из одного КЭ эквивалентны с точки зрения
тестирования:
 Если один тест-кейс из КЭ обнаруживает баг, то все остальные
тоже его обнаружат
 Если один тест-кейс из КЭ не обнаруживает баг, то остальные
тоже не обнаружат
Гипотеза – кейсы, соответствующие некоторым КЭ,
обрабатываются некорректно.
Критерий покрытия – каждый класс должен быть представлен
как минимум одним тестом.
16
Классы эквивалентности
Пример
N – кол-во посещенных лекций по тестированию
 0 ≤ N ≤ 1– автомат, незачет
 2 ≤ N < 5 – сдает зачет
 N = 5 – автомат, зачет
Классы эквивалентности допустимых значений:
[0;1]
[2;5)
[5]
Тестовый набор:
(0, 3, 5)

17
Разбиение на классы
эквивалентности
Классы эквивалентности:
 Допустимые (позитивные тесты)
 Недопустимые (негативные тесты)
 КЭ окружения/конфигурации
КЭ недопустимых значений
(-∞, 0)

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

N – не число
Для значений из недопустимых КЭ ожидаем получить корректное
сообщение об ошибке.
Тестовый набор
(-10, 42, 2.7, ‘technopark’)

18
Разбиение на классы эквивалентности
Чуть более сложный пример.
Программа получает на вход строку. Результатом работы
является перевернутая строка.
КЭ:





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

Тестовый набор:
 <пустая строка>
 ‘а’
 ‘ререферер’
 ‘technopark1’
19
Разбиение на классы
эквивалентности
Возможная реализация (найдите ошибку):

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

20
Разбиение на классы
эквивалентности
КЭ окружения/конфигурации
Приложение голосового поиска для iPhone надо протестировать
на разных версиях iOs + 3G, WiFi, без интернета.
Возможные конфигурации также разбиваются на КЭ.
Если переменные независимые (как в случае с сетью и
версиями ОС) – необязательно проверять все комбинации,
достаточно проверить их попарно:
 iOs 6 + 3G
 iOs 5 + WiFi
 iOs 5 или 6 + откл. интернет
21
Анализ граничных значений
Что делаем?
В тестовый набор добавляем значения границ КЭ и значения,
лежащие непосредственно выше и ниже границ + в набор
добавляем предельные значения для используемых типов данных,
строки предельной и нулевой длины, етс.
Кроме того, желательно добавить значения, лежащие очень
близко к границам (∆=~0.0001).

22
Анализ граничных значений
КЭ допустимых значений:

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

 [0;1]
 [2;5)



(-∞, 0)



(5, +∞)

 [5]



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



N – не число

Добавим в тестовый набор значения из границ диапазона + добавим значения,
выходящие за тип 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’, <оч длинная строка>, <пустая строка>)

23
Анализ граничных значений
Какого рода ошибки обнаруживает:
 Выход за границы диапазона (найдите ошибку в коде ниже,
С++)

Hint: integer (32 bit) -2 147 483 648 .. 2 147 483 647
Подробно тут: http://en.wikipedia.org/wiki/Two%27s_complement
24
Пример из жизни

25
Анализ граничных значений
Какого рода ошибки обнаруживает:
 Проверка итераторов цикла

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

26
Анализ граничных значений
Граничное значение – необязательно является
границей диапазона допустимых значений входного
параметра, например:
 Максимально допустимый размер файла для отправки
по эл. почте.
 Сервер должен обрабатывать 100500 запросов в
секунду

27
Метод всех пар
Что делать, если входных параметров много и невозможно протестировать все
комбинации значений из разных КЭ?
Пример:
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
4
9
2
2

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

864
комбинации!
28
Метод всех пар
(Pairwise testing)
Критерий выбора тестов – проверка всех комбинаций значений
для любой пары входных параметров
Предпосылки:
 “Большинство ошибок проявляются либо при конкретных
значениях одного параметра, либо взаимным влиянием
значений двух параметров.” ("The Combinatorial Design
Approach to Automatic Test Generation" [Telcordia 1997])
 Оптимальный компромисс “трудозатраты vs. покрытие”
между полным перебором и проверкой по каждому
параметру независимо.

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

ОС

Браузер

Яндекс.Элементы

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

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

ОС

Браузер

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-ти
31
Метод всех пар
(Pairwise testing)
• Пример
• система с 75 параметрами yes/no
• Полный перебор:
• 275 = 37 778 931 862 957 161 709 568
• Метод всех пар:

28 !
32
Метод всех пар
Факторы, влияющие на результаты применения (и
применимость) метода:
• Степень зависимости между параметрами конкретной системы
• Распределение вероятности комбинаций значений параметров (5
существительных подряд!)
• Выбор параметров и их проверяемых значений

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

Правило 2

…

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

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

36
Таблицы решений
Пример
Таблица принятия решений для avia.mail.ru
Пр-ло
1

Пр-ло
2

Пр-ло 3

Пр-ло 4

Пр-ло 5

Пр-ло 6

Пр-ло 7

Пр-ло 8

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

Да

Да

Нет

Нет

Да

Да

Нет

Нет

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

Да

Да

Да

Да

Нет

Нет

Нет

Нет

Туда-обратно

Да

Нет

Да

Нет

Да

Нет

Да

Нет

ищем

ищем

ворнинг

ворнинг

ворнинг

ворнинг

ворнинг

ворнинг

Условия

Действия
Действие 1

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

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

На основе:
 Потока управления
 Потока данных

39
Control-flow diagram
Граф потока управления - множество всех возможных путей
исполнения программы, представленное в виде графа (Википедия).
Критерии покрытия:
 Покрытие ветвей потока
управления
 Покрытие путей потока
управления

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

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

x == -13
x=0
41
Control-flow diagram
Покрытие всех путей графа потока управления (комбинация условий)
Тестовый набор удовлетворяет критерию покрытия путей потока
управления, если его выполнение хотя бы один раз проходит по каждому
возможному пути в графе потока управления ведущему от точки входа
до точки завершения работы.

x>17
x = 17 - x

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

x == -13
x=0
42
Data-flow diagram
Граф потока данных – это граф, на котором показано
движение значений данных от их источников через
преобразующие их процессы к потребителям в других
объектах.
Чтобы построить граф потока данных, сначала лучше
построить граф потока управления.

43
Data-flow diagram
Инструкция, в которой используется некоторая переменная, называется
ее использованием (use). Инструкция, в которой определяется новое
значение для некоторой переменной, называется ее определением
(definition).
du-путь — путь в графе потока управления, начинающийся с вершины,
соответствующей инструкции, определяющей значение переменной, и
заканчивающийся вершиной, соответствующей инструкции ее
использования, и не содержащий вершин для инструкций определения
этой переменной, кроме первой.
Метрика покрытия использований (all-uses coverage) — доля
покрытых использований всех переменных по отношению к количеству
достижимых использований.
Метрика покрытия du-путей (du-path coverage) — доля покрытых duпутей для всех переменных программы по отношению к достижимым
du-путям.

44
Data-flow diagram
Вычисление НОД
использование

определение

45
Data-flow diagram
Определение b

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

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

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

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

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

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

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

49
Code-coverage
Unit-testing
100% покрытие инструкций и ветвей – необходимый, но не достаточный
критерий полноты тестирования.
Пример:

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

Division by Zero.
50
Резюме

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

51
Мутационные критерии
Мутация – применение к исходному коду программы 1 оператора
мутации.
Операторы мутации:
- удаление определенной инструкции
- добавление новой инструкции
- замена переменных в выражениях на другие переменные того же
типа или на константные выражения того же типа
- замена операторов арифметических действий +, –, *, / друг на друга
- замена логических операций друг на друга
- …
Программа, получаемая из тестируемой применением одного оператора
мутации, называется мутантом.
Метрика полноты тестов – доля обнаруженных мутантов.
Если все мутанты обнаружены – программа корректна и тесты полны.
52
Критерии стохастического
тестирования
Тестовые данные - множество случайных величин.
Сравниваем распределение полученных результатов с
ожидаемыми распределениями случайных величин –
проверяем статистическую гипотезу.

53
Проверка X2-критерия
Есть генератор псевдослучайных последовательностей.
Проверяем гипотезу о равномерности распределения.
Проводим 60 испытаний
Пусть вектор наблюдаемых частот {Oi} равен (9, 11, 8, 12, 7, 13).
Итак, нам надо сравнить два вектора частот {Ei} и {Oi}.
Вектор средних частот {Ei} - ?

X 2Pearson = S((Oi-Ei)/Ei1/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

54
Проверка X2-критерия
Какие значения хи-квадрат следует считать слишком
малыми и слишком большими?
X 2Pearson = 2.8
Полученное значение сравнивают со значением
X2крит: большая часть распределения заключена в
пределах от X2α,5 до X21-α,5 , где n-кол-во степеней
свободы. В нашем случае n= 6-1=5 и
X2α,5 = 1,1455, X21-α,5 = 11,0705 при уровне значимости 5%
=> Принимаем гипотезу, тк 2.8 < X21-α,5 и > X2α,5
55
Проверка X2-критерия
Пример, когда бы нам пришлось отвергнуть гипотезу:
Пусть вектор наблюдаемых частот {Oi} равен (5, 15, 6, 14, 4, 16).
X 2Pearson = 15.4

⇒15.4 > 11,0704
⇒ отвергаем H0
Вопрос: о чем говорит X 2Pearson < X2α,5 ?

56
Материалы
1.
2.
3.
4.
5.
6.
7.

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

59
Спасибо за внимание!
Спасибо за внимание
Развенская Ксения,
k.razvenskaya@corp.mail.ru

More Related Content

What's hot

Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокTatyanazaxarova
 
Практические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестированияПрактические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестированияAlexey Kachalin
 
технология и отладка по (47)
технология и отладка по (47)технология и отладка по (47)
технология и отладка по (47)romachka_pole
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16guest1ba51d
 
6 лекция. тестирование производительности
 6 лекция. тестирование производительности 6 лекция. тестирование производительности
6 лекция. тестирование производительностиvyacheslavmaslov
 
Анастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовАнастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовYandex
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеElias Fofanov
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisIosif Itkin
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Elias Fofanov
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...ITMO University
 
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММITMO University
 
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)[JAM 1.2] Testing in Android (Dzmitry Ivashnev)
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)Evgeny Kaziak
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1sgdread
 
Testing of a Risk Control System Implementation for High-Load Exchange and Br...
Testing of a Risk Control System Implementation for High-Load Exchange and Br...Testing of a Risk Control System Implementation for High-Load Exchange and Br...
Testing of a Risk Control System Implementation for High-Load Exchange and Br...Iosif Itkin
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияSQALab
 
Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRAMBLER&Co
 

What's hot (20)

лекция3 QA
лекция3 QAлекция3 QA
лекция3 QA
 
QA Лекция2
QA Лекция2QA Лекция2
QA Лекция2
 
лекция4 qa
лекция4 qaлекция4 qa
лекция4 qa
 
Урок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибокУрок 7. Проблемы выявления 64-битных ошибок
Урок 7. Проблемы выявления 64-битных ошибок
 
Практические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестированияПрактические аспекты нагрузочного тестирования
Практические аспекты нагрузочного тестирования
 
технология и отладка по (47)
технология и отладка по (47)технология и отладка по (47)
технология и отладка по (47)
 
Predzazhita 2009 v16
Predzazhita 2009 v16Predzazhita 2009 v16
Predzazhita 2009 v16
 
6 лекция. тестирование производительности
 6 лекция. тестирование производительности 6 лекция. тестирование производительности
6 лекция. тестирование производительности
 
Анастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестовАнастасия Бордонос - Проектирование тестов
Анастасия Бордонос - Проектирование тестов
 
Андрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзеАндрей Зайцев - TDD в кровавом энтерпрайзе
Андрей Зайцев - TDD в кровавом энтерпрайзе
 
TMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program AnalysisTMPA-2013 Itsykson: Java Program Analysis
TMPA-2013 Itsykson: Java Program Analysis
 
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#Фофанов Илья - Лучшие практики проектирования и реализации API на C#
Фофанов Илья - Лучшие практики проектирования и реализации API на C#
 
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
СОВМЕСТНОЕ ПРИМЕНЕНИЕ КОНТРАКТОВ И ВЕРИФИКАЦИИ ДЛЯ ПОВЫШЕНИЯ КАЧЕСТВА АВТОМАТ...
 
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ К ГЕНЕРАЦИИ ТЕСТОВ ДЛЯ АВТОМАТНЫХ ПРОГРАММ
 
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)[JAM 1.2] Testing in Android (Dzmitry Ivashnev)
[JAM 1.2] Testing in Android (Dzmitry Ivashnev)
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Testing of a Risk Control System Implementation for High-Load Exchange and Br...
Testing of a Risk Control System Implementation for High-Load Exchange and Br...Testing of a Risk Control System Implementation for High-Load Exchange and Br...
Testing of a Risk Control System Implementation for High-Load Exchange and Br...
 
Tpo 06
Tpo 06Tpo 06
Tpo 06
 
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполненияАвтотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
 
Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOS
 

Viewers also liked

Тестирование ПО (2016)
Тестирование ПО (2016)Тестирование ПО (2016)
Тестирование ПО (2016)Marat Akhin
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design TechnicsISsoft
 
Техники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияТехники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияDmytro Protsenko
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решенийSQALab
 
Domain-тестирование
Domain-тестированиеDomain-тестирование
Domain-тестированиеSPB SQA Group
 
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...SQALab
 

Viewers also liked (9)

TestDesignReloaded(Ru)
TestDesignReloaded(Ru)TestDesignReloaded(Ru)
TestDesignReloaded(Ru)
 
Экспертные системы: лекция №2
Экспертные системы: лекция №2Экспертные системы: лекция №2
Экспертные системы: лекция №2
 
Тестирование ПО (2016)
Тестирование ПО (2016)Тестирование ПО (2016)
Тестирование ПО (2016)
 
Test Design Technics
Test Design TechnicsTest Design Technics
Test Design Technics
 
Техники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестированияТехники тест дизайна для черноящичного тестирования
Техники тест дизайна для черноящичного тестирования
 
Таблицы принятия решений
Таблицы принятия решенийТаблицы принятия решений
Таблицы принятия решений
 
Black box testing
Black box testingBlack box testing
Black box testing
 
Domain-тестирование
Domain-тестированиеDomain-тестирование
Domain-тестирование
 
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
Мастер Тест План / Тестовая Стратегия: Что это? Зачем? Как его создать?-От А ...
 

Similar to Тестирование осень 2013 лекция 2

Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийSQALab
 
3 лекция. презентация
3 лекция. презентация3 лекция. презентация
3 лекция. презентацияvyacheslavmaslov
 
Надежный тест-дизайн
Надежный тест-дизайнНадежный тест-дизайн
Надежный тест-дизайнSQALab
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиковUladzimir Kryvenka
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПОseleznev_stas
 
Кутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных картКутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных картqasib
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаIgor Lyubin
 
Тимур Шевляков
Тимур ШевляковТимур Шевляков
Тимур ШевляковCodeFest
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыcorehard_by
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Tatyanazaxarova
 
Статический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложенийСтатический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложенийTatyanazaxarova
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )Mobile Developer Day
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )Mobile Developer Day
 

Similar to Тестирование осень 2013 лекция 2 (20)

Использование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложенийИспользование комбинаторного тестирования для мобильных приложений
Использование комбинаторного тестирования для мобильных приложений
 
3 лекция. презентация
3 лекция. презентация3 лекция. презентация
3 лекция. презентация
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Надежный тест-дизайн
Надежный тест-дизайнНадежный тест-дизайн
Надежный тест-дизайн
 
Викторина для тестировщиков
Викторина для тестировщиковВикторина для тестировщиков
Викторина для тестировщиков
 
Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...
Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...
Багдатов Методы автоматического выявления плагиата в текстах компьютерных про...
 
Тестирование ПО
Тестирование ПОТестирование ПО
Тестирование ПО
 
10M tests per day
10M tests per day10M tests per day
10M tests per day
 
TAP
TAPTAP
TAP
 
Кутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных картКутумов - Автоматизация тестирования транспортных карт
Кутумов - Автоматизация тестирования транспортных карт
 
GUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test Studio
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Тимур Шевляков
Тимур ШевляковТимур Шевляков
Тимур Шевляков
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
План тестирования
План тестированияПлан тестирования
План тестирования
 
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
Поиск ловушек в Си/Си++ коде при переносе приложений под 64-битную версию Win...
 
Статический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложенийСтатический анализ кода для верификации 64-битных приложений
Статический анализ кода для верификации 64-битных приложений
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
гибкий подход к тестированию ‘умных’ электронных систем.( а. вдовин, Auriga )
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

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

  • 1. Лекция №2. Критерии выбора тестов. Развенская Ксения
  • 2. В предыдущей лекции  Качество – совокупность характеристик, определяющих насколько продукт хорош с точки зрения заинтересованных лиц.  Тестирование - техническое исследование, которое проводится с целью предоставить заинтересованным лицам информацию о качестве тестируемого продукта.  Тестирование на стадии разработки – сокращает время и риски. 2
  • 3. В предыдущей лекции Техники тестирования • На основе спецификации (Specification-based) • На основе выбора входных данных/Доменное (Input Domain-based) • На основе кода (Code-based) • Поток управления (control-flow) • Поток данных (data-flow) • На основе модели (Model-based) • Конечный автомат • Таблица принятия решений • Формальная спецификация • На основе интуиции и опыта • Ad-hoc • Исследовательское • Прогнозирование ошибок • … + комбинации 3
  • 4. План 1. Sanity-check 2. Тестовое покрытие 3. Критерии покрытия 4. Критерии выбора тестов 4
  • 5. Sanity-check Программа принимает на вход 3 целых числа. Эти значения интерпретируются как длины сторон треугольника. Программа должна вывести сообщение о том, каким является заданный треугольник: разносторонним, равнобедренным или равносторонним. 5
  • 6. 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
  • 8. Тестовое покрытие Покрытие (coverage) – метрика, применяемая для оценки полноты/качества тестов. Зависит от выбранной техники тестирования и может измеряться, например: • В процентах покрытой функциональности (например, по спецификации) • В количестве покрытых строк кода (в % от общего кол-ва строк) • В процентах покрытых ветвей в графе потока управления … 8
  • 9. Критерии выбора тестов Протестировать все – невозможно, даже 100% покрытие не обеспечивает 100% тестирования. Чтобы протестировать все, мы должны:  Проверить все возможные значения каждой входной переменной  Проверить все возможные комбинации значений переменных  Проверить каждую конфигурацию ПО и оборудования, а также конфигурации серверов, которые мы не контролируем  Протестировать взаимодействие с другими программами, работающими параллельно с нашей … 9
  • 10. Почему нельзя протестировать все Проверить все допустимые значения каждой переменной на входе. Реально ли? Пример: функция, вычисляющая квадратный корень из 32-битного числа без знака. Сколько значений мы должны проверить? 32 2 значений (4 294 967 296) У Дага Хоффмана автоматизированная проверка всех валидных значений заняла 6 минут. 10
  • 11. Почему невозможно протестировать все А если число 64-битное? 264=232*232 =232 * 6 минут Проверка займет ~ 49 000 лет 11
  • 13. Критерии выбора тестов Задача: составить минимальный набор тестов, обеспечивающий максимальное покрытие. 13
  • 14. Критерии выбора тестов Классы критериев  Критерии черного ящика/Функциональные критерии  Критерии белого ящика/Структурные критерии  Мутационные критерии  Стохастические критерии 14
  • 15. Критерии черного ящика  Классы эквивалентности  Анализ граничных значений  Попарное тестирование (pairwise)  Таблицы принятия решений  Диаграммы состояний 15
  • 16. Разбиение на классы эквивалентности (Equivalence partitioning) Класс эквивалентности (КЭ) – множество входных данных (домен), для которых, как мы ожидаем, поведение системы/модуля будет одинаковым. Все значения из одного КЭ эквивалентны с точки зрения тестирования:  Если один тест-кейс из КЭ обнаруживает баг, то все остальные тоже его обнаружат  Если один тест-кейс из КЭ не обнаруживает баг, то остальные тоже не обнаружат Гипотеза – кейсы, соответствующие некоторым КЭ, обрабатываются некорректно. Критерий покрытия – каждый класс должен быть представлен как минимум одним тестом. 16
  • 17. Классы эквивалентности Пример N – кол-во посещенных лекций по тестированию  0 ≤ N ≤ 1– автомат, незачет  2 ≤ N < 5 – сдает зачет  N = 5 – автомат, зачет Классы эквивалентности допустимых значений: [0;1] [2;5) [5] Тестовый набор: (0, 3, 5) 17
  • 18. Разбиение на классы эквивалентности Классы эквивалентности:  Допустимые (позитивные тесты)  Недопустимые (негативные тесты)  КЭ окружения/конфигурации КЭ недопустимых значений (-∞, 0) (5, +∞) N - из множества вещественных чисел N – не число Для значений из недопустимых КЭ ожидаем получить корректное сообщение об ошибке. Тестовый набор (-10, 42, 2.7, ‘technopark’) 18
  • 19. Разбиение на классы эквивалентности Чуть более сложный пример. Программа получает на вход строку. Результатом работы является перевернутая строка. КЭ:     Пустая строка Длина == 1 символ >1 символа палиндром >1 символа не палиндром Тестовый набор:  <пустая строка>  ‘а’  ‘ререферер’  ‘technopark1’ 19
  • 20. Разбиение на классы эквивалентности Возможная реализация (найдите ошибку): Строки четной и нечетной длины – разные КЭ! 20
  • 21. Разбиение на классы эквивалентности КЭ окружения/конфигурации Приложение голосового поиска для iPhone надо протестировать на разных версиях iOs + 3G, WiFi, без интернета. Возможные конфигурации также разбиваются на КЭ. Если переменные независимые (как в случае с сетью и версиями ОС) – необязательно проверять все комбинации, достаточно проверить их попарно:  iOs 6 + 3G  iOs 5 + WiFi  iOs 5 или 6 + откл. интернет 21
  • 22. Анализ граничных значений Что делаем? В тестовый набор добавляем значения границ КЭ и значения, лежащие непосредственно выше и ниже границ + в набор добавляем предельные значения для используемых типов данных, строки предельной и нулевой длины, етс. Кроме того, желательно добавить значения, лежащие очень близко к границам (∆=~0.0001). 22
  • 23. Анализ граничных значений КЭ допустимых значений: КЭ недопустимых значений:  [0;1]  [2;5)  (-∞, 0)  (5, +∞)  [5]  N - из класса рациональных чисел  N – не число Добавим в тестовый набор значения из границ диапазона + добавим значения, выходящие за тип 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’, <оч длинная строка>, <пустая строка>) 23
  • 24. Анализ граничных значений Какого рода ошибки обнаруживает:  Выход за границы диапазона (найдите ошибку в коде ниже, С++) Hint: integer (32 bit) -2 147 483 648 .. 2 147 483 647 Подробно тут: http://en.wikipedia.org/wiki/Two%27s_complement 24
  • 26. Анализ граничных значений Какого рода ошибки обнаруживает:  Проверка итераторов цикла Ошибки в операциях сравнения (“>” вместо “>=” и тд) 26
  • 27. Анализ граничных значений Граничное значение – необязательно является границей диапазона допустимых значений входного параметра, например:  Максимально допустимый размер файла для отправки по эл. почте.  Сервер должен обрабатывать 100500 запросов в секунду 27
  • 28. Метод всех пар Что делать, если входных параметров много и невозможно протестировать все комбинации значений из разных КЭ? Пример: 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 4 9 2 2 ОС конфигурации UAC конфигурации антивирусов браузеров конфигурации ПО от конкурентов версии Спутника 864 комбинации! 28
  • 29. Метод всех пар (Pairwise testing) Критерий выбора тестов – проверка всех комбинаций значений для любой пары входных параметров Предпосылки:  “Большинство ошибок проявляются либо при конкретных значениях одного параметра, либо взаимным влиянием значений двух параметров.” ("The Combinatorial Design Approach to Automatic Test Generation" [Telcordia 1997])  Оптимальный компромисс “трудозатраты vs. покрытие” между полным перебором и проверкой по каждому параметру независимо. 29
  • 30. Метод всех пар (Pairwise testing) Номер ОС Браузер Яндекс.Элементы 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 Нет 30
  • 31. Метод всех пар (Pairwise testing) Номер ОС Браузер 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-ти 31
  • 32. Метод всех пар (Pairwise testing) • Пример • система с 75 параметрами yes/no • Полный перебор: • 275 = 37 778 931 862 957 161 709 568 • Метод всех пар: 28 ! 32
  • 33.
  • 34. Метод всех пар Факторы, влияющие на результаты применения (и применимость) метода: • Степень зависимости между параметрами конкретной системы • Распределение вероятности комбинаций значений параметров (5 существительных подряд!) • Выбор параметров и их проверяемых значений 34
  • 35. Таблица принятия решений Таблица принятия решений - таблица, описывающая логику работы системы для различных комбинаций начальных условий. Правило 1 Условия Условие 1 Условие 2 … Действия Действие 1 Действие 2 … Правило 2 … Критерий покрытия – как минимум один тест на столбец. Гипотеза – при некоторой комбинации условий, может выполниться неправильное действие. Или при некоторой комбинации условий не выполнится необходимое действие. 35
  • 37. Таблицы решений Пример Таблица принятия решений для avia.mail.ru Пр-ло 1 Пр-ло 2 Пр-ло 3 Пр-ло 4 Пр-ло 5 Пр-ло 6 Пр-ло 7 Пр-ло 8 Выбран город откуда Да Да Нет Нет Да Да Нет Нет Выбран город куда Да Да Да Да Нет Нет Нет Нет Туда-обратно Да Нет Да Нет Да Нет Да Нет ищем ищем ворнинг ворнинг ворнинг ворнинг ворнинг ворнинг Условия Действия Действие 1 37
  • 38. Диаграмма состояний Диаграмма состояний – ориентированный граф, в котором вершины обозначают состояния, а дуги показывают переходы между 2мя состояниями. Критерий (самый слабый) – покрытие всех состояний и всех переходов. 38
  • 39. Методы белого ящика На основе:  Потока управления  Потока данных 39
  • 40. Control-flow diagram Граф потока управления - множество всех возможных путей исполнения программы, представленное в виде графа (Википедия). Критерии покрытия:  Покрытие ветвей потока управления  Покрытие путей потока управления 40
  • 41. Control-flow diagram Покрытие всех ветвей графа потока управления Тестовый набор удовлетворяет критерию покрытия ветвей потока управления, если при выполнении этого тестового набора управление хотя бы один раз проходит по каждому ребру графа потока управления. x>17 x = 17 - x Тестовый набор (входные данные): (0,30) x == -13 x=0 41
  • 42. Control-flow diagram Покрытие всех путей графа потока управления (комбинация условий) Тестовый набор удовлетворяет критерию покрытия путей потока управления, если его выполнение хотя бы один раз проходит по каждому возможному пути в графе потока управления ведущему от точки входа до точки завершения работы. x>17 x = 17 - x Тестовый набор: (0, 30) (-13, 31) x == -13 x=0 42
  • 43. Data-flow diagram Граф потока данных – это граф, на котором показано движение значений данных от их источников через преобразующие их процессы к потребителям в других объектах. Чтобы построить граф потока данных, сначала лучше построить граф потока управления. 43
  • 44. Data-flow diagram Инструкция, в которой используется некоторая переменная, называется ее использованием (use). Инструкция, в которой определяется новое значение для некоторой переменной, называется ее определением (definition). du-путь — путь в графе потока управления, начинающийся с вершины, соответствующей инструкции, определяющей значение переменной, и заканчивающийся вершиной, соответствующей инструкции ее использования, и не содержащий вершин для инструкций определения этой переменной, кроме первой. Метрика покрытия использований (all-uses coverage) — доля покрытых использований всех переменных по отношению к количеству достижимых использований. Метрика покрытия du-путей (du-path coverage) — доля покрытых duпутей для всех переменных программы по отношению к достижимым du-путям. 44
  • 46. Data-flow diagram Определение b Пример du-путей для переменной a: 0-3, 0-6, 0-7, 0-7’… Использование b 46
  • 47. Code-coverage Unit Testing  Покрытие операторов (== строк кода)  Покрытие ветвей IEEE Unit Testing Standart: покрыто 100% операторов и 100% ветвей. 47
  • 48. Покрытие операторов Покрытие 100% инструкции (операторов) == покрытие всех строк кода Тестовый набор: a==6, b==‘Hello’ 48
  • 49. Покрытие ветвей Покрытие 100% ветвей: Тестовый набор: (a==6, b==‘Hello’) (a==4, b==‘Goodbye’) 49
  • 50. Code-coverage Unit-testing 100% покрытие инструкций и ветвей – необходимый, но не достаточный критерий полноты тестирования. Пример: Любые 2 протестированных значения a и b обеспечивают 100% покрытие кода. При этом не обнаруживает ошибку. Division by Zero. 50
  • 52. Мутационные критерии Мутация – применение к исходному коду программы 1 оператора мутации. Операторы мутации: - удаление определенной инструкции - добавление новой инструкции - замена переменных в выражениях на другие переменные того же типа или на константные выражения того же типа - замена операторов арифметических действий +, –, *, / друг на друга - замена логических операций друг на друга - … Программа, получаемая из тестируемой применением одного оператора мутации, называется мутантом. Метрика полноты тестов – доля обнаруженных мутантов. Если все мутанты обнаружены – программа корректна и тесты полны. 52
  • 53. Критерии стохастического тестирования Тестовые данные - множество случайных величин. Сравниваем распределение полученных результатов с ожидаемыми распределениями случайных величин – проверяем статистическую гипотезу. 53
  • 54. Проверка X2-критерия Есть генератор псевдослучайных последовательностей. Проверяем гипотезу о равномерности распределения. Проводим 60 испытаний Пусть вектор наблюдаемых частот {Oi} равен (9, 11, 8, 12, 7, 13). Итак, нам надо сравнить два вектора частот {Ei} и {Oi}. Вектор средних частот {Ei} - ? X 2Pearson = S((Oi-Ei)/Ei1/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 54
  • 55. Проверка X2-критерия Какие значения хи-квадрат следует считать слишком малыми и слишком большими? X 2Pearson = 2.8 Полученное значение сравнивают со значением X2крит: большая часть распределения заключена в пределах от X2α,5 до X21-α,5 , где n-кол-во степеней свободы. В нашем случае n= 6-1=5 и X2α,5 = 1,1455, X21-α,5 = 11,0705 при уровне значимости 5% => Принимаем гипотезу, тк 2.8 < X21-α,5 и > X2α,5 55
  • 56. Проверка X2-критерия Пример, когда бы нам пришлось отвергнуть гипотезу: Пусть вектор наблюдаемых частот {Oi} равен (5, 15, 6, 14, 4, 16). X 2Pearson = 15.4 ⇒15.4 > 11,0704 ⇒ отвергаем H0 Вопрос: о чем говорит X 2Pearson < X2α,5 ? 56
  • 57. Материалы 1. 2. 3. 4. 5. 6. 7. Lee Copeland "A Practitioner'S Guide To Software Test Design“ Rex Black «Advanced Software Testing», Vol.3 Борис Бейзер «Тестирование черного ящика» http://www.uchi-it.ru/7/10/soder.html http://www.pairwise.org/tools.asp http://www.developsense.com/pairwiseTesting.html http://www.intuit.ru/department/se/testing/3/2.html 59
  • 58. Спасибо за внимание! Спасибо за внимание Развенская Ксения, k.razvenskaya@corp.mail.ru