Submitted:
22 July 2024
Posted:
23 July 2024
You are already at the latest version
Abstract
Keywords:
1. Introduction
2. Materials and Methods
2.1. Methodology
2.2. Bytecode Parsing and Graph Generation
2.3. Handling JaCoCo
2.4. Visualization
2.5. Running Automated Test Generators
2.4.1. EvoMaster
2.4.2. EvoSuite
2.4.3. Architecture of Analyzed Application
- 1)
- API module – contains classes that represent custom exception handler, 12 DTO (Data Translfer Object) classes for every domain class, mapper interfaces that convert a domain object to DTO and vice versa, security configuration class, error response class, and Controller classes that implement endpoints for exposing CRUD operations (CREATE, READ, UPDATE, and DELETE)
- 2)
- Business layer module – contains classes that represent events and listeners of custom events that happen asynchronously while the users are using the application, interfaces for service classes that contain method definition for business logic implementation and classes that implement those interfaces.
- 3)
- Data access layer module – contains a class that contains constant definitions,
- 4)
- Utils module - contains custom exception classes and ImageConverter class with an example of irreversible method.
3. Results
4. Discussion
5. Conclusion
Author Contributions
Funding
Conflicts of Interest
References
- Braione, P., Denaro, G., Mattavelli, A. et al. Software testing with code-based test generators: Data and lessons learned from a case study with an industrial software component. Software Qual J 22, 311–333 (2014). [CrossRef]
- Cseppentő, L., & Micskei, Z. (2017). Evaluating code-based test input generator tools. Software Testing, Verification and Reliability, 27(6), e1627. [CrossRef]
- Kicillof, Nicolás & Grieskamp, Wolfgang & Tillmann, Nikolai & Braberman, Víctor. (2007). Achieving both model and code coverage with automated gray-box testing. Proceedings of the 3rd International Workshop Advances in Model Based Testing, AMOST 2007. 1-11. [CrossRef]
- G. Fraser and A. Arcuri, “Whole Test Suite Generation,” in IEEE Transactions on Software Engineering, vol. 39, no. 2, pp. 276-291, Feb. 2013. [CrossRef]
- C. C. Michael, G. McGraw and M. A. Schatz, “Generating software test data by evolution,” in IEEE Transactions on Software Engineering, vol. 27, no. 12, pp. 1085-1110, Dec. 2001. [CrossRef]
- Sebastian Vogl, Sebastian Schweikl, and Gordon Fraser. 2021. Encoding the certainty of boolean variables to improve the guidance for search-based test generation. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO ‘21). Association for Computing Machinery, New York, NY, USA, 1088–1096. [CrossRef]
- Yun Lin, You Sheng Ong, Jun Sun, Gordon Fraser, and Jin Song Dong. 2021. Graph-based seed object synthesis for search-based unit testing. In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2021). Association for Computing Machinery, New York, NY, USA, 1068–1080. [CrossRef]
- Yun Lin, Jun Sun, Gordon Fraser, Ziheng Xiu, Ting Liu, and Jin Song Dong. 2020. Recovering fitness gradients for interprocedural Boolean flags in search-based testing. In Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2020). Association for Computing Machinery, New York, NY, USA, 440–451. [CrossRef]
- Andrea Arcuri, Man Zhang, and Juan Galeotti. 2024. Advanced White-Box Heuristics for Search-Based Fuzzing of REST APIs. ACM Trans. Softw. Eng. Methodol. 33, 6, Article 142 (July 2024), 36 pages. [CrossRef]
- Jang, D.; Kim, J.; Kim, J.; Im, W.; Jeong, M.; Choi, B.; Kil, C. On the Analysis of Coverage Feedback in a Fuzzing Proprietary System. Appl. Sci. 2024, 14, 5939. [CrossRef]
- Du, C.; Guo, Y.; Feng, Y.; Zheng, S. HotCFuzz: Enhancing Vulnerability Detection through Fuzzing and Hotspot Code Coverage Analysis. Electronics 2024, 13, 1909. [CrossRef]
- He, X.; Wang, P.; Lu, K.; Zhou, X. ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries. Appl. Sci. 2022, 12, 9782. [CrossRef]
- Dimitri Stallenberg, Mitchell Olsthoorn, and Annibale Panichella. 2022. Improving test case generation for REST APIs through hierarchical clustering. In Proceedings of the 36th IEEE/ACM International Conference on Automated Software Engineering (ASE ‘21). IEEE Press, 117–128. [CrossRef]
- Chen, Z.; Lu, Y.; Zhu, K.; Yu, L.; Zhao, J. Fast Format-Aware Fuzzing for Structured Input Applications. Appl. Sci. 2022, 12, 9350. [CrossRef]
- Spring Boot. Available online: https://spring.io/projects/spring-boot (accessed on 2nd June 2024).
- ASM. Available online: https://asm.ow2.io/ (accessed on 2nd June 2024).
- J. Dean, D. Grove and C. Chambers. 1995. Optimization of object-oriented programs using static class hierarchy analysis. In ECOOP’95—Object-Oriented Programming, 9th European Conference, Aarhus, Denmark.
- D. F. Bacon and P. F. Sweeney. 1996. Fast static analysis of C++ virtual function calls. In Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications., San Jose, USA.
- JaCoCo. Available online: https://www.eclemma.org/jacoco/ (accessed on 2nd June 2024).
- React. Available online: https://react.dev/ (accessed on 3rd June 2024).
- React-force-graph. Available online: https://github.com/vasturiano/react-force-graph (accessed on 4th June 2024).
- EvoMaster. Available online: https://github.com/EMResearch/EvoMaster (accessed on 5th June 2024).
- G. Fraser and A. Arcuri. 2011. Evosuite: Automatic test suite generation for object-oriented software. In 13th European conference on Foundations of software engineering, Szeged, Hungary.
- EvoSuite. Available online: https://www.evosuite.org (accessed on 6th June 2024).
- Lombok. Available online: https://projectlombok.org/ (accessed on 14th July 2024).
- Spring Data JPA. Available online: https://spring.io/projects/spring-data-jpa (accessed on 14th July 2024).
- Top Cybersecurity Statistics for 2024. Available online: https://www.cobalt.io/blog/cybersecurity-statistics-2024 (accessed on 14th July 2024).
- CrowdStrike Windows Outage. Available online: https://www.forbes.com/sites/kateoflahertyuk/2024/07/19/crowdstrike-windows-outage-what-happened-and-what-to-do-next/ (access on 21st July 2024).




| Class (%) | Method (%) | Branch (%) | Line (%) | |
|---|---|---|---|---|
| EvoMaster | 76,7 (%) (56/73) | 41.6% (186/447) | 20.4% (43/211) | 32.7% (419/1280) |
| EvoSuite | 63% (46/73) | 70.5% (315/447) | 49% (117/239) | 63.8% (816/1280) |
| EvoMaster and EvoSuite combined | 94.5% (69/73) | 82.8% 4(370/447) | 57% (134/235) | 76.2% (975/1280) |
| Package name | Class (%) | Method (%) | Branch (%) | Line (%) |
|---|---|---|---|---|
| hr.algebra.api.webshop2024api | 100% (1/1) | 66.7% (2/3) | 66.7% (2/3) | |
| hr.algebra.api.webshop2024api.ApiAdvice | 100% (1/1) | 100% (6/6) | 50% (2/4) | 91.7% (22/24) |
| hr.algebra.api.webshop2024api.ApiDTO | 50% (5/10) | 34.9% (29/83) | 22.5% (29/127) | |
| hr.algebra.api.webshop2024api.ApiMapper | 100% (10/10) | 41% (25/61) | 17.5% (20/114) | 26.4% (103/390) |
| hr.algebra.api.webshop2024api.Config | 100% (1/1) | 100% (6/6) | 100% (16/16) | |
| hr.algebra.api.webshop2024api.CustomResponseErrors | 100% (1/1) | 77.8% (7/9) | 50% (7/14) | |
| hr.algebra.api.webshop2024api.Rest | 100% (6/6) | 100% (30/30) | 37% (10/27) | 80.1% (117/146) |
| hr.algebra.bl.webshop2024bl.Events | 50% (2/4) | 25% (2/8) | 33.3% (6/18) | |
| hr.algebra.bl.webshop2024bl.ServiceImp | 100% (14/14) | 34.8% (32/92) | 19% (11/58) | 24.2% (69/285) |
| hr.algebra.dal.webshop2024dal.Consts | 0% (0/1) | 0% (0/1) | 0% (0/1) | |
| hr.algebra.dal.webshop2024dal.Entity | 83.3% (10/12) | 30.7% (31/101) | 20% (31/155) | |
| hr.algebra.dal.webshop2024dal.Enum | 50% (1/2) | 50% (2/4) | 42.9% (3/7) | |
| hr.algebra.utils.CustomExceptions | 50% (3/6) | 50% (11/22) | 37.9% (11/29) | |
| hr.algebra.utils.ImageConverter | 100% (1/1) | 75% (3/4) | 37.5% (3/8) | |
| hr.algebra.webshop2024.Advice | 0% (0/1) | 0% (0/2) | 0% (0/4) | 0% (0/9) |
| hr.algebra.webshop2024.DTO | 0% (0/1) | 0% (0/12) | 0% (0/25) | |
| hr.algebra.webshop2024.Mapper | 0% (0/1) | 0% (0/3) | 0% (0/4) | 0% (0/23) |
| Package name | Class (%) | Method (%) | Branch (%) | Line (%) |
|---|---|---|---|---|
| hr.algebra.api.webshop2024api | 0% (0/1) | 0% (0/3) | 0% (0/3) | |
| hr.algebra.api.webshop2024api.ApiAdvice | 0% (0/1) | 0% (0/6) | 0% (0/4) | 0% (0/24) |
| hr.algebra.api.webshop2024api.ApiDTO | 100% (10/10) | 100% (83/83) | 100% (127/127) | |
| hr.algebra.api.webshop2024api.ApiMapper | 90% (9/10) | 88.5% (54/61) | 85.1.5% (97/114) | 88.2% (344/390) |
| hr.algebra.api.webshop2024api.Config | 0% (0/1) | 0% (0/6) | 0% (0/16) | |
| hr.algebra.api.webshop2024api.CustomResponseErrors | 100% (1/1) | 100% (9/9) | 100% (14/14) | |
| hr.algebra.api.webshop2024api.Rest | 66.7% (4/6) | 80% (24/30) | 55.6% (15/27) | 63% (92/146) |
| hr.algebra.bl.webshop2024bl.Events | 0% (0/4) | 0% (0/8) | 0% (0/4) | 0% (0/18) |
| hr.algebra.bl.webshop2024bl.ServiceImp | 0% (0/14) | 0% (0/92) | 0% (0/78) | 0% (0/285) |
| hr.algebra.dal.webshop2024dal.Consts | 100% (1/1) | 100% (1/1) | 100% (1/1) | |
| hr.algebra.dal.webshop2024dal.Entity | 100% (12/12) | 100% (101/101) | 100% (155/155) | |
| hr.algebra.dal.webshop2024dal.Enum | 0% (0/2) | 0% (2/4) | 0% (0/7) | |
| hr.algebra.utils.CustomExceptions | 100% (6/6) | 100% (22/22) | 100% (29/29) | |
| hr.algebra.utils.ImageConverter | 100% (1/1) | 100% (4/4) | 50% (1/2) | 50% (4/8) |
| hr.algebra.webshop2024.Advice | 0% (0/1) | 0% (0/2) | 0% (0/6) | 0% (0/9) |
| hr.algebra.webshop2024.DTO | 100% (1/1) | 100% (12/12) | 100% (25/25) | |
| hr.algebra.webshop2024.Mapper | 100% (1/1) | 100% (3/3) | 100% (4/4) | 100% (23/23) |
| Package name | Class (%) | Method (%) | Branch (%) | Line (%) |
|---|---|---|---|---|
| hr.algebra.api.webshop2024api | 100% (1/1) | 66.7% (2/3) | 66.7% (2/3) | |
| hr.algebra.api.webshop2024api.ApiAdvice | 100% (1/1) | 100% (6/6) | 50% (2/4) | 91.7% (22/24) |
| hr.algebra.api.webshop2024api.ApiDTO | 100% (10/10) | 100% (83/83) | 100% (127/127) | |
| hr.algebra.api.webshop2024api.ApiMapper | 100% (10/10) | 90.2% (55/61) | 85.1% (97/114) | 88.2% (344/390) |
| hr.algebra.api.webshop2024api.Config | 100% (1/1) | 100% (6/6) | 100% (16/16) | |
| hr.algebra.api.webshop2024api.CustomResponseErrors | 100% (1/1) | 100% (9/9) | 100% (14/14) | |
| hr.algebra.api.webshop2024api.Rest | 100% (6/6) | 100% (30/30) | 70,4% (19/27) | 92.5% (135/146) |
| hr.algebra.bl.webshop2024bl.Events | 50% (2/4) | 25% (2/8) | 33.3% (6/18) | |
| hr.algebra.bl.webshop2024bl.ServiceImp | 100% (14/14) | 34.8% (32/92) | 14.1% (11/78) | 24.2% (69/285) |
| hr.algebra.dal.webshop2024dal.Consts | 100% (1/1) | 100% (1/1) | 100% (1/1) | |
| hr.algebra.dal.webshop2024dal.Entity | 100% (12/12) | 100% (101/101) | 100% (155/155) | |
| hr.algebra.dal.webshop2024dal.Enum | 50% (1/2) | 50% (2/4) | 42.9% (3/7) | |
| hr.algebra.utils.CustomExceptions | 100% (6/6) | 100% (22/22) | 100% (29/29) | |
| hr.algebra.utils.ImageConverter | 100% (1/1) | 100% (4/4) | 50% (1/2) | 50% (4/8) |
| hr.algebra.webshop2024.Advice | 0% (0/1) | 0% (0/2) | 0% (0/6) | 0% (0/9) |
| hr.algebra.webshop2024.DTO | 100% (1/1) | 100% (12/12) | 100% (25/25) | |
| hr.algebra.webshop2024.Mapper | 100% (1/1) | 100% (3/3) | 100% (4/4) | 100% (23/23) |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2024 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).