Математика для тестировщиков
description
Transcript of Математика для тестировщиков
Математика и тестирование
Никита Налютин
• 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
Переменная-то всего одна!
Матлогика: максимальное покрытие минимальными усилиями
• Есть и другие методы минимизации– Непосредственные преобразования– Карты Карно– Метод Квайна-МакКласки
Графы: зачем тестировать все
переходы?
Графы и конечные автоматы: системы с внутренним состоянием
FilledFilled
SendingSending
RejectedRejected AckedAcked
FillingFilling
ReplacedReplaced
ReplacingReplacing
NewNew Execute 1Execute 1
Amend 1
Amend 1
Amend 2Amend 2
Amen
d 3
Amen
d 3
MKT reject
MKT reject M
KT ackM
KT ack
Mod
ified
Mod
ified
Execute 2Execute 2
FillsFills
Last fillLast fill
Классическое покрытие: проверяем все состояния системы, все переходы и все пути. Это очень долго, сложно и дорого
Графы и конечные автоматы: системы с внутренним состоянием
Execute 1Execute 1
Execute 2Execute 2Amend 1Amend 1 Amend 2Amend 2
Amend 3Amend 3
FillsFillsLast FillLast Fill
ModifiedModified
MKT rejectMKT
reject
MKT ackMKT ack
Смотрим на задачу коммивояжера и видимфигу
Графы и конечные автоматы: системы с внутренним состоянием
Execute 1Execute 1
Execute 2Execute 2Amend 1Amend 1 Amend 2Amend 2
Amend 3Amend 3
FillsFillsLast FillLast Fill
ModifiedModified
MKT rejectMKT
reject
MKT ackMKT ack
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
Строим граф, вершины которого – дуги исходного графа
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMrE1E1
Покрываем граф….
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
E1E1
Все еще покрываем граф…
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF A3A3
E2E2
MaMaA2A2MME2E2Ma
MaFF
E1E1
Покрыли!!!
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF A3A3
E2E2
MaMaA2A2MME2E2Ma
MaFF
E1E1
Получилось как-то не очень….
Графы и конечные автоматы: системы с внутренним состоянием
EE
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF LFLF
E1E1
1
Отрезали кусочек последовательности де Бройна
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF LFLF
E1E1
E1E1 Ma
Ma A2A2 MM E2E2 Ma
Ma FF LFLF
И еще кусочек…
Графы и конечные автоматы: системы с внутренним состоянием
E1E1
E2E2A1A1 A2A2
A3A3
FFLFLF
MM
MrMr
MaMa
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF LFLF
E1E1
E1E1 Ma
Ma A2A2 MM E2E2 Ma
Ma FF LFLF
E1E1 Ma
Ma FF A3A3 E2E2 Ma
Ma FF LFLF
И еще кусочек…
Графы и конечные автоматы: системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
MrMr
E1E1 Ma
Ma FF LFLF
E1E1 A1A1 MM E2E2 Ma
Ma FF LFLF
E1E1
E1E1 Ma
Ma A2A2 MM E2E2 Ma
Ma FF LFLF
E1E1 Ma
Ma FF A3A3 E2E2 Ma
Ma FF LFLF
Что в результате?- Короткие тесты, которые
можно параллелить- Можно выкидывать
малоприоритетные тесты- Метод работает, даже
если неизвестна специфика предметной области
Графы и конечные автоматы: системы с внутренним состоянием
Смотрим на задачу коммивояжера и видим алгоритм де Бройна.
Что в результате?- Короткие тесты, которые
можно параллелить- Можно выкидывать
малоприоритетные тесты- Метод работает, даже
если неизвестна специфика предметной области
Ни одного трейдера не пострадало
Статистика: сколько тестов в каждом классе эквивалентности?
Статистика: сколько тестов в каждом классе эквивалентности?
• Достаточно одного теста в одном классе эквивалентности – верно, если мы правильно выделили классы
• Кроме явных классовесть еще и неявные,которые могут быть неочевидны из требований
Полный перебор?А может не надо?
• Пример. Сохраняем в БД длинные строки (размер от 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
105115
125135
145155
165175
185195
Высокая степень уверенности в том, что здесь разные классы
Низкая степень уверенности в том, что здесь разные классы
Статистика: сколько тестов в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)
1. Предположение о распределении проблемных мест
2. Прогон тестов и регистрация аномалий
3. Модификация распределения
4. Фиксация новых классов эквивалентности 1 2 3
Аномальная зона (почти угадали)
Аномальная зона (не угадали)
1 2 3
Статистика: сколько тестов в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)
1. Предположение о распределении проблемных мест
2. Прогон тестов и регистрация аномалий
3. Модификация распределения
4. Фиксация новых классов эквивалентности
Модифицировали распределение
5 15 25 35 45 55 65 75 85 95105
115125
135145
155165
175185
195
Статистика: сколько тестов в каждом классе эквивалентности?
• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод
последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)
1. Предположение о распределении проблемных мест
2. Прогон тестов и регистрация аномалий
3. Модификация распределения
4. Фиксация новых классов эквивалентности
Получили новыеграницы и классыэквивалентности
PAIR-WISE: ПАНАЦЕЯ ОТ ВСЕХ БЕД?
Опять статистика: а всегда ли достаточно pair-wise тестирования
Основная идея pair-wise – вместо того, чтобы тестировать все возможные комбинации входных значений, берем пары значений и проверяем все сочетания пар.
Работает? Да!
Опять статистика: а всегда ли достаточно pair-wise тестирования
На простых системах?Работает!
ROCK-PAPER-SCISSORS
Опять статистика: а всегда ли достаточно pair-wise тестирования
А если посложнее?Работает?
ROCK-PAPER-SCISSORSLIZARD-SPOCK
Опять статистика: а всегда ли достаточно pair-wise тестирования
А если еще сложнее?
ROCK-PAPER-SCISSORSLIZARD-SPOCKSPIDERMAN-BATMANWIZARD-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
ВОПРОСЫ?
Я все ещеНикита Налютин
Мои контактыдовольно простонайти в Сети