Introduction What is Citrus?
Enterprise Application Integration (EAI) software usually take part in various transactions with different interface partners. The correct communication between the interface partners is essential for the success of the business use case. It is a very important task to test these use case scenarios in order to ensure the integration into the software landscape on the customer side.
How can someone ensure that interface partners communicate with each other as designed? And how can somebody test positive and negative use case scenarios in an automated way? Citrus aims to give answeres to these questions!
Why use Citrus?
In EAI projects several software applications are using different interfaces in order to exchange data. The communication between interface partners becomes a very important test issue. In production the EAI system has to work as expected, especially regarding the end-to-end perspective including several software applications that work together.
Now when performing fully integrated end-to-end use case tests some participating applications have to be simulated in their behaviour. This is not an easy task when dealing with different transport protocols and complex business logic. Different protocols, technologies and legacy systems are therefore the beginning of many problems during the integration test.
The tester may only be able to use more or less intelligent dummy implementations of the different interface partners. These dummies usually are very static in their behaviour and require a lot of configuration to provide proper responses for incoming messages. In some cases the tester may have to interact manually during the test. An automatic verification of the message contents and the semantically correctness in common is not possible. The tester has to validate the success or failure of the test manually, which is very error prone and time consuming.
These problems arise as seemingly unsolvable challenges for the automated integration test team. Regarding the limited project schedule the tester may only be able to test one single use case manually using the available dummy implementations. In the worst case a major part of the software features is initially tested in production environment with real customers suffering from every software bug that is still inside the software application.
Citrus is a testing tool, that enables the test team to define whole use case tests to be executed fully automated. Incoming and outgoing messages are predefined in the test case. The tester defines a message flow as it is designed for a use case. All surrounding interface partners are simulated regardless their transport protocols (Http, JMS, TCP/IP, SOAP, and many more). The tests can be integrated into a continuous integration environment so Citrus gives credit to the software quality at all time.
All software development projects at ConSol* use extensive automated testing and continuous or nightly builds to ensure highest possible quality of our deliveries. When we started focusing on EAI projects we searched for a tool that supports automated integration tests of EAI systems, simulating several connected systems using different protocols (the IT world discovered a surprisingly huge variety of technologies two applications may use to talk to each other). Although we evaluated several non-commercial and commercial tools, we didn't find one that even came close to our needs. Therefore we decided to write something on our own.
Back at the year 2006 we implemented a first version for our customer needs. Since then we continuously worked on improving the tool over several years (and will do so in the future), resulting in what you can find here today. Citrus is used for all EAI projects at ConSol*, running in total thousands of complex test cases every day.
By this we are confident that it will be robust and stable for everything you intent to use it for. Feel free to prove us wrong!
Why is Citrus open source?
We want to become rich and famous! Ok, at least famous. :-)
ConSol* Software GmbH has a long tradition in using open source products and contributing to the open source world. As Citrus is largely based on open source, especially the Spring framework, and would not have been possible without the precious work of the open source community, we simply want to return something which we think might be useful for others.