Abstract
Regression testing is required in each development iteration of microservice systems. Test case prioritization, which improves the fault detection rate by optimizing the execution order of test cases, is one of the main techniques to optimize regression testing. Existing test case prioritization techniques mainly rely on artifacts such as codes and system models, which are limited to microservice systems with service autonomy, development method diversity, and large service scale. This paper proposes a test case prioritization approach based on service ranking referred to as TCP-SR. TCP-SR ranks the services based on API gateway logs. The weights of test cases are calculated with the result of service ranking, which could be used to order test cases with single-objective and multi-objective strategies. To evaluate the effectiveness of TCP-SR, the empirical study based on four microservice systems is presented. The results show that the fault detection rate of TCP-SR is almost twice as high as that of the random prioritization technique, and almost the same as the prioritization technique based on WS-BPEL but requires much less prioritization time cost.
Similar content being viewed by others
References
Abele, S., & Göhner, P. (2014). Improving proceeding test case prioritization with learning software agents. In: Proceedings of 6th International Conference on Agents and Artificial Intelligence. ICAART, (2), 293-298.
Al-Hajjaji, M., Thüm, T., Lochau, M., Meinicke, J., & Saake, G. (2019). Effective product-line testing using similarity-based product prioritization. Software and Systems Modeling, 18(1), 499–521. https://doi.org/10.1007/s10270-016-0569-2
Azizi, M., & Do, H. (2018a). A collaborative filtering recommender system for test case prioritization in web applications. In Proceedings of the 33rd annual ACM symposium on applied computing, (pp. 1560-1567). https://doi.org/10.1145/3167132.3167299
Azizi, M., & Do, H. (2018b). Graphite: a greedy graph-based technique for regression test case prioritization. In 2018 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW) (pp. 245-251).
Canfora, G., & Di Penta, M. (2009). Service-oriented architectures testing: A survey Software Engineering. Springer, 78–105. https://doi.org/10.1007/978-3-540-95888-84
Catal, C., & Mishra, D. (2013). Test case prioritization: A systematic mapping study. Software Quality Journal, 21(3), 445–478. https://doi.org/10.1007/s11219-012-9181-z
Chen, L., Wang, Z., Xu, L., Lu, H., & Xu, B. (2010). Test case prioritization for web service regression testing. In 2010 Fifth IEEE International Symposium on Service Oriented System Engineering, (pp. 173-178). IEEE.
de S. Campos Junior, H., Araújo, M. A. P., David, J. M. N., Braga, R., Campos, F., & Ströele, V. (2017). Test case prioritization: a systematic review and mapping of the literature. In Proceedings of the 31st Brazilian Symposium on Software Engineering (pp. 34-43).
Diefenbach, D., & Thalhammer, A. (2018). PageRank and generic entity summarization for RDF knowledge bases. In: Proceedings of European Semantic Web Conference. Springer.
Fan, C. Y., & Ma, S. P. (2017). Migrating monolithic mobile application to microservice architecture: An experiment report. In 2017 IEEE International Conference on AI & Mobile Services (AIMS) (pp. 109-112). IEEE. https://doi.org/10.1109/AIMS.2017.23
Gao, C., Zheng, W., Deng, Y., & Lo, D., (2019). Emerging app issue identification from user feedback: Experience on wechat. In 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP) (pp. 279-288). IEEE.
Gökçe, N., & Eminli, M. (2014). Model-based test case prioritization using neural network classification. Computer Science & Engineering: An International Journal (CSEIJ)., 4(1), 15–25. https://doi.org/10.5121/cseij.2014.4102
Horváth, F., Gergely, T., Beszédes, Á., Tengeri, D., Balogh, G., & Gyimóthy, T. (2019). Code coverage differences of Java bytecode and source code instrumentation tools. Software Quality Journal, 27(1), 79–123. https://doi.org/10.1007/s11219-017-9389-z
Kaczanowski, T. (2013). Practical Unit Testing with JUnit and Mockito. In: https://site.mockito.org/
Khan, T. A., & Heckel, R. (2011). On model-based regression testing of web-services using dependency analysis of visual contracts. In International Conference on Fundamental Approaches to Software Engineering, (pp. 341-355).
Kim, M., Sumbaly, R., & Shah, S. (2013). Root cause detection in a service-oriented architecture. In ACM SIGMETRICS Performance Evaluation Review, ACM, 41, 93–104.
Konsaard, P., & Ramingwong, L. (2015). Total coverage based regression test case prioritization using genetic algorithm. Proceedings of 12th International Conference on Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology.
Korel, B., Koutsogiannakis, G., & Tahat, L. H. (2008). Application of system models in regression test suite prioritization. Proceedings of International Conference on Software Maintenance, 247–256.
Korel, B., Tahat, L. H., & Harman, M. (2005). Test prioritization using system models. Proceedings of 21st IEEE International Conference on Software Maintenance (ICSM'05), 559–568.
Larrucea, X., Santamaria, I., Colomo-Palacios, R., & Ebert, C. (2018). Microservices. IEEE Software, 35(3), 96–100.
Lewis, J., & Fowler, M. (2014). Microservices: a definition of this new architectural term. In: http://martinfowler.com/articles/microservices.html
Li, B., Qiu, D., Leung, H., & Wang, D. (2012). Automatic test case selection for regression testing of composite service based on extensible BPEL flow graph. Journal of Systems and Software, 85(6), 1300-1324. https://doi.org/10.1016/j.jss.2012.01.036
Li, Z. J., Tan, H. F., Liu, H. H., Zhu, J. M., & N. M. (2008). Business-process-driven gray-box SOA testing. IBM. System, 47(3), 457–472. https://doi.org/10.1147/sj.473.0457
Liu, H., Li, Z., Zhu, J., & Tan, H. (2007). Business process regression testing. Proceedings of the 5th International Conference on Service-Oriented Computing, 157–168.
Mahdian, A., Andrews, A. A., & Pilskalns, O. J. (2009). Regression testing with UML software designs: A survey. Journal of Software Maintenance and Evolution: Research and Practice, 21(4), 253–286. https://doi.org/10.1002/smr.v21:4
Mece, E. K., Binjaku, K., & Paci, H. (2020). The application of machine learning in test case prioritization - a review. European Journal of Electrical and Computer Engineering, 4(1), 1–9. https://doi.org/10.24018/ejece.2020.4.1.128
Meszaros, G. (2007). xUnit: Test Patterns Refactoring Test Code. Boston, Addison-Wesley.
Mohd Shafie, M. L., & Wan Kadir, W. M. N. (2018). Model-based test case prioritization: a systematic literature review. Journal of Theoretical and Applied Information Technology (JATIT & LLS), 96(14), 4548–4573.
Mirshokraie, S., Mesbah, A., & PaŠabiraman, K. (2015). Guided mutation testing for javascript web applications. IEEE Transactions on Software Engineering, 41(5), 429–444. https://doi.org/10.1109/TSE.2014.2371458
Naik, A., Maeda, H., Kanojia, V., & Fujita, S. (2018). Scalable Twitter user clustering approach boosted by Personalized PageRank. International Journal of Data Science and Analytics, 6(4), 297-309. https://doi.org/10.1007/s41060-017-0089-3
Newman, S. (2015). Building microservices: designing fine-grained systems. O’Reilly Media.
Ouriques, J. F. S., Cartaxo, E. G., & Machado, P. D. L. (2018). Test case prioritization techniques for model based testing: A replicated study. Software Quality Journal, 26(4), 1451–1482.
Prado, J. A., Lima, S. R., & Vergilio. (2020). Test case prioritization in continuous integration environments: A systematic mapping study. Information and Software Technology. https://doi.org/10.1016/j.infsof.2020.106268
Qiu, D., Li, B., Ji, S., & Leung, H. (2014). Regression testing of web service: a systematic mapping study. ACM Computing Surveys (CSUR), 47(2), 1-46.
Richardson, M., & Domingos, P. (2002). The intelligent surfer: Probabilistic combination of link and content information. PageRank Advances in Neural Information Processing Systems, 14, 673–680.
Roberto, P. (2020). On the testing resource allocation problem: Research trends and perspectives. Journal of Systems and Software. https://doi.org/10.1016/j.jss.2019.110462
Spieker, H., Gotlieb, A., Marijan, D., & Mossige, M. (2017). Reinforcement learning for automatic test case prioritization and selection in continuous integration. Proceedings of 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, 12–22.
Wang, X., Zeng, H., Gao, H., Miao H., & Lin, W. (2019) Location-based test case prioritization for software embedded in mobile devices using the law of gravitation. Mobile Information Systems, 1–14. https://doi.org/10.1155/2019/9083956
Wu, G., & Wei, Y. (2007). A power-arnold algorithm for computing PageRank. Numerical Linear Algebra with Applications, 14(7), 521–546. https://doi.org/10.1002/nla.531
Yoo, S., & Harman, M. (2012). Regression testing minimization, selection and prioritization: A survey. Software Testing, Verification and Reliability, 22(2), 67–120. https://doi.org/10.1002/stv.430
Zhang, M., Li, X., Zhang, L., & Khurshid, S. (2017). Boosting spectrum-based fault localization using pagerank. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis, (pp. 261-272).
Zhao, X., Wang, Z., Fan, X., Wang, Z. (2015). A clustering-bayesian network based approach for test case prioritization. Proceedings of IEEE 39th Annual Computer Software and Applications Conference, Taichung.
Zhongsheng, Q. (2010). Test case generation and optimization for user session-based web application testing. Journal of Computers, 5(11), 1655-1662. https://doi.org/10.4304/jcp.5.11.1655-1662
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Chen, L., Wu, J., Yang, H. et al. Does PageRank apply to service ranking in microservice regression testing?. Software Qual J 30, 757–779 (2022). https://doi.org/10.1007/s11219-021-09579-6
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11219-021-09579-6