Due to the increasing size and complexity of software systems, it becomes hard to test these systems exhaustively. As a result, some faults can be left undetected. Undetected faults can lead to failures in deployed systems. Such failures are usually reported by the users from the field or test engineers back to developers. It requires considerable time and effort to analyze and reproduce the reported failures because their descriptions are not always complete, structured and formal. In this paper, we introduce a novel approach for automatically reproducing failures to aid their debugging. Our approach relies on semi-structured failure scenario descriptions that employ a set of keywords. These descriptions are preprocessed and mapped to a set of predefined test case templates with valid input sets. Then, test cases are generated and executed to reproduce the reported failure scenarios. The approach is evaluated with an industrial case study performed in a company from the telecommunications domain. Several failures were successfully reproduced. The approach is also adopted in the quality assurance process of the company. After one-time preparation of reusable test case templates and training of test engineers, 24.9 % of the reported failures (and 40 % of those that were manually reproducible) could be reproduced without any manual effort.
This is a preview of subscription content, access via your institution.
Buy single article
Instant access to the full article PDF.
Tax calculation will be finalised during checkout.
Subscribe to journal
Immediate online access to all issues from 2019. Subscription will auto renew annually.
Tax calculation will be finalised during checkout.
We refer to both software test engineers and end users of the system as users.
The number of compatible issues were decreased due to a major version upgrade.
The average time to reproduce a failure is basically expert opinion. We collected estimations of all the involved engineers in the company.
Andrica, S., & Candea, G. (2011). Warr: A tool for high-fidelity web application record and replay. In Proceedings of the 41st annual IEEE/IFIP international conference on dependable systems and networks (pp. 403–410).
Arya, K., & Verma, H. (2014). Keyword driven automated testing framework for web application. In Proceedings of the 9th international conference on industrial and information systems (pp. 1–6).
Avizienis, A., Laprie, J. C., Randell, B., & Landwehr, C. (2004). Basic concepts and taxonomy of dependable and secure computing. IEEE Transactions on Dependable and Secure Computing, 1, 11–33.
Bajpai, N., et al. (2012). A keyword driven framework for testing web applications. International Journal of Advanced Computer Science and Applications, 3(3), 8–14.
Briand, L., Labiche, Y., & He, S. (2009). Automating regression test selection based on UML designs. Information and Software Technology, 51(1), 16–30.
Friedl, J. (2006). Mastering regular expressions. Sebastopol: O’Reilly Media Inc.
Grottke, M., Nikora, A., & Trivedi, K. (2010). An empirical investigation of fault types in space mission system software. In Proceedings of the 40th IEEE/IFIP international conference on dependable systems and networks (pp. 447–456).
Hui, J., Yuqing, L., Pei, L., Shuhang, G., & Jing, G. (2008). LKDT: A keyword-driven based distributed test framework. In Proceedings of the international conference on computer science and software engineering (Vol. 2, pp. 719–722).
Jin, W., & Orso, A. (2012). Bugredux: Reproducing field failures for in-house debugging. In Proceedings of the 34th international conference on software engineering (pp. 474–484).
Lerman, J. (2013). Behavior-driven design with specflow. MSDN Magazine, 28(7), 12–22.
Naveen, K., & Hunter, P. (2012). Cost effective agile test practices and test automation using open source tools specflow and white. In Proceedings of the PNSQC (pp. 165–178).
North, D. (2006). Behavior modification (pp. 27–31). TechWell Corporation.
Pajunen, T., Takala, T., & Katara, M. (2011). Model-based testing with a general purpose keyword-driven test automation framework. In Proceedings of the IEEE fourth international conference on software testing, verification and validation workshops (pp. 242–251).
Sarma, M., & Mall, R. (2007). Automatic test case generation from UML models. In Proceedings of the 10th international conference on information technology (pp. 196–201).
Soeken, M., Wille, R., & Drechsler, R. (2012). Assisted behavior driven development using natural language processing. Proceedings of the 50th international conference on objects, models: Components, patterns (pp. 269–287). Springer.
Utting, M., Pretschner, A., & Legeard, B. (2012). A taxonomy of model-based testing approaches. Software Testing Verification and Reliability, 22(5), 297–312.
Vikram, K., Prateek, A., & Livshits, B. (2009) Ripley: Automatically securing web 2.0 applications through replicated execution. In Proceedings of the 16th ACM conference on computer and communications security (pp. 173–186).
Wang, C., Pastore, F., Goknil, A., Briand, L., & Iqbal, Z. (2015). Automatic generation of system test cases from use case specifications. In Proceedings of the international symposium on software testing and analysis (pp. 385–396).
Wynne, M., & Hellesoy, A. (2012). The cucumber book: Behaviour-driven development for testers and developers. Pragmatic Bookshelf.
Yue, T., Ali, S., & Briand, L. (2011). Automated transition from use cases to UML state machines to support state-based testing. In R. France, J. Kuester, B. Bordbar, & R. Paige (Eds.), Modelling foundations and applications, lecture notes in computer science (Vol. 6698, pp. 115–131). Berlin: Springer.
This work is partially supported by P.I.Works. We would like to thank software developers and software test engineers at P.I.Works for sharing their code base with us and supporting our case study.
About this article
Cite this article
Karagöz, G., Sözer, H. Reproducing failures based on semiformal failure scenario descriptions. Software Qual J 25, 111–129 (2017). https://doi.org/10.1007/s11219-016-9310-1
- Failure reproduction
- Automated test case generation
- Behavior-driven development
- Industrial case study