Imagine a solution in which you can write software requirements using an Agile-style, restricted natural language and it automatically generates functional test scripts for you using effective testing techniques such as equivalence partitioning, boundary-value analysis, random testing and combinatorial testing and it can also use test data from databases and files. Well, that's Concordia. Its solution is composed by a metalanguage and a compiler.
Concordia is also the name of a roman goddess who was the personification of "concord" or "agreement". The idea is that the metalanguage help users, stakeholders, and software teams to discussing and reaching an agreement about the software requirements. A shared understanding about the requirements is essential to create the right software.
Concordia metalanguage allows you to focus on writing your application's business rules and defining its expected behavior for when users interact with it. Stakeholders, business analysts, testers, and programmers can now discuss the application using a single language, a single source of truth. Business-focused and testing-focused declarations are clearly separated, so you can discuss technological details only with the interested parties.
With Concordia, you can write both functional and non-functional requirements, although it produces only functional test cases. Because it adopts Agile-style declarations, you don't have to write it so formally (like Use Cases usually do) and you can use plain text - which is easy to evolve with your codebase.
Concordia compiler mix compiler techniques with machine learning and natural language processing to understand declarations in Concordia Language - which uses restricted natural language. After detecting declarations, it infers test scenarios, test data, and test oracles to generate test cases in a framework-independent format (see the produced test cases). Finally, it uses a plug-in created for a specific testing framework to generate test scripts (that is, source code), execute them and read their results. You don't need to write code. And the compiler checks your declarations for logic errors and other possible problems.