ВВЕДЕНИЕ 3
1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ 5
1.1 Актуальность применения ручного тестирования 5
1.2 Литературный обзор исследований 6
1.3 Обзор программных инструментов 18
2 КОНЦЕПЦИЯ ПРОГРАММНОГО РЕШЕНИЯ 24
2.1 Описание требований к программному инструменту 24
2.2. Описание алгоритма работы инструмента 26
3 РАЗРАБОТКА ПРОГРАММНОГО РЕШЕНИЯ 32
3.1 Архитектура программного инструмента 32
3.2 Реализация модуля анализа исходного кода приложения 34
3.3 Тестирование модуля анализа исходного кода 38
3.4 Реализация модуля создания тестовых сценариев на основе файла
технического задания 43
3.5 Контентное наполнение разработанного инструмента 47
4 ПРИМЕНЕНИЕ РАЗРАБОТАННОГО ИНСТРУМЕНТА 50
ЗАКЛЮЧЕНИЕ 56
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 57
ПРИЛОЖЕНИЕ А. Исходный код основных модулей программы 60
Тестирование является одним из важных этапов процесса разработки программного обеспечения. Качество конечного программного продукта напрямую зависит от тестирования, так как не обнаруженные во время разработки дефекты оказывают негативное влияние на опыт взаимодействия пользователя с приложением. В современных реалиях данное обстоятельство может сыграть решающую роль, ведь у пользователя, который столкнулся с дефектом, может пропасть желание вновь работать с приложением. Возможен большой отток пользователей, если данная ситуация станет носить массовый характер, что повлечет за собой финансовые потери для издателя или разработчика. По этой причине тестированию разрабатываемых приложений следует уделять пристальное внимание. Но в зависимости от сложности проекта, проведение тестирования в современных реалиях может потребовать значительных затрат времени и ресурсов.
Согласно книге Байзера “Software Testing Techniques”, в некоторых случаях цена тестирования программного продукта может составлять до 50% от общей стоимости разработки, а затрачиваемое на него время - около 30% [1]. Время разработки программного обеспечения стало важной составляющей конкурентоспособности на рынке, особенно в области разработок мобильных приложений. Довольно распространенной является практика, при которой на рынок выходит минимально жизнеспособный продукт, способный привлечь первую аудиторию. Далее начинается постоянное обновление и функциональное наполнение данного прототипа. В подобной ситуации целесообразным является проведение ручного тестирования, так как частый выпуск обновлений мешает организовать эффективный процесс автоматического тестирования [2].
Подготовка тест плана и написание тестовых сценариев лежат в основе правильно организованного ручного тестирования [3]. Тем не менее, перед командой разработки все еще стоит вопрос ресурсных затрат на составление тестовой документации, так как необходимо обеспечить быстрый цикл выпуска новой функциональности. Одним из решений данного вопроса является автоматизация процесса написания тестовых сценариев. Но следует отметить, что в области разработки мобильных приложений практически не существует программных инструментов, способных генерировать тестовые сценарии, которые не будут нуждаться в ручном редактировании. Исходя из этого, можно говорить о существовании проблемы значительных временных затрат на подготовку тестовых сценариев по причине того, что существующие инструменты автоматизации данного процесса не генерируют готовые тестовые сценарии, которые сразу могут быть использованы командой тестирования.
Таким образом, целью данной работы является разработка программного инструмента автоматической генерации тестовых сценариев для задач ручного тестирования мобильных приложений.
Задачи, выполнение которых необходимо для достижения поставленной цели:
• разработка модуля обработки XML-файлов, описывающих пользовательские интерфейсы Android-приложений;
• разработка модуля извлечения данных о сценариях пользовательского взаимодействия из исходного кода приложения;
• разработка модуля генерации результирующего файла с описанием тестовых сценариев;
• разработка модуля анализа текстового файла с описанием требований к тестируемому приложению и генерации тестовых сценариев на основе полученных данных.
В результате выполнения данной работы был реализован программный инструмент, способный генерировать готовые тестовые сценарии как по исходному коду приложения, так и по текстовому файлу технического задания.
Для реализации предложенного инструмента был решен следующий список задач:
• разработан модуль обработки XML-файлов, которые описывают элементы пользовательских интерфейсов Android-приложений;
• разработан модуль, проводящий анализ исходного кода и извлекающий данные о сценариях пользовательского взаимодействия с приложением;
• разработан модуль генерации результирующего файла с описанием тестовых сценариев;
• разработан модуль анализа текстового файла с описанием требований к тестируемому приложению и генерации тестовых сценариев на основе полученных данных.
Реализованный программный инструмент отвечает всем поставленным требованиям и поддерживает распознавание наиболее распространенных сценариев пользовательского взаимодействия с Android-приложениями. Также следует отметить, что модуль анализа исходного кода поддается расширению и может быть тонко настроен любой командой разработки в случае, если это будет необходимо.
1. Beizer, В. Software Testing Techniques [Text] / В. Beizer. - Van Nostrand Reinhold, 1990. - 550 p.
2. Инструменты и подходы к автоматизации тестирования [Электронный
ресурс]. - URL: http://www.globalcio.ru/experts/373/ (дата обращения:
25.12.2018) .
3. Гид по ручному тестированию приложений: преимущества, этапы и
методологии [Электронный ресурс]. - URL:
https://habr.com/ru/company/skillbox/blog/418889/ (дата обращения
25.12.2018) .
4. Как посчитать время на тестирование [Электронный ресурс]. - URL:
https://habr.com/ru/company/dataart/blog/272193/. (дата обращения
11.03.2019) .
5. Setiani, N. Literature Review on Test Case Generation Approach [Text] / N. Setiani, R. Ferdiana, P.I. Santosa, R. Hartanto // ACM International Conference Proceeding Series. - January 2019. - P. 91-95.
6. Ali, S. A Systematic Review of the Application and Empirical Investigation of Search-Based Test Case Generation [Text] / S. Ali, L. Briand, H. Hemmati, R.K, Panesar-Walawege // IEEE Transactions on Software Engineering. - December 2010. - V. 36, № 6. - P. 742-762.
7. Anbunathan, R. Automation framework for test script generation for android mobile [Text] / R. Anbunathan, A. Basu // Advances in Intelligent Systems and Computing. - 2019. - V. 731. - P. 571-584.
8. Tang, K. Automatic Generation Method of Test Path Based on Android Mobile Terminal Software [Text] / K. Tang, X. Zhang, Z. Li // Proceedings of the IEEE International Conference on Software Engineering and Service Sciences. - April 2018. - P. 483-487.
9. Nebut, C. Automatic test generation: a use case driven approach [Text] / C. Nebut, F. Fleurey, Y. Le Traon, J. Jezequel // IEEE Transactions on Software Engineering. - March 2006. - V. 32, № 3. - P. 140-155.
10. Augusto, F. An approach for automatic test cases generation from UML activity diagrams [Text] / F. Augusto, D. Teixeira, G.B. Silva // Advances in Intelligent Systems and Computing. - April 2017. - V.558. -P. 411-417.
11. Wang, L. Generating test cases from UML activity diagram based on gray-box method [Text] / L. Wang, J. Yuan, X. Yu, J. Hu, X. Li, G. Zheng // Asia-Pacific Software Engineering Conference. - December 2004. - P.284-291.
12. Chu, E.T.-H. Automated GUI testing for android news applications [Text] /
E. T.-H. Chu, J.-Y. Lin // International Symposium on Computer, Consumer and Control. - February 2019. - P.14-17.
13. Ma, Y. Paladin: Automated generation of reproducible test cases for android apps [Text] / Y. Ma, Y. Huang, Z. Hu, X. Xiao, X. Liu // HotMobile 2019 - Proceedings of the 20th International Workshop on Mobile Computing Systems and Applications. - February 2019. - P. 99-104.
14. Testrail - test case management & test management software tool [Электронный ресурс]. - URL: https://www.gurock.com/testrail (дата обращения 26.02.2019).
15. Anbunathan, R. Automation framework for test script generation for android mobile [Text] / R. Anbunathan, A. Basu // Advances in Intelligent Systems and Computing. - 2019. - V.731. - P. 571-584.
16. Guitar - a GUI testing framework [Электронный ресурс]. - URL: https://sourceforge.net/projects/guitar/ (дата обращения 27.02.2019).
17. 10 лет Play Market в цифрах [Электронный ресурс]. - URL: https://qmobi.agency/blog/play-market-10-years/ (дата обращения 14.04.2019) .
18. Boxable - A java library to build tables in PDF documents [Электронный ресурс]. - URL: https://github.com/dhorions/boxable (дата обращения 17.02.2019) .
19. Морфологический анализатор pymorphy2 [Электронный ресурс]. -
URL: https://pymorphy2.readthedocs.io/en/latest/ (дата обращения
24.05.2019) .