To cite Concordia in a paper, please cite its PhD Thesis:

PINTO, Thiago Delgado. Unifying Agile requirements specification quality control and implementation conformance assurance. 2018. Doctoral Thesis. Pontifical Catholic University of Rio de Janeiro, Informatics Department, 2018.

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.

Usage cycle

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 1.

  4. If the tests passed, great job! Now you can write new requirements or add more test cases, so just back to step 1.


When you type concordia, the compiler performs the following process:

  1. It reads your .feature and .testcase files, and uses a lexer and a parser to identify and check documents' structure.

  2. It uses Natural Language Processing (NLP) to identify sentences' intent, which increases the chances of recognizing different writing styles.

  3. It performs semantic analysis to check recognized declarations.

  4. It uses the specification to infer the most suitable test cases, test data, and test oracles, and then generates .testcase files 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.

Last updated