To cite Concordia in a paper, please cite its PhD Thesis:
Concordia Compiler infers test cases, test data and test oracles from specification files written in Concordia and tries to cover a large number of paths that can expose defects in your application. Its approach keeps the specification relevant, up-to-date and more useful for stakeholders, testers, and developers than other documentation formats.
We recommend the following usage cycle:
- 1.Write or update your requirements specification with the Concordia Language and validate them with users or stakeholders;
- 2.Use Concordia Compiler for generating functional tests from the specification and running them;
- 3.If the tests failed, there are some possibilities:a) You still haven't implemented the corresponding behavior in your application. In this case, just implement it and run the tests again.b) Your application is behaving differently from the specification. In this case, it may have bugs or you or your team haven't implemented the behavior exactly like described in the specification.
- Whether the application has a bug, we are happy to have discovered it! Just fix it and run the tests again to make sure that the bug is gone.
- Otherwise, you can decide between changing your application to behave exactly like the specification describes, or changing the specification to match your application behavior. In the latter case, back to step
- 4.If the tests passed, great job! Now you can write new requirements or add more test cases, so just back to step
When you type
concordia, the compiler performs the following process:
- 4.It uses the specification to infer the most suitable test cases, test data, and test oracles, and then generates
.testcasefiles in Concordia Language.
- 5.It transforms all the test cases into test scripts (that is, source code) using a plug-in.
- 6.It executes the test scripts with the plug-in. These test scripts will check your application's behavior through its user interface.
- 7.It reads and presents execution results. These results relate failing tests to the specification, in order to help you understanding the possible reasons of a failure.