Transcript

Grail: шаги для ваших Python-тестов

Игорь Хрол QA Automation Team Lead

Wargaming.NET

О себе • Игорь Хрол • QA Automation Team Lead в

Wargaming.NET • 9 лет в отрасли • Инженер, архитектор, менеджер,

консультант, тренер • Пишу код с 12-ти лет • www.khroliz.com

Жила-была…

Команда автоматизации тестирования

…и получала она на вход задачи

JIRA-1 Created

JIRA-2 Created

JIRA-3 Created

…и получала она на вход задачи

…а отдавала в статусе Resolved

JIRA-1

Created

JIRA-2 Created

JIRA-3 Created

JIRA-1 Resolved

JIRA-2 Resolved

JIRA-3 Resolved

…и не понимали Проекты, когда они получат автоматизацию

…и не понимала Команда, что от неё хотели Проекты

…«ручные» QA-соратники вне команды не умели автоматизировать, хотя и очень хотели

…требовалось написать детальные тест-кейсы, чтобы автоматизатор заавтоматизировал, а времени не хватало

Проект 2 Проект 1

…и разошлись автоматизаторы по Проектам, дабы на местах распространять знания и автотесты

Проект 5 Проект 4 Проект 3

Проект 1

Проект 2 Проект 1

…но дабы не терять связей объединились они в Орден, несущий знания всем и сразу!

Проект 5 Проект 4 Проект 3

…и нашёл Орден Грааль, который помогает нести автотесты в массы и привлекать новых служителей!

…и поделился Орден Граалем со всем миром, чтобы сверкал он ещё ярче!

https://github.com/wgnet/grail

И как он выглядит?

Grail

Позволяет писать автотесты на основе шагов

Grail

Позволяет писать автотесты на основе шагов

@step - декоратор, превращающий метод или функцию в шаг

Аналоги: Thucydides (Java)

http://www.thucydides.info/

Многофункциональный комбайн

Аналоги: Allure

http://allure.qatools.ru/

Отчёты для ваших тестов

Аналоги: Allure

http://allure.qatools.ru/

Отчёты для ваших тестов

Когда-нибудь можно интегрировать с Grail

Базовый пример

Базовый пример

А зачем?

Как обычно выглядит процесс написания автотестов…

«Ручной» QA

Как обычно выглядит процесс написания автотестов…

«Ручной» QA

Тест Кейс

Как обычно выглядит процесс написания автотестов…

«Ручной» QA

Тест Кейс Auto QA

Как обычно выглядит процесс написания автотестов…

«Ручной» QA

Тест Кейс Auto QA Тест Скрипт

Test Case vs Test Script Step 1: login to application def login_to_application():

Step 2: verify user is logged in def verify_user_is_logged_in(): …

Step 3: do some important thing def do_some_important_thing(): …

Test Case vs Test Script Step 1: login to application def login_to_application():

Step 2: verify user is logged in def verify_user_is_logged_in(): …

Step 3: do some important thing def do_some_important_thing(): …

Как-то оно похоже..

Test Case vs Test Script Step 1: login to application def login_to_application():

Step 2: verify user is logged in def verify_user_is_logged_in(): …

Step 3: do some important thing def do_some_important_thing(): …

Как-то оно похоже.. Надо писать два раза…

Test Case vs Test Script Step 1: login to application def login_to_application():

Step 2: verify user is logged in def verify_user_is_logged_in(): …

Step 3: do some important thing def do_some_important_thing(): …

Как-то оно похоже.. Надо писать два раза… И исправлять в двух местах…

Как решить?

А давайте генерировать тест-кейс из кода!

«Ручной»

QA

Как решить?

А давайте генерировать тест-кейс из кода!

«Ручной»

QA Тест Скрипт

Как решить?

А давайте генерировать тест-кейс из кода!

«Ручной»

QA Тест Скрипт Auto QA

Как решить?

А давайте генерировать тест-кейс из кода!

«Ручной»

QA Тест Скрипт Auto QA

Реализация Шагов

Плюсы подхода

• Нет дублирования работы

Плюсы подхода

• Нет дублирования работы

• Повышается технический уровень QA

Плюсы подхода

• Нет дублирования работы

• Повышается технический уровень QA

• Нет новых «языков» вроде BDD-style, Keyword Driven и прочего…

Как это выглядит…

Как это выглядит…

Жёсткие рамки

Вся логика тестов должна быть внутри шагов

Жёсткие рамки

Вся логика тестов должна быть внутри шагов

export_mode = True

• Холостой прогон тестов, без выполнения шагов

export_mode = True

• Холостой прогон тестов, без выполнения шагов

• Проверка того, что все пишут тесты корректно

export_mode = True

Тесты в export_mode должны быть passed

Запуск в CI по комитам

export_mode = True output тестов в export_mode можно считать «ручным» тест-кейсом >> some actions

>> verify result correctness (4)

export_mode = True output тестов в export_mode можно считать «ручным» тест-кейсом >> some actions

>> verify result correctness (4)

И отправить в вашу любимую Test Management System!

Grail может больше!

Вы можете адаптировать вывод шагов

Логгирование параметров и результатов шагов

Где хочешь!

Шаги можно хранить, где угодно

step_group

Объединяет шаги в группы

step_group

description

PASSED login to application

PASSED Some tricky actions with the application which I can't put to method name

format_description

PASSED Some info: value, another info: kw_value

value

kw_value

100500

Ну и ещё пара возможностей…

Выключается в fixtures

• Шаги ведут себя как обычные методы-функции в

– setup_package (_module, _class)

– teardown_package (_module, _class)

– teardown

Выключается в fixtures

• Шаги ведут себя как обычные методы-функции в

– setup_package (_module, _class)

– teardown_package (_module, _class)

– teardown

• Исключение: setup

treat_nested_steps_as_methods

PASSED external step

log_output

PASSED log output -> Important output

PASSED do not log output

Итого по Grail

Итого по Grail • Пишем код автотестов сразу

Итого по Grail • Пишем код автотестов сразу

Долой лишние бумажки и документы!

Итого по Grail • Пишем код автотестов сразу

Долой лишние бумажки и документы!

• Подключаем «ручных» тестировщиков к кодированию

Итого по Grail • Пишем код автотестов сразу

Долой лишние бумажки и документы!

• Подключаем «ручных» тестировщиков к кодированию

Долой псевдоязыки (BDD) и Keyword-driven!

Итого по Grail • Пишем код автотестов сразу

Долой лишние бумажки и документы!

• Подключаем «ручных» тестировщиков к кодированию

Долой псевдоязыки (BDD) и Keyword-driven!

• Контроль кода автотестов в Continuous Integration

Итого по Grail • Пишем код автотестов сразу

Долой лишние бумажки и документы!

• Подключаем «ручных» тестировщиков к кодированию

Долой псевдоязыки (BDD) и Keyword-driven!

• Контроль кода автотестов в Continuous Integration

• Открытый и бесплатный

Спасибо! Q&A

Ссылки: – https://github.com/wgnet/grail – http://wgnet.github.io/grail/ – https://pypi.python.org/pypi/grail

Контакты: Игорь Хрол [email protected] [email protected] skype: igor.khrol http://www.khroliz.com


Top Related