ВВЕДЕНИЕ 3
1 ПОСТАНОВКА ЗАДАЧИ 5
1.1 Концепция программного инструмента 5
1.2 Обзор альтернативных решений 6
2 АРХИТЕКТУРА ПЛАГИНА 8
2.1 Структура плагина 8
2.2 Разделение классов 9
3 АВТОГЕНЕРИРОВАНИЕ UI-ТЕСТОВ 12
3.1 Т ест-кейсы для библиотеки генерации UI-тестов 12
3.2 Принцип работы библиотеки для генерации UI-тестов 18
4 АВТОГЕНЕРИРОВАНИЕ UNIT-ТЕСТОВ 20
4.1 Анализ библиотек для генерации unit-тестов 20
4.2 Интеграция библиотеки EvoSuite 22
5 РЕЗУЛЬТАТ РАБОТЫ ПЛАГИНА 24
ЗАКЛЮЧЕНИЕ 27
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 28
ПРИЛОЖЕНИЕ 31
С процветанием рынка мобильных устройств, повлекшим за собой пропорциональный рост количества выпускаемых приложений для данных устройств, тестирование мобильных программных продуктов становится важнейшим этапом разработки программных продуктов, особенно требующим внимания. Если на рынок выпускается приложение, в котором имеются ошибки, критично сказывающиеся на опыте взаимодействия пользователя с приложением, оно с большей вероятностью потерпит неудачу на рынке [1]. Около 50% пользователей удаляют приложение после нахождения первой ошибки, и лишь 8%, дают третий шанс продукту после нахождения второй ошибки [2]. Если говорить об операционной системе Android, то на данный момент существует более 24000 разных устройств для данной ОС [3]. Корректная работа программного решения на устройстве зависит от особенностей конкретного устройства, а потому тестирование мобильных приложений для ОС Android сопровождается значительными трудозатратами.
Согласно исследованиям Gartner 85,9% проданных смартфонов по данным на февраль 2018 — доля Android. На март 2018 г. в Google Play Store содержится около 3.6 миллиона приложений для Android [4], и их число растет с каждым днем.
Процесс тестирования занимает 30%-50% от времени, потраченного на разработку программного продукта [5] и соразмерный данным временным затратам бюджет [6]. Поэтому для тестирования разных проектов появляется все больше автоматизирующих библиотек, с помощью которых можно проверить поведение даже самых незначительных частей программы. Одна из разновидностей таких инструментов - библиотеки для автоматической генерации тестов.
В статье “Does Automated Unit Test Generation Really Help Software Testers? A Controlled Empirical Study” [7] авторы проверяли разницу между автоматическим и ручным генерированием тестов. Результат показал, что инструменты для автоматической генерации тестов охватывают большую часть кода, что способствует более эффективному тестированию программного продукта. Также исследование показало, что испытуемые, использующие автогенерацию тестов, нашли то же количество ошибок, что и испытуемые, которые писали тесты вручную, но последние потратили на 70% больше времени. Данное исследование показывает, что развитие инструментов автогенерации тестов поможет сократить время для тестирования, а также уменьшит бюджет расходов компаний, использующих данные инструменты.
Цель данной выпускной квалификационной работы - разработать плагин для среды Android Studio, который обеспечит автоматическое генерирование UI- и unit-тестов. Для достижения поставленной цели были поставлены следующие задачи:
1. Реализация алгоритма тестирования пользовательских интерфейсов для ОС Android.
2. Создание библиотеки для генерации UI-тестов для ОС Android.
3. Разработка плагина для автоматического генерирования тестов в среде Android Studio.
В результате выполнения данной дипломной работы был разработан плагин для автоматической генерации unit и UI тестов для Android приложений.
Для достижения поставленной цели были решены следующие задачи:
1. Реализован алгоритм тестирования пользовательских интерфейсов для ОС Android.
2. На основании разделенных на группы тестовых сценариев была создана библиотека для генерации UI-тестов.
3. Разработан программный продукт для автоматического генерирования unit- и UI-тестов в среде Android Studio.
Разработанный плагин может быть интегрирован в среду разработки Android Studio и использован Android-разработчиками любого уровня в качестве инструмента для генерирования тестов.
Готовый результат выложен в репозиторий сервиса GitHub и доступен по ссылке [25].
Тестирование данного программного инструмента показало, что использование разработанного плагина позволяет сократить временные затраты на тестирование мобильных продуктов для ОС Android в 3 раза.
Дальнейшая работа над данным инструментом предполагает поддержку существующих и внесение новых тест-кейсов как для новых элементов, так и для функционала старых элементов.