2. • 1996-2002: разработчик
• 1999: получил Excellence in
Computer Science Award
• 2002: пришел в тестирование
• 2002-2013: самолеты-трейдинг-
видео-банки…
• 2007: книга по тестированию,
издана при поддержке
• 2008: Кандидат технических наук
• с 2012: Тест-менеджер
Кто я такой?
3. Про что будем говорить
• Зачем нужна математика в тестировании
• Как ее применять на практике
– очевидные вещи
– не очень очевидные вещи
• Чему и где учиться
• Как уйти в науку
(и надо ли это делать)
5. Пишем тесты:
зачем нам математика?
«Математику уже затем учить
следует, что она ум в порядок
приводит» (с) Ломоносов
При помощи математики и
доброго слова можно писать тесты
значительно лучше, чем только
при помощи одного доброго слова
8. Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
9. Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
10. Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
11. Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
• Это слишком сложно для понимания
12. Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
• Это слишком сложно для понимания
факультатив по матлогике для 5 класса –
реальность. Чем вы-то хуже?
13. Тестировщики думают как
математики, даже не зная об этом
Операции с формулами Алгоритмы
Отражение действительности Сложность вычислений
Поведение функций
Изменяющиеся
состояния системы
Сведение к простому случаю
Операции с бесконечностью
Обобщение
Абстрактные рассуждения
Использование структур данных
Д.Э. Кнут
Математическое
мышление
Алгоритмическое
мышление
14. Все еще не убеждены?
Топологическое
мышление
целостность и связанность логических
операций
Порядковое
мышление
точное следование логической
цепочке
Алгебраическое
мышление
структурное восприятие объекта
Метрическое
мышление
точное математическое значение
Проективное
мышление
важны не характеристики, а степень
оптимальности и полезности
И.Я. Каплунович
21. Графы и конечные автоматы:
системы с внутренним состоянием
Filled
Sending
Rejected Acked
Filling
Replaced
Replacing
New Execute 1
MKTack
Modified
Классическое покрытие: проверяем все
состояния системы, все переходы и все пути.
Это очень долго, сложно и дорого
22. Графы и конечные автоматы:
системы с внутренним состоянием
Execute 1
Execute 2Amend 1 Amend 2
Amend 3
Fills
Last Fill
Modified
MKT
reject
MKT ack
Смотрим на задачу коммивояжера и видим
фигу
23. Графы и конечные автоматы:
системы с внутренним состоянием
Execute 1
Execute 2Amend 1 Amend 2
Amend 3
Fills
Last Fill
Modified
MKT
reject
MKT ack
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Строим граф,
вершины
которого –
дуги
исходного
графа
24. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
MrE1
Покрываем
граф….
25. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1
Все еще
покрываем граф…
26. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
LF
E1 A1 M E2 Ma F A3
E2
MaA2ME2MaF
E1
Покрыли!!!
27. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
LF
E1 A1 M E2 Ma F A3
E2
MaA2ME2MaF
E1
Получилось как-то
не очень….
28. Графы и конечные автоматы:
системы с внутренним состоянием
E
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1 A1 M E2 Ma F LF
E1
Отрезали кусочек
последовательности
де Бройна
29. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1 A1 M E2 Ma F LF
E1
E1 Ma A2 M E2 Ma F LF
И еще кусочек…
30. Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1 A1 M E2 Ma F LF
E1
E1 Ma A2 M E2 Ma F LF
E1 Ma F A3 E2 Ma F LF
И еще кусочек…
31. Графы и конечные автоматы:
системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1 A1 M E2 Ma F LF
E1
E1 Ma A2 M E2 Ma F LF
E1 Ma F A3 E2 Ma F LF
Что в результате?
- Короткие тесты, которые
можно параллелить
- Можно выкидывать
малоприоритетные тесты
- Метод работает, даже
если неизвестна
специфика предметной
области
32. Графы и конечные автоматы:
системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Что в результате?
- Короткие тесты, которые
можно параллелить
- Можно выкидывать
малоприоритетные тесты
- Метод работает, даже
если неизвестна
специфика предметной
области
Ни одного
трейдера не
пострадало
34. Статистика: сколько тестов
в каждом классе эквивалентности?
• Достаточно одного теста в одном классе
эквивалентности – верно, если мы правильно
выделили классы
• Кроме явных классов
есть еще и неявные,
которые могут быть не
очевидны из требований
Полный перебор?
А может не надо?
35. • Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Mб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Mб
Статистика: сколько тестов
в каждом классе эквивалентности?
36. • Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Мб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб
• Началась эксплуатация. WTF? Короткие строки
сохраняются гораздо быстрее
Статистика: сколько тестов
в каждом классе эквивалентности?
37. • Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Мб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб
• Началась эксплуатация. WTF? Короткие строки
сохраняются гораздо быстрее
Статистика: сколько тестов
в каждом классе эквивалентности?
38. Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 50779.11)
1. Предположение о
распределении
проблемных мест
2. Прогон тестов и
регистрация
аномалий
3. Модификация
распределения
4. Фиксация новых
классов
эквивалентности 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195
Высокая степень уверенности
в том, что здесь разные классы
Низкая степень уверенности
в том, что здесь разные классы
39. Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 50779.11)
1. Предположение о
распределении
проблемных мест
2. Прогон тестов и
регистрация
аномалий
3. Модификация
распределения
4. Фиксация новых
классов
эквивалентности 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195
Аномальная зона (почти угадали)
Аномальная зона (не угадали)
40. 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195
Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 50779.11)
1. Предположение о
распределении
проблемных мест
2. Прогон тестов и
регистрация
аномалий
3. Модификация
распределения
4. Фиксация новых
классов
эквивалентности
Модифицировали
распределение
41. 5 15 25 35 45 55 65 75 85 95 105 115 125 135 145 155 165 175 185 195
Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 50779.11)
1. Предположение о
распределении
проблемных мест
2. Прогон тестов и
регистрация
аномалий
3. Модификация
распределения
4. Фиксация новых
классов
эквивалентности
Получили новые
границы и классы
эквивалентности
43. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Основная идея pair-wise – вместо того, чтобы
тестировать все возможные комбинации
входных значений, берем пары значений и
проверяем все сочетания пар.
Работает? Да!
44. Опять статистика: а всегда ли
достаточно pair-wise тестирования
На простых системах?
Работает!
ROCK-PAPER-SCISSORS
45. Опять статистика: а всегда ли
достаточно pair-wise тестирования
А если посложнее?
Работает?
ROCK-PAPER-SCISSORS
LIZARD-SPOCK
46. Опять статистика: а всегда ли
достаточно pair-wise тестирования
А если еще сложнее?
ROCK-PAPER-SCISSORS
LIZARD-SPOCK
SPIDERMAN-BATMAN
WIZARD-GLOCK
47. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Исследования, проведенные NIST в проекте
ACTS:
Pairwise находит 65-97% ошибок
3-way находит 89-99% ошибок
4-way находит 96-100% ошибок
5-way находит 96-100% ошибок
6-way находит 100% ошибок
(во всех исследованных случаях)
48. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Сколько дополнительной работы делать?
Например. Пусть
2 параметра с 3 значениями
3 параметра с 2 значениями
Pairwise 10 тестов с 14% покрытием
3-way 18 тестов с 25% покрытием
4-way 36 тестов с 50% покрытием
5-way 72 теста с 100% покрытием
49. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Обычная основа для pair-wise и k-way
Обычно используем ортогональные матрицы:
OA(N,vk,t), где
N – количество рядов
k – количество колонок
v – количество различных значений в колонке
t – мощность (t=2 – pairwise)
В OA каждый набор из t колонок включает все t-
кортежи одинаковое количество раз
50. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Халява, приди!
NIST предлагает использовать покрывающие
матрицы: CA(N,vk,t), где
N – количество рядов
k – количество колонок
v – количество различных значений в колонке
t – мощность (t=2 – pairwise)
В CA каждый набор из t колонок включает все t-
кортежи хотя бы один раз
51. Опять статистика: а всегда ли
достаточно pair-wise тестирования
Что в результате?
Меньше комбинаций, а значит можно
увеличить размерность
кортежей, и, например, делать 3-way вместо
pairwise меньшими усилиями
Куда посмотреть: NIST ACTS
57. Чему и как учиться: ACM
• Graduate Software Engineering 2009
(GSwE2009):
Выпускник должен иметь базовые математические
навыки для того и уметь мыслить аналитически:
– Статистика
– Логика
– Исчисления
– Дискретная математика
– Формальные языки
– Математическая экономика
58. Чему и как учиться: IEEE
• IEEE Software Engineering Body of Knowledge v3
(SWEBOKv3):
– Множества, отношения, функции
– Логика: пропозициональная логика, логика
предикатов
– Теория доказательств
– Счетность
– Графы и деревья
– Дискретная вероятность
– Конечные автоматы, грамматики
– Погрешности
– Теория чисел
– Алгебраические структуры
59. Чему и как учиться: сами
• Сертификация
– Quality Assurance Institute (CAST, CSTE, CSTM)
• Конференции
– IEEE International Conference on Software
Testing, Verification, and Validation (ICST)
– International Symposium in Software Testing and
Analysis (ISSTA)
• Читать-читать-читать-читать
– http://www.arxiv.org
– http://scholar.google.com
61. • Фан и лулзы
• Прокачка мозгов
• Кругозор
• Последователи
• Уважение
• Собственная секретная
лаборатория
Путь в науку:
а зачем?
62. • Генерация тестовых данных
• Тестирование безопасности
• Комбинаторные методы тестирования
• Преобразование моделей тестирования
• Поисковые методы тестирования
• Модели предсказания поведения систем
Путь в науку:
направления исследований
63. • Высшее образование
• Второе высшее образование
• Кандидатская диссертация
• Пост-док за рубежом
• Докторская
• Независимые исследования
Путь в науку:
разные пути
64. • ГУ-ВШЭ – Авдошин С.М.
• СПбГУ – Терехов А.Н.
• МАИ – Синицын С.В.
• МГУ – Кулямин В.В.
… и многие-многие другие
Путь в науку:
кто этим занимается?
65. • ГУ-ВШЭ – Авдошин С.М.
• СПбГУ – Терехов А.Н.
• МАИ – Синицын С.В.
• МГУ – Кулямин В.В.
… и многие-многие другие
Ну и ко мне приходите…
( к.т.н., доцент, аспиранты есть,
учу в МИФИ и ВШЭ, иногда на Физтехе,
из науки пока не ухожу – не дождетесь )
Путь в науку:
кто этим занимается?
66. Ссылки
• GSwE2009: http://www.gswe2009.org
• SWEBOKv3: http://www.computer.org/portal/web/swebok/home
• Quality Assurance Institute: http://www.qaiusa.com
• ACTS: http://csrc.nist.gov/acts
• List of conferences: http://www.cs.ru.nl/~tretmans/TestConferences.html
• http://www.sciencedirect.com
• http://www.arxiv.org
• http://scholar.google.com
• Отдельное спасибо:
Big Bang Theory, Futurama, XKCD