Revision as of 08:37, 7 March 2008 by Aleitner (Talk | contribs) (Linux)

What is the CDD extension for EiffelStudio?

CDD (short for Contract Driven Development) is a project developed at ETH Zurich. The extension adds full support for unit testing to EiffelStudio. It also introduces the new idea of extracting test cases automatically from failures observed via the debugger. The following lists the main features of CDD:

  • Automated extraction of test cases from failures (For every exception thrown a new test case is created)
  • Visualization of test cases and their outcomes
  • One button creation of manual test cases
  • Automated execution of test cases in the background
  • Limit visible test cases via predefined filters and custom tags
  • Testing occurs in the background and is undisruptive to the developer
  • Easy test case management through tags

If you have questions, feedback, or would like to report a bug please visit the CDD forum

Video still.png

Play Video!

(TODO: Update with more recent screenshot and video)

Download CDD

The following packages contain the full EiffelStudio 6.1 plus the CDD extension. You do not need to have EiffelStudio installed already in order to install below packages. On Windows you do have to have either the Platform SDK or Visual C++ installed. Do not use EiffelStudio with the gcc/mingw or the .Net backend.


Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section "Using CDD". Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.


  • Full Windows version (with installer):
  • Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those)
  • Note 2: If you have a previous installation of the CDD Edition of EiffelStudio installed, you need to uninstall it first. If you want to reuse the installation directory, you need to manually delete all EIFGENs in its subdirectories after the uninstall procedure.
  • Note 3: Do not use the gcc/mingw or the .NET compiler backend. You will have to use the Microsoft C compiler. You can get it either by installing Visual C++, or via (the freely available) Microsoft Platform SDK.Have a look at to learn how to install either compiler.


Old Documentation

Documentation for the release of CDD for EiffelStudio version 5.7 is available from CddOldDocumentation.

Project Internal Stuff


  • 04.01.2008: Final experiment definition (questions to ask, how to conduct experiment)
  • 08.01.2008: Finalized list of features to go in release (including logging and log submission)
  • 27.01.2008: Beta 1 (feature complete version online)
  • 04.02.2008: Beta 2 (designated testers test release, # > 3)
  • 11.02.2008: Beta tester feedback in
  • 11.02.2008: Beta 3
  • 18.02.2008: Final 1 release
  • 19.02.2008: Initial Questionnaire
  • 20.02.2008: Final 1 handover to ISG
  • 22.02.2008: Final 1 installed on students machines
  • 29.02.2008: Final 2 release
  • 05.03.2008: Final 2 handover to ISG
  • 07.03.2008: Final 2 installed on students machines
  • 25.03.2008: Midterm Questionnaire
  • 19.05.2008: Final Questionnaire
  • 20.05.2008: Having all data
  • 06.06.2008: Finished analysis

Stefans Master Plan

  • MA Start ca 17.12.2007
  • MA End ca 17.6.2008
  • Testing the tester
    • System level test for CDD (incl. framework)
    • Recreating existing unit test suite with CDD
    • Large scale validation of CDD
      • Info 4 and/or Software Engineering
      • Questions
        • Does testing (manual/extracted) increase developer productivity?
        • How many tests do ppl end up with (manual/extracted)?
        • ...


Things we need from estudio

  • Invariants should be checked during debugging equally to pre- and post conditions (they could also be visualised in the flat view the same way like pre- and post conditions are)
  • The information whether some call is a creation call or a normal routine call (Not sure if this is really necessary, what if we assume every call to some creation procedure is always a creation call?)
  • Support for multiple open targets