Robotic-supported Data Loss Detection in Android Applications
Resumo
Smartphones have become integral to modern life due to their diverse applications. However, the development of applications for these devices faces significant challenges, primarily due to two factors: (i) the diverse hardware and operating system versions that require testing across multiple configurations; and (ii) the imperative activity of testing the smartphone in a non-invasive way (similar to an end-user interaction), which is expensive, tedious and error-prone as it is usually carried out manually. In this context, robotic automation has emerged as an effective solution for addressing the diversity of smartphone systems and versions, and in performing some testing tasks non-invasively. In addition, automated robots facilitate quick, accurate, and repetitive testing, thus enabling developers to validate their applications across various configurations effectively. This results in a less invasive verification and in a significant reduction in time spent on manual testing, thus accelerating the development cycle. Our work proposes R-DLD (Robotic-supported Data Loss Detection), a robot-assisted infrastructure for data loss detection in Android applications, offering less invasive and more realistic tests by interacting directly with smartphone sensors. The robot is constructed using cost-effective materials, facilitating its adoption in testing environments. In our empirical evaluation R-DLD successfully identified 341 data loss issues in 77 randomly selected apps from an Android store. All reported bugs received responses from the developer, with 89.55% confirming the data loss problems, while 35.82% have being subsequently fixed.
Referências
Android. 2022. The Activity Lifecycle. [link] [Online; accessed 12-February-2022].
Android. 2022. Handle configuration changes. [link] [Online; accessed 12-February-2022].
Arduino. 2024. AccelStepper - Arduino Reference. [link]
Debdeep Banerjee and Kevin Yu. 2018. Robotic Arm-Based Face Recognition Software Test Automation. IEEE Access 6 (2018), 37858–37868. DOI: 10.1109/ACCESS.2018.2854754
Debdeep Banerjee and Kevin Yu. 2020. 3D Face Authentication Software Test Automation. IEEE Access 8 (2020), 46546–46558. DOI: 10.1109/ACCESS.2020.2978899
Debdeep Banerjee, Kevin Yu, and Garima Aggarwal. 2018. Hand Jitter Reduction Algorithm Software Test Automation Using Robotic Arm. IEEE Access 6 (2018), 23582–23590. DOI: 10.1109/ACCESS.2018.2829466
Debdeep Banerjee, Kevin Yu, and Garima Aggarwal. 2018. Image Rectification Software Test Automation Using a Robotic ARM. IEEE Access 6 (2018), 34075–34085. DOI: 10.1109/ACCESS.2018.2846761
Debdeep Banerjee, Kevin Yu, and Garima Aggarwal. 2018. Object Tracking Test Automation Using a Robotic Arm. IEEE Access 6 (2018), 56378–56394. DOI: 10.1109/ACCESS.2018.2873284
Lucas Cabral, Breno Miranda, Igor Lima, and Marcelo d’Amorim. 2022. RVprio: A tool for prioritizing runtime verification violations. Software Testing, Verification and Reliability 32, 5 (2022), e1813. DOI: 10.1002/stvr.1813
Mihai Craciunescu, Stefan Mocanu, Cristian Dobre, and Radu Dobrescu. 2018. Robot Based Automated Testing Procedure Dedicated to Mobile Devices. In 2018 25th International Conference on Systems, Signals and Image Processing (IWSSIP). 1–4. DOI: 10.1109/IWSSIP.2018.8439614
Android Developer. 2023. Android Debug Bridge (ADB). [link]
Davi Freitas, Breno Miranda, and Juliano Iyoda. 2024. RFNIT: Robotic Framework for Non-invasive Testing. In Companion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering. DOI: 10.1145/3663529.3663871
Wunan Guo, Zhen Dong, Liwei Shen, Wei Tian, Ting Su, and Xin Peng. 2022. Detecting and Fixing Data Loss Issues in Android Apps. In ISSTA 2022. DOI: 10.1145/3533767.3534402
Wunan Guo, Zhen Dong, Liwei Shen, Wei Tian, Ting Su, and Xin Peng. 2022. A Tool for Detecting and Fixing Data Loss Issues in Android Apps. In ISSTA 2022.
Manoj Hans. 2015. Appium Essentials. Vol. 1. Packt Publishing.
Jih-Gau Juang and I-Hua Cheng. 2017. Application of character recognition to robot control on smartphone test system. Advances in Mechanical Engineering 9, 3 (2017), 1687814017693181. DOI: 10.1177/1687814017693181
Yuanchun Li, Ziyue Yang, Yao Guo, and Xiangqun Chen. 2017. DroidBot: a lightweight UI-Guided test input generator for android. In 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C). 23–26. DOI: 10.1109/ICSE-C.2017.8
Lucas Maciel, Alice Oliveira, Riei Rodrigues, Williams Santiago, Andresa Silva, Gustavo Carvalho, and Breno Miranda. 2022. A Systematic Mapping Study on Robotic Testing of Mobile Devices. In 2022 48th Euromicro Conference Series on Software Engineering and Advanced Applications (SEAA). IEEE, 475–482. DOI: 10.1109/SEAA56994.2022.00079
Ke Mao, Mark Harman, and Yue Jia. 2017. Robotic Testing of Mobile Apps for Truly Black-Box Automation. IEEE Software 34, 2 (2017), 11–16. DOI: 10.1109/MS.2017.49
Michael McRoberts. 2011. Beginning Arduino (1st ed.). Apress.
Breno Miranda, Igor Lima, Owolabi Legunsen, and Marcelo d’Amorim. 2020. Prioritizing runtime verification violations. In 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST). IEEE, 297–308. DOI: 10.1109/ICST46399.2020.00038
Simon Monk. 2022. Programming Arduino: Getting Started with Sketches (3rd ed.). McGraw Hill.
Ju Qian, Zhengyu Shang, Shuoyan Yan, Yan Wang, and Lin Chen. 2020. Ro-Script: A Visual Script Driven Truly Non-Intrusive Robotic Testing System for Touch Screen Applications. In Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering (Seoul, South Korea) (ICSE ’20). Association for Computing Machinery, New York, NY, USA, 297–308. DOI: 10.1145/3377811.3380431
Vincenzo Riccio, Domenico Amalfitano, and Anna Rita Fasolino. 2018. Is this the lifecycle we really want? an automated black-box testing approach for Android activities. In Companion Proceedings for the ISSTA/ECOOP 2018Workshops. 68–77.
Oliviero Riganelli, Simone Paolo Mottadelli, Claudio Rota, Daniela Micucci, and Leonardo Mariani. 2020. Data loss detector: automatically revealing data loss bugs in Android apps. In Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis. 141–152.
Robotium. 2022. Android test automation framework. [link]. [Online; accessed 15-June-2022].
UIAutomator. 2022. UI testing framework. [link] [Online; accessed 15-June-2022].
Prateek Vermaa, Dushyant Singh Chauhana, Rohan Ramaswamya, and C. Likith Kumar. 2017. MultiTouch Testing Robot. International Journal of Control Theory and Applications 10, 31 (2017), 219–223.
Lili Wei, Yepang Liu, and Shing-Chi Cheung. 2016. Taming Android fragmentation: Characterizing and detecting compatibility issues for Android apps. In 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE). 226–237.
Razieh Nokhbeh Zaeem, Mukul R Prasad, and Sarfraz Khurshid. 2014. Automated generation of oracles for testing user-interaction features of mobile apps. In 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation. IEEE, 183–192.
Tao Zhang, Ying Liu, Jerry Gao, Li Peng Gao, and Jing Cheng. 2020. Deep Learning-Based Mobile Application Isomorphic GUI Identification for Automated Robotic Testing. IEEE Software 37, 4 (2020), 67–74. DOI: 10.1109/MS.2020.2987044