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.
UICov — инструмент измерения
UI покрытия
SQA Days 18
Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
Мануальщики:
Я:
Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
А «смоки» это отло...
Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
А «смоки» это отло...
Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
А мы это уже тестировали?
Програ...
Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
А мы это уже тестировали?
Програ...
Идея
Сделать модель и высчитывать покрытие во
время запуска автотестов, ведь они сами
знают на каком они экране и что они ...
Что будем измерять?
Экраны
Screens
Экраны
Что будем измерять?
Экраны, Переходы
Transitions
Переходы
Что будем измерять?
Экраны, Переходы, Действия
Actions
Действия
Что будем измерять?
Экраны, Переходы, Действия, Элементы
Elements
Элементы
Что будем измерять?
Экраны, Переходы, Действия, Элементы, Проверки
Checks
Проверки
?
?
Готово!
Opensource project on GitHub
https://github.com/budabum/uicov
Сущности
Исходная Модель
Шаблон, сделанный по модели
Лог-файл тестов, полученный после прогона
Файл покрытия, созданный по...
Генерируем шаблон
Мо
де
ль
template
g
e
n
t
p
l
Генерируем шаблон
Мо
де
ль
template
g
e
n
t
p
l
>uicov gentpl model-file1 model-file2 model-fileN
Запускаем тесты
Test Suite 1 Test Suite 2 Test Suite N
Тесты
запускаются
как обычно
file1.log file2.log fileN.log
Возможны варианты
Собираем единое покрытие
file1.log file2.log fileN.log
coverage.uic
g
a
t
h
e
r
Собираем единое покрытие
file1.log file2.log fileN.log
coverage.uic
>uicov gather file1.log file2.log fileN.log
Собираем покрытие раздельно
file1.log file2.log fileN.log
file1.uic file2.uic fileN.uic
g
a
t
h
e
r
g
a
t
h
e
r
g
a
t
h
e
r
Собираем покрытие раздельно
file1.log file2.log fileN.log
file1.uic file2.uic fileN.uic
>uicov gather –cov-file=file1.uic ...
Создаём единый отчёт (1)
report
coverage.uic
template.uic
r
e
p
o
r
t
Создаём единый отчёт (1)
report
coverage.uic
template.uic
>uicov report template.uic coverage.uic
Создаём единый отчёт (2)
file1.uic file2.uic fileN.uic
report
template.uic
r
e
p
o
r
t
Создаём единый отчёт (2)
file1.uic file2.uic fileN.uic
report
template.uic
>uicov report template.uic file1.uic file2.uic ...
Создаём раздельные отчёты
file1.uic file2.uic fileN.uic
file1 file2 fileN
template.uic
r
e
p
o
r
t
r
e
p
o
r
t
r
e
p
o
r
t
file1 file2 fileN
Создаём раздельные отчёты
file1.uic file2.uic fileN.uic
template.uic
>uicov report –out-file=file1.html ...
Зачем нужен файл покрытия?
coverage.uic
Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
Почему нельзя так?
Зачем нужен файл покрытия?
coverage.uic
Это сериализованная модель,
которую легко десериализовывать
и преобразовывать и те...
Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
А так конечно тоже можно...
Это сериализованная модель,
...
Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
А так конечно тоже можно, но где же шаблон?
Это сериализ...
Зачем нужен шаблон?
Зачем нужен шаблон?
Что будет, если мы создадим отчёт без использования
шаблона?
Зачем нужен шаблон?
Что будет, если мы создадим отчёт без использования
шаблона?
Покрытие всегда будет 100%
Вот что будет.
А как на самом деле?
file1.log report
file1.log
report
coverage
template
gather
gentmp
merge
merged
coverage report
Откуда вы знаете какие логи?
Откуда вы знаете какие логи?
А почему вы думаете, что я знаю какие у вас логи?
Откуда вы знаете какие логи?
А почему вы думаете, что я знаю какие у вас логи?
RegExp спешат на помощь
А вот вы точно знае...
Pattern File
Это Ruby файл, который загрузится и выполнится
UICov::patterns_override :log do
set_current_screen /Your patt...
Откуда взять модель?
Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
с...
Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
с...
Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
с...
Модель как диаграмма состояний
Модель как диаграмма классов
Так выглядит диаграмма
Модель как диаграмма классов
А так исходный код
@startuml
class LoginScreen{
Element username
Element password
Element log...
Модель как диаграмма классов
И это лёгким движением клавиш превращается в шаблон!
… и еще вот так
Закрепим
>uicov gentpl model-files
Создать шаблон по модели
>uicov gather log-files
Собрать информацию о покрытии
>uicov r...
Пример html отчёта
Спасибо!
Вопросы?
author: Alexey Lyanguzov
mailto: budabum@gmail.com
skype: budabum
Upcoming SlideShare
Loading in …5
×

UICov - инструмент анализа покрытия UI-тестами

1,028 views

Published on

Доклад Алексея Лянгузова на конференции SQA Days-18, 27-28 ноября 2015 г., Москва
www.sqadays.com

Published in: Education
  • Be the first to comment

UICov - инструмент анализа покрытия UI-тестами

  1. 1. UICov — инструмент измерения UI покрытия SQA Days 18
  2. 2. Преамбула А вам приходилось быть в такой ситуации? Заказчик: Какое покрытие? Автотестеры: Программисты: Мануальщики: Я:
  3. 3. Преамбула А вам приходилось быть в такой ситуации? Заказчик: Какое покрытие? Автотестеры: Программисты: А «смоки» это отловят? Мануальщики: Я:
  4. 4. Преамбула А вам приходилось быть в такой ситуации? Заказчик: Какое покрытие? Автотестеры: Программисты: А «смоки» это отловят? Мануальщики: А давайте мы будем смотреть то, что ваши автотесты не делают? Я:
  5. 5. Преамбула А вам приходилось быть в такой ситуации? Заказчик: Какое покрытие? Автотестеры: А мы это уже тестировали? Программисты: А «смоки» это отловят? Мануальщики: А давайте мы будем смотреть то, что ваши автотесты не делают? Я:
  6. 6. Преамбула А вам приходилось быть в такой ситуации? Заказчик: Какое покрытие? Автотестеры: А мы это уже тестировали? Программисты: А «смоки» это отловят? Мануальщики: А давайте мы будем смотреть то, что ваши автотесты не делают? Я: Огурец!
  7. 7. Идея Сделать модель и высчитывать покрытие во время запуска автотестов, ведь они сами знают на каком они экране и что они делают! http://sqadays.com/ru/talk/26051 И я об этом уже рассказывал год назад
  8. 8. Что будем измерять? Экраны Screens Экраны
  9. 9. Что будем измерять? Экраны, Переходы Transitions Переходы
  10. 10. Что будем измерять? Экраны, Переходы, Действия Actions Действия
  11. 11. Что будем измерять? Экраны, Переходы, Действия, Элементы Elements Элементы
  12. 12. Что будем измерять? Экраны, Переходы, Действия, Элементы, Проверки Checks Проверки ? ?
  13. 13. Готово! Opensource project on GitHub https://github.com/budabum/uicov
  14. 14. Сущности Исходная Модель Шаблон, сделанный по модели Лог-файл тестов, полученный после прогона Файл покрытия, созданный по лог-файлам Отчёт, созданный на основе файлов покрытия и шаблона
  15. 15. Генерируем шаблон Мо де ль template g e n t p l
  16. 16. Генерируем шаблон Мо де ль template g e n t p l >uicov gentpl model-file1 model-file2 model-fileN
  17. 17. Запускаем тесты Test Suite 1 Test Suite 2 Test Suite N Тесты запускаются как обычно file1.log file2.log fileN.log
  18. 18. Возможны варианты
  19. 19. Собираем единое покрытие file1.log file2.log fileN.log coverage.uic g a t h e r
  20. 20. Собираем единое покрытие file1.log file2.log fileN.log coverage.uic >uicov gather file1.log file2.log fileN.log
  21. 21. Собираем покрытие раздельно file1.log file2.log fileN.log file1.uic file2.uic fileN.uic g a t h e r g a t h e r g a t h e r
  22. 22. Собираем покрытие раздельно file1.log file2.log fileN.log file1.uic file2.uic fileN.uic >uicov gather –cov-file=file1.uic file1.log >uicov gather –cov-file=fileN.uic fileN.log
  23. 23. Создаём единый отчёт (1) report coverage.uic template.uic r e p o r t
  24. 24. Создаём единый отчёт (1) report coverage.uic template.uic >uicov report template.uic coverage.uic
  25. 25. Создаём единый отчёт (2) file1.uic file2.uic fileN.uic report template.uic r e p o r t
  26. 26. Создаём единый отчёт (2) file1.uic file2.uic fileN.uic report template.uic >uicov report template.uic file1.uic file2.uic fileN.uic
  27. 27. Создаём раздельные отчёты file1.uic file2.uic fileN.uic file1 file2 fileN template.uic r e p o r t r e p o r t r e p o r t
  28. 28. file1 file2 fileN Создаём раздельные отчёты file1.uic file2.uic fileN.uic template.uic >uicov report –out-file=file1.html template.uic file1.uic >uicov report –out-file=fileN.html template.uic fileN.uic
  29. 29. Зачем нужен файл покрытия? coverage.uic
  30. 30. Зачем нужен файл покрытия? coverage.uic file1.log coverage report Почему нельзя так?
  31. 31. Зачем нужен файл покрытия? coverage.uic Это сериализованная модель, которую легко десериализовывать и преобразовывать и тестировать
  32. 32. Зачем нужен файл покрытия? coverage.uic file1.log coverage report А так конечно тоже можно... Это сериализованная модель, которую легко десериализовывать и преобразовывать и тестировать
  33. 33. Зачем нужен файл покрытия? coverage.uic file1.log coverage report А так конечно тоже можно, но где же шаблон? Это сериализованная модель, которую легко десериализовывать и преобразовывать и тестировать
  34. 34. Зачем нужен шаблон?
  35. 35. Зачем нужен шаблон? Что будет, если мы создадим отчёт без использования шаблона?
  36. 36. Зачем нужен шаблон? Что будет, если мы создадим отчёт без использования шаблона? Покрытие всегда будет 100% Вот что будет.
  37. 37. А как на самом деле? file1.log report file1.log report coverage template gather gentmp merge merged coverage report
  38. 38. Откуда вы знаете какие логи?
  39. 39. Откуда вы знаете какие логи? А почему вы думаете, что я знаю какие у вас логи?
  40. 40. Откуда вы знаете какие логи? А почему вы думаете, что я знаю какие у вас логи? RegExp спешат на помощь А вот вы точно знаете какие у вас логи! >uicov gather —pattern-file=my_patterns1 log.file
  41. 41. Pattern File Это Ruby файл, который загрузится и выполнится UICov::patterns_override :log do set_current_screen /Your pattern here/ set_transition /Your pattern here/ set_action /Your pattern here/ set_check /Your pattern here/ set_element /Your pattern here/ end
  42. 42. Откуда взять модель?
  43. 43. Откуда взять модель? Экраны, Переходы, Действия, Элементы, Проверки Вытащить из исходного кода приложения
  44. 44. Откуда взять модель? Экраны, Переходы, Действия, Элементы, Проверки Вытащить из исходного кода приложения Вытащить из UI страниц по спец. признакам
  45. 45. Откуда взять модель? Экраны, Переходы, Действия, Элементы, Проверки Вытащить из исходного кода приложения Вытащить из UI страниц по спец. признакам Нарисовать в plantuml
  46. 46. Откуда взять модель? Экраны, Переходы, Действия, Элементы, Проверки Вытащить из исходного кода приложения Вытащить из UI страниц по спец. признакам Нарисовать в plantuml Вытащить из автотестов из PageObject
  47. 47. Модель как диаграмма состояний
  48. 48. Модель как диаграмма классов Так выглядит диаграмма
  49. 49. Модель как диаграмма классов А так исходный код @startuml class LoginScreen{ Element username Element password Element login_button Transition login(HomeScreen) Transition login(LoginScreen) Action restore_password() Check restore_password_message() Check error_login_message() } class PreferencesScreen{ Element email Element password Element confirm_password Element photo_image Element save_button Transition apply_changes(HomeScreen) Action change_password() Action change_email() Action upload_photo() Action delete_photo() Check correct_photo() Check new_email_confirmed() } @enduml
  50. 50. Модель как диаграмма классов И это лёгким движением клавиш превращается в шаблон!
  51. 51. … и еще вот так
  52. 52. Закрепим >uicov gentpl model-files Создать шаблон по модели >uicov gather log-files Собрать информацию о покрытии >uicov report template coverage-files Сгенерировать отчёт >uicov merge coverage-file1 coverage-fileN Соединить файлы покрытия
  53. 53. Пример html отчёта
  54. 54. Спасибо! Вопросы? author: Alexey Lyanguzov mailto: budabum@gmail.com skype: budabum

×