SlideShare a Scribd company logo
1 of 67
Математика и
тестирование
Никита Налютин
• 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

What's hot (9)

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

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

машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
Yandex
 
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Опыт осторожного внедрения инструментов Теории Ограничений в крупной компании...
Ontico
 
Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)Разработка и сопровождении авто-тестов (Selenium)
Разработка и сопровождении авто-тестов (Selenium)
Paul Stashevsky
 

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

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

More from SQALab

More from SQALab (20)

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