Difference between revisions of "CddBranch"
(→How to Use) |
(→How to Use) |
||
Line 34: | Line 34: | ||
== How to Use == | == How to Use == | ||
Make sure you also have assertion checking enabled (the more the better cdd will work). | Make sure you also have assertion checking enabled (the more the better cdd will work). | ||
− | This can be done easily in: Project->Project Settings and then set assertions to True. | + | This can be done easily in: "Project->Project Settings..." and then set assertions to True. |
=== Step 1: Show Testing Window === | === Step 1: Show Testing Window === |
Revision as of 07:58, 10 November 2006
Contents
Summary
CDD is an extension to EiffelStudio that provides support for both automatic test case extraction and test execution. It is undistruptive to the development process of the user. The tool is in its earlys stages. Feedback and bug reports are very much appreciated. Please send them to mailto:andreas.leitner@inf.ethz.ch and or use the discussion page for this article.
Play Video!
Installation
Requirements
- ISE Eiffel 5.7 (below version is recommended, other versions may or may not work)
Install CDD-Extension for EiffelStudio
- Linux
- Delete the directory $HOME/.es
- Download http://se.ethz.ch/people/leitner/cdd/cdd_linux_x86_0_1_0.tgz
- Unpack it over your existing EiffelStudio installation. (You have done it right when you are overwriting a few files in the process.)
- Windows
- Start the registry editor (regedit.exe) and delete the key "HKEY_CURRENT_USER\Software\ISE\Eiffel57"
- Download http://se.ethz.ch/people/leitner/cdd/cdd_win32_0_1_0.zip
- Unpack it over your existing EiffelStudio installation. (You have done it right when you are overwriting a few files in the process.)
How to Use
Make sure you also have assertion checking enabled (the more the better cdd will work). This can be done easily in: "Project->Project Settings..." and then set assertions to True.
Step 1: Show Testing Window
If not already visible, you need to make sure the testing windows are all properly displayed. You can make them appear by following the menu "View->Tools->Testing":
Step 2: Enable CDD-Testing
To enable CDD-testing for your project, open your project and then enable CDD-testing, by clicking on the half-black / half-white button in the testing window. You can disable testing again at any time by pressing this button again.
Now continue developing your project as usual. You will notice that for every exception that occurs a new test case shows up in the testing window. Test cases are automatically executed on each compilation to see whether you fixed that particular bug or not. A test case can be in one of three states:
- "F" for failing - last time the test case was executed the original problem was reproduced
- "OK" for passing - last time the test case was executed the original problem appeared fixed
- "INV" for invalid - the test case is out of date (it can no longer run your program in the expected way)
You can now delete test cases with the delete button and debug test cases with the debug button as shown below:
"bank_account" example walkthrough
TODO: ...
How Test Cases Are Extracted
TODO: ...
How to modify test cases by hand
TODO: ...
Re-extracting test cases
TODO: ...
Release Notes
- CDD can be quite fragile, if there you encounter problems you can do the following:
- Look into the testing-log-window (bottom half of screen) and see what went wrong
- Remove the directory EIFGENs/cdd_tester from your projects directory.
- Disable precompiles if having problems
- Have a look at the test cases (you can just pick&drop them into the editor)
- Make sure your root cluster is not recursive.
- Do enable assertion checking!
Source Code
The source can be found on the cdd branch of the EiffelStudio svn repository (https://origo.ethz.ch/eiffelsoftware/es/branches/cdd/es). After compiling it you need to do the following to create a delivery
- Take an existing delivery (5.7 final should be fine)
- Copy the resulting executable ec.exe resp. ec to $ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin/
- Copy the the file Delivery/eifinit/studio/default.xml to $ISE_EIFFEL/eifinit/studio/default.xml
- Copy the directory Src/library/cdd to $ISE_EIFFEL/library/cdd
Development: TODO
TODO:
- Unit test suite for extraction
* Sample apps with errors * Extract test case * Compile and run to see if we reproduce failure
- Features under test, that are not exported to ANY are not supported.
- When an inv violation occurs after a feature has been executed, the debugger does not give access to routine args.
- Postcondition/Inv violation in creation procedures not covered yet?
- object_under_test.withdraw ("Unable to get the arguments") ? when does this happen?
- Test case result OK->Pass
- POINTER in test case -> default_pointer
- logging
- Capture Prestate
* ask for rerun (verification)
- delivery (linux/windows)
- better icons
- when not possible to disable cdd, gray-out enable/disable button
- be easy on the processor in the presence of many test cases
* run relevant test cases first, show results as they tickle in * give lower priority to bg testing
- always also capture prestate of routines down the stack -> new tc if current one goes invalid
- BackInTimeDebuggerLight
- Generate test suite root class already when enabling cdd (and compile test suite for the first time already too)
- Invariant violation on creaton proc exit blames routine that contains create instruction not creation procedure
Design rework
- currently a test case knows if it is running or not.
- a test case should not know this (it could be executed by several processes)
- a bg tester is executing a test case
- -> move status indication from test case to runner
- a test case should not know this (it could be executed by several processes)
- dont pour everything through output
- compiler stuff
- test exe stuff
- CDD_PRINTER, have a look at gobo printer for et
- specifically the variable indentation support