micro model based testing
TRANSCRIPT
2CONFIDENTIAL
Обо мне
• Chief QA Automation• Руководитель отдела
тестирования• Более 8 лет в автомтаизации
Роман Иовлев
3CONFIDENTIAL
Оглавление
• MBT – что это?
• Модели в ручном и автоматизированном
тестировании
• Эволюция тестирования. Примеры
• Pro et contra, обзор инструментов
• Микро модели
5CONFIDENTIAL
Model-based testing
• MBT - Тестирование системы на основании
ее поведенческой модели
• Модель – упрощенное представление
чего-либо
• Поведенческая модель – модель
поведения пользователя
7CONFIDENTIAL
MBT
1. Модель
2. Выбор Тестовых сценариев из
модели
3. Реализация составных частей
сценариев
9CONFIDENTIAL
Тест-кейс
• Create Basket• Register User• Pay• Fail Delivery• Move to archive
Check State Created Check State Registered Check State Paid Check Delivery
Rejected Check State In Archive
↓Input Data
11CONFIDENTIAL
Эволюция
Тест-кейсы States Testing MBT
Автотесты
“Page Objects
”
BDD
States
Testing
MBT
Ручное тестирование
Автоматизированное тестирование
35%
60%
5%
40%
30%
20%
9% 1%
13CONFIDENTIAL
Ручное тестирование
Наглядность для всехТестировщики
Заказчик
Разработчики
Менеджер
Метрики
15CONFIDENTIAL
1. Автотестыpublic void MyTest() { WebDriver driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(1000, TimeUnit.SECONDS); driver.navigate().to("http://google.com"); WebElement searchField = driver.findElement(By.id("search-id")); searchField.sendKeys("IPhone"); WebElement searchButton = driver.findElement(By.id("search-button-id")); searchButton.click(); var results = driver.findElements(By.className("search-result")); Assert.assertEquals(results.size(), 10); for(WebElement result : results) Assert.assertTrue(result.getText().contains("IPhone")); }
16CONFIDENTIAL
2. “Page Objects”
@FindBy(id = "search-id")
WebElement searchField;
@FindBy(id = "search-button-id")
WebElement searchButton
@FindBy(id = "search-result")
List<WebElement> results;
public void MyTest() {
driver.navigate().to("http://google.com");
searchField.sendKeys("IPhone");
searchButton.click();
Assert.assertEquals(results.size(), 10);
searchResults.Contatins(“IPhone”);
}
Приложение Тестовый сценарий
17CONFIDENTIAL
As UserWhenI Open Search PageI Search for “IPhone”ThenI see “10” resultsI see “IPhone” in all results
loginAs(user);searchPage.open();searchPage.search(“IPhone”);checkResults.Count(10);checkResults.Contains(“IPhone”);
3 BDD
19CONFIDENTIAL
Пример 4.1 Повторяющиеся действия
• Login(as User)• Open Search Page• Do Search• Check Search Results
• Login(as User)• Open About Page• Check About Page Content
• Login(as Admin)• Open Products page• Add New Product• Check Product in List…• Login(as User)• Check User Logged In as
User
• Login(as Admin)• Check User Logged In as
Admin
• Login(as User)• Check User Logged In as User
• Login(as Admin)• Check User Logged In as
Admin
20CONFIDENTIAL
Extended Search• Login(as VIP User)• Open Search Page• Open Extended search
filter• Set Extended Search
mode• Do Default Search
OnExtendedSearchResults
• Check Extended info
OnExtendedSearchResults
• Do “One Click” payment on product
• Check product in Basket
OnExtendedSearchResults
• Use “Reserve immediately“ function
• Check Product state in DB
Пример 4.2 Состояния
21CONFIDENTIAL
Extended Search• If (Page == “Extended
Search”)– return
• If (User.Type != VIP)– Logout– Login(as VIP User)
• Open Search Page• Open Extended search
filter• Set Extended Search
mode• Do Default Search
OnExtendedSearchResults
• Check Extended info
OnExtendedSearchResults
• Do “One Click” payment on product
• Check product in Basket
OnExtendedSearchResults
• Use “Reserve immediately“ function
• Check Product state in DB
Пример 4.2 Состояния
25CONFIDENTIAL
Тест-кейс
• Create Basket• Register User• Pay• Fail Delivery• Move to archive
Check State Created Check State Registered Check State Paid Check Delivery
Rejected Check State In Archive
↓Input Data
26CONFIDENTIAL
↓Input Data (Unknown User)
• Create Basket• Check State Created• Register User• Check State Registered• Pay• Check State Paid• Fail Delivery• Check State Delivery
Rejected• Move to archive• Check State In Archive
↓Input Data 2 (Known User)
• Create Basket• Check State Created• Pay• Check State Paid• Deliver• Check State Delivering• Get Item• Check State Delivered• Move to archive• Check State In Archive
Пример 5.1 Общие состояния
27CONFIDENTIAL
↓Input Data (Unknown User)
• Create Basket• Check State Created• Register User• Check State Registered• Pay• Check State Paid• Fail Delivery• Check State Delivery
Rejected• Move to archive• Check State In Archive
↓Input Data 2 (Known User)
• Create Basket• Check State Created• Pay• Check State Paid• Deliver• Check State Delivering• Get Item• Check State Delivered• Move to archive• Check State In Archive
Пример 5.1 Общие состояния
28CONFIDENTIAL
Пример 5.2 Глубина проверок
↓Input Data (Unknown User)
• Create Basket• Check State Created UI• Check State Created DB• Register User• Check State Registered• Pay• Check State Paid UI• Check State Paid DB• Check State Paid Email
↓Input Data 2 (Known User)
• Create Basket• Check State Created UI• Check State Created DB• Pay• Check State Paid UI• Check State Paid DB• Check State Paid Email• Deliver• Check State Delivering
29CONFIDENTIAL
Пример 5.3 Смоук
↓Input Data (Unknown User)
• Create Basket• Check State Created UI• Check State Created DB• Register User• Check State Registered• Pay• Check State Paid UI• Check State Paid DB• Check State Paid Email
↓Input Data 2 (Known User)
• Create Basket• Check State Created UI• Check State Created DB
• Pay• Check State Paid UI• Check State Paid DB• Check State Paid Email• Deliver• Check State Delivering
31CONFIDENTIAL
Покрытия графа
• Покрытие состояний
• Покрытие путей
• Циклы проходить 2 раза
• Покрытие значений параметров
–…
32CONFIDENTIAL
Регрессия
• Какие кейсы надо включить
• Важность тестирования (поверхностное/полное)
• Области (наборы функциональности, технологии)
• Покрытие (все дуги/ все состояния + циклы 2 раза)
• Время (быстро, < 2часов)
• Что надо протестировать
33CONFIDENTIAL
Генерация модели из тестов
• Есть тесты
• Есть Page Object модель
• Собираем статистику посещения страниц,
переходов
SQA Days 16 Алексей Лязгунов
http://sqadays.com/ru/talk/26051
34CONFIDENTIAL
Pro
• Наглядность (формализация модели)
• Автогенерация тестов
• Метрики, понятное покрытие, отчеты
• Возможность разделения труда
• Легче поддержка (меньше издержек в
средне-долгосрочной перспективе)
• Управляемые выборки тестов
35CONFIDENTIAL
MBT
“Model-based testing for complex software systems is still an evolving field”
Wikipedia
39CONFIDENTIAL
Инструменты
• MaTeLo
• MS SpecExplorer
• GraphWalker
• … 20+
http://mit.bme.hu/~micskeiz/pages/modelbased_testing.html
40CONFIDENTIAL
Nobody knows
• Нет простых хороших OpenSource
инструментов
– Все бесплатные не поддерживаются или изначально не
удобные
– Платные ориентированы на большой бизнес, имеют массу
– функций, которые делают их сложными в освоении
• Сложные большие модели
41CONFIDENTIAL
Contra
• Надо менять парадигму мышления (Нет
классических тестовых сценариев)
• Долгий первый результат
• Дополнительно нужно поддерживать модель
• Не применимо для «небольших» проектов
42CONFIDENTIAL
Micro models
• Много маленьких моделей
– Проще для понимания
– Быстрое создание первых тестов
– Проще поддерживать
43CONFIDENTIAL
Примеры моделей
• Ролевая модель
• Модель покупки/подписки/услуги и пр.
• Модель поиска (текстового, по фильтрам, карта)
• Обзорная модель сайта
• Рейтинговая модель
44CONFIDENTIAL
Примеры моделей
• Загрузки файлов
• Модель формирования заказа
• Модель регистрации
• Модель общения (чата)
• …
46CONFIDENTIAL
Contra
• Надо менять парадигму мышления (Нет
классических тестовых сценариев)
• Долгий первый результат
• Дополнительно нужно поддерживать модель
• Не применимо для «небольших» проектов
Микро модели
47CONFIDENTIAL
Contra
• Надо менять парадигму мышления (Нет
классических тестовых сценариев)
• Долгий первый результат
• Дополнительно нужно поддерживать модель
• Не применимо для «небольших» проектов
Микро моделиПроще чем разбираться в разбросанных тестах
48CONFIDENTIAL
Contra
• Надо менять парадигму мышления (Нет
классических тестовых сценариев)
• Долгий первый результат
• Дополнительно нужно поддерживать модель
• Не применимо для «небольших» проектов
Микро моделиПроще чем разбираться в разбросанных тестах
Микро модели
+ Развитие инструметовАвтоматизации
51CONFIDENTIAL
Мои контакты
Ваши Вопросы?
Роман ИовлевEmail: [email protected]Статья: http://goo.gl/vDRvi0 Skype: roman.Iovlev