<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aleitner</id>
		<title>EiffelStudio: an EiffelSoftware project - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://dev.eiffel.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aleitner"/>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/Special:Contributions/Aleitner"/>
		<updated>2026-04-09T03:16:16Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11791</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11791"/>
				<updated>2008-12-12T13:11:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Related Publications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, in Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf pdf] [http://se.ethz.ch/people/leitner/publications/ESEC_FSE2007.bib.txt bibtex]&lt;br /&gt;
&lt;br /&gt;
Leitner, A., Pretschner A., Mori S., Meyer B., Oriol M., &amp;quot;On the Effectiveness of Test Extraction without Overhead&amp;quot;, under submission&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
14.May 2008: Added patch for Windows and Linux that fixes a bug that can cause a crash during extraction.&lt;br /&gt;
&lt;br /&gt;
10.April 2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
08.April 2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
02.April 2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec.exe and replace it with the '$ISE_EIFFEL/studio/spec/windows/bin/ec.exe' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11790</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11790"/>
				<updated>2008-12-12T13:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, in Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf pdf] [http://se.ethz.ch/people/leitner/publications/ESEC_FSE2007.bib.txt bibtex]&lt;br /&gt;
&lt;br /&gt;
Leitner, A., Pretschner A., Mori S., Meyer B., Oriol M., &amp;quot;On the Effectiveness of Test Extraction without Overhead&amp;quot;, under submission&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
14.May 2008: Added patch for Windows and Linux that fixes a bug that can cause a crash during extraction.&lt;br /&gt;
&lt;br /&gt;
10.April 2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
08.April 2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
02.April 2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec.exe and replace it with the '$ISE_EIFFEL/studio/spec/windows/bin/ec.exe' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11061</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11061"/>
				<updated>2008-05-14T13:56:38Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows Patch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
14.May 2008: Added patch for Windows and Linux that fixes a bug that can cause a crash during extraction.&lt;br /&gt;
&lt;br /&gt;
10.April 2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
08.April 2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
02.April 2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec.exe and replace it with the '$ISE_EIFFEL/studio/spec/windows/bin/ec.exe' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11060</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11060"/>
				<updated>2008-05-14T13:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
14.May 2008: Added patch for Windows and Linux that fixes a bug that can cause a crash during extraction.&lt;br /&gt;
&lt;br /&gt;
10.April 2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
08.April 2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
02.April 2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Final 7(or final 7, fixes bug that causes crash under uncommon circumstances): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows_patch_01.zip&lt;br /&gt;
* does NOT work for official EiffelStudio 6.1 installation (or pre-final 5 versions of CDD Edition)! &lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11058</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=11058"/>
				<updated>2008-05-14T12:47:44Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
14.May 2008: Added patch for Windows and Linux that fixes a bug that can cause a crash during extraction.&lt;br /&gt;
10.April 2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
08.April 2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
02.April 2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (or final 7, fixes bug that causes crash under uncommon circumstances): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows_patch_01.zip&lt;br /&gt;
* does NOT work for official EiffelStudio 6.1 installation (or pre-final 5 versions of CDD Edition)! &lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10996</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10996"/>
				<updated>2008-04-28T13:31:09Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Linux Patch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
10.April.2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the '$ISE_EIFFEL/studio/spec/linux-x86/bin/ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10995</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10995"/>
				<updated>2008-04-28T13:30:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
10.April.2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Linux Patch ===&lt;br /&gt;
* Patch for CDD EiffelStudio Final 7: Download http://se.ethz.ch/people/leitner/cdd/ec and replace it with the 'ec' from Final 7. This patch fixes a crash that sometimes occurs during extraction of test cases. You may need to delete the precompile and EIFGENs of your project after applying the patch.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10982</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10982"/>
				<updated>2008-04-22T16:45:31Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
10.April.2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Full Linux version (for Debian stable): http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7_debian_stable.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10958</id>
		<title>CDD Common Problems</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10958"/>
				<updated>2008-04-18T07:52:32Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Something doesn't work and I get no feedback. What can I do?''''&lt;br /&gt;
* There is a CDD specific output tool, it is called ''''CDD Output''''. If you don't see this window, you can make it visible via ''''&amp;quot;View -&amp;gt; Tools -&amp;gt; CDD Output&amp;quot;''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My system suddenly has the wrong root class / doesn't compile anymore because it doesn't find the strange wrong root class''''&lt;br /&gt;
* This issue arises if EiffelStudio crashes / is killed during the (foreground) debugging of a test case (via the corresponding button in the testing tool). On Windows, crashes should no happen, but there is an issue on Linux with the foreground debugging of test cases we haven't been able to solve. If you are debugging a test case that passes, OR you are debugging a test case that fails, but you press &amp;quot;Continue&amp;quot; after the exception occured (instead of &amp;quot;Stop&amp;quot;, to end the execution immediately), EiffelStudio will crash.&lt;br /&gt;
* Solution: You have to manually set the root class of the system back to the correct class (via Project Settings, or by directly editing the .ecf file)&lt;br /&gt;
* Prevention: On Linux, use test case debugging ONLY for FAILING test cases, and after exception occured, STOP the execution (with the &amp;quot;Stop&amp;quot; button)!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My test cases time out''''&lt;br /&gt;
* CDD automatically aborts test cases that run longer than a given period of time. The default value (which is a few seconds) can be changed by setting the environment variable ''''CDD_TESTER_TIMEOUT''''. On Linux ''''&amp;quot;export CDD_TESTER_TIMEOUT=120&amp;quot;'''' sets the timeout to 120 seconds. On Windows the same thing is acomplished with ''''&amp;quot;set CDD_TESTER_TIMEOUT=120&amp;quot;''''.&lt;br /&gt;
&lt;br /&gt;
Problem: '''Installing EiffelStudio reports error codes like '2908' and '2909' '''&lt;br /&gt;
* This seems to be a rare problem. The following might help&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
I finally found the solution. Have a look at the following URLs:&lt;br /&gt;
- http://tinyurl.com/2rj93p&lt;br /&gt;
- http://tinyurl.com/3ey6fe&lt;br /&gt;
 &lt;br /&gt;
I believe you should have the same issue. In my case, I think it is because&lt;br /&gt;
I&lt;br /&gt;
had just installed the .NET 3.0 runtime which is part of the Windows Update.&lt;br /&gt;
 &lt;br /&gt;
If you rename the `Components' registry key, assuming that like me you only&lt;br /&gt;
have one child key, the installation should progress fine.&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This often happens when uninstalling and then reinstalling EiffelStudio&lt;br /&gt;
although it is clearly not a bug in our installer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I cannot see the testing window.''''&lt;br /&gt;
* Make it visible via ''''View -&amp;gt; Tools -&amp;gt; CDD Output''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I am getting a duplicate class error'''' or ''''I am trying to use CDD on an existing project but it doesn't work''''&lt;br /&gt;
* If you have a look at the ''''CDD output'''' window you will probably find the error message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Error code: VSCN&lt;br /&gt;
Configuration error: cluster has two classes with the same name.&lt;br /&gt;
What to do: if both classes are needed, change name of one of them.&lt;br /&gt;
&lt;br /&gt;
Cluster name: erl_g_tests&lt;br /&gt;
First class: CDD_INTERPRETER&lt;br /&gt;
First file: &amp;quot;/home/aleitner/src/erl_g/src/erl_g/cdd_tests/erl_g/cdd_interpreter.e&amp;quot;&lt;br /&gt;
Second class: CDD_INTERPRETER&lt;br /&gt;
Second file: &amp;quot;/home/aleitner/src/erl_g/library/cdd_tests/erl_g_library/cdd_interpreter.e&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix this go to the project settings, to your active target, '''Groups -&amp;gt; Clusters''' and then select your root cluster. Open the '''Advanced''' tree-item and click on the value part of the '''Exclude Rules'''. Now add rule ''''/cdd_tests$'''' and click ''''OK''''. &lt;br /&gt;
&lt;br /&gt;
Alternatively you can open your ecf file with a text editor. You will find a stance that looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit edit to make it looks like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/cdd_tests$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I have written or extracted a test case. How can I execute it?''''&lt;br /&gt;
* All tests are executed in the background right after compiling automatically. You can choose to enable or disable background testing via the ''''Enable/Disable automatic background execution of tests''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:enable_testing.png|center]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''The environment is unstable when using the .Net backend.''''&lt;br /&gt;
Solution: CDD does currently not support the .Net backend. Please use the C backend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''How to disable the CDD extension in EiffelStudio''''&lt;br /&gt;
Solution: Make sure the push-buttons for Extraction and Execution are not pressed. The buttons are shown in the below picture.&lt;br /&gt;
[[Image:enable_exec_and_extract.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My extracted test cases get overwritten in the SVN Repository, because my colleagues commit their extracted test cases which have the same name.''''&lt;br /&gt;
* Solution: Define a new environment variable &amp;quot;CDD_TESTER_ID&amp;quot;. The value of the variable will be used as suffix for all extracted test class names. So if all members of the project define a unique &amp;quot;CDD_TESTER_ID&amp;quot;, the individually extracted test cases can be commited to the svn without collisions.&lt;br /&gt;
* ATTENTION: The value of CDD_TESTER_ID has to conform to a valid Eiffel class name, e.g. it has to consist of (uppercase) letters and '_' only!&lt;br /&gt;
* EXAMPLE: You define CDD_TESTER_ID and set it to value &amp;quot;MARKUS&amp;quot;. Each time a new test case gets exracted for a class ROOT_CLASS, the generated class name for the test case will be CDD_TEST_ROOT_CLASS_xyz_MARKUS. Likewise it will get stored in a file called cdd_test_root_class_xyz_markus.e&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10944</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10944"/>
				<updated>2008-04-10T13:01:23Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
10.April.2008: If installation exits with cryptic error codes, please have a look at the [[CDD Common Problems|Common Problems]] page.&lt;br /&gt;
&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10943</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10943"/>
				<updated>2008-04-10T13:01:03Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
10.April.2008: If installation exits with cryptic error codes, please have a look at the common problems page.&lt;br /&gt;
&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10942</id>
		<title>CDD Common Problems</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10942"/>
				<updated>2008-04-10T13:00:07Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My test cases time out''''&lt;br /&gt;
* CDD automatically aborts test cases that run longer than a given period of time. The default value (which is a few seconds) can be changed by setting the environment variable ''''CDD_TESTER_TIMEOUT''''. On Linux ''''&amp;quot;export CDD_TESTER_TIMEOUT=120&amp;quot;'''' sets the timeout to 120 seconds. On Windows the same thing is acomplished with ''''&amp;quot;set CDD_TESTER_TIMEOUT=120&amp;quot;''''.&lt;br /&gt;
&lt;br /&gt;
Problem: '''Installing EiffelStudio reports error codes like '2908' and '2909' '''&lt;br /&gt;
* This seems to be a rare problem. The following might help&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
I finally found the solution. Have a look at the following URLs:&lt;br /&gt;
- http://tinyurl.com/2rj93p&lt;br /&gt;
- http://tinyurl.com/3ey6fe&lt;br /&gt;
 &lt;br /&gt;
I believe you should have the same issue. In my case, I think it is because&lt;br /&gt;
I&lt;br /&gt;
had just installed the .NET 3.0 runtime which is part of the Windows Update.&lt;br /&gt;
 &lt;br /&gt;
If you rename the `Components' registry key, assuming that like me you only&lt;br /&gt;
have one child key, the installation should progress fine.&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This often happens when uninstalling and then reinstalling EiffelStudio&lt;br /&gt;
although it is clearly not a bug in our installer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I cannot see the testing window.''''&lt;br /&gt;
* Make it visible via ''''View -&amp;gt; Tools -&amp;gt; CDD Output''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Is there some kind of CDD log window?''''&lt;br /&gt;
* Yes there is it is called ''''CDD Output''''. If you don't see this window, you can make it visible via ''''&amp;quot;View -&amp;gt; Tools -&amp;gt; CDD Output&amp;quot;''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I am getting a duplicate class error'''' or ''''I am trying to use CDD on an existing project but it doesn't work''''&lt;br /&gt;
* If you have a look at the ''''CDD output'''' window you will probably find the error message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Error code: VSCN&lt;br /&gt;
Configuration error: cluster has two classes with the same name.&lt;br /&gt;
What to do: if both classes are needed, change name of one of them.&lt;br /&gt;
&lt;br /&gt;
Cluster name: erl_g_tests&lt;br /&gt;
First class: CDD_INTERPRETER&lt;br /&gt;
First file: &amp;quot;/home/aleitner/src/erl_g/src/erl_g/cdd_tests/erl_g/cdd_interpreter.e&amp;quot;&lt;br /&gt;
Second class: CDD_INTERPRETER&lt;br /&gt;
Second file: &amp;quot;/home/aleitner/src/erl_g/library/cdd_tests/erl_g_library/cdd_interpreter.e&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix this go to the project settings, to your active target, '''Groups -&amp;gt; Clusters''' and then select your root cluster. Open the '''Advanced''' tree-item and click on the value part of the '''Exclude Rules'''. Now add rule ''''/cdd_tests$'''' and click ''''OK''''. &lt;br /&gt;
&lt;br /&gt;
Alternatively you can open your ecf file with a text editor. You will find a stance that looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit edit to make it looks like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/cdd_tests$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I have written or extracted a test case. How can I execute it?''''&lt;br /&gt;
* All tests are executed in the background right after compiling automatically. You can choose to enable or disable background testing via the ''''Enable/Disable automatic background execution of tests''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:enable_testing.png|center]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''The environment is unstable when using the .Net backend.''''&lt;br /&gt;
Solution: CDD does currently not support the .Net backend. Please use the C backend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''How to disable the CDD extension in EiffelStudio''''&lt;br /&gt;
Solution: Make sure the push-buttons for Extraction and Execution are not pressed. The buttons are shown in the below picture.&lt;br /&gt;
[[Image:enable_exec_and_extract.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My extracted test cases get overwritten in the SVN Repository, because my colleagues commit their extracted test cases which have the same name.''''&lt;br /&gt;
* Solution: Define a new environment variable &amp;quot;CDD_TESTER_ID&amp;quot;. The value of the variable will be used as suffix for all extracted test class names. So if all members of the project define a unique &amp;quot;CDD_TESTER_ID&amp;quot;, the individually extracted test cases can be commited to the svn without collisions.&lt;br /&gt;
* ATTENTION: The value of CDD_TESTER_ID has to conform to a valid Eiffel class name, e.g. it has to consist of (uppercase) letters and '_' only!&lt;br /&gt;
* EXAMPLE: You define CDD_TESTER_ID and set it to value &amp;quot;MARKUS&amp;quot;. Each time a new test case gets exracted for a class ROOT_CLASS, the generated class name for the test case will be CDD_TEST_ROOT_CLASS_xyz_MARKUS. Likewise it will get stored in a file called cdd_test_root_class_xyz_markus.e&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10941</id>
		<title>CDD Common Problems</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10941"/>
				<updated>2008-04-10T12:59:39Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My test cases time out''''&lt;br /&gt;
* CDD automatically aborts test cases that run longer than a given period of time. The default value (which is a few seconds) can be changed by setting the environment variable ''''CDD_TESTER_TIMEOUT''''. On Linux ''''&amp;quot;export CDD_TESTER_TIMEOUT=120&amp;quot;'''' sets the timeout to 120 seconds. On Windows the same thing is acomplished with ''''&amp;quot;set CDD_TESTER_TIMEOUT=120&amp;quot;''''.&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Installing EiffelStudio reports error codes like '2908' and '2909' ''''&lt;br /&gt;
* This seems to be a rare problem. The following might help&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
I finally found the solution. Have a look at the following URLs:&lt;br /&gt;
- http://tinyurl.com/2rj93p&lt;br /&gt;
- http://tinyurl.com/3ey6fe&lt;br /&gt;
 &lt;br /&gt;
I believe you should have the same issue. In my case, I think it is because&lt;br /&gt;
I&lt;br /&gt;
had just installed the .NET 3.0 runtime which is part of the Windows Update.&lt;br /&gt;
 &lt;br /&gt;
If you rename the `Components' registry key, assuming that like me you only&lt;br /&gt;
have one child key, the installation should progress fine.&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This often happens when uninstalling and then reinstalling EiffelStudio&lt;br /&gt;
although it is clearly not a bug in our installer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I cannot see the testing window.''''&lt;br /&gt;
* Make it visible via ''''View -&amp;gt; Tools -&amp;gt; CDD Output''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Is there some kind of CDD log window?''''&lt;br /&gt;
* Yes there is it is called ''''CDD Output''''. If you don't see this window, you can make it visible via ''''&amp;quot;View -&amp;gt; Tools -&amp;gt; CDD Output&amp;quot;''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I am getting a duplicate class error'''' or ''''I am trying to use CDD on an existing project but it doesn't work''''&lt;br /&gt;
* If you have a look at the ''''CDD output'''' window you will probably find the error message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Error code: VSCN&lt;br /&gt;
Configuration error: cluster has two classes with the same name.&lt;br /&gt;
What to do: if both classes are needed, change name of one of them.&lt;br /&gt;
&lt;br /&gt;
Cluster name: erl_g_tests&lt;br /&gt;
First class: CDD_INTERPRETER&lt;br /&gt;
First file: &amp;quot;/home/aleitner/src/erl_g/src/erl_g/cdd_tests/erl_g/cdd_interpreter.e&amp;quot;&lt;br /&gt;
Second class: CDD_INTERPRETER&lt;br /&gt;
Second file: &amp;quot;/home/aleitner/src/erl_g/library/cdd_tests/erl_g_library/cdd_interpreter.e&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix this go to the project settings, to your active target, '''Groups -&amp;gt; Clusters''' and then select your root cluster. Open the '''Advanced''' tree-item and click on the value part of the '''Exclude Rules'''. Now add rule ''''/cdd_tests$'''' and click ''''OK''''. &lt;br /&gt;
&lt;br /&gt;
Alternatively you can open your ecf file with a text editor. You will find a stance that looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit edit to make it looks like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/cdd_tests$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I have written or extracted a test case. How can I execute it?''''&lt;br /&gt;
* All tests are executed in the background right after compiling automatically. You can choose to enable or disable background testing via the ''''Enable/Disable automatic background execution of tests''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:enable_testing.png|center]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''The environment is unstable when using the .Net backend.''''&lt;br /&gt;
Solution: CDD does currently not support the .Net backend. Please use the C backend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''How to disable the CDD extension in EiffelStudio''''&lt;br /&gt;
Solution: Make sure the push-buttons for Extraction and Execution are not pressed. The buttons are shown in the below picture.&lt;br /&gt;
[[Image:enable_exec_and_extract.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My extracted test cases get overwritten in the SVN Repository, because my colleagues commit their extracted test cases which have the same name.''''&lt;br /&gt;
* Solution: Define a new environment variable &amp;quot;CDD_TESTER_ID&amp;quot;. The value of the variable will be used as suffix for all extracted test class names. So if all members of the project define a unique &amp;quot;CDD_TESTER_ID&amp;quot;, the individually extracted test cases can be commited to the svn without collisions.&lt;br /&gt;
* ATTENTION: The value of CDD_TESTER_ID has to conform to a valid Eiffel class name, e.g. it has to consist of (uppercase) letters and '_' only!&lt;br /&gt;
* EXAMPLE: You define CDD_TESTER_ID and set it to value &amp;quot;MARKUS&amp;quot;. Each time a new test case gets exracted for a class ROOT_CLASS, the generated class name for the test case will be CDD_TEST_ROOT_CLASS_xyz_MARKUS. Likewise it will get stored in a file called cdd_test_root_class_xyz_markus.e&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10940</id>
		<title>CDD Common Problems</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CDD_Common_Problems&amp;diff=10940"/>
				<updated>2008-04-10T12:58:29Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My test cases time out''''&lt;br /&gt;
* CDD automatically aborts test cases that run longer than a given period of time. The default value (which is a few seconds) can be changed by setting the environment variable ''''CDD_TESTER_TIMEOUT''''. On Linux ''''&amp;quot;export CDD_TESTER_TIMEOUT=120&amp;quot;'''' sets the timeout to 120 seconds. On Windows the same thing is acomplished with ''''&amp;quot;set CDD_TESTER_TIMEOUT=120&amp;quot;''''.&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Installing EiffelStudio reports error codes like '2908' and '2909' ''''&lt;br /&gt;
* This seems to be a rare problem. The following might help&lt;br /&gt;
&amp;lt;quote&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&lt;br /&gt;
I finally found the solution. Have a look at the following URLs:&lt;br /&gt;
- http://tinyurl.com/2rj93p&lt;br /&gt;
- http://tinyurl.com/3ey6fe&lt;br /&gt;
 &lt;br /&gt;
I believe you should have the same issue. In my case, I think it is because&lt;br /&gt;
I&lt;br /&gt;
had just installed the .NET 3.0 runtime which is part of the Windows Update.&lt;br /&gt;
 &lt;br /&gt;
If you rename the `Components' registry key, assuming that like me you only&lt;br /&gt;
have one child key, the installation should progress fine.&lt;br /&gt;
&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This often happens when uninstalling and then reinstalling EiffelStudio&lt;br /&gt;
although it is clearly not a bug in our installer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/quote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I cannot see the testing window.''''&lt;br /&gt;
* Make it visible via ''''View -&amp;gt; Tools -&amp;gt; CDD Output''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''Is there some kind of CDD log window?''''&lt;br /&gt;
* Yes there is it is called ''''CDD Output''''. If you don't see this window, you can make it visible via ''''&amp;quot;View -&amp;gt; Tools -&amp;gt; CDD Output&amp;quot;''''&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I am getting a duplicate class error'''' or ''''I am trying to use CDD on an existing project but it doesn't work''''&lt;br /&gt;
* If you have a look at the ''''CDD output'''' window you will probably find the error message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Error code: VSCN&lt;br /&gt;
Configuration error: cluster has two classes with the same name.&lt;br /&gt;
What to do: if both classes are needed, change name of one of them.&lt;br /&gt;
&lt;br /&gt;
Cluster name: erl_g_tests&lt;br /&gt;
First class: CDD_INTERPRETER&lt;br /&gt;
First file: &amp;quot;/home/aleitner/src/erl_g/src/erl_g/cdd_tests/erl_g/cdd_interpreter.e&amp;quot;&lt;br /&gt;
Second class: CDD_INTERPRETER&lt;br /&gt;
Second file: &amp;quot;/home/aleitner/src/erl_g/library/cdd_tests/erl_g_library/cdd_interpreter.e&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix this go to the project settings, to your active target, '''Groups -&amp;gt; Clusters''' and then select your root cluster. Open the '''Advanced''' tree-item and click on the value part of the '''Exclude Rules'''. Now add rule ''''/cdd_tests$'''' and click ''''OK''''. &lt;br /&gt;
&lt;br /&gt;
Alternatively you can open your ecf file with a text editor. You will find a stance that looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit edit to make it looks like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;file_rule&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/.svn$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/EIFGENs$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
   &amp;lt;exclude&amp;gt;/cdd_tests$&amp;lt;/exclude&amp;gt;&lt;br /&gt;
&amp;lt;/file_rule&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Problem: ''''I have written or extracted a test case. How can I execute it?''''&lt;br /&gt;
* All tests are executed in the background right after compiling automatically. You can choose to enable or disable background testing via the ''''Enable/Disable automatic background execution of tests''''.&lt;br /&gt;
&lt;br /&gt;
[[Image:enable_testing.png|center]]&lt;br /&gt;
&lt;br /&gt;
Problem: ''''The environment is unstable when using the .Net backend.''''&lt;br /&gt;
Solution: CDD does currently not support the .Net backend. Please use the C backend.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''How to disable the CDD extension in EiffelStudio''''&lt;br /&gt;
Solution: Make sure the push-buttons for Extraction and Execution are not pressed. The buttons are shown in the below picture.&lt;br /&gt;
[[Image:enable_exec_and_extract.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Problem: ''''My extracted test cases get overwritten in the SVN Repository, because my colleagues commit their extracted test cases which have the same name.''''&lt;br /&gt;
* Solution: Define a new environment variable &amp;quot;CDD_TESTER_ID&amp;quot;. The value of the variable will be used as suffix for all extracted test class names. So if all members of the project define a unique &amp;quot;CDD_TESTER_ID&amp;quot;, the individually extracted test cases can be commited to the svn without collisions.&lt;br /&gt;
* ATTENTION: The value of CDD_TESTER_ID has to conform to a valid Eiffel class name, e.g. it has to consist of (uppercase) letters and '_' only!&lt;br /&gt;
* EXAMPLE: You define CDD_TESTER_ID and set it to value &amp;quot;MARKUS&amp;quot;. Each time a new test case gets exracted for a class ROOT_CLASS, the generated class name for the test case will be CDD_TEST_ROOT_CLASS_xyz_MARKUS. Likewise it will get stored in a file called cdd_test_root_class_xyz_markus.e&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10926</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10926"/>
				<updated>2008-04-08T13:26:39Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10925</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10925"/>
				<updated>2008-04-08T12:22:18Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
8.April.2008: CDD EiffelStudio final 7 available&lt;br /&gt;
* Important Bug fix: EiffelStudio no longer freezes when opening projects with many test cases&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 or Final 6 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_7-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10921</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10921"/>
				<updated>2008-04-07T16:47:22Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Download CDD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_7.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10916</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10916"/>
				<updated>2008-04-07T16:32:30Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual Studio or the Windows SDK:&lt;br /&gt;
*** Visual Studio (up to Visual Studio 2005, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10915</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10915"/>
				<updated>2008-04-07T16:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual C++ or the Windows SDK:&lt;br /&gt;
*** Visual C++ (up to 6.0, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler_6.1_and_older to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CDDHowtoRollARelease&amp;diff=10911</id>
		<title>CDDHowtoRollARelease</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CDDHowtoRollARelease&amp;diff=10911"/>
				<updated>2008-04-07T16:10:41Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* List of CDD specific files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
== Update version number ==&lt;br /&gt;
* geant -b $EIFFEL_SRC/Src/scripts/build.eant set_ec_version&lt;br /&gt;
* geant -b $EIFFEL_SRC/Src/scripts/build.eant set_esbuilder_version&lt;br /&gt;
&lt;br /&gt;
== List of CDD specific files ==&lt;br /&gt;
The following files have to be overwritten or added to a stock EiffelStudio release:&lt;br /&gt;
* ec(.exe) -&amp;gt; $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
* Src/library/base/ise/support/cdd -&amp;gt; $ISE_EIFFEL/library/base/ise/support/cdd&lt;br /&gt;
* Src/examples/cdd -&amp;gt; $ISE_EIFFEL/examples/cdd&lt;br /&gt;
* Delivery/studio/help/defaults -&amp;gt; $ISE_EIFFEL/studio/help/defaults&lt;br /&gt;
* Delivery/studio/bitmaps/png/16x16.png -&amp;gt; $ISE_EIFFEL/studio/bitmaps/png/16x16.png&lt;br /&gt;
* Delivery/studio/bitmaps/png/splash_shadow.png -&amp;gt; $ISE_EIFFEL/studio/bitmaps/png/splash_shadow.png&lt;br /&gt;
* Delivery/studio/bitmaps/png/splash.png -&amp;gt; $ISE_EIFFEL/studio/bitmaps/png/splash.png&lt;br /&gt;
* [For Windows Only] estudio.exe -&amp;gt; $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin&lt;br /&gt;
RUNTIME patch&lt;br /&gt;
* eif_except.h, eif_types.h: Src/C/run-time -&amp;gt; $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/include/&lt;br /&gt;
* Windows: finalized.lib, mtfinalized.lib, mtwkbench.lib, wkbench.lib: Src/C/run-time/LIB -&amp;gt; $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/lib(/msc)/ &lt;br /&gt;
* Linux: libfinalized.a, libmtfinalized.a, libmtwkbench.a, libwkbench.a: Src/C/run-time/ -&amp;gt; $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/lib/&lt;br /&gt;
(NOTE: the libs mentioned above can be build with the geant script, geant -b %EIFFEL_SRC%/build.eant prepare)&lt;br /&gt;
&lt;br /&gt;
== How to roll a release on Windows ==&lt;br /&gt;
* prepare some directory &amp;lt;INSTALL_DIR&amp;gt; like this:&lt;br /&gt;
** create 3 subdirectories &amp;lt;INSTALL_DIR&amp;gt;/EiffelStudio, &amp;lt;INSTALL_DIR&amp;gt;/gcc, &amp;lt;INSTALL_DIR&amp;gt;/releases. Fill them according to the following description&lt;br /&gt;
*** [&amp;lt;INSTALL_DIR&amp;gt;/EiffelStudio] has to contain a complete delivery without the ec.exe binaries. Without a working delivery script, this can be achieved by &amp;quot;patching&amp;quot; an official installation:&lt;br /&gt;
**** copy the contents of the installation directory of a fresh offcial installation into &amp;lt;INSTALL_DIR&amp;gt;/EiffelStudio (fresh = NO EIFGENs produced. To be sure, uninstall the official version if alrady existing, manually delete the remains in the installation directory, and reinstall it WITHOUT building any precompilations)&lt;br /&gt;
**** Remove the ec.exe from  &amp;lt;INSTALL_DIR&amp;gt;/EiffelStudio/studio/spec/windows/bin&lt;br /&gt;
**** Replace/Add the cdd specific files (see list above). Watch out for the proper place to add/replace them (the above list is svn-specific)&lt;br /&gt;
*** [&amp;lt;INSTALL_DIR&amp;gt;/gcc] needs to contain content of &amp;lt;svn-eiffel-branch&amp;gt;/free_add_ons/gcc&lt;br /&gt;
*** [&amp;lt;INSTALL_DIR&amp;gt;/releases] needs to contain the ec.exe binaries (the cdd versions of course)&lt;br /&gt;
**** &amp;lt;INSTALL_DIR&amp;gt;/releases/gpl_version/ needs to contain ec.exe&lt;br /&gt;
**** &amp;lt;INSTALL_DIR&amp;gt;/releases/enterprise_version/ needs to contain ec.exe (take the same ec.exe, it's a dummy for using the scripts later on)&lt;br /&gt;
&lt;br /&gt;
* let env variable %INSTALL_DIR% point to the &amp;lt;INSTALL_DIR&amp;gt;&lt;br /&gt;
* let env variable %INIT_DIR% point to the &amp;lt;svn-eiffel-branch&amp;gt;/Delivery/scripts/windows folder&lt;br /&gt;
* finalize the &amp;quot;hallow&amp;quot; tool (&amp;lt;svn-eiffel-branch&amp;gt;/Src/tools/hallow/hallow.ecf)&lt;br /&gt;
* create if not exists directory %INIT_DIR%/install/bin&lt;br /&gt;
* copy content of &amp;lt;svn-eiffel-branch&amp;gt;/Src/tools/hallow/EIFGENs/hallow/F_code to INIT_DIR/install/bin&lt;br /&gt;
* create if not exists directory %INIT_DIR%/install/binaries/x86&lt;br /&gt;
* get a proper setup.dll (from manus probably, or build yourself, instructions for this will be added soon) and put it into %INIT_DIR%/install/binaries/x86/&lt;br /&gt;
* start command line, go to %INIT_DIR%/install/content/eiffelstudio and run:&lt;br /&gt;
** nmake /nologo clean&lt;br /&gt;
** nmake /nologo&lt;br /&gt;
** nmake /nologo gpl_x86&lt;br /&gt;
* wait some minutes .... and pray :-)&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10910</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10910"/>
				<updated>2008-04-07T16:03:00Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* Which C compiler to install?&lt;br /&gt;
** Use the Microsoft C compiler either from Visual C++ or the Windows SDK:&lt;br /&gt;
*** Visual C++ (up to 8.0, but no later, and only the non-express version)&lt;br /&gt;
*** Windows SDK (up to version 6.0, but no later)&lt;br /&gt;
** Do not use the gcc/mingw.&lt;br /&gt;
** Do not use the .NET compiler backend. &lt;br /&gt;
&lt;br /&gt;
Have a look at http://dev.eiffel.com/Installing_Microsoft_C_compiler to learn how to install either Visual C++ or the Windows SDK for use with EiffelStudio. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10909</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10909"/>
				<updated>2008-04-07T13:43:29Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://dev.eiffel.com/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10908</id>
		<title>CddMeeting 13 02 2008</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10908"/>
				<updated>2008-04-07T13:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
=CDD Meeting, Wednesday, 14.02.2008, 10:00=&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
* 15.02.2008; 14:15&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
===Andreas===&lt;br /&gt;
* Forumulate Experiment Hypothesis (Andreas)&lt;br /&gt;
* Fix AutoTest for courses&lt;br /&gt;
** New release&lt;br /&gt;
* Write documentation and videos tutorials (together with final release)&lt;br /&gt;
* Finish tuple_002 test case&lt;br /&gt;
* [delayed] Retest if test cases with errors are properly ignored (after 6.1 port)&lt;br /&gt;
* [done] Add timeout judgement&lt;br /&gt;
* Build releasable delivery for Linux (after each Beta I guess...)&lt;br /&gt;
&lt;br /&gt;
===Arno===&lt;br /&gt;
&lt;br /&gt;
====Bug Fixing====&lt;br /&gt;
* [ON WINDOWS NO CRASH OCCURS] Check why EiffelStudio quits after debugging a test routine and ignoring violations (ask Jocelyn)&lt;br /&gt;
&lt;br /&gt;
===Ilinca===&lt;br /&gt;
&lt;br /&gt;
* Integrate variable declarations into AutoTest trunk (by 8.2.2008)&lt;br /&gt;
&lt;br /&gt;
===Stefan===&lt;br /&gt;
* [RECURRENT] Build releasable delivery on Windows&lt;br /&gt;
* [RECURRENT, currently valid]Check log for XML validity&lt;br /&gt;
&lt;br /&gt;
* Opening Geneaology solution makes CDD ES freeze.&lt;br /&gt;
* FG Debugging Crash&lt;br /&gt;
** Wenn ich im CDD Eiffel den Debug the selected test case button drücke und dann während dem debuggen eine assertion violation auftritt, crasht das ganze Eiffel Studio. Das ist mit der CDD Version die ich am Samstag frisch vom SVN server gebaut habe.&lt;br /&gt;
* When detecting if compilation succeeded, inlude &amp;quot;corrupted&amp;quot; as keyword when parsing output message (as in the &amp;quot;project corrupted. cannot continue message)&lt;br /&gt;
&lt;br /&gt;
* Make newly extracted test cases show up &amp;quot;expanded&amp;quot; in GUI treeview&lt;br /&gt;
* Only execute unresolved test cases once. Disable them afterwards. (Needs discussion)&lt;br /&gt;
* Make general encoding/decoding routines for special feature names&lt;br /&gt;
** e.g. infix &amp;quot;+&amp;quot; (ES) &amp;lt;=&amp;gt; infix_plus (CDD)&lt;br /&gt;
* Cache debug values when extracting several test cases.&lt;br /&gt;
* Allow for test case extraction of passing routine invocations (with Jocelyn)&lt;br /&gt;
* Rebuilding manual test suite through extraction and synthesizing&lt;br /&gt;
* Find performance bottleneck of test case extraction and propose extraction method for second chance&lt;br /&gt;
* [LOW PRIORITY since inv prob solved] When runtime of interpreter is severly damaged a popup box shows up on Windows. Popup can be ignored and goes away. This popup does not come up when we shoot down interpreter, but when a faulty instruction is executed. (E.g. the inv bug can trigger this dialog)&lt;br /&gt;
* [LOW PRIORITY since unlikely situation] Test cases with a 'False' (not satisfieable) invariant makes interpreter hang and ES crash. Add test case and fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs/Things to look at====&lt;br /&gt;
&lt;br /&gt;
* For big projects (like ES itself) background compilation of the interpreter leads to completely unresponsive ES&lt;br /&gt;
* [NO EASY SOLUTION POSSIBLE] Crash upon closing of EiffelStudio (feature call on void target in breakpoint tool)&lt;br /&gt;
&lt;br /&gt;
===Manu===&lt;br /&gt;
* Install CDD in student labs (Manu)&lt;br /&gt;
* Devise questionnaires&lt;br /&gt;
** Initial (due next meeting after Manu's vacation)&lt;br /&gt;
** Midterm&lt;br /&gt;
** Final&lt;br /&gt;
* Analyze questionnaires&lt;br /&gt;
* Rework example profiles&lt;br /&gt;
* Assis will use CDD to get a feel for it and create a test suite for the students to start with&lt;br /&gt;
&lt;br /&gt;
=== Bernd ===&lt;br /&gt;
* Define Project for SoftEng&lt;br /&gt;
** Find test suite for us to test students code&lt;br /&gt;
** Find project with pure functional part&lt;br /&gt;
&lt;br /&gt;
===Unassigned===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beta Tester Feedback====&lt;br /&gt;
(Please put your name so we can get back to you in the case of questions)&lt;br /&gt;
* (Jocelyn) It should be possible to set the location of the cdd_tests directory (what if location of .ecf file is not readable?) [delayed]&lt;br /&gt;
** home directory? application_data directory?  [Jocelyn]&lt;br /&gt;
* (Jocelyn) There should be UI support for deletion of Test Case [difficult for test routines, possible for classes. documentation added.]&lt;br /&gt;
* (Jocelyn) [BUG] the manual test case creation dialog should check if class with chosen name is already in the system [delayed]&lt;br /&gt;
* (Jocelyn) It would be nice if there was a way to configure the timeout for the interpreter [Stefan will ask Jocelyn for concrete example]&lt;br /&gt;
&lt;br /&gt;
== Questionnaires ==&lt;br /&gt;
&lt;br /&gt;
* Use ELBA&lt;br /&gt;
&lt;br /&gt;
== Software Engineering Project ==&lt;br /&gt;
&lt;br /&gt;
* Task 1: Implement VCard API&lt;br /&gt;
* Task 2: Implement Mime API&lt;br /&gt;
* Task 3: Write test cases to reveal faults in foreign VCard implementations&lt;br /&gt;
* Task 4: Write test cases to reveal faults in foreign Mime implementations&lt;br /&gt;
&lt;br /&gt;
* Group A:&lt;br /&gt;
** Task 1, Manual Tests&lt;br /&gt;
** Task 2, Extracted Tests&lt;br /&gt;
** Task 3, Manual Tests&lt;br /&gt;
** Task 4, Extracted Tests&lt;br /&gt;
* Group B:&lt;br /&gt;
** Task 1, Extracted Tests&lt;br /&gt;
** Task 2, Manual Tests&lt;br /&gt;
** Task 3, Extracted Tests&lt;br /&gt;
** Task 4, Manual Tests&lt;br /&gt;
&lt;br /&gt;
* One large project, but divided into testable subcomponents&lt;br /&gt;
* Students required to write test cases&lt;br /&gt;
* Fixed API to make things uniformly testable&lt;br /&gt;
* Public/Secret test cases (similar to Zeller course)&lt;br /&gt;
* Competitions:&lt;br /&gt;
** Group A test cases applied to Group A project&lt;br /&gt;
** Group A test cases applied to Groupt B project&lt;br /&gt;
&lt;br /&gt;
* Idea how to cancel out bias while allowing fair grading:&lt;br /&gt;
** Subtasks 1 and 2, Students divided into groups A and B&lt;br /&gt;
** First both groups do 1, A is allowed to use tool, B not&lt;br /&gt;
** Then both groups do 2, B is allowed to use tool, A not&lt;br /&gt;
** Bias cancelation:&lt;br /&gt;
*** Project complexity&lt;br /&gt;
*** Experience of students&lt;br /&gt;
*** Experience gained in first subtask, when developing second&lt;br /&gt;
*** Risk: One task might be better suited for the tool than the other&lt;br /&gt;
&lt;br /&gt;
== Data to harvest ==&lt;br /&gt;
* IDE Time with CDD(extraction) enabled / IDE Time with CDD(extraction) disabled&lt;br /&gt;
* Test Case Source (just final version, or all versions?)&lt;br /&gt;
** Use Profiler to get coverage approximation&lt;br /&gt;
* TC Meta Data (with timestamps -&amp;gt; Evolution of Test Case)&lt;br /&gt;
** TC Added/Removed/Changed&lt;br /&gt;
** TC Outcome (transitions from FAIL/PASS/UNRESOLVED[bad_communication &amp;lt;-&amp;gt; does_not_compile &amp;lt;-&amp;gt; bad_input])&lt;br /&gt;
** TC execution time&lt;br /&gt;
** Modificiations to a testcase (compiler needs to recompile)&lt;br /&gt;
* Development Session Data&lt;br /&gt;
** IDE Startup&lt;br /&gt;
** File save&lt;br /&gt;
* Questionnairs&lt;br /&gt;
** Initial&lt;br /&gt;
** Final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Meta&amp;quot; log entries&lt;br /&gt;
** Project opened (easy)&lt;br /&gt;
** CDD enable/disable (easy)&lt;br /&gt;
** general EiffelStudio action log entries for Developer Behaviour (harder... what do we need??)&lt;br /&gt;
&lt;br /&gt;
* CDD actions log entries&lt;br /&gt;
** Compilation of interpreter (start, end, duration)&lt;br /&gt;
** Execution of test cases (start, end, do we need individual duration of each test cases that gets executed?)&lt;br /&gt;
** Extraction of new test case (extraction time)&lt;br /&gt;
&lt;br /&gt;
* Test Suite Status&lt;br /&gt;
** Test suite: after each refresh log list of all test cases (class level, needed because it's not possible to know when manual test cases get added...)&lt;br /&gt;
** Test class: (do we need info on this level)&lt;br /&gt;
** Test routine: status (basically as you see it in the tool)&lt;br /&gt;
&lt;br /&gt;
==Experiment Hypotheses==&lt;br /&gt;
&lt;br /&gt;
===Comparisons===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! contracts&lt;br /&gt;
! man. tests&lt;br /&gt;
! playing&lt;br /&gt;
! extr.&lt;br /&gt;
! synth.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| experiment&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
| ISSTA&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How reliably can we extract test cases that reproduce the original failure?===&lt;br /&gt;
* Log original exception and exception received from first test execution&lt;br /&gt;
&lt;br /&gt;
===Are the extracted tests useful for debugging?===&lt;br /&gt;
* Ask developers, using CDD&lt;br /&gt;
&lt;br /&gt;
===What is the (time and memory) overhead of enabling extraction?===&lt;br /&gt;
&lt;br /&gt;
===What is the size of the extracted test cases?===&lt;br /&gt;
&lt;br /&gt;
===Are we able to reproduce bugs from industry?===&lt;br /&gt;
Take bug repository (say EiffelStudio, Gobo, eposix, ...). Use buggy version, try to reproduce bug, see if extracted test case is good.&lt;br /&gt;
&lt;br /&gt;
===Does it make a difference in the quality of the code, whether one tests manually or extracts them?===&lt;br /&gt;
* Compare projects using extracted tests and manual tests to ref test suite&lt;br /&gt;
&lt;br /&gt;
===Do contracts replace traditional testing oracles?===&lt;br /&gt;
* Original API without contracts&lt;br /&gt;
* Run failing test cases (the ones we get from second part) with reference API with contracts&lt;br /&gt;
* How many times does the contract replace the testing oracle?&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10907</id>
		<title>CddMeeting 13 02 2008</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10907"/>
				<updated>2008-04-07T11:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
=CDD Meeting, Wednesday, 14.02.2008, 10:00=&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
* 15.02.2008; 14:15&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
===Andreas===&lt;br /&gt;
* Forumulate Experiment Hypothesis (Andreas)&lt;br /&gt;
* Fix AutoTest for courses&lt;br /&gt;
** New release&lt;br /&gt;
* Write documentation and videos tutorials (together with final release)&lt;br /&gt;
* Finish tuple_002 test case&lt;br /&gt;
* [delayed] Retest if test cases with errors are properly ignored (after 6.1 port)&lt;br /&gt;
* [done] Add timeout judgement&lt;br /&gt;
* Build releasable delivery for Linux (after each Beta I guess...)&lt;br /&gt;
&lt;br /&gt;
===Arno===&lt;br /&gt;
&lt;br /&gt;
====Bug Fixing====&lt;br /&gt;
* [ON WINDOWS NO CRASH OCCURS] Check why EiffelStudio quits after debugging a test routine and ignoring violations (ask Jocelyn)&lt;br /&gt;
&lt;br /&gt;
===Ilinca===&lt;br /&gt;
&lt;br /&gt;
* Integrate variable declarations into AutoTest trunk (by 8.2.2008)&lt;br /&gt;
&lt;br /&gt;
===Stefan===&lt;br /&gt;
* [RECURRENT] Build releasable delivery on Windows&lt;br /&gt;
* [RECURRENT, currently valid]Check log for XML validity&lt;br /&gt;
&lt;br /&gt;
* FG Debugging Crash&lt;br /&gt;
** Wenn ich im CDD Eiffel den Debug the selected test case button drücke und dann während dem debuggen eine assertion violation auftritt, crasht das ganze Eiffel Studio. Das ist mit der CDD Version die ich am Samstag frisch vom SVN server gebaut habe.&lt;br /&gt;
* When detecting if compilation succeeded, inlude &amp;quot;corrupted&amp;quot; as keyword when parsing output message (as in the &amp;quot;project corrupted. cannot continue message)&lt;br /&gt;
&lt;br /&gt;
* Make newly extracted test cases show up &amp;quot;expanded&amp;quot; in GUI treeview&lt;br /&gt;
* Only execute unresolved test cases once. Disable them afterwards. (Needs discussion)&lt;br /&gt;
* Make general encoding/decoding routines for special feature names&lt;br /&gt;
** e.g. infix &amp;quot;+&amp;quot; (ES) &amp;lt;=&amp;gt; infix_plus (CDD)&lt;br /&gt;
* Cache debug values when extracting several test cases.&lt;br /&gt;
* Allow for test case extraction of passing routine invocations (with Jocelyn)&lt;br /&gt;
* Rebuilding manual test suite through extraction and synthesizing&lt;br /&gt;
* Find performance bottleneck of test case extraction and propose extraction method for second chance&lt;br /&gt;
* [LOW PRIORITY since inv prob solved] When runtime of interpreter is severly damaged a popup box shows up on Windows. Popup can be ignored and goes away. This popup does not come up when we shoot down interpreter, but when a faulty instruction is executed. (E.g. the inv bug can trigger this dialog)&lt;br /&gt;
* [LOW PRIORITY since unlikely situation] Test cases with a 'False' (not satisfieable) invariant makes interpreter hang and ES crash. Add test case and fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs/Things to look at====&lt;br /&gt;
&lt;br /&gt;
* For big projects (like ES itself) background compilation of the interpreter leads to completely unresponsive ES&lt;br /&gt;
* [NO EASY SOLUTION POSSIBLE] Crash upon closing of EiffelStudio (feature call on void target in breakpoint tool)&lt;br /&gt;
&lt;br /&gt;
===Manu===&lt;br /&gt;
* Install CDD in student labs (Manu)&lt;br /&gt;
* Devise questionnaires&lt;br /&gt;
** Initial (due next meeting after Manu's vacation)&lt;br /&gt;
** Midterm&lt;br /&gt;
** Final&lt;br /&gt;
* Analyze questionnaires&lt;br /&gt;
* Rework example profiles&lt;br /&gt;
* Assis will use CDD to get a feel for it and create a test suite for the students to start with&lt;br /&gt;
&lt;br /&gt;
=== Bernd ===&lt;br /&gt;
* Define Project for SoftEng&lt;br /&gt;
** Find test suite for us to test students code&lt;br /&gt;
** Find project with pure functional part&lt;br /&gt;
&lt;br /&gt;
===Unassigned===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beta Tester Feedback====&lt;br /&gt;
(Please put your name so we can get back to you in the case of questions)&lt;br /&gt;
* (Jocelyn) It should be possible to set the location of the cdd_tests directory (what if location of .ecf file is not readable?) [delayed]&lt;br /&gt;
** home directory? application_data directory?  [Jocelyn]&lt;br /&gt;
* (Jocelyn) There should be UI support for deletion of Test Case [difficult for test routines, possible for classes. documentation added.]&lt;br /&gt;
* (Jocelyn) [BUG] the manual test case creation dialog should check if class with chosen name is already in the system [delayed]&lt;br /&gt;
* (Jocelyn) It would be nice if there was a way to configure the timeout for the interpreter [Stefan will ask Jocelyn for concrete example]&lt;br /&gt;
&lt;br /&gt;
== Questionnaires ==&lt;br /&gt;
&lt;br /&gt;
* Use ELBA&lt;br /&gt;
&lt;br /&gt;
== Software Engineering Project ==&lt;br /&gt;
&lt;br /&gt;
* Task 1: Implement VCard API&lt;br /&gt;
* Task 2: Implement Mime API&lt;br /&gt;
* Task 3: Write test cases to reveal faults in foreign VCard implementations&lt;br /&gt;
* Task 4: Write test cases to reveal faults in foreign Mime implementations&lt;br /&gt;
&lt;br /&gt;
* Group A:&lt;br /&gt;
** Task 1, Manual Tests&lt;br /&gt;
** Task 2, Extracted Tests&lt;br /&gt;
** Task 3, Manual Tests&lt;br /&gt;
** Task 4, Extracted Tests&lt;br /&gt;
* Group B:&lt;br /&gt;
** Task 1, Extracted Tests&lt;br /&gt;
** Task 2, Manual Tests&lt;br /&gt;
** Task 3, Extracted Tests&lt;br /&gt;
** Task 4, Manual Tests&lt;br /&gt;
&lt;br /&gt;
* One large project, but divided into testable subcomponents&lt;br /&gt;
* Students required to write test cases&lt;br /&gt;
* Fixed API to make things uniformly testable&lt;br /&gt;
* Public/Secret test cases (similar to Zeller course)&lt;br /&gt;
* Competitions:&lt;br /&gt;
** Group A test cases applied to Group A project&lt;br /&gt;
** Group A test cases applied to Groupt B project&lt;br /&gt;
&lt;br /&gt;
* Idea how to cancel out bias while allowing fair grading:&lt;br /&gt;
** Subtasks 1 and 2, Students divided into groups A and B&lt;br /&gt;
** First both groups do 1, A is allowed to use tool, B not&lt;br /&gt;
** Then both groups do 2, B is allowed to use tool, A not&lt;br /&gt;
** Bias cancelation:&lt;br /&gt;
*** Project complexity&lt;br /&gt;
*** Experience of students&lt;br /&gt;
*** Experience gained in first subtask, when developing second&lt;br /&gt;
*** Risk: One task might be better suited for the tool than the other&lt;br /&gt;
&lt;br /&gt;
== Data to harvest ==&lt;br /&gt;
* IDE Time with CDD(extraction) enabled / IDE Time with CDD(extraction) disabled&lt;br /&gt;
* Test Case Source (just final version, or all versions?)&lt;br /&gt;
** Use Profiler to get coverage approximation&lt;br /&gt;
* TC Meta Data (with timestamps -&amp;gt; Evolution of Test Case)&lt;br /&gt;
** TC Added/Removed/Changed&lt;br /&gt;
** TC Outcome (transitions from FAIL/PASS/UNRESOLVED[bad_communication &amp;lt;-&amp;gt; does_not_compile &amp;lt;-&amp;gt; bad_input])&lt;br /&gt;
** TC execution time&lt;br /&gt;
** Modificiations to a testcase (compiler needs to recompile)&lt;br /&gt;
* Development Session Data&lt;br /&gt;
** IDE Startup&lt;br /&gt;
** File save&lt;br /&gt;
* Questionnairs&lt;br /&gt;
** Initial&lt;br /&gt;
** Final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Meta&amp;quot; log entries&lt;br /&gt;
** Project opened (easy)&lt;br /&gt;
** CDD enable/disable (easy)&lt;br /&gt;
** general EiffelStudio action log entries for Developer Behaviour (harder... what do we need??)&lt;br /&gt;
&lt;br /&gt;
* CDD actions log entries&lt;br /&gt;
** Compilation of interpreter (start, end, duration)&lt;br /&gt;
** Execution of test cases (start, end, do we need individual duration of each test cases that gets executed?)&lt;br /&gt;
** Extraction of new test case (extraction time)&lt;br /&gt;
&lt;br /&gt;
* Test Suite Status&lt;br /&gt;
** Test suite: after each refresh log list of all test cases (class level, needed because it's not possible to know when manual test cases get added...)&lt;br /&gt;
** Test class: (do we need info on this level)&lt;br /&gt;
** Test routine: status (basically as you see it in the tool)&lt;br /&gt;
&lt;br /&gt;
==Experiment Hypotheses==&lt;br /&gt;
&lt;br /&gt;
===Comparisons===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! contracts&lt;br /&gt;
! man. tests&lt;br /&gt;
! playing&lt;br /&gt;
! extr.&lt;br /&gt;
! synth.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| experiment&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
| ISSTA&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How reliably can we extract test cases that reproduce the original failure?===&lt;br /&gt;
* Log original exception and exception received from first test execution&lt;br /&gt;
&lt;br /&gt;
===Are the extracted tests useful for debugging?===&lt;br /&gt;
* Ask developers, using CDD&lt;br /&gt;
&lt;br /&gt;
===What is the (time and memory) overhead of enabling extraction?===&lt;br /&gt;
&lt;br /&gt;
===What is the size of the extracted test cases?===&lt;br /&gt;
&lt;br /&gt;
===Are we able to reproduce bugs from industry?===&lt;br /&gt;
Take bug repository (say EiffelStudio, Gobo, eposix, ...). Use buggy version, try to reproduce bug, see if extracted test case is good.&lt;br /&gt;
&lt;br /&gt;
===Does it make a difference in the quality of the code, whether one tests manually or extracts them?===&lt;br /&gt;
* Compare projects using extracted tests and manual tests to ref test suite&lt;br /&gt;
&lt;br /&gt;
===Do contracts replace traditional testing oracles?===&lt;br /&gt;
* Original API without contracts&lt;br /&gt;
* Run failing test cases (the ones we get from second part) with reference API with contracts&lt;br /&gt;
* How many times does the contract replace the testing oracle?&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10906</id>
		<title>CddMeeting 13 02 2008</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10906"/>
				<updated>2008-04-07T11:39:02Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
=CDD Meeting, Wednesday, 14.02.2008, 10:00=&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
* 15.02.2008; 14:15&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
===Andreas===&lt;br /&gt;
* Forumulate Experiment Hypothesis (Andreas)&lt;br /&gt;
* Fix AutoTest for courses&lt;br /&gt;
** New release&lt;br /&gt;
* Write documentation and videos tutorials (together with final release)&lt;br /&gt;
* Finish tuple_002 test case&lt;br /&gt;
* [delayed] Retest if test cases with errors are properly ignored (after 6.1 port)&lt;br /&gt;
* [done] Add timeout judgement&lt;br /&gt;
* Build releasable delivery for Linux (after each Beta I guess...)&lt;br /&gt;
&lt;br /&gt;
===Arno===&lt;br /&gt;
&lt;br /&gt;
====Bug Fixing====&lt;br /&gt;
* [ON WINDOWS NO CRASH OCCURS] Check why EiffelStudio quits after debugging a test routine and ignoring violations (ask Jocelyn)&lt;br /&gt;
&lt;br /&gt;
===Ilinca===&lt;br /&gt;
&lt;br /&gt;
* Integrate variable declarations into AutoTest trunk (by 8.2.2008)&lt;br /&gt;
&lt;br /&gt;
===Stefan===&lt;br /&gt;
* [RECURRENT] Build releasable delivery on Windows&lt;br /&gt;
* [RECURRENT, currently valid]Check log for XML validity&lt;br /&gt;
&lt;br /&gt;
* FG Debugging Crash&lt;br /&gt;
** Wenn ich im CDD Eiffel den Debug the selected test case button drücke &lt;br /&gt;
und dann während dem debuggen eine assertion violation auftritt, crasht &lt;br /&gt;
das ganze Eiffel Studio. Das ist mit der CDD Version die ich am Samstag &lt;br /&gt;
frisch vom SVN server gebaut habe.&lt;br /&gt;
* When detecting if compilation succeeded, inlude &amp;quot;corrupted&amp;quot; as keyword when parsing output message (as in the &amp;quot;project corrupted. cannot continue message)&lt;br /&gt;
&lt;br /&gt;
* Make newly extracted test cases show up &amp;quot;expanded&amp;quot; in GUI treeview&lt;br /&gt;
* Only execute unresolved test cases once. Disable them afterwards. (Needs discussion)&lt;br /&gt;
* Make general encoding/decoding routines for special feature names&lt;br /&gt;
** e.g. infix &amp;quot;+&amp;quot; (ES) &amp;lt;=&amp;gt; infix_plus (CDD)&lt;br /&gt;
* Cache debug values when extracting several test cases.&lt;br /&gt;
* Allow for test case extraction of passing routine invocations (with Jocelyn)&lt;br /&gt;
* Rebuilding manual test suite through extraction and synthesizing&lt;br /&gt;
* Find performance bottleneck of test case extraction and propose extraction method for second chance&lt;br /&gt;
* [LOW PRIORITY since inv prob solved] When runtime of interpreter is severly damaged a popup box shows up on Windows. Popup can be ignored and goes away. This popup does not come up when we shoot down interpreter, but when a faulty instruction is executed. (E.g. the inv bug can trigger this dialog)&lt;br /&gt;
* [LOW PRIORITY since unlikely situation] Test cases with a 'False' (not satisfieable) invariant makes interpreter hang and ES crash. Add test case and fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs/Things to look at====&lt;br /&gt;
&lt;br /&gt;
* For big projects (like ES itself) background compilation of the interpreter leads to completely unresponsive ES&lt;br /&gt;
* [NO EASY SOLUTION POSSIBLE] Crash upon closing of EiffelStudio (feature call on void target in breakpoint tool)&lt;br /&gt;
&lt;br /&gt;
===Manu===&lt;br /&gt;
* Install CDD in student labs (Manu)&lt;br /&gt;
* Devise questionnaires&lt;br /&gt;
** Initial (due next meeting after Manu's vacation)&lt;br /&gt;
** Midterm&lt;br /&gt;
** Final&lt;br /&gt;
* Analyze questionnaires&lt;br /&gt;
* Rework example profiles&lt;br /&gt;
* Assis will use CDD to get a feel for it and create a test suite for the students to start with&lt;br /&gt;
&lt;br /&gt;
=== Bernd ===&lt;br /&gt;
* Define Project for SoftEng&lt;br /&gt;
** Find test suite for us to test students code&lt;br /&gt;
** Find project with pure functional part&lt;br /&gt;
&lt;br /&gt;
===Unassigned===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beta Tester Feedback====&lt;br /&gt;
(Please put your name so we can get back to you in the case of questions)&lt;br /&gt;
* (Jocelyn) It should be possible to set the location of the cdd_tests directory (what if location of .ecf file is not readable?) [delayed]&lt;br /&gt;
** home directory? application_data directory?  [Jocelyn]&lt;br /&gt;
* (Jocelyn) There should be UI support for deletion of Test Case [difficult for test routines, possible for classes. documentation added.]&lt;br /&gt;
* (Jocelyn) [BUG] the manual test case creation dialog should check if class with chosen name is already in the system [delayed]&lt;br /&gt;
* (Jocelyn) It would be nice if there was a way to configure the timeout for the interpreter [Stefan will ask Jocelyn for concrete example]&lt;br /&gt;
&lt;br /&gt;
== Questionnaires ==&lt;br /&gt;
&lt;br /&gt;
* Use ELBA&lt;br /&gt;
&lt;br /&gt;
== Software Engineering Project ==&lt;br /&gt;
&lt;br /&gt;
* Task 1: Implement VCard API&lt;br /&gt;
* Task 2: Implement Mime API&lt;br /&gt;
* Task 3: Write test cases to reveal faults in foreign VCard implementations&lt;br /&gt;
* Task 4: Write test cases to reveal faults in foreign Mime implementations&lt;br /&gt;
&lt;br /&gt;
* Group A:&lt;br /&gt;
** Task 1, Manual Tests&lt;br /&gt;
** Task 2, Extracted Tests&lt;br /&gt;
** Task 3, Manual Tests&lt;br /&gt;
** Task 4, Extracted Tests&lt;br /&gt;
* Group B:&lt;br /&gt;
** Task 1, Extracted Tests&lt;br /&gt;
** Task 2, Manual Tests&lt;br /&gt;
** Task 3, Extracted Tests&lt;br /&gt;
** Task 4, Manual Tests&lt;br /&gt;
&lt;br /&gt;
* One large project, but divided into testable subcomponents&lt;br /&gt;
* Students required to write test cases&lt;br /&gt;
* Fixed API to make things uniformly testable&lt;br /&gt;
* Public/Secret test cases (similar to Zeller course)&lt;br /&gt;
* Competitions:&lt;br /&gt;
** Group A test cases applied to Group A project&lt;br /&gt;
** Group A test cases applied to Groupt B project&lt;br /&gt;
&lt;br /&gt;
* Idea how to cancel out bias while allowing fair grading:&lt;br /&gt;
** Subtasks 1 and 2, Students divided into groups A and B&lt;br /&gt;
** First both groups do 1, A is allowed to use tool, B not&lt;br /&gt;
** Then both groups do 2, B is allowed to use tool, A not&lt;br /&gt;
** Bias cancelation:&lt;br /&gt;
*** Project complexity&lt;br /&gt;
*** Experience of students&lt;br /&gt;
*** Experience gained in first subtask, when developing second&lt;br /&gt;
*** Risk: One task might be better suited for the tool than the other&lt;br /&gt;
&lt;br /&gt;
== Data to harvest ==&lt;br /&gt;
* IDE Time with CDD(extraction) enabled / IDE Time with CDD(extraction) disabled&lt;br /&gt;
* Test Case Source (just final version, or all versions?)&lt;br /&gt;
** Use Profiler to get coverage approximation&lt;br /&gt;
* TC Meta Data (with timestamps -&amp;gt; Evolution of Test Case)&lt;br /&gt;
** TC Added/Removed/Changed&lt;br /&gt;
** TC Outcome (transitions from FAIL/PASS/UNRESOLVED[bad_communication &amp;lt;-&amp;gt; does_not_compile &amp;lt;-&amp;gt; bad_input])&lt;br /&gt;
** TC execution time&lt;br /&gt;
** Modificiations to a testcase (compiler needs to recompile)&lt;br /&gt;
* Development Session Data&lt;br /&gt;
** IDE Startup&lt;br /&gt;
** File save&lt;br /&gt;
* Questionnairs&lt;br /&gt;
** Initial&lt;br /&gt;
** Final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Meta&amp;quot; log entries&lt;br /&gt;
** Project opened (easy)&lt;br /&gt;
** CDD enable/disable (easy)&lt;br /&gt;
** general EiffelStudio action log entries for Developer Behaviour (harder... what do we need??)&lt;br /&gt;
&lt;br /&gt;
* CDD actions log entries&lt;br /&gt;
** Compilation of interpreter (start, end, duration)&lt;br /&gt;
** Execution of test cases (start, end, do we need individual duration of each test cases that gets executed?)&lt;br /&gt;
** Extraction of new test case (extraction time)&lt;br /&gt;
&lt;br /&gt;
* Test Suite Status&lt;br /&gt;
** Test suite: after each refresh log list of all test cases (class level, needed because it's not possible to know when manual test cases get added...)&lt;br /&gt;
** Test class: (do we need info on this level)&lt;br /&gt;
** Test routine: status (basically as you see it in the tool)&lt;br /&gt;
&lt;br /&gt;
==Experiment Hypotheses==&lt;br /&gt;
&lt;br /&gt;
===Comparisons===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! contracts&lt;br /&gt;
! man. tests&lt;br /&gt;
! playing&lt;br /&gt;
! extr.&lt;br /&gt;
! synth.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| experiment&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
| ISSTA&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How reliably can we extract test cases that reproduce the original failure?===&lt;br /&gt;
* Log original exception and exception received from first test execution&lt;br /&gt;
&lt;br /&gt;
===Are the extracted tests useful for debugging?===&lt;br /&gt;
* Ask developers, using CDD&lt;br /&gt;
&lt;br /&gt;
===What is the (time and memory) overhead of enabling extraction?===&lt;br /&gt;
&lt;br /&gt;
===What is the size of the extracted test cases?===&lt;br /&gt;
&lt;br /&gt;
===Are we able to reproduce bugs from industry?===&lt;br /&gt;
Take bug repository (say EiffelStudio, Gobo, eposix, ...). Use buggy version, try to reproduce bug, see if extracted test case is good.&lt;br /&gt;
&lt;br /&gt;
===Does it make a difference in the quality of the code, whether one tests manually or extracts them?===&lt;br /&gt;
* Compare projects using extracted tests and manual tests to ref test suite&lt;br /&gt;
&lt;br /&gt;
===Do contracts replace traditional testing oracles?===&lt;br /&gt;
* Original API without contracts&lt;br /&gt;
* Run failing test cases (the ones we get from second part) with reference API with contracts&lt;br /&gt;
* How many times does the contract replace the testing oracle?&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10900</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10900"/>
				<updated>2008-04-04T11:16:21Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Create new manual test class */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redefine routine `set_up' or `tear_down' if you want something to be executed before resp. after every test routine of a class.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10895</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10895"/>
				<updated>2008-04-02T09:32:06Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are '''upgrading''' from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10894</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10894"/>
				<updated>2008-04-02T09:31:57Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are upgrading from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are '''upgrading''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10893</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10893"/>
				<updated>2008-04-02T09:31:48Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are upgrading from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are ''''upgrading'''' from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10892</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10892"/>
				<updated>2008-04-02T09:31:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Download CDD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
Notes:&lt;br /&gt;
* If you are upgrading from a previous version, make sure you delete the old version first (rm -rf)&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
Notes:&lt;br /&gt;
* Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* If you are upgrading from a previous version, you first have to uninstall the old version then delete the existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/) and then install the new version.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10891</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10891"/>
				<updated>2008-04-02T08:12:05Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
* Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
* Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
* Fixed bug in invarant checking&lt;br /&gt;
* Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
* Improved logging&lt;br /&gt;
* Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10890</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10890"/>
				<updated>2008-04-02T08:11:53Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10889</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10889"/>
				<updated>2008-04-02T08:11:38Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
==== 2.April.2008: CDD EiffelStudio Final 6 available ====&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10888</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10888"/>
				<updated>2008-04-02T08:11:29Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
=== 2.April.2008: CDD EiffelStudio Final 6 available ===&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10887</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10887"/>
				<updated>2008-04-02T08:11:17Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
* 2.April.2008: CDD EiffelStudio Final 6 available&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10886</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10886"/>
				<updated>2008-04-02T08:02:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
* CDD EiffelStudio Final 6 available&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested, reports welcome)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10885</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10885"/>
				<updated>2008-04-02T08:02:38Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
&lt;br /&gt;
* CDD EiffelStudio Final 6 available&lt;br /&gt;
** Less mess: Redundant or duplicate test cases are no longer extracted&lt;br /&gt;
** Smoother upgrade: Cleaning a project will automatically clean the test suite&lt;br /&gt;
** Fixed bug in invarant checking&lt;br /&gt;
** Fixed bug that caused EiffelStudio to freeze in some situations&lt;br /&gt;
** Improved logging&lt;br /&gt;
** Installer ''might'' work with mingw on Windows now. (Not yet tested)&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
==== Windows Patch ====&lt;br /&gt;
&lt;br /&gt;
* Patch version for existing EiffelStudio CDD Edition Final 5 installation (does NOT work for official EiffelStudio 6.1 installation!): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_6-windows.zip&lt;br /&gt;
* Replace &amp;lt;INSTALL_DIRECTORY&amp;gt;/studio/spec/windows/bin/ec.exe with ec.exe contained in archive&lt;br /&gt;
* Delete existing precompilations (= delete EIFGENs in subdirectories of &amp;lt;INSTALL_DIRECTORY&amp;gt;/precomp/spec/windows/)&lt;br /&gt;
* Recompile existing projects from scratch (use the &amp;quot;clean&amp;quot; option in the project load screen)&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10878</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10878"/>
				<updated>2008-04-01T17:31:47Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_6.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10874</id>
		<title>CddMeeting 13 02 2008</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10874"/>
				<updated>2008-03-26T15:30:25Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
=CDD Meeting, Wednesday, 14.02.2008, 10:00=&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
* 15.02.2008; 14:15&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
===Andreas===&lt;br /&gt;
* Forumulate Experiment Hypothesis (Andreas)&lt;br /&gt;
* Fix AutoTest for courses&lt;br /&gt;
** New release&lt;br /&gt;
* Write documentation and videos tutorials (together with final release)&lt;br /&gt;
* Finish tuple_002 test case&lt;br /&gt;
* [delayed] Retest if test cases with errors are properly ignored (after 6.1 port)&lt;br /&gt;
* [done] Add timeout judgement&lt;br /&gt;
* Build releasable delivery for Linux (after each Beta I guess...)&lt;br /&gt;
&lt;br /&gt;
===Arno===&lt;br /&gt;
&lt;br /&gt;
====Bug Fixing====&lt;br /&gt;
* [ON WINDOWS NO CRASH OCCURS] Check why EiffelStudio quits after debugging a test routine and ignoring violations (ask Jocelyn)&lt;br /&gt;
&lt;br /&gt;
===Ilinca===&lt;br /&gt;
&lt;br /&gt;
* Integrate variable declarations into AutoTest trunk (by 8.2.2008)&lt;br /&gt;
&lt;br /&gt;
===Stefan===&lt;br /&gt;
* [RECURRENT] Build releasable delivery on Windows&lt;br /&gt;
* [RECURRENT, currently valid]Check log for XML validity&lt;br /&gt;
&lt;br /&gt;
* [DONE] Don't store test case if exactly the same one exists already.&lt;br /&gt;
* [DONE] Look at test case from Manu that doesn't compile (ARRAY is printed instead of ARRAY[STRING]&lt;br /&gt;
* [DONE] Add link to &amp;quot;common problems&amp;quot; website in context window for test cases that time out&lt;br /&gt;
&lt;br /&gt;
* Invariant violations occurring before routine invocation make a test case fail. It should be invalid. How to reproduce: Launch bank account example with final 2. Implement `BANK_ACCOUNT.withdraw' correctly. Replace postcondition with &amp;quot;withdrawn: balance = old balance + an_amount&amp;quot;. Launch app, try to withdraw 700. You will get a test case that fails. It should be invalid though.&lt;br /&gt;
&lt;br /&gt;
* Inspect cannot read file problem that occured in lecture. I can reproduce it also on my Linux box now.&lt;br /&gt;
* When detecting if compilation succeeded, inlude &amp;quot;corrupted&amp;quot; as keyword when parsing output message (as in the &amp;quot;project corrupted. cannot continue message)&lt;br /&gt;
* Log:&lt;br /&gt;
** Playing around (duration and number of times)&lt;br /&gt;
** FG-test case execution (duration, number of times, exception thrown, which test case, outcome)&lt;br /&gt;
* Clean cdd target when main target is cleaned too.&lt;br /&gt;
&lt;br /&gt;
* Make newly extracted test cases show up &amp;quot;expanded&amp;quot; in GUI treeview&lt;br /&gt;
* Only execute unresolved test cases once. Disable them afterwards. (Needs discussion)&lt;br /&gt;
* Make general encoding/decoding routines for special feature names&lt;br /&gt;
** e.g. infix &amp;quot;+&amp;quot; (ES) &amp;lt;=&amp;gt; infix_plus (CDD)&lt;br /&gt;
* Cache debug values when extracting several test cases.&lt;br /&gt;
* Allow for test case extraction of passing routine invocations (with Jocelyn)&lt;br /&gt;
* Rebuilding manual test suite through extraction and synthesizing&lt;br /&gt;
* Find performance bottleneck of test case extraction and propose extraction method for second chance&lt;br /&gt;
* [LOW PRIORITY since inv prob solved] When runtime of interpreter is severly damaged a popup box shows up on Windows. Popup can be ignored and goes away. This popup does not come up when we shoot down interpreter, but when a faulty instruction is executed. (E.g. the inv bug can trigger this dialog)&lt;br /&gt;
* [LOW PRIORITY since unlikely situation] Test cases with a 'False' (not satisfieable) invariant makes interpreter hang and ES crash. Add test case and fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs/Things to look at====&lt;br /&gt;
&lt;br /&gt;
* For big projects (like ES itself) background compilation of the interpreter leads to completely unresponsive ES&lt;br /&gt;
* [NO EASY SOLUTION POSSIBLE] Crash upon closing of EiffelStudio (feature call on void target in breakpoint tool)&lt;br /&gt;
&lt;br /&gt;
===Manu===&lt;br /&gt;
* Install CDD in student labs (Manu)&lt;br /&gt;
* Devise questionnaires&lt;br /&gt;
** Initial (due next meeting after Manu's vacation)&lt;br /&gt;
** Midterm&lt;br /&gt;
** Final&lt;br /&gt;
* Analyze questionnaires&lt;br /&gt;
* Rework example profiles&lt;br /&gt;
* Assis will use CDD to get a feel for it and create a test suite for the students to start with&lt;br /&gt;
&lt;br /&gt;
=== Bernd ===&lt;br /&gt;
* Define Project for SoftEng&lt;br /&gt;
** Find test suite for us to test students code&lt;br /&gt;
** Find project with pure functional part&lt;br /&gt;
&lt;br /&gt;
===Unassigned===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beta Tester Feedback====&lt;br /&gt;
(Please put your name so we can get back to you in the case of questions)&lt;br /&gt;
* (Jocelyn) It should be possible to set the location of the cdd_tests directory (what if location of .ecf file is not readable?) [delayed]&lt;br /&gt;
** home directory? application_data directory?  [Jocelyn]&lt;br /&gt;
* (Jocelyn) There should be UI support for deletion of Test Case [difficult for test routines, possible for classes. documentation added.]&lt;br /&gt;
* (Jocelyn) [BUG] the manual test case creation dialog should check if class with chosen name is already in the system [delayed]&lt;br /&gt;
* (Jocelyn) It would be nice if there was a way to configure the timeout for the interpreter [Stefan will ask Jocelyn for concrete example]&lt;br /&gt;
&lt;br /&gt;
== Questionnaires ==&lt;br /&gt;
&lt;br /&gt;
* Use ELBA&lt;br /&gt;
&lt;br /&gt;
== Software Engineering Project ==&lt;br /&gt;
&lt;br /&gt;
* Task 1: Implement VCard API&lt;br /&gt;
* Task 2: Implement Mime API&lt;br /&gt;
* Task 3: Write test cases to reveal faults in foreign VCard implementations&lt;br /&gt;
* Task 4: Write test cases to reveal faults in foreign Mime implementations&lt;br /&gt;
&lt;br /&gt;
* Group A:&lt;br /&gt;
** Task 1, Manual Tests&lt;br /&gt;
** Task 2, Extracted Tests&lt;br /&gt;
** Task 3, Manual Tests&lt;br /&gt;
** Task 4, Extracted Tests&lt;br /&gt;
* Group B:&lt;br /&gt;
** Task 1, Extracted Tests&lt;br /&gt;
** Task 2, Manual Tests&lt;br /&gt;
** Task 3, Extracted Tests&lt;br /&gt;
** Task 4, Manual Tests&lt;br /&gt;
&lt;br /&gt;
* One large project, but divided into testable subcomponents&lt;br /&gt;
* Students required to write test cases&lt;br /&gt;
* Fixed API to make things uniformly testable&lt;br /&gt;
* Public/Secret test cases (similar to Zeller course)&lt;br /&gt;
* Competitions:&lt;br /&gt;
** Group A test cases applied to Group A project&lt;br /&gt;
** Group A test cases applied to Groupt B project&lt;br /&gt;
&lt;br /&gt;
* Idea how to cancel out bias while allowing fair grading:&lt;br /&gt;
** Subtasks 1 and 2, Students divided into groups A and B&lt;br /&gt;
** First both groups do 1, A is allowed to use tool, B not&lt;br /&gt;
** Then both groups do 2, B is allowed to use tool, A not&lt;br /&gt;
** Bias cancelation:&lt;br /&gt;
*** Project complexity&lt;br /&gt;
*** Experience of students&lt;br /&gt;
*** Experience gained in first subtask, when developing second&lt;br /&gt;
*** Risk: One task might be better suited for the tool than the other&lt;br /&gt;
&lt;br /&gt;
== Data to harvest ==&lt;br /&gt;
* IDE Time with CDD(extraction) enabled / IDE Time with CDD(extraction) disabled&lt;br /&gt;
* Test Case Source (just final version, or all versions?)&lt;br /&gt;
** Use Profiler to get coverage approximation&lt;br /&gt;
* TC Meta Data (with timestamps -&amp;gt; Evolution of Test Case)&lt;br /&gt;
** TC Added/Removed/Changed&lt;br /&gt;
** TC Outcome (transitions from FAIL/PASS/UNRESOLVED[bad_communication &amp;lt;-&amp;gt; does_not_compile &amp;lt;-&amp;gt; bad_input])&lt;br /&gt;
** TC execution time&lt;br /&gt;
** Modificiations to a testcase (compiler needs to recompile)&lt;br /&gt;
* Development Session Data&lt;br /&gt;
** IDE Startup&lt;br /&gt;
** File save&lt;br /&gt;
* Questionnairs&lt;br /&gt;
** Initial&lt;br /&gt;
** Final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Meta&amp;quot; log entries&lt;br /&gt;
** Project opened (easy)&lt;br /&gt;
** CDD enable/disable (easy)&lt;br /&gt;
** general EiffelStudio action log entries for Developer Behaviour (harder... what do we need??)&lt;br /&gt;
&lt;br /&gt;
* CDD actions log entries&lt;br /&gt;
** Compilation of interpreter (start, end, duration)&lt;br /&gt;
** Execution of test cases (start, end, do we need individual duration of each test cases that gets executed?)&lt;br /&gt;
** Extraction of new test case (extraction time)&lt;br /&gt;
&lt;br /&gt;
* Test Suite Status&lt;br /&gt;
** Test suite: after each refresh log list of all test cases (class level, needed because it's not possible to know when manual test cases get added...)&lt;br /&gt;
** Test class: (do we need info on this level)&lt;br /&gt;
** Test routine: status (basically as you see it in the tool)&lt;br /&gt;
&lt;br /&gt;
==Experiment Hypotheses==&lt;br /&gt;
&lt;br /&gt;
===Comparisons===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! contracts&lt;br /&gt;
! man. tests&lt;br /&gt;
! playing&lt;br /&gt;
! extr.&lt;br /&gt;
! synth.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| experiment&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
| ISSTA&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How reliably can we extract test cases that reproduce the original failure?===&lt;br /&gt;
* Log original exception and exception received from first test execution&lt;br /&gt;
&lt;br /&gt;
===Are the extracted tests useful for debugging?===&lt;br /&gt;
* Ask developers, using CDD&lt;br /&gt;
&lt;br /&gt;
===What is the (time and memory) overhead of enabling extraction?===&lt;br /&gt;
&lt;br /&gt;
===What is the size of the extracted test cases?===&lt;br /&gt;
&lt;br /&gt;
===Are we able to reproduce bugs from industry?===&lt;br /&gt;
Take bug repository (say EiffelStudio, Gobo, eposix, ...). Use buggy version, try to reproduce bug, see if extracted test case is good.&lt;br /&gt;
&lt;br /&gt;
===Does it make a difference in the quality of the code, whether one tests manually or extracts them?===&lt;br /&gt;
* Compare projects using extracted tests and manual tests to ref test suite&lt;br /&gt;
&lt;br /&gt;
===Do contracts replace traditional testing oracles?===&lt;br /&gt;
* Original API without contracts&lt;br /&gt;
* Run failing test cases (the ones we get from second part) with reference API with contracts&lt;br /&gt;
* How many times does the contract replace the testing oracle?&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10858</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10858"/>
				<updated>2008-03-19T11:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''Play CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10857</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10857"/>
				<updated>2008-03-19T11:51:56Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ '''CDD Video''', click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* '''Automatically extract test cases'''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10856</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10856"/>
				<updated>2008-03-19T10:39:11Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ CDD Video, click here]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10855</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10855"/>
				<updated>2008-03-19T10:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
[center]&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ CDD Video, click here]&lt;br /&gt;
[/center]&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10854</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10854"/>
				<updated>2008-03-19T10:38:05Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* What is the CDD EiffelStudio? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
[http://se.ethz.ch/people/leitner/cdd/video/ CDD Video, click here]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled no test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
Update: To remove duplicate test cases (until the next cdd update), please use the command-line tool from the [http://clean-cdd.origo.ethz.ch/ clean-cdd project].&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10853</id>
		<title>CddMeeting 13 02 2008</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddMeeting_13_02_2008&amp;diff=10853"/>
				<updated>2008-03-19T08:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:CDD]]&lt;br /&gt;
=CDD Meeting, Wednesday, 14.02.2008, 10:00=&lt;br /&gt;
&lt;br /&gt;
== Next Meeting ==&lt;br /&gt;
* 15.02.2008; 14:15&lt;br /&gt;
&lt;br /&gt;
== Tasks ==&lt;br /&gt;
&lt;br /&gt;
===Andreas===&lt;br /&gt;
* Forumulate Experiment Hypothesis (Andreas)&lt;br /&gt;
* Fix AutoTest for courses&lt;br /&gt;
** New release&lt;br /&gt;
* Write documentation and videos tutorials (together with final release)&lt;br /&gt;
* Finish tuple_002 test case&lt;br /&gt;
* [delayed] Retest if test cases with errors are properly ignored (after 6.1 port)&lt;br /&gt;
* [done] Add timeout judgement&lt;br /&gt;
* Build releasable delivery for Linux (after each Beta I guess...)&lt;br /&gt;
&lt;br /&gt;
===Arno===&lt;br /&gt;
&lt;br /&gt;
====Bug Fixing====&lt;br /&gt;
* [ON WINDOWS NO CRASH OCCURS] Check why EiffelStudio quits after debugging a test routine and ignoring violations (ask Jocelyn)&lt;br /&gt;
* [DONE!] CDD Output Tool window display is not saved (on initial start after installation it is there. But after closing and reopening it is gone)&lt;br /&gt;
&lt;br /&gt;
===Ilinca===&lt;br /&gt;
&lt;br /&gt;
* Integrate variable declarations into AutoTest trunk (by 8.2.2008)&lt;br /&gt;
&lt;br /&gt;
===Stefan===&lt;br /&gt;
* [RECURRENT] Build releasable delivery on Windows&lt;br /&gt;
* [RECURRENT, currently valid]Check log for XML validity&lt;br /&gt;
&lt;br /&gt;
* Invariant violations occurring before routine invocation make a test case fail. It should be invalid. How to reproduce: Launch bank account example with final 2. Implement `BANK_ACCOUNT.withdraw' correctly. Replace postcondition with &amp;quot;withdrawn: balance = old balance + an_amount&amp;quot;. Launch app, try to withdraw 700. You will get a test case that fails. It should be invalid though.&lt;br /&gt;
&lt;br /&gt;
* Add link to &amp;quot;common problems&amp;quot; website in context window for test cases that time out&lt;br /&gt;
* Inspect cannot read file problem that occured in lecture. I can reproduce it also on my Linux box now.&lt;br /&gt;
* When detecting if compilation succeeded, inlude &amp;quot;corrupted&amp;quot; as keyword when parsing output message (as in the &amp;quot;project corrupted. cannot continue message)&lt;br /&gt;
* Don't store test case if exactly the same one exists already.&lt;br /&gt;
* Look at test case from Manu that doesn't compile (ARRAY is printed instead of ARRAY[STRING]&lt;br /&gt;
* Log:&lt;br /&gt;
** Playing around (duration and number of times)&lt;br /&gt;
** FG-test case execution (duration, number of times, exception thrown, which test case, outcome)&lt;br /&gt;
&lt;br /&gt;
* Make newly extracted test cases show up &amp;quot;expanded&amp;quot; in GUI treeview&lt;br /&gt;
* Only execute unresolved test cases once. Disable them afterwards. (Needs discussion)&lt;br /&gt;
* Make general encoding/decoding routines for special feature names&lt;br /&gt;
** e.g. infix &amp;quot;+&amp;quot; (ES) &amp;lt;=&amp;gt; infix_plus (CDD)&lt;br /&gt;
* Cache debug values when extracting several test cases.&lt;br /&gt;
* Allow for test case extraction of passing routine invocations (with Jocelyn)&lt;br /&gt;
* Rebuilding manual test suite through extraction and synthesizing&lt;br /&gt;
* Find performance bottleneck of test case extraction and propose extraction method for second chance&lt;br /&gt;
* [LOW PRIORITY since inv prob solved] When runtime of interpreter is severly damaged a popup box shows up on Windows. Popup can be ignored and goes away. This popup does not come up when we shoot down interpreter, but when a faulty instruction is executed. (E.g. the inv bug can trigger this dialog)&lt;br /&gt;
* [LOW PRIORITY since unlikely situation] Test cases with a 'False' (not satisfieable) invariant makes interpreter hang and ES crash. Add test case and fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Bugs/Things to look at====&lt;br /&gt;
&lt;br /&gt;
* For big projects (like ES itself) background compilation of the interpreter leads to completely unresponsive ES&lt;br /&gt;
* [NO EASY SOLUTION POSSIBLE] Crash upon closing of EiffelStudio (feature call on void target in breakpoint tool)&lt;br /&gt;
&lt;br /&gt;
===Manu===&lt;br /&gt;
* Install CDD in student labs (Manu)&lt;br /&gt;
* Devise questionnaires&lt;br /&gt;
** Initial (due next meeting after Manu's vacation)&lt;br /&gt;
** Midterm&lt;br /&gt;
** Final&lt;br /&gt;
* Analyze questionnaires&lt;br /&gt;
* Rework example profiles&lt;br /&gt;
* Assis will use CDD to get a feel for it and create a test suite for the students to start with&lt;br /&gt;
&lt;br /&gt;
=== Bernd ===&lt;br /&gt;
* Define Project for SoftEng&lt;br /&gt;
** Find test suite for us to test students code&lt;br /&gt;
** Find project with pure functional part&lt;br /&gt;
&lt;br /&gt;
===Unassigned===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beta Tester Feedback====&lt;br /&gt;
(Please put your name so we can get back to you in the case of questions)&lt;br /&gt;
* (Jocelyn) It should be possible to set the location of the cdd_tests directory (what if location of .ecf file is not readable?) [delayed]&lt;br /&gt;
** home directory? application_data directory?  [Jocelyn]&lt;br /&gt;
* (Jocelyn) There should be UI support for deletion of Test Case [difficult for test routines, possible for classes. documentation added.]&lt;br /&gt;
* (Jocelyn) [BUG] the manual test case creation dialog should check if class with chosen name is already in the system [delayed]&lt;br /&gt;
* (Jocelyn) It would be nice if there was a way to configure the timeout for the interpreter [Stefan will ask Jocelyn for concrete example]&lt;br /&gt;
&lt;br /&gt;
== Questionnaires ==&lt;br /&gt;
&lt;br /&gt;
* Use ELBA&lt;br /&gt;
&lt;br /&gt;
== Software Engineering Project ==&lt;br /&gt;
&lt;br /&gt;
* Task 1: Implement VCard API&lt;br /&gt;
* Task 2: Implement Mime API&lt;br /&gt;
* Task 3: Write test cases to reveal faults in foreign VCard implementations&lt;br /&gt;
* Task 4: Write test cases to reveal faults in foreign Mime implementations&lt;br /&gt;
&lt;br /&gt;
* Group A:&lt;br /&gt;
** Task 1, Manual Tests&lt;br /&gt;
** Task 2, Extracted Tests&lt;br /&gt;
** Task 3, Manual Tests&lt;br /&gt;
** Task 4, Extracted Tests&lt;br /&gt;
* Group B:&lt;br /&gt;
** Task 1, Extracted Tests&lt;br /&gt;
** Task 2, Manual Tests&lt;br /&gt;
** Task 3, Extracted Tests&lt;br /&gt;
** Task 4, Manual Tests&lt;br /&gt;
&lt;br /&gt;
* One large project, but divided into testable subcomponents&lt;br /&gt;
* Students required to write test cases&lt;br /&gt;
* Fixed API to make things uniformly testable&lt;br /&gt;
* Public/Secret test cases (similar to Zeller course)&lt;br /&gt;
* Competitions:&lt;br /&gt;
** Group A test cases applied to Group A project&lt;br /&gt;
** Group A test cases applied to Groupt B project&lt;br /&gt;
&lt;br /&gt;
* Idea how to cancel out bias while allowing fair grading:&lt;br /&gt;
** Subtasks 1 and 2, Students divided into groups A and B&lt;br /&gt;
** First both groups do 1, A is allowed to use tool, B not&lt;br /&gt;
** Then both groups do 2, B is allowed to use tool, A not&lt;br /&gt;
** Bias cancelation:&lt;br /&gt;
*** Project complexity&lt;br /&gt;
*** Experience of students&lt;br /&gt;
*** Experience gained in first subtask, when developing second&lt;br /&gt;
*** Risk: One task might be better suited for the tool than the other&lt;br /&gt;
&lt;br /&gt;
== Data to harvest ==&lt;br /&gt;
* IDE Time with CDD(extraction) enabled / IDE Time with CDD(extraction) disabled&lt;br /&gt;
* Test Case Source (just final version, or all versions?)&lt;br /&gt;
** Use Profiler to get coverage approximation&lt;br /&gt;
* TC Meta Data (with timestamps -&amp;gt; Evolution of Test Case)&lt;br /&gt;
** TC Added/Removed/Changed&lt;br /&gt;
** TC Outcome (transitions from FAIL/PASS/UNRESOLVED[bad_communication &amp;lt;-&amp;gt; does_not_compile &amp;lt;-&amp;gt; bad_input])&lt;br /&gt;
** TC execution time&lt;br /&gt;
** Modificiations to a testcase (compiler needs to recompile)&lt;br /&gt;
* Development Session Data&lt;br /&gt;
** IDE Startup&lt;br /&gt;
** File save&lt;br /&gt;
* Questionnairs&lt;br /&gt;
** Initial&lt;br /&gt;
** Final&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Meta&amp;quot; log entries&lt;br /&gt;
** Project opened (easy)&lt;br /&gt;
** CDD enable/disable (easy)&lt;br /&gt;
** general EiffelStudio action log entries for Developer Behaviour (harder... what do we need??)&lt;br /&gt;
&lt;br /&gt;
* CDD actions log entries&lt;br /&gt;
** Compilation of interpreter (start, end, duration)&lt;br /&gt;
** Execution of test cases (start, end, do we need individual duration of each test cases that gets executed?)&lt;br /&gt;
** Extraction of new test case (extraction time)&lt;br /&gt;
&lt;br /&gt;
* Test Suite Status&lt;br /&gt;
** Test suite: after each refresh log list of all test cases (class level, needed because it's not possible to know when manual test cases get added...)&lt;br /&gt;
** Test class: (do we need info on this level)&lt;br /&gt;
** Test routine: status (basically as you see it in the tool)&lt;br /&gt;
&lt;br /&gt;
==Experiment Hypotheses==&lt;br /&gt;
&lt;br /&gt;
===Comparisons===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! contracts&lt;br /&gt;
! man. tests&lt;br /&gt;
! playing&lt;br /&gt;
! extr.&lt;br /&gt;
! synth.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| experiment&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| A B&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
| ISSTA&lt;br /&gt;
| A B&lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
| A&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| B&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How reliably can we extract test cases that reproduce the original failure?===&lt;br /&gt;
* Log original exception and exception received from first test execution&lt;br /&gt;
&lt;br /&gt;
===Are the extracted tests useful for debugging?===&lt;br /&gt;
* Ask developers, using CDD&lt;br /&gt;
&lt;br /&gt;
===What is the (time and memory) overhead of enabling extraction?===&lt;br /&gt;
&lt;br /&gt;
===What is the size of the extracted test cases?===&lt;br /&gt;
&lt;br /&gt;
===Are we able to reproduce bugs from industry?===&lt;br /&gt;
Take bug repository (say EiffelStudio, Gobo, eposix, ...). Use buggy version, try to reproduce bug, see if extracted test case is good.&lt;br /&gt;
&lt;br /&gt;
===Does it make a difference in the quality of the code, whether one tests manually or extracts them?===&lt;br /&gt;
* Compare projects using extracted tests and manual tests to ref test suite&lt;br /&gt;
&lt;br /&gt;
===Do contracts replace traditional testing oracles?===&lt;br /&gt;
* Original API without contracts&lt;br /&gt;
* Run failing test cases (the ones we get from second part) with reference API with contracts&lt;br /&gt;
* How many times does the contract replace the testing oracle?&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10838</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10838"/>
				<updated>2008-03-18T16:33:20Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Test outcomes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled not test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10837</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10837"/>
				<updated>2008-03-18T16:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Create new manual test class */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons. Please see the CddBranch web page for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled not test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases. This is how a manually written test case can look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
  test_deposit&lt;br /&gt;
    local&lt;br /&gt;
      ba: BANK_ACCOUNT&lt;br /&gt;
    do&lt;br /&gt;
      create ba.make_with_balance (0)&lt;br /&gt;
      ba.deposit (100)&lt;br /&gt;
      check&lt;br /&gt;
         money_depisited: ba.balance = 100&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10836</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10836"/>
				<updated>2008-03-18T16:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Change test case view */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons. Please see the CddBranch web page for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled not test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
Select one of several predefined test case views. For example you can group test cases by their outcome to quickly see only failing test cases.&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10835</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10835"/>
				<updated>2008-03-18T16:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Restrict execution of test cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons. Please see the CddBranch web page for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled not test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
Once you have many test cases, you will run into situation where you don't want to execute all of them. The restrict button will help you to achieve this. As long as the &amp;quot;Restrict&amp;quot; button is pushed test cases that don't show up in the test case view will not be tested. Execution is restricted to those test cases that do show up.&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	<entry>
		<id>https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10834</id>
		<title>CddBranch</title>
		<link rel="alternate" type="text/html" href="https://dev.eiffel.com/index.php?title=CddBranch&amp;diff=10834"/>
				<updated>2008-03-18T16:25:12Z</updated>
		
		<summary type="html">&lt;p&gt;Aleitner: /* Search for tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Testing]]&lt;br /&gt;
[[Category:EiffelDebugger]]&lt;br /&gt;
[[Category:CDD]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What is the CDD EiffelStudio? ==&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_logo.png|center]]&lt;br /&gt;
&lt;br /&gt;
CDD (short for Contract Driven Development) is a project developed at [http://se.ethz.ch ETH Zurich]. It adds advanced support for unit testing to EiffelStudio. With CDD EiffelStudio you can&lt;br /&gt;
&lt;br /&gt;
* Write test cases&lt;br /&gt;
* Manage test cases (using tags)&lt;br /&gt;
* Run test cases&lt;br /&gt;
* View test outcomes&lt;br /&gt;
* ''''Automatically extract test cases''''&lt;br /&gt;
&lt;br /&gt;
If you have questions, feedback, or would like to report a bug please visit the [http://eiffelstudio.origo.ethz.ch/forum/20 CDD forum]. &lt;br /&gt;
&lt;br /&gt;
CDD EiffelStudio adds the following panel to regular EiffelStudio:&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_panel.png|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download CDD ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
* Full Linux version: http://se.ethz.ch/people/leitner/cdd/Eiffel61_cdd_final_5.tar.bz2&lt;br /&gt;
* Installation instructions: http://docs.eiffel.com/eiffelstudio/installation/studio/060_linux.html&lt;br /&gt;
&lt;br /&gt;
Download the above file and install it just like you would install a EiffelStudio tar ball. Afterwards proceed to section &amp;quot;Using CDD&amp;quot;. Make sure you set/update the environment variables PATH, ISE_EIFFEL, and ISE_PLATFORM according to the installation instructions.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* Full Windows version (with installer): http://n.ethz.ch/~moris/download/Eiffel61_cdd_final_5-windows.msi&lt;br /&gt;
* Note 1: Installation is independent of installations of official EiffelStudio 6.1 (neither overwrites nor invalidates nor is influenced by those) &lt;br /&gt;
* 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.&lt;br /&gt;
* 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 http://eiffelsoftware.origo.ethz.ch/Installing_Microsoft_C_compiler to learn how to install either compiler.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Manually Written Test Cases ===&lt;br /&gt;
CDD Eiffelstudio allows you to create a new “empty” test case. These test cases are similar to jUnit test cases. A manually written test class must start with the word “TEST” and all test routines also have to start with the word “test”. It also has to inherit from class CDD_TEST_CASE.&lt;br /&gt;
&lt;br /&gt;
=== Extracted Test Cases ===&lt;br /&gt;
CDD EiffelStudio automatically extracts test cases whenever you run your program and an exception is triggered. This feature is novel and not yet part of any other testing environment. You will be the first to try it out.&lt;br /&gt;
&lt;br /&gt;
=== Test outcomes ===&lt;br /&gt;
A test case checks whether your program contains a particular bug. A test cases can fail indicating that the bug is present in your program, or pass indicating your program does not contain this bug. Sometimes test cases will be unresolved, in which case the testing framework was unable to find out whether the test case passed or failed. A test case can be unresolved for several reasons. Please see the CddBranch web page for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Debug Test Case === &lt;br /&gt;
Select a test case and press this button to run a test case in the debugger.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable Execution of Test Cases in Background === &lt;br /&gt;
If enabled, all test cases are retested every time you press compile. If disabled not test cases are executed.&lt;br /&gt;
&lt;br /&gt;
=== Enable/Disable automatic extraction of Test Cases === &lt;br /&gt;
If enabled every time an exception is triggered a set of test cases that try to reproduce this exception is extracted. If disabled no test cases are extracted.&lt;br /&gt;
&lt;br /&gt;
=== Clean up/Delete === &lt;br /&gt;
You can use the “Clean Up/Delete” button in two different ways. By simply pressing it you will delete all unresolved test cases. By pick and dropping a test case to the “Clean up/Delete” button (right click on test case, move mouse to button and right click again) you can delete a test case. By the way, test cases are just regular classes. So you can use all existing tools that apply to classes in EiffelStudio too.&lt;br /&gt;
&lt;br /&gt;
=== Create new manual test class ===&lt;br /&gt;
Press this button to create a empty test class. You can then edit the class to add manually written test cases.&lt;br /&gt;
&lt;br /&gt;
[[Image:cdd_buttons_2.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Search for tags ===&lt;br /&gt;
Enter keywords to search for paritcular test cases. Some tags are automatically set for you like the name of the test case. You can also easily add your own tags by adding an indexing item &amp;quot;tag&amp;quot; to your test class or routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;eiffel&amp;gt;&lt;br /&gt;
indexing&lt;br /&gt;
  tag: &amp;quot;fixme&amp;quot;&lt;br /&gt;
class TEST_BANK_ACCOUNT&lt;br /&gt;
inherit CDD_TEST_CASE&lt;br /&gt;
feature&lt;br /&gt;
   ...&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/eiffel&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tags can be adde to all test routines and classes. Whether they are extracted or manually written does not matter.&lt;br /&gt;
&lt;br /&gt;
=== Restrict execution of test cases ===&lt;br /&gt;
&lt;br /&gt;
=== Change test case view ===&lt;br /&gt;
&lt;br /&gt;
== Further Documentation and Common Problems ==&lt;br /&gt;
Please visit [[Using CDD]] for further documentation or look at &lt;br /&gt;
[[CDD Common Problems|Common Problems]] if you run into problems.&lt;br /&gt;
&lt;br /&gt;
== Related Publications ==&lt;br /&gt;
&lt;br /&gt;
* Leitner, A., Ciupa, I., Oriol, M., Meyer, B., Fiva, A., &amp;quot;Contract Driven Development = Test Driven Development - Writing Test Cases&amp;quot;, Proceedings of ESEC/FSE'07: European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2007, (Dubrovnik, Croatia), September 2007 [http://se.ethz.ch/people/leitner/publications/cdd_leitner_esec_fse_2007.pdf (pdf)]&lt;br /&gt;
* Sunghun Kim, Shay Artzi, and Michael D. Ernst, &amp;quot;reCrash: Making Crash Reproducible&amp;quot; MIT Computer Science and Artificial Intelligence Laboratory technical report MIT-CSAIL-TR-2007-054, (Cambridge, MA), November 20, 2007. [http://recrash.googlecode.com/files/MIT-CSAIL-TR-2007-054.pdf (pdf)]&lt;br /&gt;
&lt;br /&gt;
== Project Internal Stuff ==&lt;br /&gt;
&lt;br /&gt;
[[CddBranchInternal]]&lt;/div&gt;</summary>
		<author><name>Aleitner</name></author>	</entry>

	</feed>