Post on 16-Jul-2015
transcript
О себе • Игорь Хрол • QA Automation Team Lead в
Wargaming.NET • 9 лет в отрасли • Инженер, архитектор, менеджер,
консультант, тренер • Пишу код с 12-ти лет • www.khroliz.com
…и получала она на вход задачи
…а отдавала в статусе Resolved
JIRA-1
Created
JIRA-2 Created
JIRA-3 Created
JIRA-1 Resolved
JIRA-2 Resolved
JIRA-3 Resolved
…требовалось написать детальные тест-кейсы, чтобы автоматизатор заавтоматизировал, а времени не хватало
Проект 2 Проект 1
…и разошлись автоматизаторы по Проектам, дабы на местах распространять знания и автотесты
Проект 5 Проект 4 Проект 3
Проект 1
Проект 2 Проект 1
…но дабы не терять связей объединились они в Орден, несущий знания всем и сразу!
Проект 5 Проект 4 Проект 3
…и поделился Орден Граалем со всем миром, чтобы сверкал он ещё ярче!
https://github.com/wgnet/grail
Grail
Позволяет писать автотесты на основе шагов
@step - декоратор, превращающий метод или функцию в шаг
Аналоги: Thucydides (Java)
http://www.thucydides.info/
Многофункциональный комбайн
Аналоги: Allure
http://allure.qatools.ru/
Отчёты для ваших тестов
Аналоги: Allure
http://allure.qatools.ru/
Отчёты для ваших тестов
Когда-нибудь можно интегрировать с Grail
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 Тест Скрипт Auto QA
Реализация Шагов
Плюсы подхода
• Нет дублирования работы
• Повышается технический уровень QA
• Нет новых «языков» вроде BDD-style, Keyword Driven и прочего…
export_mode = True
• Холостой прогон тестов, без выполнения шагов
• Проверка того, что все пишут тесты корректно
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!
description
PASSED login to application
PASSED Some tricky actions with the application which I can't put to method name
Выключается в fixtures
• Шаги ведут себя как обычные методы-функции в
– setup_package (_module, _class)
– teardown_package (_module, _class)
– teardown
Выключается в fixtures
• Шаги ведут себя как обычные методы-функции в
– setup_package (_module, _class)
– teardown_package (_module, _class)
– teardown
• Исключение: setup
Итого по 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
Контакты: Игорь Хрол i_khrol@wargaming.net khroliz@gmail.com skype: igor.khrol http://www.khroliz.com