48
Scalable eCommerce Platform Solutions Визуализация покрытия автоматизированными UI тестами Лянгузов Алексей

Визуализация покрытия автоматизированными UI тестами

  • Upload
    sqalab

  • View
    3.068

  • Download
    5

Embed Size (px)

DESCRIPTION

Презентация Алексея Лянгузова на SQA Days-16 14-15 ноября 2014, Санкт-Петербург, Россия www.sqadays.com

Citation preview

Page 1: Визуализация покрытия автоматизированными UI тестами

Scalable eCommerce Platform Solutions

Визуализация покрытия автоматизированными UI тестами

Лянгузов Алексей

Page 2: Визуализация покрытия автоматизированными UI тестами

План@startumlskinparam sequence{ ArrowColor #528526 LifeLineBorderColor #528526 ActorBorderColor #528526 ActorBackgroundColor #AAFFAA ParticipantBorderColor #528526 ParticipantBackgroundColor white ParticipantFontSize 18 ParticipantFontName Serif BoxBorderColor #528526 BoxFontSize 18}actor " " as Ubox "Введение" #DDFFDDparticipant "Про\nПокрытие" as P1participant "Про\nМодели" as P2end box

box "Основная часть" #BBFFBBparticipant "Про\nPlantUML" as P3participant "Про\nUI покрытие" as P4participant "Про\nАрхитектуру" as P5end box

U -> P1activate P1P1 --> UP1 -> P2activate P2P2 --> UP2 -> P3activate P3P3 --> UP3 -> P4activate P4P4 --> UP4 -> P5activate P5P5 --> Udestroy P1destroy P2destroy P3destroy P4destroy P5@enduml* Спасибо интернету за картинки, а особенно сайту openclipart.org

Все права принадлежат авторам изображений

Page 3: Визуализация покрытия автоматизированными UI тестами

Про покрытие

ISTQB: http://stqbexamcertification.com/what-is-test-coverage-in-software-testing-its-advantages-and-disadvantages/

Тестовое покрытие — мера тестирования, присущая определенному тестовому набору.

Page 4: Визуализация покрытия автоматизированными UI тестами

Про покрытие

Coverage = Number of exercised items

Total number of itemsx 100 %

ISTQB

ISTQB: http://stqbexamcertification.com/what-is-test-coverage-in-software-testing-its-advantages-and-disadvantages/

Тестовое покрытие — мера тестирования, присущая определенному тестовому набору.

Page 5: Визуализация покрытия автоматизированными UI тестами

Про покрытие

Coverage = Number of exercised items

Total number of itemsx 100 %

ISTQB

ISTQB: http://stqbexamcertification.com/what-is-test-coverage-in-software-testing-its-advantages-and-disadvantages/

Тестовое покрытие — мера тестирования, присущая определенному тестовому набору.

При подсчете покрытия недостаточно довольствоваться одним аспектом. Надо смотреть на тестируемый объект в

разных измерениях (dimensions).

Page 6: Визуализация покрытия автоматизированными UI тестами

Зачем покрытиеПоказывает места где нет тестирования

Page 7: Визуализация покрытия автоматизированными UI тестами

Зачем покрытиеПоказывает места где нет тестирования

Даёт идеи для новых тестовых сценариев / тестовых данных

Page 8: Визуализация покрытия автоматизированными UI тестами

Зачем покрытиеПоказывает места где нет тестирования

Даёт идеи для новых тестовых сценариев / тестовых данных

Помогает сбалансировать тесты и тестовые наборы

Page 9: Визуализация покрытия автоматизированными UI тестами

Спор

Send

У вас 200 тестов, а у нас 2,000Ха! У вас 2,000 кейсов, у нас 4,000

Ха-ха! У вас 4,000 проверок, а унас 20,000. Съел?

Ха-ха-ха! У вас 4,000 уникальныхпроверок и у нас 4,000 уникальных.У нас 100% эффективность!

Зато у вас 20 человек их писало,а у нас 5.

EditYet Another QA Lead

Page 10: Визуализация покрытия автоматизированными UI тестами

Спор

Send

У вас 200 тестов, а у нас 2,000Ха! У вас 2,000 кейсов, у нас 4,000

Ха-ха! У вас 4,000 проверок, а унас 20,000. Съел?

Ха-ха-ха! У вас 4,000 уникальныхпроверок и у нас 4,000 уникальных.У нас 100% эффективность!

Зато у вас 20 человек их писало,а у нас 5.

Ладно, ты победил — ты на 200 грамм тяжелее

EditYet Another QA Lead

Page 11: Визуализация покрытия автоматизированными UI тестами

Зачем покрытиеПоказывает места где нет тестирования

Даёт идеи для новых тестовых сценариев / тестовых данных

Помогает сбалансировать тесты и тестовые наборы

Оценивает качество самих автотестов и меру их надёжности

Page 12: Визуализация покрытия автоматизированными UI тестами

Зачем покрытиеПоказывает места где нет тестирования

Даёт идеи для новых тестовых сценариев / тестовых данных

Помогает сбалансировать тесты и тестовые наборы

Оценивает качество самих автотестов и меру их надёжности

Отражает скорость написания тестов и помогает в планировании работ

Page 13: Визуализация покрытия автоматизированными UI тестами

@story-1Scenario: As a user I want ..Given I am ...When I do …Then I see ...

@story-126Scenario: As a user I want ..Given I am ...When I do …Then I see ...

Про наше покрытие

User Story 1AC#1...AC#N

...

User Story 126AC#1...AC#N

@story-1 @story-126Scenario: As a user I want ..Given I am ...When I do …Then I see ...

Page 14: Визуализация покрытия автоматизированными UI тестами

Про модели

Модель - это система, исследование которой служит средством для получения информации о другой системе, являясь её

упрощённым представлением

Page 15: Визуализация покрытия автоматизированными UI тестами

Про модели

Модель - это система, исследование которой служит средством для получения информации о другой системе, являясь её

упрощённым представлением

Page 16: Визуализация покрытия автоматизированными UI тестами

Про проблемы моделейПодвержены частым изменениям

Page 17: Визуализация покрытия автоматизированными UI тестами

Про проблемы моделейПодвержены частым изменениям

Быстро и заметно стареют

Page 18: Визуализация покрытия автоматизированными UI тестами

Про проблемы моделейПодвержены частым изменениям

Сложны для восприятия или внесения изменений

Быстро и заметно стареют

Page 19: Визуализация покрытия автоматизированными UI тестами

Про проблемы моделейПодвержены частым изменениям

Быстро и заметно стареют

Сложны для восприятия или внесения изменений

С «другой планеты» - делаются в сторонних дорогих инструментах

Page 20: Визуализация покрытия автоматизированными UI тестами

Чтобы модели работалиНадо постоянно проверять их валидность

Page 21: Визуализация покрытия автоматизированными UI тестами

Чтобы модели работалиНадо постоянно проверять их валидность(постоянно == автоматически)

Т. е. они должны быть легки для понимания машинами

Page 22: Визуализация покрытия автоматизированными UI тестами

Чтобы модели работалиНадо постоянно проверять их валидность(постоянно == автоматически)

Т. е. они должны быть легки для понимания машинами

Они должны быть легки для понимания людьми

Page 23: Визуализация покрытия автоматизированными UI тестами

Чтобы модели работалиНадо постоянно проверять их валидность(постоянно == автоматически)

Т. е. они должны быть легки для понимания машинами

Они должны быть легки для понимания людьми

Они должны быть легки для быстрого внесения изменений

Page 24: Визуализация покрытия автоматизированными UI тестами

Чтобы модели работалиНадо постоянно проверять их валидность(постоянно == автоматически)

Т. е. они должны быть легки для понимания машинами

Они должны быть легки для понимания людьми

Они должны быть легки для быстрого внесения изменений

DSLDSLEngineEngine

VisualizationVisualization

Page 25: Визуализация покрытия автоматизированными UI тестами

Про PlantUML

PlantUML решает!

PlantUMLdiagramming

language

PlantUML Graphviz

SVG, PNG, EPSdiagram file

EngineEngineDSLDSL VisualizationVisualization

http://plantuml.sourceforge.net/index.html

Page 26: Визуализация покрытия автоматизированными UI тестами

Про PlantUML

EngineEngineDSLDSL VisualizationVisualizationПростой язык создания диаграмм Легко читать, писать и генерировать в автоматическом режиме

Отслеживание изменений Например в системе контроля версий или IDE

Поддержка языков разметки HTML, wiki-like

Стили элементов и связей skinparam — что-то на подобии лёгкого CSS — цвета и классы

С-lang style preprocessing !include(file.puml), !define(set_of_objects), !ifdef(something)

Поддержка встроенных изображений <img filename.jpg>, спрайты и openiconic

Page 27: Визуализация покрытия автоматизированными UI тестами

Про PlantUML

Main Admin

Use the application

User

Start

Some note

This note is connectedto several objects.

@startumlscale 1.2

:Main Admin: as Admin(Use the application) as (Use)

User -> (Start)User --> (Use)

Admin ---> (Use)

note right of (Use) : Some notenote "This note is connected\nto several objects." as N2

(Start) .. N2N2 .. (Use)@enduml

EngineEngineDSLDSL VisualizationVisualization

Page 28: Визуализация покрытия автоматизированными UI тестами

VSDX file format / OMG!

Взято тут

Page 29: Визуализация покрытия автоматизированными UI тестами

Про PlantUML

EngineEngineDSLDSL VisualizationVisualizationИнтеграция с IDE NetBeans, Eclipse, IntelliJ Idea etc

Интеграция с Wiki движками MediaWiki, Confluence, DokuWiki, Redmine, Trac etc

Online diagramming plantuml.com, Google Docs etc

Запуск из командной строки или как GUI-приложение java -jar plantuml.jar -help ИЛИ java -jar plantuml.jar -gui

Интеграция с языками программирования и инструментами python, JS, ant, gradle etc

Работа в разных редакторах vim, emacs, word, ОО etc

Page 30: Визуализация покрытия автоматизированными UI тестами

Про JetBrains Plugin

Link: https://github.com/esteinberg/plantuml4idea

EngineEngineDSLDSL VisualizationVisualization

Page 31: Визуализация покрытия автоматизированными UI тестами

Про PlantUML

VisualizationVisualizationDSLDSL EngineEngine7 основных UML диаграмм State, Activity, UseCase, Class, Object, Component, Sequence

Различные форматы картинок Растровый(PNG), векторный(SVG), PS, LaTeX

Обычные диаграммы и графики Используется библиотека jcckit.sourceforge.net

Встраивание в сгенерённую документацию JavaDoc, Sphinx, Doxygen etc

Необычные не-диаграммы ASCII диаграммы, GUI-прототипирование, XEarth

Модель в XMI-формате для обмена с другими UML тулами Печально, но XMI у всех свой, уж поверьте

Page 32: Визуализация покрытия автоматизированными UI тестами

PlantUML мало?

Кросс-платформенный Работает там, где работает Java и Graphviz

С открытым исходным кодом http://sourceforge.net/projects/plantuml/

Бесплатный по лицензии GPL Не нравится GPL? Есть LGPL, Apache, Eclipse и даже MIT версии

Активно развивается Не менее 1-го релиза в месяц

Маленький На данный момент plantuml.jar занимает 2.5Mb

Умеет генерить судоку Killer feature!

VisualizationVisualizationDSLDSL EngineEngine

Page 33: Визуализация покрытия автоматизированными UI тестами

@story-1Scenario: As a user I want ..Given I am ...When I do …Then I see ...

@story-126Scenario: As a user I want ..Given I am ...When I do …Then I see ...

Про наше покрытие

User Story 1AC#1...AC#N

...

User Story 126AC#1...AC#N

@story-1 @story-126Scenario: As a user I want ..Given I am ...When I do …Then I see ...

Page 34: Визуализация покрытия автоматизированными UI тестами

Про UI покрытие

Нам нужна модель!

Page 35: Визуализация покрытия автоматизированными UI тестами

Код диаграммы@startumlskinparam state { BackgroundColor<<Uncovered>> #DDDDDD BackgroundColor<<System>> lightblue FontSize 24 ArrowFontSize 18}

[*] --> HomePage : start

HomePage --> LoginPage : loginHomePage --> SettingsPage : settingsHomePage --> MyProfilePage : profileHomePage --> SearchPage<<Uncovered>> : search

LoginPage --> MyProfilePage : loginLoginPage --> LoginPage : login_invalid

SettingsPage --> HomePage : confirm_and_saveSettingsPage --> SystemSettingsPage<<System>> : change_system_settings

MyProfilePage -> HomePage : confirm_and_save@enduml

Page 36: Визуализация покрытия автоматизированными UI тестами

Про UI покрытие

HomePage

LoginPage SettingsPage

MyProfilePage

SearchPage

SystemSettingsPage

start

login settings confirm_and_save cancel

profile

confirm_and_save

searchlogin

login_invalid

change_system_settings

Page 37: Визуализация покрытия автоматизированными UI тестами

Screens/Pages

HomePage

LoginPage SettingsPage

MyProfilePage

SearchPage

SystemSettingsPage

start

login settings confirm_and_save cancel

profile

confirm_and_save

searchlogin

login_invalid

change_system_settings

Page 38: Визуализация покрытия автоматизированными UI тестами

Screens/Pages

HomePage

LoginPage SettingsPage

MyProfilePage

SearchPage

RestorePasswordPage SystemSettingsPage

start

login settings confirm_and_save cancel

profile

confirm_and_save

searchlogin

login_invalid

restore_password change_system_settings

Page 39: Визуализация покрытия автоматизированными UI тестами

Код диаграммы покрытия@startumlskinparam state { FontSize 24 ArrowFontSize 18 BackgroundColor<<Uncovered>> #EEEEEE FontColor<<Uncovered>> #888888 BorderColor<<Uncovered>> #888888 BackgroundColor<<Covered>> LightGreen BorderColor<<Covered>> Green BackgroundColor<<Missed>> Orange BorderColor<<Missed>> Orange}

[*] --> HomePage<<Covered>> : start

HomePage --> LoginPage<<Covered>> : loginHomePage --> SettingsPage<<Covered>> : settingsHomePage --> MyProfilePage<<Covered>> : profileHomePage --> SearchPage<<Uncovered>> : search

LoginPage --> RestorePasswordPage<<Missed>> : restore_password

*код диаграммы генерируется во время тестов автоматически!

Page 40: Визуализация покрытия автоматизированными UI тестами

Transitions

HomePage

LoginPage SettingsPage

MyProfilePage

SearchPage

RestorePasswordPage SystemSettingsPage

start

login settings confirm_and_save cancel

profile

confirm_and_save

searchlogin

login_invalid

restore_password change_system_settingsreset_password

Page 41: Визуализация покрытия автоматизированными UI тестами

Код диаграммы покрытия@startuml...[*] --> HomePage<<Covered>> : start

HomePage -[#green]-> LoginPage<<Covered>> : <font color=green>login</font>HomePage -[#green]-> SettingsPage<<Covered>> : <font color=green>settingsHomePage -[#green]-> MyProfilePage<<Covered>> : <font color=green>profileHomePage -[#grey]-> SearchPage<<Uncovered>> : <font color=grey>search

LoginPage -[#green]-> MyProfilePage : <font color=green>loginLoginPage -[#grey]-> LoginPage : <font color=grey>login_invalidLoginPage -[#grey]-> RestorePasswordPage<<Missed>> : <font color=grey>restore_password

SettingsPage -[#orange]-> RestorePasswordPage<<Missed>> : <font color=orange>reset_password

...*код диаграммы генерируется во время тестов автоматически!

Page 42: Визуализация покрытия автоматизированными UI тестами

Actions

HomePage

LoginPageinput usernameinput passwordsign up

SettingsPagechange option 1change option 2

MyProfilePageupload photochange bio

SearchPage

RestorePasswordPage SystemSettingsPage

start

login settings confirm_and_save cancel

profile

confirm_and_save

searchlogin

login_invalid

restore_password change_system_settingsreset_password

Page 43: Визуализация покрытия автоматизированными UI тестами

Код диаграммы покрытия...LoginPage -[#green]-> MyProfilePage : <font color=green>loginLoginPage -[#grey]-> LoginPage : <font color=grey>login_invalidLoginPage -[#grey]-> RestorePasswordPage<<Missed>> : <font color=grey>restore_passwordLoginPage : <b>input username</b>LoginPage : <b>input password</b>LoginPage : <i>sign up</i>

SettingsPage -[#green]-> HomePage : <font color=green>confirm_and_saveSettingsPage -[#grey]-> HomePage : <font color=grey>cancelSettingsPage -[#green]-> SystemSettingsPage<<Covered>> : <font color=green>change_system_settingsSettingsPage -[#orange]-> RestorePasswordPage<<Missed>> : <font color=orange>reset_passwordSettingsPage : <b>change option 1</b>SettingsPage : <font color=orange><b>change option 2</b></font>…

MyProfilePage : <i>upload photo</i>MyProfilePage : <i>change bio</i>

*код диаграммы генерируется во время тестов автоматически!

Page 44: Визуализация покрытия автоматизированными UI тестами

Привязка к тестам

HomePage

LoginPageinput username {1, 1}input password {1, 1}sign up

SettingsPagechange option 1 {1, 1}change option 2 {1, 1}

MyProfilePageupload photochange bio

SearchPage

RestorePasswordPage SystemSettingsPage

start

login {1, 1} settings {3, 2} confirm_and_save {2, 1} cancel

profile {1, 1}

confirm_and_save

searchlogin {1, 1}

login_invalid {0, 0}

restore_password change_system_settings {1, 1}reset_password {1, 1}

Page 45: Визуализация покрытия автоматизированными UI тестами

Код диаграммы покрытия…HomePage -[#green]-> SettingsPage<<Covered>> : <font color=green>settings {3, 2}LoginPage -[#green]-> MyProfilePage : <font color=green>login {1, 1}LoginPage -[#grey]-> LoginPage : <font color=grey>login_invalid {0, 0}LoginPage : <b>input username {1, 1}</b>LoginPage : <b>input password {1, 1}</b>LoginPage : <i>sign up</i>…

*код диаграммы генерируется во время тестов автоматически!

[Transitions]Transition: HomePage, SettingsPage, settingsTest: features/SettingsTests/test1.feature:8Test: features/SettingsTests/test1.feature:19Transition: LoginPage, MyProfilePage, loginTest: features/LoginTests/test1.feature:8Transition: LoginPage, LoginPage, login_invalid

[Actions]Action: LoginPage, input usernameTest: features/LoginTests/test1.feature:8Action: LoginPage, input passwordTest: features/LoginTests/test1.feature:8

Page 46: Визуализация покрытия автоматизированными UI тестами

Про АрхитектуруЕдиное место переключения текущего экрана/страницы PageManager.setCurrentPage(pageId)

Объектная модель страниц aka PageObject

Деление на действия и переходы action(:input_password) transition(:login, :MyProfilePage)

1 действие == 1 метод в коде тестов aka DRY — Don't Repeat Yourself

Возможность понять какое действие было сделано callback или ActionManager на крайний случай подойдет и логгирование

Page 47: Визуализация покрытия автоматизированными UI тестами

Заключение

Всё гениальное — просто!Всё гениальное — просто!

Page 48: Визуализация покрытия автоматизированными UI тестами

QA

Input author here

Thank you