2. Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
Мануальщики:
Я:
3. Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
А «смоки» это отловят?
Мануальщики:
Я:
4. Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
Программисты:
А «смоки» это отловят?
Мануальщики:
А давайте мы будем
смотреть то, что ваши
автотесты не делают?
Я:
5. Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
А мы это уже тестировали?
Программисты:
А «смоки» это отловят?
Мануальщики:
А давайте мы будем
смотреть то, что ваши
автотесты не делают?
Я:
6. Преамбула
А вам приходилось быть в такой ситуации?
Заказчик:
Какое покрытие?
Автотестеры:
А мы это уже тестировали?
Программисты:
А «смоки» это отловят?
Мануальщики:
А давайте мы будем
смотреть то, что ваши
автотесты не делают?
Я:
Огурец!
7. Идея
Сделать модель и высчитывать покрытие во
время запуска автотестов, ведь они сами
знают на каком они экране и что они делают!
http://sqadays.com/ru/talk/26051
И я об этом уже рассказывал год назад
14. Сущности
Исходная Модель
Шаблон, сделанный по модели
Лог-файл тестов, полученный после прогона
Файл покрытия, созданный по лог-файлам
Отчёт, созданный на основе файлов покрытия и шаблона
30. Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
Почему нельзя так?
31. Зачем нужен файл покрытия?
coverage.uic
Это сериализованная модель,
которую легко десериализовывать
и преобразовывать и тестировать
32. Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
А так конечно тоже можно...
Это сериализованная модель,
которую легко десериализовывать
и преобразовывать и тестировать
33. Зачем нужен файл покрытия?
coverage.uic
file1.log
coverage
report
А так конечно тоже можно, но где же шаблон?
Это сериализованная модель,
которую легко десериализовывать
и преобразовывать и тестировать
39. Откуда вы знаете какие логи?
А почему вы думаете, что я знаю какие у вас логи?
40. Откуда вы знаете какие логи?
А почему вы думаете, что я знаю какие у вас логи?
RegExp спешат на помощь
А вот вы точно знаете какие у вас логи!
>uicov gather —pattern-file=my_patterns1 log.file
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
44. Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
страниц по спец.
признакам
45. Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
страниц по спец.
признакам
Нарисовать в
plantuml
46. Откуда взять модель?
Экраны, Переходы, Действия, Элементы, Проверки
Вытащить из
исходного кода
приложения
Вытащить из UI
страниц по спец.
признакам
Нарисовать в
plantuml
Вытащить из
автотестов
из PageObject
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. Модель как диаграмма классов
И это лёгким движением клавиш превращается в шаблон!