Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Grail: шаги для ваших
Python-тестов
Игорь Хрол
QA Automation Team Lead
Wargaming.NET
О себе
• Игорь Хрол
• QA Automation Team Lead в
Wargaming.NET
• 9 лет в отрасли
• Инженер, архитектор, менеджер,
консульта...
Жила-была…
Команда автоматизации тестирования
…и получала она на вход задачи
JIRA-1
Created
JIRA-2
Created
JIRA-3
Created
…и получала она на вход задачи
…а отдавала в статусе Resolved
JIRA-1
Created
JIRA-2
Created
JIRA-3
Created
JIRA-1
Resolved...
…и не понимали Проекты, когда они
получат автоматизацию
…и не понимала Команда, что от неё
хотели Проекты
…«ручные» QA-соратники вне команды
не умели автоматизировать, хотя и
очень хотели
…требовалось написать детальные тест-
кейсы, чтобы автоматизатор
заавтоматизировал, а времени не хватало
Проект 2Проект 1
…и разошлись автоматизаторы по
Проектам, дабы на местах
распространять знания и автотесты
Проект 5Проект ...
Проект 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 v...
Test Case vs Test Script
Step 1: login to application def login_to_application():
…
Step 2: verify user is logged in def v...
Test Case vs Test Script
Step 1: login to application def login_to_application():
…
Step 2: verify user is logged in def v...
Test Case vs Test Script
Step 1: login to application def login_to_application():
…
Step 2: verify user is logged in def v...
Как решить?
А давайте генерировать тест-кейс из кода!
«Ручной»
QA
Как решить?
А давайте генерировать тест-кейс из кода!
«Ручной»
QA
Тест Скрипт
Как решить?
А давайте генерировать тест-кейс из кода!
«Ручной»
QA
Тест Скрипт Auto QA
Как решить?
А давайте генерировать тест-кейс из кода!
«Ручной»
QA
Тест Скрипт Auto QA
Реализация
Шагов
Плюсы подхода
• Нет дублирования работы
Плюсы подхода
• Нет дублирования работы
• Повышается технический уровень QA
Плюсы подхода
• Нет дублирования работы
• Повышается технический уровень QA
• Нет новых «языков» вроде BDD-style,
Keyword ...
Как это выглядит…
Как это выглядит…
Жёсткие рамки
Вся логика тестов должна быть внутри шагов
Жёсткие рамки
Вся логика тестов должна быть внутри шагов
export_mode = True
• Холостой прогон тестов, без выполнения
шагов
export_mode = True
• Холостой прогон тестов, без выполнения
шагов
• Проверка того, что все пишут тесты корректно
export_mode = True
Тесты в export_mode должны быть passed
Запуск в CI по комитам
export_mode = True
output тестов в export_mode можно считать «ручным»
тест-кейсом
>> some actions
>> verify result correct...
export_mode = True
output тестов в export_mode можно считать «ручным»
тест-кейсом
>> some actions
>> verify result correct...
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_packag...
Выключается в fixtures
• Шаги ведут себя как обычные методы-
функции в
– setup_package (_module, _class)
– teardown_packag...
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
• Пишем код автотестов сразу
Долой лишние бумажки и документы!
• Подключаем «ручных» тестировщиков к
кодиро...
Итого по Grail
• Пишем код автотестов сразу
Долой лишние бумажки и документы!
• Подключаем «ручных» тестировщиков к
кодиро...
Итого по Grail
• Пишем код автотестов сразу
Долой лишние бумажки и документы!
• Подключаем «ручных» тестировщиков к
кодиро...
Спасибо!
Q&A
Ссылки:
– https://github.com/wgnet/grail
– http://wgnet.github.io/grail/
– https://pypi.python.org/pypi/grail...
Grail - CodeFest'2015
Grail - CodeFest'2015
Grail - CodeFest'2015
Grail - CodeFest'2015
Upcoming SlideShare
Loading in …5
×

Grail - CodeFest'2015

28,173 views

Published on

Grail - library for python. Presentation on CodeFest'2015.

Published in: Technology
  • Be the first to comment

Grail - CodeFest'2015

  1. 1. Grail: шаги для ваших Python-тестов Игорь Хрол QA Automation Team Lead Wargaming.NET
  2. 2. О себе • Игорь Хрол • QA Automation Team Lead в Wargaming.NET • 9 лет в отрасли • Инженер, архитектор, менеджер, консультант, тренер • Пишу код с 12-ти лет • www.khroliz.com
  3. 3. Жила-была… Команда автоматизации тестирования
  4. 4. …и получала она на вход задачи JIRA-1 Created JIRA-2 Created JIRA-3 Created
  5. 5. …и получала она на вход задачи …а отдавала в статусе Resolved JIRA-1 Created JIRA-2 Created JIRA-3 Created JIRA-1 Resolved JIRA-2 Resolved JIRA-3 Resolved
  6. 6. …и не понимали Проекты, когда они получат автоматизацию
  7. 7. …и не понимала Команда, что от неё хотели Проекты
  8. 8. …«ручные» QA-соратники вне команды не умели автоматизировать, хотя и очень хотели
  9. 9. …требовалось написать детальные тест- кейсы, чтобы автоматизатор заавтоматизировал, а времени не хватало
  10. 10. Проект 2Проект 1 …и разошлись автоматизаторы по Проектам, дабы на местах распространять знания и автотесты Проект 5Проект 4Проект 3 Проект 1
  11. 11. Проект 2Проект 1 …но дабы не терять связей объединились они в Орден, несущий знания всем и сразу! Проект 5Проект 4Проект 3
  12. 12. …и нашёл Орден Грааль, который помогает нести автотесты в массы и привлекать новых служителей!
  13. 13. …и поделился Орден Граалем со всем миром, чтобы сверкал он ещё ярче! https://github.com/wgnet/grail
  14. 14. И как он выглядит?
  15. 15. Grail Позволяет писать автотесты на основе шагов
  16. 16. Grail Позволяет писать автотесты на основе шагов @step - декоратор, превращающий метод или функцию в шаг
  17. 17. Аналоги: Thucydides (Java) http://www.thucydides.info/ Многофункциональный комбайн
  18. 18. Аналоги: Allure http://allure.qatools.ru/ Отчёты для ваших тестов
  19. 19. Аналоги: Allure http://allure.qatools.ru/ Отчёты для ваших тестов Когда-нибудь можно интегрировать с Grail
  20. 20. Базовый пример
  21. 21. Базовый пример
  22. 22. А зачем?
  23. 23. Как обычно выглядит процесс написания автотестов… «Ручной» QA
  24. 24. Как обычно выглядит процесс написания автотестов… «Ручной» QA Тест Кейс
  25. 25. Как обычно выглядит процесс написания автотестов… «Ручной» QA Тест Кейс Auto QA
  26. 26. Как обычно выглядит процесс написания автотестов… «Ручной» QA Тест Кейс Auto QA Тест Скрипт
  27. 27. 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(): …
  28. 28. 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(): … Как-то оно похоже..
  29. 29. 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(): … Как-то оно похоже.. Надо писать два раза…
  30. 30. 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(): … Как-то оно похоже.. Надо писать два раза… И исправлять в двух местах…
  31. 31. Как решить? А давайте генерировать тест-кейс из кода! «Ручной» QA
  32. 32. Как решить? А давайте генерировать тест-кейс из кода! «Ручной» QA Тест Скрипт
  33. 33. Как решить? А давайте генерировать тест-кейс из кода! «Ручной» QA Тест Скрипт Auto QA
  34. 34. Как решить? А давайте генерировать тест-кейс из кода! «Ручной» QA Тест Скрипт Auto QA Реализация Шагов
  35. 35. Плюсы подхода • Нет дублирования работы
  36. 36. Плюсы подхода • Нет дублирования работы • Повышается технический уровень QA
  37. 37. Плюсы подхода • Нет дублирования работы • Повышается технический уровень QA • Нет новых «языков» вроде BDD-style, Keyword Driven и прочего…
  38. 38. Как это выглядит…
  39. 39. Как это выглядит…
  40. 40. Жёсткие рамки Вся логика тестов должна быть внутри шагов
  41. 41. Жёсткие рамки Вся логика тестов должна быть внутри шагов
  42. 42. export_mode = True • Холостой прогон тестов, без выполнения шагов
  43. 43. export_mode = True • Холостой прогон тестов, без выполнения шагов • Проверка того, что все пишут тесты корректно
  44. 44. export_mode = True Тесты в export_mode должны быть passed
  45. 45. Запуск в CI по комитам
  46. 46. export_mode = True output тестов в export_mode можно считать «ручным» тест-кейсом >> some actions >> verify result correctness (4)
  47. 47. export_mode = True output тестов в export_mode можно считать «ручным» тест-кейсом >> some actions >> verify result correctness (4) И отправить в вашу любимую Test Management System!
  48. 48. Grail может больше! Вы можете адаптировать вывод шагов
  49. 49. Логирование параметров и результатов шагов
  50. 50. Где хочешь! Шаги можно хранить, где угодно
  51. 51. step_group Объединяет шаги в группы
  52. 52. step_group
  53. 53. description PASSED login to application PASSED Some tricky actions with the application which I can't put to method name
  54. 54. format_description PASSED Some info: value, another info: kw_value value kw_value 100500
  55. 55. Ну и ещё пара возможностей…
  56. 56. Выключается в fixtures • Шаги ведут себя как обычные методы- функции в – setup_package (_module, _class) – teardown_package (_module, _class) – teardown
  57. 57. Выключается в fixtures • Шаги ведут себя как обычные методы- функции в – setup_package (_module, _class) – teardown_package (_module, _class) – teardown • Исключение: setup
  58. 58. treat_nested_steps_as_methods PASSED external step
  59. 59. log_output PASSED log output -> Important output PASSED do not log output
  60. 60. Итого по Grail
  61. 61. Итого по Grail • Пишем код автотестов сразу
  62. 62. Итого по Grail • Пишем код автотестов сразу Долой лишние бумажки и документы!
  63. 63. Итого по Grail • Пишем код автотестов сразу Долой лишние бумажки и документы! • Подключаем «ручных» тестировщиков к кодированию
  64. 64. Итого по Grail • Пишем код автотестов сразу Долой лишние бумажки и документы! • Подключаем «ручных» тестировщиков к кодированию Долой псевдоязыки (BDD) и Keyword-driven!
  65. 65. Итого по Grail • Пишем код автотестов сразу Долой лишние бумажки и документы! • Подключаем «ручных» тестировщиков к кодированию Долой псевдоязыки (BDD) и Keyword-driven! • Контроль кода автотестов в Continuous Integration
  66. 66. Итого по Grail • Пишем код автотестов сразу Долой лишние бумажки и документы! • Подключаем «ручных» тестировщиков к кодированию Долой псевдоязыки (BDD) и Keyword-driven! • Контроль кода автотестов в Continuous Integration • Открытый и бесплатный
  67. 67. Спасибо! 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

×