Micro Model Based Testing

51
1 CONFIDENTIAL Micro Model-Based Testing

Transcript of Micro Model Based Testing

1CONFIDENTIAL

Micro Model-Based Testing

2CONFIDENTIAL

Обо мне

• Chief QA Automation• Руководитель отдела

тестирования• Более 8 лет в автомтаизации

Роман Иовлев

3CONFIDENTIAL

Оглавление

• MBT – что это?

• Модели в ручном и автоматизированном

тестировании

• Эволюция тестирования. Примеры

• Pro et contra, обзор инструментов

• Микро модели

4CONFIDENTIAL

Model-based testing

5CONFIDENTIAL

Model-based testing

• MBT - Тестирование системы на основании

ее поведенческой модели

• Модель – упрощенное представление

чего-либо

• Поведенческая модель – модель

поведения пользователя

6CONFIDENTIAL

Модель Состояний

7CONFIDENTIAL

MBT

1. Модель

2. Выбор Тестовых сценариев из

модели

3. Реализация составных частей

сценариев

8CONFIDENTIAL

Тестовый сценарий

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

10CONFIDENTIAL

Эволюция тестирования

• От тест-кейсов к возможностям системы

11CONFIDENTIAL

Эволюция

Тест-кейсы States Testing MBT

Автотесты

“Page Objects

BDD

States

Testing

MBT

Ручное тестирование

Автоматизированное тестирование

35%

60%

5%

40%

30%

20%

9% 1%

12CONFIDENTIAL

Ручное тестирование

13CONFIDENTIAL

Ручное тестирование

Наглядность для всехТестировщики

Заказчик

Разработчики

Менеджер

Метрики

14CONFIDENTIAL

Автоматизация

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

18CONFIDENTIAL

4. States testing

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 Состояния

22CONFIDENTIAL

Модель!

23CONFIDENTIAL

• Наглядно• Измеряемо• Оптимально• Управляемо• Автоматически

Модель!

24CONFIDENTIAL

• Модель - Сеть Состояний

• Состояния + Переходы

Модель

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

30CONFIDENTIAL

100% покрытие

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

36CONFIDENTIAL

Большие модели

37CONFIDENTIAL

Большие модели

38CONFIDENTIAL

Большие модели

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

Примеры моделей

• Загрузки файлов

• Модель формирования заказа

• Модель регистрации

• Модель общения (чата)

• …

45CONFIDENTIAL

Модель покупки товара

46CONFIDENTIAL

Contra

• Надо менять парадигму мышления (Нет

классических тестовых сценариев)

• Долгий первый результат

• Дополнительно нужно поддерживать модель

• Не применимо для «небольших» проектов

Микро модели

47CONFIDENTIAL

Contra

• Надо менять парадигму мышления (Нет

классических тестовых сценариев)

• Долгий первый результат

• Дополнительно нужно поддерживать модель

• Не применимо для «небольших» проектов

Микро моделиПроще чем разбираться в разбросанных тестах

48CONFIDENTIAL

Contra

• Надо менять парадигму мышления (Нет

классических тестовых сценариев)

• Долгий первый результат

• Дополнительно нужно поддерживать модель

• Не применимо для «небольших» проектов

Микро моделиПроще чем разбираться в разбросанных тестах

Микро модели

+ Развитие инструметовАвтоматизации

49CONFIDENTIAL

50CONFIDENTIAL

ENJOY!

51CONFIDENTIAL

Мои контакты

Ваши Вопросы?

Роман ИовлевEmail: [email protected]Статья: http://goo.gl/vDRvi0 Skype: roman.Iovlev