Description and Goals
The main goal of this project is to develop a software tool that, based on the functional specification (set of requirements) for a software system
(captured in an object-oriented conceptual model), allows for the complete, efficient and reliable generation of the code for the unit tests of the
software system corresponding to said specification, in a fully automated way and, thus, avoid the need to have unit test developers manually develop
said tests.
By automating the generation of the unit tests code, we will also be automating the tasks corresponding to testing the developed software, which will
allow the software development industry to:
- Reduce development times for any software solution.
- Verify the correct and complete development of the requirements.
- Reduce the amount of repetitive and feedback tasks that comprise these phases of the software development cycle.
- Increase the quality of the software developed, allowing its easy adaptability and reuse. Therefore, it would
not be a tailored solution for a specific problem, but rather an automation applicable to any development.
- Yield significant savings in direct and indirect economic costs associated to the complete development cycle of an information system.
Project observable results
This project will focus on the generation of unit tests code in Java for the business logic functionality of an information system.
The processes of automatic generation of unit tests code from a conceptual model will be integrated into the Transformation Engine for
the business logic layer. That is, they will be integrated into the code generators which, based on a conceptual model, generate
functional code for the business logic layer.
Therefore, resulting from the combination of both processes in the same Transformation Engine, it is expected that the Transformation
Engine will produce, using a conceptual model as input, not only the functional code (the one that implements the business logic of
the information system) but also the code of the unit tests (the one that will verify the operation of the functional code).
Additionally, it is expected the code of the unit tests can be executed automatically and that all the tests execute successfully.
That is, without errors and without discrepancies as to what each test verifies.
Furthermore, the unit testing code is expected to achieve a functional code coverage level of at least 80%. This means that the
generated unit test code will verify at least 80% of the generated functional code. This will result in an increase in the quality
of the code automatically generated by the Transformation Engines.
Finally, the generated code (the combination of functional code and unit tests code) will be easily integrated into CI / CD pipelines
using tools such as Jenkins..