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