Abstract
Many modern software projects use bug-tracking systems (e.g., Bugzilla, Google Code Issue Tracker) to track software issues and help developers reproduce these issues. There has been recent work on automatically translating the natural language text (i.e., steps to reproduce) of bug reports to reproducing scripts, targeted at Android apps, to facilitate app debugging process. The scripts describe the event sequences leading to the app issues and thus can be reused for testing newer versions of the apps. However, existing techniques require manually providing the text description of steps to reproduce for generating reproducing scripts, which is a non-trivial task because natural language text in bug reports can be complex and contain much information irrelevant for bug reproduction. In this paper, we propose an approach that can automatically extract the text description of steps to reproduce (S2R) from bug reports to advance automated software issue diagnosis and test script reuse. The approach is implemented as a tool, called S2RMiner, which combines HTML parsing, natural language processing, and machine learning techniques. We have evaluated S2RMiner on 1000 original Android bug reports. The results show that S2RMiner can extract S2R with high accuracy.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Bitbucket. https://bitbucket.org
Github. https://github.com
Google code archive. https://code.google.com/archive/
Google play data. https://en.wikipedia.org/wiki/Google_Play
S2rminer publick link. https://github.com/AndroidTestBugReport/S2RMiner
Scikit-learn. https://scikit-learn.org/stable/
spaCy. https://spacy.io/
Aranda, J., Venolia, G.: The secret life of bugs: going past the errors and omissions in software repositories, pp. 298–308 (2009)
Bacchelli, A., Cleve, A., Lanza, M., Mocci, A.: Extracting structured data from natural language documents with island parsing. In: 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011), pp. 476–479. IEEE (2011)
Bettenburg, N., Premraj, R., Zimmermann, T., Kim, S.: Extracting structural information from bug reports. In: Proceedings of the 2008 International Working Conference on Mining Software Repositories, pp. 27–30. ACM (2008)
Bird, C., et al.: Fair and balanced?: bias in bug-fix datasets, pp. 121–130 (2009)
Burstein, J., Marcu, D., Andreyev, S., Chodorow, M.: Towards automatic classification of discourse elements in essays. In: Proceedings of the 39th Annual Meeting on Association for Computational Linguistics, pp. 98–105. Association for Computational Linguistics (2001)
Chaparro, O., et al.: Detecting missing information in bug descriptions. In: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, pp. 396–407 (2017)
Dougherty, G.: Pattern Recognition and Classification: An Introduction. Springer, New York (2012). https://doi.org/10.1007/978-1-4614-5323-9
Fazzini, M., Prammer, M., d’Amorim, M., Orso, A.: Automatically translating bug reports into test cases for mobile apps. In: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 141–152. ACM (2018)
Gegick, M., Rotella, P., Xie, T.: Identifying security bug reports via text mining: an industrial case study. In: International Working Conference on Mining Software Repositories, pp. 11–20 (2010)
Joachims, T.: Making large-scale SVM learning practical. Technical report, SFB 475: Komplexitätsreduktion in Multivariaten \(\ldots \) (1998)
Joachims, T.: Text categorization with support vector machines: learning with many relevant features. In: Nédellec, C., Rouveirol, C. (eds.) ECML 1998. LNCS, vol. 1398, pp. 137–142. Springer, Heidelberg (1998). https://doi.org/10.1007/BFb0026683
Kulkarni, A., Shivananda, A.: Converting text to features. In: Kulkarni, A., Shivananda, A. (eds.) Natural Language Processing Recipes, pp. 67–96. Springer, Heidelberg (2019). https://doi.org/10.1007/978-1-4842-4267-4_3
Moran, K., Linares-Vásquez, M., Bernal-Cárdenas, C., Poshyvanyk, D.: Auto-completing bug reports for android applications. In: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, pp. 673–686. ACM (2015)
Packard, H.: Failing to meet mobile app user expectations: a mobile user survey. Technical report (2015)
Ponzanelli, L., Mocci, A., Lanza, M.: StORMeD: stack overflow ready made data. In: 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories, pp. 474–477. IEEE (2015)
Rigby, P.C., Robillard, M.P.: Discovering essential code elements in informal documentation. In: 2013 35th International Conference on Software Engineering (ICSE), pp. 832–841. IEEE (2013)
Xia, X., Lo, D., Qiu, W., Wang, X., Zhou, B.: Automated configuration bug report prediction using text mining. In: Computer Software and Applications Conference, pp. 107–116 (2014)
Yoo, S., Harman, M.: Regression testing minimization, selection and prioritization: a survey. STVR 22(2), 67–120 (2012)
Zhao, Y., Yu, T., Su, T., Liu, Y., Zheng, W., Zhang, J., Halfond, W.G.: Recdroid: automatically reproducing android application crashes from bug reports. In: Proceedings of the 2019 41st ACM/IEEE International Conference on Software Engineering (2019)
Acknowledgements
This research is supported in part by the NSF grant CCF-1652149.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Zhao, Y., Miller, K., Yu, T., Zheng, W., Pu, M. (2019). Automatically Extracting Bug Reproducing Steps from Android Bug Reports. In: Peng, X., Ampatzoglou, A., Bhowmik, T. (eds) Reuse in the Big Data Era. ICSR 2019. Lecture Notes in Computer Science(), vol 11602. Springer, Cham. https://doi.org/10.1007/978-3-030-22888-0_8
Download citation
DOI: https://doi.org/10.1007/978-3-030-22888-0_8
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-22887-3
Online ISBN: 978-3-030-22888-0
eBook Packages: Computer ScienceComputer Science (R0)