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

Preview:

DESCRIPTION

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

Citation preview

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

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

• 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

ВОПРОСЫ?

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

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

Recommended