Математика и
тестирование
Никита Налютин
• 1996-2002: разработчик
• 1999: получил Excellence in
Computer Science Award
• 2002: пришел в тестирование
• 2002-2013: самолеты-трейдинг-
видео-банки…
• 2007: книга по тестированию,
издана при поддержке
• 2008: Кандидат технических наук
• с 2012: Тест-менеджер
Кто я такой?
Про что будем говорить
• Зачем нужна математика в тестировании
• Как ее применять на практике
– очевидные вещи
– не очень очевидные вещи
• Чему и где учиться
• Как уйти в науку
(и надо ли это делать)
ЗАЧЕМ НАМ ЭТО ВСЕ?
Пишем тесты:
зачем нам математика?
«Математику уже затем учить
следует, что она ум в порядок
приводит» (с) Ломоносов
При помощи математики и
доброго слова можно писать тесты
значительно лучше, чем только
при помощи одного доброго слова
Математика в тестировании:
блокеры в нашем мозгу
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
• Это слишком сложно для понимания
Математика в тестировании:
блокеры в нашем мозгу
• Это методы, которые доказывают
правильность, и они не работают на практике
Нет, это не только формальная верификация
• Для того, чтобы математика работала, нужны
подробнейшие спецификации
Нет, достаточно идей у вас в голове
• Это слишком сложно для понимания
факультатив по матлогике для 5 класса –
реальность. Чем вы-то хуже?
Тестировщики думают как
математики, даже не зная об этом
Операции с формулами Алгоритмы
Отражение действительности Сложность вычислений
Поведение функций
Изменяющиеся
состояния системы
Сведение к простому случаю
Операции с бесконечностью
Обобщение
Абстрактные рассуждения
Использование структур данных
Д.Э. Кнут
Математическое
мышление
Алгоритмическое
мышление
Все еще не убеждены?
Топологическое
мышление
целостность и связанность логических
операций
Порядковое
мышление
точное следование логической
цепочке
Алгебраическое
мышление
структурное восприятие объекта
Метрическое
мышление
точное математическое значение
Проективное
мышление
важны не характеристики, а степень
оптимальности и полезности
И.Я. Каплунович
МАТЕМАТИКА, ЛЕНЬ И ТЕСТ-ДИЗАЙН
Матлогика:
максимальное покрытие
минимальными усилиями
Матлогика: максимальное
покрытие минимальными усилиями
if ( (x1 && x2) && (! (x2 || x4) ) || x3 ) {
// branch 1
} else {
// branch 2
}
• Задача – покрыть тестами. Даже для покрытия
по ветвям выглядит жутковато. Слишком
много переменных.
• Если кинуться писать тесты сразу:
– полный перебор: 16 тестов
– MC/DC – чуть меньше
– покрытие по ветвям: 2 теста, но какими усилиями?
Матлогика: максимальное
покрытие минимальными усилиями
( (x1 && x2) && (! (x2 || x4) ) || x3 ) =
• Вспоминаем булеву алгебру
= ( (x1 && x2) && ( (!x2 && !x4) ) || x3 ) =
= ( x1 && x2 && !x2 && !x4 || x3 ) =
= 0 || x3 = x3
• Что в результате?
– Два теста полным перебором
– Два теста MC/DC
– Два теста для покрытия по ветвям
+ пояснение, почему тестов всего 2
Переменная-
то всего одна!
Матлогика: максимальное
покрытие минимальными усилиями
• Есть и другие методы минимизации
– Непосредственные преобразования
– Карты Карно
– Метод Квайна-МакКласки
Графы:
зачем
тестировать все
переходы?
Графы и конечные автоматы:
системы с внутренним состоянием
Filled
Sending
Rejected Acked
Filling
Replaced
Replacing
New Execute 1
MKTack
Modified
Классическое покрытие: проверяем все
состояния системы, все переходы и все пути.
Это очень долго, сложно и дорого
Графы и конечные автоматы:
системы с внутренним состоянием
Execute 1
Execute 2Amend 1 Amend 2
Amend 3
Fills
Last Fill
Modified
MKT
reject
MKT ack
Смотрим на задачу коммивояжера и видим
фигу
Графы и конечные автоматы:
системы с внутренним состоянием
Execute 1
Execute 2Amend 1 Amend 2
Amend 3
Fills
Last Fill
Modified
MKT
reject
MKT ack
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Строим граф,
вершины
которого –
дуги
исходного
графа
Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
MrE1
Покрываем
граф….
Графы и конечные автоматы:
системы с внутренним состоянием
E1
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1
Все еще
покрываем граф…
Графы и конечные автоматы:
системы с внутренним состоянием
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
Покрыли!!!
Графы и конечные автоматы:
системы с внутренним состоянием
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
Получилось как-то
не очень….
Графы и конечные автоматы:
системы с внутренним состоянием
E
E2
A1 A2
A3
F
LF
M
Mr
Ma
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Mr
E1 Ma F LF
E1 A1 M E2 Ma F LF
E1
Отрезали кусочек
последовательности
де Бройна
Графы и конечные автоматы:
системы с внутренним состоянием
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
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
И еще кусочек…
Графы и конечные автоматы:
системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
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
Что в результате?
- Короткие тесты, которые
можно параллелить
- Можно выкидывать
малоприоритетные тесты
- Метод работает, даже
если неизвестна
специфика предметной
области
Графы и конечные автоматы:
системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим
алгоритм де Бройна.
Что в результате?
- Короткие тесты, которые
можно параллелить
- Можно выкидывать
малоприоритетные тесты
- Метод работает, даже
если неизвестна
специфика предметной
области
Ни одного
трейдера не
пострадало
Статистика: сколько
тестов в каждом классе
эквивалентности?
Статистика: сколько тестов
в каждом классе эквивалентности?
• Достаточно одного теста в одном классе
эквивалентности – верно, если мы правильно
выделили классы
• Кроме явных классов
есть еще и неявные,
которые могут быть не
очевидны из требований
Полный перебор?
А может не надо?
• Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Mб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Mб
Статистика: сколько тестов
в каждом классе эквивалентности?
• Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Мб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб
• Началась эксплуатация. WTF? Короткие строки
сохраняются гораздо быстрее
Статистика: сколько тестов
в каждом классе эквивалентности?
• Пример. Сохраняем в БД длинные строки (размер
от 0 до 5 Мб). Время сохранения должно быть
одинаковым для непустых строк
• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб
• Началась эксплуатация. WTF? Короткие строки
сохраняются гораздо быстрее
Статистика: сколько тестов
в каждом классе эквивалентности?
Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 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
Высокая степень уверенности
в том, что здесь разные классы
Низкая степень уверенности
в том, что здесь разные классы
Статистика: сколько тестов
в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.
• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в
ГОСТ Р 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
Аномальная зона (почти угадали)
Аномальная зона (не угадали)
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. Фиксация новых
классов
эквивалентности
Модифицировали
распределение
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. Фиксация новых
классов
эквивалентности
Получили новые
границы и классы
эквивалентности
PAIR-WISE: ПАНАЦЕЯ ОТ ВСЕХ
БЕД?
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Основная идея pair-wise – вместо того, чтобы
тестировать все возможные комбинации
входных значений, берем пары значений и
проверяем все сочетания пар.
Работает? Да!
Опять статистика: а всегда ли
достаточно pair-wise тестирования
На простых системах?
Работает!
ROCK-PAPER-SCISSORS
Опять статистика: а всегда ли
достаточно pair-wise тестирования
А если посложнее?
Работает?
ROCK-PAPER-SCISSORS
LIZARD-SPOCK
Опять статистика: а всегда ли
достаточно pair-wise тестирования
А если еще сложнее?
ROCK-PAPER-SCISSORS
LIZARD-SPOCK
SPIDERMAN-BATMAN
WIZARD-GLOCK
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Исследования, проведенные NIST в проекте
ACTS:
Pairwise находит 65-97% ошибок
3-way находит 89-99% ошибок
4-way находит 96-100% ошибок
5-way находит 96-100% ошибок
6-way находит 100% ошибок
(во всех исследованных случаях)
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Сколько дополнительной работы делать?
Например. Пусть
2 параметра с 3 значениями
3 параметра с 2 значениями
Pairwise 10 тестов с 14% покрытием
3-way 18 тестов с 25% покрытием
4-way 36 тестов с 50% покрытием
5-way 72 теста с 100% покрытием
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Обычная основа для pair-wise и k-way
Обычно используем ортогональные матрицы:
OA(N,vk,t), где
N – количество рядов
k – количество колонок
v – количество различных значений в колонке
t – мощность (t=2 – pairwise)
В OA каждый набор из t колонок включает все t-
кортежи одинаковое количество раз
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Халява, приди!
NIST предлагает использовать покрывающие
матрицы: CA(N,vk,t), где
N – количество рядов
k – количество колонок
v – количество различных значений в колонке
t – мощность (t=2 – pairwise)
В CA каждый набор из t колонок включает все t-
кортежи хотя бы один раз
Опять статистика: а всегда ли
достаточно pair-wise тестирования
Что в результате?
Меньше комбинаций, а значит можно
увеличить размерность
кортежей, и, например, делать 3-way вместо
pairwise меньшими усилиями
Куда посмотреть: NIST ACTS
МАТЕМАТИКА ДЛЯ
ИНЖЕНЕРОВ
КОНЧИЛАСЬ, НАЧАЛСЯ
Выходим за пределы
тестирования
Придумываем
Анализ
продукта и
рисков
Разработка
тестовой
стратегии
Дизайн
идей тестов
Оценка
результатов
Управление
тестовым
окружем
Оценка
бюджета и
ресурсов
Выходим за пределы
тестирования
Придумываем
Анализ
продукта и
рисков
Разработка
тестовой
стратегии
Дизайн
идей тестов
Оценка
результатов
Управление
тестовым
окружем
Оценка
бюджета и
ресурсов
И здесь я вас бросаю
Выходим за пределы
тестирования
Придумываем
Анализ
продукта и
рисков
Разработка
тестовой
стратегии
Дизайн
идей тестов
Оценка
результатов
Управление
тестовым
окружем
Оценка
бюджета и
ресурсов
И здесь я вас бросаю, но не совсем
КАК ЭТОМУ УЧИТЬСЯ?
Чему и как учиться: ACM
• Graduate Software Engineering 2009
(GSwE2009):
Выпускник должен иметь базовые математические
навыки для того и уметь мыслить аналитически:
– Статистика
– Логика
– Исчисления
– Дискретная математика
– Формальные языки
– Математическая экономика
Чему и как учиться: IEEE
• IEEE Software Engineering Body of Knowledge v3
(SWEBOKv3):
– Множества, отношения, функции
– Логика: пропозициональная логика, логика
предикатов
– Теория доказательств
– Счетность
– Графы и деревья
– Дискретная вероятность
– Конечные автоматы, грамматики
– Погрешности
– Теория чисел
– Алгебраические структуры
Чему и как учиться: сами
• Сертификация
– 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
ПУТЬ В НАУКУ
• Фан и лулзы
• Прокачка мозгов
• Кругозор
• Последователи
• Уважение
• Собственная секретная
лаборатория
Путь в науку:
а зачем?
• Генерация тестовых данных
• Тестирование безопасности
• Комбинаторные методы тестирования
• Преобразование моделей тестирования
• Поисковые методы тестирования
• Модели предсказания поведения систем
Путь в науку:
направления исследований
• Высшее образование
• Второе высшее образование
• Кандидатская диссертация
• Пост-док за рубежом
• Докторская
• Независимые исследования
Путь в науку:
разные пути
• ГУ-ВШЭ – Авдошин С.М.
• СПбГУ – Терехов А.Н.
• МАИ – Синицын С.В.
• МГУ – Кулямин В.В.
… и многие-многие другие
Путь в науку:
кто этим занимается?
• ГУ-ВШЭ – Авдошин С.М.
• СПбГУ – Терехов А.Н.
• МАИ – Синицын С.В.
• МГУ – Кулямин В.В.
… и многие-многие другие
Ну и ко мне приходите…
( к.т.н., доцент, аспиранты есть,
учу в МИФИ и ВШЭ, иногда на Физтехе,
из науки пока не ухожу – не дождетесь  )
Путь в науку:
кто этим занимается?
Ссылки
• 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
ВОПРОСЫ?
Я все еще
Никита Налютин
Мои контакты
довольно просто
найти в Сети

More Related Content

PPTX
Техники тест дизайна для черноящичного тестирования
PPTX
Тест-дизайн в тестировании ПО. Задача "Треугольник"
PDF
Domain-тестирование
PPT
Программирование как этап решения задач на компьютере
PPTX
Test design techniques
PPT
лекция 6
PDF
Multilabel classification in nlp
Техники тест дизайна для черноящичного тестирования
Тест-дизайн в тестировании ПО. Задача "Треугольник"
Domain-тестирование
Программирование как этап решения задач на компьютере
Test design techniques
лекция 6
Multilabel classification in nlp

What's hot (9)

PPT
Presentation Klochkova
PPT
Algoritm
PPS
Алгоритмы
PPT
лекция 5
PDF
Интерпретация моделей машинного обучения
PDF
Интерпретация моделей машинного обучения
PPT
JavaTalks.Unit Testing.Part 1
PDF
Анастасия Бордонос - Проектирование тестов
PDF
лек11 7
Presentation Klochkova
Algoritm
Алгоритмы
лекция 5
Интерпретация моделей машинного обучения
Интерпретация моделей машинного обучения
JavaTalks.Unit Testing.Part 1
Анастасия Бордонос - Проектирование тестов
лек11 7
Ad

Similar to Математика для тестировщиков (20)

PPTX
Роман Чеботарев — КРОК — ICBDA2016
PDF
машинное обучение и анализ данных
PDF
Crowdsourcing с механической поддержкой
PPTX
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
PPTX
Автоматизированное тестирование не-тестировщиками
PDF
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
PPT
Автоматизация тестирования как способ получения знаний
PPTX
XP Days Ukraine 2014 - Refactoring legacy code
PDF
Системный анализ - зачем?
PDF
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
PPT
Конструирование алгоритмов
PPTX
Как мы тестировали ситуационный центр Центральной ППК
PPTX
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
PPT
Лекция №1 Организация ЭВМ и систем
DOCX
пр 15.docx
PDF
Efficient performance testing
PPTX
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
DOCX
прак 15.docx
PPTX
Управление и руководство в процессном подходе. Тренинг-семинар.
PPTX
Разработка и сопровождении авто-тестов (Selenium)
Роман Чеботарев — КРОК — ICBDA2016
машинное обучение и анализ данных
Crowdsourcing с механической поддержкой
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
Автоматизированное тестирование не-тестировщиками
Функциональное тестирование высоконагруженных проектов / Илья Пастушков (2ГИС)
Автоматизация тестирования как способ получения знаний
XP Days Ukraine 2014 - Refactoring legacy code
Системный анализ - зачем?
Ярослав Пернеровский (QA Factory/GlobalLogic):"Рукописи не горят, но и не тон...
Конструирование алгоритмов
Как мы тестировали ситуационный центр Центральной ППК
Автотестирование АБС. Конвейер разработки, конвейер данных, конвейер выполнения
Лекция №1 Организация ЭВМ и систем
пр 15.docx
Efficient performance testing
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
прак 15.docx
Управление и руководство в процессном подходе. Тренинг-семинар.
Разработка и сопровождении авто-тестов (Selenium)
Ad

More from SQALab (20)

PDF
Готовим стажировку
PPTX
Куда приводят мечты? или Искусство развития тестировщика
PPT
Оптимизация Selenium тестов и ускорение их поддержки
PPT
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
PPTX
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
PPTX
Continuous performance testing
PDF
Конфиги вместо костылей. Pytestconfig и зачем он нужен
PPT
Команда чемпионов в ИТ стихии
PPTX
API. Серебряная пуля в магазине советов
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PPT
Делаем автоматизацию проектных KPIs
PDF
Вредные привычки в тест-менеджменте
PPTX
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Стили лидерства и тестирование
PPT
"Давайте не будем про качество"
PDF
Apache.JMeter для .NET-проектов
PPTX
Тестирование геолокационных систем
PPTX
Лидер или босс? Вот в чем вопрос
PPTX
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Готовим стажировку
Куда приводят мечты? или Искусство развития тестировщика
Оптимизация Selenium тестов и ускорение их поддержки
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Continuous performance testing
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Команда чемпионов в ИТ стихии
API. Серебряная пуля в магазине советов
Добиваемся эффективности каждого из 9000+ UI-тестов
Делаем автоматизацию проектных KPIs
Вредные привычки в тест-менеджменте
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Стили лидерства и тестирование
"Давайте не будем про качество"
Apache.JMeter для .NET-проектов
Тестирование геолокационных систем
Лидер или босс? Вот в чем вопрос
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...

Математика для тестировщиков

  • 2. • 1996-2002: разработчик • 1999: получил Excellence in Computer Science Award • 2002: пришел в тестирование • 2002-2013: самолеты-трейдинг- видео-банки… • 2007: книга по тестированию, издана при поддержке • 2008: Кандидат технических наук • с 2012: Тест-менеджер Кто я такой?
  • 3. Про что будем говорить • Зачем нужна математика в тестировании • Как ее применять на практике – очевидные вещи – не очень очевидные вещи • Чему и где учиться • Как уйти в науку (и надо ли это делать)
  • 5. Пишем тесты: зачем нам математика? «Математику уже затем учить следует, что она ум в порядок приводит» (с) Ломоносов При помощи математики и доброго слова можно писать тесты значительно лучше, чем только при помощи одного доброго слова
  • 7. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике
  • 8. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация
  • 9. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация • Для того, чтобы математика работала, нужны подробнейшие спецификации
  • 10. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация • Для того, чтобы математика работала, нужны подробнейшие спецификации Нет, достаточно идей у вас в голове
  • 11. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация • Для того, чтобы математика работала, нужны подробнейшие спецификации Нет, достаточно идей у вас в голове • Это слишком сложно для понимания
  • 12. Математика в тестировании: блокеры в нашем мозгу • Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация • Для того, чтобы математика работала, нужны подробнейшие спецификации Нет, достаточно идей у вас в голове • Это слишком сложно для понимания факультатив по матлогике для 5 класса – реальность. Чем вы-то хуже?
  • 13. Тестировщики думают как математики, даже не зная об этом Операции с формулами Алгоритмы Отражение действительности Сложность вычислений Поведение функций Изменяющиеся состояния системы Сведение к простому случаю Операции с бесконечностью Обобщение Абстрактные рассуждения Использование структур данных Д.Э. Кнут Математическое мышление Алгоритмическое мышление
  • 14. Все еще не убеждены? Топологическое мышление целостность и связанность логических операций Порядковое мышление точное следование логической цепочке Алгебраическое мышление структурное восприятие объекта Метрическое мышление точное математическое значение Проективное мышление важны не характеристики, а степень оптимальности и полезности И.Я. Каплунович
  • 15. МАТЕМАТИКА, ЛЕНЬ И ТЕСТ-ДИЗАЙН
  • 17. Матлогика: максимальное покрытие минимальными усилиями if ( (x1 && x2) && (! (x2 || x4) ) || x3 ) { // branch 1 } else { // branch 2 } • Задача – покрыть тестами. Даже для покрытия по ветвям выглядит жутковато. Слишком много переменных. • Если кинуться писать тесты сразу: – полный перебор: 16 тестов – MC/DC – чуть меньше – покрытие по ветвям: 2 теста, но какими усилиями?
  • 18. Матлогика: максимальное покрытие минимальными усилиями ( (x1 && x2) && (! (x2 || x4) ) || x3 ) = • Вспоминаем булеву алгебру = ( (x1 && x2) && ( (!x2 && !x4) ) || x3 ) = = ( x1 && x2 && !x2 && !x4 || x3 ) = = 0 || x3 = x3 • Что в результате? – Два теста полным перебором – Два теста MC/DC – Два теста для покрытия по ветвям + пояснение, почему тестов всего 2 Переменная- то всего одна!
  • 19. Матлогика: максимальное покрытие минимальными усилиями • Есть и другие методы минимизации – Непосредственные преобразования – Карты Карно – Метод Квайна-МакКласки
  • 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. Графы и конечные автоматы: системы с внутренним состоянием Смотрим на задачу коммивояжера и видим алгоритм де Бройна. Что в результате? - Короткие тесты, которые можно параллелить - Можно выкидывать малоприоритетные тесты - Метод работает, даже если неизвестна специфика предметной области Ни одного трейдера не пострадало
  • 33. Статистика: сколько тестов в каждом классе эквивалентности?
  • 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. Фиксация новых классов эквивалентности Получили новые границы и классы эквивалентности
  • 42. PAIR-WISE: ПАНАЦЕЯ ОТ ВСЕХ БЕД?
  • 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
  • 53. Выходим за пределы тестирования Придумываем Анализ продукта и рисков Разработка тестовой стратегии Дизайн идей тестов Оценка результатов Управление тестовым окружем Оценка бюджета и ресурсов
  • 54. Выходим за пределы тестирования Придумываем Анализ продукта и рисков Разработка тестовой стратегии Дизайн идей тестов Оценка результатов Управление тестовым окружем Оценка бюджета и ресурсов И здесь я вас бросаю
  • 55. Выходим за пределы тестирования Придумываем Анализ продукта и рисков Разработка тестовой стратегии Дизайн идей тестов Оценка результатов Управление тестовым окружем Оценка бюджета и ресурсов И здесь я вас бросаю, но не совсем
  • 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
  • 67. ВОПРОСЫ? Я все еще Никита Налютин Мои контакты довольно просто найти в Сети