- PVSM.RU - https://www.pvsm.ru -
Статья публикуется от имени Иванова Андрея и neifmetus [1]
Автоматизация мобильных приложений довольно молодая сфера: фреймворков много и многие проекты сталкиваются с проблемой выбора самого «быстрого, стабильного, простого в использовании». Также и мы около двух лет назад стояли перед выбором нового инструмента автоматизации тестирования Android приложений.
Все популярные инструменты так или иначе базировались на UIAutomator и Espresso, поэтому мы решили затестить их в чистом виде и сравнить с теми же Appium (самый популярный) и seeTest [2] (использовался до этого, лучший среди платных на тот момент).
Из достоинств Appium можно выделить привычный многим WebDriver API, возможность использования большинства популярных языков и библиотек. Кроме этого, он широко используется во многих компаниях и позволяет писать тесты сразу под платформы iOS и Android. И, наконец, это бесплатное коробочное решение — что может быть лучше?
Так думали мы, пока не обнаружили следующие недостатки:
Для нас эти моменты были критичными, поэтому было принято решение собрать свой набор инструментов вокруг Espresso для построения экосистемы тестирования мобильных приложений.
Итак, фреймворк был выбран, оставалось найти остальные компоненты:
С runner’ом все обстояло хорошо, немного покопавшись на github, был выбран shazam/fork [4].
Он позволяет удобно конфигурировать пул устройств, прост в доработках, генерирует простенький html отчет. К каждому отчету прикладывается logcat, в случае падение теста stacktrace и видео. Запись видео работает некорректно, все видео длительностью 1 мин, иногда на видео записано по несколько тестов.
Отчеты fork’a были далеки от идеала, конечный пользователь не понимал, что происходит в тесте только по его названию, не имея тест-кейс под рукой. Хотелось иметь шаги с вложенными файлами, которые бы позволили структурировать отчет. Поиски репортера для instrumentation тестов выдали 2 варианта spoon и cucumber. Оба варианта были отброшены т.к куча скринов в случае spoon и bdd от cucumber не решали вопрос полностью…
Allure выглядел наиболее оптимальным вариантом решения задачи:
Но оставался один нюанс, Allure попросту не заводится на Android.
В связи с вышеописанным было принято решение написать библиотеку, которая бы совмещала в себе простоту и элегантность Kotlin, преимущества фреймворка Allure и могла работать на телефонах под управлением Android. Для того, чтобы подключить библиотеку, добавим зависимости к модулю, в котором находятся instrumentation тесты:
dependencies {
androidTestImplementation "ru.tinkoff.allure:allure-android:$allureVersion@aar"
androidTestImplementation "ru.tinkoff.allure:allure-common:$allureVersion"
androidTestImplementation "ru.tinkoff.allure:allure-model:$allureVersion"
}
После настройки зависимостей, нам необходимо зарегистрировать AllureRunListener к классу отвечающему за запуск android тестов.
Сделать это можно тремя способами:
testInstrumentationRunner "ru.tinkoff.allure.android.AllureAndroidRunner"
arguments.putCharSequence("listener", AllureAndroidListener::class.java.name)
В основе отчетов Allure находится step – шаг, атомарное действие, которое производится во время теста. Аннотации фреймворка Allure Step [5] и Parameter [6] были заменены на прямой вызов функции step().
inline fun <T : Any?> step(description: String, vararg params: Parameter, block: () -> T): T
Эта функция не только заменяет сразу две аннотации, а также принимает лямбду, в которую следует обернуть тестовую логику. Например:
После запуска теста, на телефоне в папке /sdcard/allure-results появится отчеты в json формате подготовленные для Allure2. Вытащив результат, командой
adb pull /sdcard/allure-results
сможем сгенерировать отчет
allure generate
Из дополнительных возможностей, можно выделить:
Это краткий обзор использования Allure на платформе Android. Решение allure-android доступно на GitHub [7], можно детально посмотреть и поучаствовать в развитии.
Автор: tinkoff_qa
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/blog-kompanii-tinkoff-ru/309824
Ссылки в тексте:
[1] neifmetus: https://habr.com/ru/users/neifmetus/
[2] seeTest: https://habr.com/company/tinkoff/blog/324766/
[3] здесь: https://habr.com/ru/company/badoo/blog/354296/
[4] shazam/fork: https://github.com/shazam/fork
[5] Step: https://habr.com/ru/users/step/
[6] Parameter: https://habr.com/ru/users/parameter/
[7] GitHub: https://github.com/TinkoffCreditSystems/allure-android
[8] Источник: https://habr.com/ru/post/433756/?utm_campaign=433756
Нажмите здесь для печати.