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

67
Математика и тестирован ие Никита Налютин

Upload: sqalab

Post on 22-Jun-2015

2.838 views

Category:

Documents


1 download

DESCRIPTION

Доклад Никиты Налютина, SQA Days-13, 26-27 апреля 2013, www.sqadays.com

TRANSCRIPT

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

Математика и тестирование

Никита Налютин

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

• 1996-2002: разработчик

• 1999: получил Excellence in Computer Science Award

• 2002: пришел в тестирование

• 2002-2013: самолеты-трейдинг-видео-банки…

• 2007: книга по тестированию, издана при поддержке

• 2008: Кандидат технических наук

• с 2012: Тест-менеджер

Кто я такой?

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

Про что будем говорить

• Зачем нужна математика в тестировании• Как ее применять на практике– очевидные вещи– не очень очевидные вещи

• Чему и где учиться• Как уйти в науку (и надо ли это делать)

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

ЗАЧЕМ НАМ ЭТО ВСЕ?

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

Пишем тесты: зачем нам математика?

«Математику уже затем учить следует, что она ум в порядок приводит» (с) Ломоносов

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

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

Математика в тестировании: блокеры в нашем мозгу

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практике

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация

• Для того, чтобы математика работала, нужны подробнейшие спецификации

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практикеНет, это не только формальная верификация

• Для того, чтобы математика работала, нужны подробнейшие спецификацииНет, достаточно идей у вас в голове

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация

• Для того, чтобы математика работала, нужны подробнейшие спецификацииНет, достаточно идей у вас в голове

• Это слишком сложно для понимания

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

Математика в тестировании: блокеры в нашем мозгу

• Это методы, которые доказывают правильность, и они не работают на практике Нет, это не только формальная верификация

• Для того, чтобы математика работала, нужны подробнейшие спецификацииНет, достаточно идей у вас в голове

• Это слишком сложно для понимания факультатив по матлогике для 5 класса – реальность. Чем вы-то хуже?

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

Тестировщики думают как математики, даже не зная об этом

Операции с формулами Алгоритмы

Отражение действительности Сложность вычислений

Поведение функций Изменяющиеся состояния системы

Сведение к простому случаю

Операции с бесконечностью

Обобщение

Абстрактные рассуждения

Использование структур данных

Д.Э. Кнут

Математическоемышление

Алгоритмическоемышление

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

Все еще не убеждены?

Топологическое мышление

целостность и связанность логических операций

Порядковое мышление

точное следование логической цепочке

Алгебраическое мышление структурное восприятие объекта

Метрическое мышление точное математическое значение

Проективное мышление

важны не характеристики, а степень оптимальности и полезности

И.Я. Каплунович

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

МАТЕМАТИКА, ЛЕНЬ И ТЕСТ-ДИЗАЙН

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

Матлогика: максимальное покрытие минимальными

усилиями

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

Матлогика: максимальное покрытие минимальными усилиями

if ( (x1 && x2) && (! (x2 || x4) ) || x3 ) {// branch 1

} else {// branch 2

}

• Задача – покрыть тестами. Даже для покрытия по ветвям выглядит жутковато. Слишком много переменных.

• Если кинуться писать тесты сразу:– полный перебор: 16 тестов– MC/DC – чуть меньше– покрытие по ветвям: 2 теста, но какими усилиями?

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

Матлогика: максимальное покрытие минимальными усилиями

( (x1 && x2) && (! (x2 || x4) ) || x3 ) =

• Вспоминаем булеву алгебру= ( (x1 && x2) && ( (!x2 && !x4) ) || x3 ) == ( x1 && x2 && !x2 && !x4 || x3 ) == 0 || x3 = x3

• Что в результате?– Два теста полным перебором– Два теста MC/DC– Два теста для покрытия по ветвям+ пояснение, почему тестов всего 2

Переменная-то всего одна!

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

Матлогика: максимальное покрытие минимальными усилиями

• Есть и другие методы минимизации– Непосредственные преобразования– Карты Карно– Метод Квайна-МакКласки

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

Графы: зачем тестировать все

переходы?

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

Графы и конечные автоматы: системы с внутренним состоянием

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

Классическое покрытие: проверяем все состояния системы, все переходы и все пути. Это очень долго, сложно и дорого

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

Графы и конечные автоматы: системы с внутренним состоянием

Execute 1Execute 1

Execute 2Execute 2Amend 1Amend 1 Amend 2Amend 2

Amend 3Amend 3

FillsFillsLast FillLast Fill

ModifiedModified

MKT rejectMKT

reject

MKT ackMKT ack

Смотрим на задачу коммивояжера и видимфигу

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

Графы и конечные автоматы: системы с внутренним состоянием

Execute 1Execute 1

Execute 2Execute 2Amend 1Amend 1 Amend 2Amend 2

Amend 3Amend 3

FillsFillsLast FillLast Fill

ModifiedModified

MKT rejectMKT

reject

MKT ackMKT ack

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

Строим граф, вершины которого – дуги исходного графа

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

Графы и конечные автоматы: системы с внутренним состоянием

E1E1

E2E2A1A1 A2A2

A3A3

FFLFLF

MM

MrMr

MaMa

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

MrMrE1E1

Покрываем граф….

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

Графы и конечные автоматы: системы с внутренним состоянием

E1E1

E2E2A1A1 A2A2

A3A3

FFLFLF

MM

MrMr

MaMa

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

MrMr

E1E1 Ma

Ma FF LFLF

E1E1

Все еще покрываем граф…

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

Графы и конечные автоматы: системы с внутренним состоянием

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

Покрыли!!!

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

Графы и конечные автоматы: системы с внутренним состоянием

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

Получилось как-то не очень….

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

Графы и конечные автоматы: системы с внутренним состоянием

EE

E2E2A1A1 A2A2

A3A3

FFLFLF

MM

MrMr

MaMa

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

MrMr

E1E1 Ma

Ma FF LFLF

E1E1 A1A1 MM E2E2 Ma

Ma FF LFLF

E1E1

1

Отрезали кусочек последовательности де Бройна

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

Графы и конечные автоматы: системы с внутренним состоянием

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

И еще кусочек…

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

Графы и конечные автоматы: системы с внутренним состоянием

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

И еще кусочек…

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

Графы и конечные автоматы: системы с внутренним состоянием

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

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

Что в результате?- Короткие тесты, которые

можно параллелить- Можно выкидывать

малоприоритетные тесты- Метод работает, даже

если неизвестна специфика предметной области

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

Графы и конечные автоматы: системы с внутренним состоянием

Смотрим на задачу коммивояжера и видим алгоритм де Бройна.

Что в результате?- Короткие тесты, которые

можно параллелить- Можно выкидывать

малоприоритетные тесты- Метод работает, даже

если неизвестна специфика предметной области

Ни одного трейдера не пострадало

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

Статистика: сколько тестов в каждом классе эквивалентности?

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

Статистика: сколько тестов в каждом классе эквивалентности?

• Достаточно одного теста в одном классе эквивалентности – верно, если мы правильно выделили классы

• Кроме явных классовесть еще и неявные,которые могут быть неочевидны из требований

Полный перебор?А может не надо?

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

• Пример. Сохраняем в БД длинные строки (размер от 0 до 5 Mб). Время сохранения должно быть одинаковым для непустых строк

• Граничные условия для длины строки: 0, 2.5 Мб, 5 Mб

Статистика: сколько тестов в каждом классе эквивалентности?

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

• Пример. Сохраняем в БД длинные строки (размер от 0 до 5 Мб). Время сохранения должно быть одинаковым для непустых строк

• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб

• Началась эксплуатация. WTF? Короткие строки сохраняются гораздо быстрее

Статистика: сколько тестов в каждом классе эквивалентности?

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

• Пример. Сохраняем в БД длинные строки (размер от 0 до 5 Мб). Время сохранения должно быть одинаковым для непустых строк

• Граничные условия для длины строки: 0, 2.5 Мб, 5 Мб

• Началась эксплуатация. WTF? Короткие строки сохраняются гораздо быстрее

Статистика: сколько тестов в каждом классе эквивалентности?

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

Статистика: сколько тестов в каждом классе эквивалентности?

• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод

последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)

1. Предположение о распределении проблемных мест

2. Прогон тестов и регистрация аномалий

3. Модификация распределения

4. Фиксация новых классов эквивалентности 5 15 25 35 45 55 65 75 85 95

105115

125135

145155

165175

185195

Высокая степень уверенности в том, что здесь разные классы

Низкая степень уверенности в том, что здесь разные классы

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

Статистика: сколько тестов в каждом классе эквивалентности?

• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод

последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)

1. Предположение о распределении проблемных мест

2. Прогон тестов и регистрация аномалий

3. Модификация распределения

4. Фиксация новых классов эквивалентности 1 2 3

Аномальная зона (почти угадали)

Аномальная зона (не угадали)

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

1 2 3

Статистика: сколько тестов в каждом классе эквивалентности?

• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод

последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)

1. Предположение о распределении проблемных мест

2. Прогон тестов и регистрация аномалий

3. Модификация распределения

4. Фиксация новых классов эквивалентности

Модифицировали распределение

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

5 15 25 35 45 55 65 75 85 95105

115125

135145

155165

175185

195

Статистика: сколько тестов в каждом классе эквивалентности?

• Тестов явно нужно больше, но пока не знаем сколько.• Инструмент – статистический сэмплинг и метод

последовательных приближений (можно посмотреть в ГОСТ Р 50779.11)

1. Предположение о распределении проблемных мест

2. Прогон тестов и регистрация аномалий

3. Модификация распределения

4. Фиксация новых классов эквивалентности

Получили новыеграницы и классыэквивалентности

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

PAIR-WISE: ПАНАЦЕЯ ОТ ВСЕХ БЕД?

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Основная идея pair-wise – вместо того, чтобы тестировать все возможные комбинации входных значений, берем пары значений и проверяем все сочетания пар.

Работает? Да!

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

На простых системах?Работает!

ROCK-PAPER-SCISSORS

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

А если посложнее?Работает?

ROCK-PAPER-SCISSORSLIZARD-SPOCK

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

А если еще сложнее?

ROCK-PAPER-SCISSORSLIZARD-SPOCKSPIDERMAN-BATMANWIZARD-GLOCK

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Исследования, проведенные NIST в проекте ACTS:

Pairwise находит 65-97% ошибок3-way находит 89-99% ошибок4-way находит 96-100% ошибок5-way находит 96-100% ошибок6-way находит 100% ошибок

(во всех исследованных случаях)

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Сколько дополнительной работы делать?Например. Пусть

2 параметра с 3 значениями3 параметра с 2 значениями

Pairwise 10 тестов с 14% покрытием3-way 18 тестов с 25% покрытием4-way 36 тестов с 50% покрытием5-way 72 теста с 100% покрытием

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Обычная основа для pair-wise и k-wayОбычно используем ортогональные матрицы:OA(N,vk,t), гдеN – количество рядовk – количество колонокv – количество различных значений в колонкеt – мощность (t=2 – pairwise)

В OA каждый набор из t колонок включает все t-кортежи одинаковое количество раз

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Халява, приди!NIST предлагает использовать покрывающие матрицы: CA(N,vk,t), гдеN – количество рядовk – количество колонокv – количество различных значений в колонкеt – мощность (t=2 – pairwise)

В CA каждый набор из t колонок включает все t-кортежи хотя бы один раз

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

Опять статистика: а всегда ли достаточно pair-wise тестирования

Что в результате?Меньше комбинаций, а значит можно увеличить размерность кортежей, и, например, делать 3-way вместо pairwise меньшими усилиями

Куда посмотреть: NIST ACTS

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

МАТЕМАТИКА ДЛЯ ИНЖЕНЕРОВ КОНЧИЛАСЬ, НАЧАЛСЯ МЕНЕДЖМЕНТ

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

Выходим за пределы тестирования

Придумываем

Докум

ентируем

Выполняем

Оцениваем

Улуч

шае

м

Анализ продукта и

рисков

Разработка тестовой стратегии

Дизайн идей тестов

Оценка результатов

Управлениетестовым окружем

Оценка бюджета и ресурсов

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

Выходим за пределы тестирования

Придумываем

Докум

ентируем

Выполняем

Оцениваем

Улуч

шае

м

Анализ продукта и

рисков

Разработка тестовой стратегии

Дизайн идей тестов

Оценка результатов

Управлениетестовым окружем

Оценка бюджета и ресурсов

И здесь я вас бросаю

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

Выходим за пределы тестирования

Придумываем

Докум

ентируем

Выполняем

Оцениваем

Улуч

шае

м

Анализ продукта и

рисков

Разработка тестовой стратегии

Дизайн идей тестов

Оценка результатов

Управлениетестовым окружем

Оценка бюджета и ресурсов

И здесь я вас бросаю, но не совсем

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

КАК ЭТОМУ УЧИТЬСЯ?

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

Чему и как учиться: ACM

• Graduate Software Engineering 2009 (GSwE2009):Выпускник должен иметь базовые математические навыки для того и уметь мыслить аналитически:– Статистика– Логика– Исчисления– Дискретная математика– Формальные языки– Математическая экономика

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

Чему и как учиться: IEEE

• IEEE Software Engineering Body of Knowledge v3 (SWEBOKv3):– Множества, отношения, функции– Логика: пропозициональная логика, логика предикатов– Теория доказательств– Счетность– Графы и деревья– Дискретная вероятность– Конечные автоматы, грамматики– Погрешности– Теория чисел– Алгебраические структуры

Page 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

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

ПУТЬ В НАУКУ

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

• Фан и лулзы• Прокачка мозгов• Кругозор• Последователи• Уважение

• Собственная секретнаялаборатория

Путь в науку: а зачем?

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

• Генерация тестовых данных• Тестирование безопасности• Комбинаторные методы тестирования• Преобразование моделей тестирования• Поисковые методы тестирования• Модели предсказания поведения систем

Путь в науку: направления исследований

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

• Высшее образование• Второе высшее образование• Кандидатская диссертация• Пост-док за рубежом• Докторская• Независимые исследования

Путь в науку: разные пути

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

•ГУ-ВШЭ – Авдошин С.М.

•СПбГУ – Терехов А.Н.

•МАИ – Синицын С.В.

•МГУ – Кулямин В.В.

… и многие-многие другие

Путь в науку: кто этим занимается?

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

•ГУ-ВШЭ – Авдошин С.М.

•СПбГУ – Терехов А.Н.

•МАИ – Синицын С.В.

•МГУ – Кулямин В.В.

… и многие-многие другие

Ну и ко мне приходите… ( к.т.н., доцент, аспиранты есть,

учу в МИФИ и ВШЭ, иногда на Физтехе, из науки пока не ухожу – не дождетесь )

Путь в науку: кто этим занимается?

Page 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

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

ВОПРОСЫ?

Я все ещеНикита Налютин

Мои контактыдовольно простонайти в Сети