Micro Models Based Testing Роман Иовлев
Обо мне • Роман Иовлев • Senior QA компании Teknavo
Оглавление • MBT – что это, pro et contra, обзор инструментов • Почему нет широкого применения • Практические советы
MBT Model-based testing for complex software systems is still an evolving field Wikipedia
MBT is Future of QA
MBT • Модель • Выделение абстрактных тестовых сценариев • Реализация абстрактных тестовых сценариев
Модель
Тестовый сценарий
Реализация • Для каждой дуги - Метод для перехода(из состояния A в состояние B) • Для каждого узла - Эталонный метод/-ы для проверки состояния
Сценарий ↓ Input Data • Create • Check State Created • Register • Check State Registered • Pay • Check State Paid • Fail Delivery • Check State Delivery Rejected • Move to archive • Check State In Archive
Покрытия графа • Покрытие состояний • Покрытие путей • Покрытие значений параметров • … • …
Pro • Наглядность (формализация модели) • Автогенерация тестов • Легче поддержка (меньше издержек в средне-долгосрочной перспективе) • Возможность разделения труда • Понятное покрытие, наглядные отчеты
Contra • Надо менять парадигму мышления (Нет классических тестовых сценариев) • Долгий первый результат • Не применимо для «небольших» проектов
Инструменты • MaTeLo • SpecExplorer • GraphWalker • …. See more http://mit.bme.hu/~micskeiz/pages/modelb ased_testing.html
Nobody knows • Нет простых хороших OpenSource инструментов • Все бесплатные не поддерживаются или изначально не удобные • Платные ориентированы на большой бизнес, имеют массу функций, которые делают их сложными в освоении • Сложные большие модели • Однонаправленность генерации • Наглядный выбор тестовых наборов в графе по входным ограничениям
Micro модели • Много маленьких моделей • Проще для понимания • Быстрое создание первых тестов
Пример Магазин покупка
Пример Оказание услуги
Пример Регистрация
Интерфейс модель<>реализация • Простой XML/JSON – основа фреймворка • Легко добавить новые данные из тестового проекта • Легко сохранить граф в XML • Граф строится на основании этого XML • Тесты генерируются на основании XML • Разные люди могут создавать свои продукты с обеих сторон
Пример <model> <nodes> <node name = “Created” type= “start”/> … <node name = “Paid”/> <node name = “Delivered” type = “end”/> </nodes> <transitions> <transition name = “Deliver” from = “Pay” to= “Delivered”/> … </transitions> </model>
Что это дает • Из такого XML: • Легко построить тестовый сценарий • Легко создать граф • Легко граф сохранить в такой XML • Легко на изменить XML имея конечные реализации (добавить новые переходы и состояния)
Дополнительные данные • Дополнительные данные в отдельных файлах (связь по имени): • Для построения графа координаты и расположение • Для реализаций названия методов/контекстов реализующих шаги • Входные данные • Веса и теги для переходов (для генерации разных наборов кейсов)
Дополнительные возможности • Веса/время исполнения и теги на Дугах, для генерации сценариев наиболее подходящих виду тестирования • Ограничения по входным данным на дуги. Возможность генерации сценариев и тестовых наборов для полного покрытия «по параметрам»
MTest Framework • Поддержка состояний/переходов • Сборка тестовых сценариев из состояний переходов • Генерация Сценариев (путей в графе) по входным данным Подробнее http ://habrahabr.ru/company/ifree/blog/212567 /
Открыты для сотрудничества • Работа с графом, отображение/расположение • Доработки по обработке модели фильтрация по параметрам переходов, весам и тегам • Взаимодействие с генератором данных
Вопросы • Роман Иовлев • Email: romanyister@gmail.com • Статья: http://goo.gl/vDRvi0 • Skype: roman.Iovlev