Tessy --- Frequently Asked Questions
|< back

What is the main objective of Tessy?
Tessy automates the unit test of embedded software. Tessy provides the input parameters, executes the tests and evaluates the results. In addition, Tessy manages the test data and documents the test results. Furthermore, Tessy states the test coverage.

What is a unit for Tessy?
Tessy considers functions in the sense of the C programming language as units to be tested.

What about test coverage by Tessy?
Tessy provides test coverage by determining the C1 code coverage of the tests. The C1 code coverage reveals how often a piece of code was executed and so which branches were taken through the program code (and which were not). Tessy instruments the test application to get the coverage information. The code coverage done by Hitex in-circuit emulators is completely independent of the coverage analysis done by Tessy.

Where does Tessy execute the tests?
Tessy creates the so-called test application, which contains the function under test. Tessy compiles the test application by using the GNU compiler or a cross compiler for a microcontroller. If a cross compiler is used, the test application has to be executed in an execution environment for the microcontroller in question. This can be a simulator, an in-circuit emulator, the target system, a JTAG debugger, etc. Normally, a debugger acts as interface to that execution environment.

Can Tessy be used without execution environment for a microcontroller?
Yes. Tessy can also run the tests completely on the Windows PC. In this case, the test application is compiled using the GNU tool set instead of a cross compiler.

Can Tessy be used with simulators?
Yes. Tessy must be adapted to the debugger the simulator is integrated with.

Is there any limitation related to the amount of test cases?
No. (Only trivial restrictions apply: disk space and test time.)

What happens if the function under test itself calls subroutines?
If the subroutine is already implemented in another module, it can be linked to the test application. If the function does not exist yet, Tessy can provide "stub functions". The user may provide source code for the stub function.

Which data types are supported for input/output variables?
All ANSI-C types like structures, arrays, unions, pointers etc. can be input or output (or both). Additionally, non-ANSI-C data types like bit, which are often found in embedded programs, are supported.

Which storage classes are supported for input/output values?
The parameters of the function and global variables (both variables global to the module and variables global to the program; both external and non-external variables) may be input or output or both. If a pointer points to a non-allocated memory area, Tessy can allocate memory for it. Naturally, the return value of the function is output in every case.

How does Tessy find include files?
Tessy lets the user specify the options for the embedded compiler used to compile the test application. These compiler options may specify an include path, if necessary. For its own purpose, Tessy extracts include paths from these embedded compiler options.

How does the test application interact with peripheral registers (SFRs)?
If the test is executed on the target hardware, the normal interaction with the periphery is maintained. If the test program is to use predefined values instead of values read from the peripheral register, or if the test is to find out the values written to the peripheral registers, this can be achieved, too. (Just do not include related header files, and Tessy will take peripheral register names as undefined variables for which Tessy will provide memory. The user can thus provide or check the data values.)

Can tests use random test data?
Yes. The Test Data Editor is able to set variables to random values.
It is also possible to import random test data from an external source (e.g. an Excel sheet).
However, Tessy provides the Classification Tree Method, which is intended to determine systematically a minimal set of error-sensitive test case specifications. The main idea behind the method is to carefully select test cases and test case data, what is opposite to using randomly generated test data.

Is full specification of the test data required?
No.

Regarding output values: It is possible and it makes sense to do an (initial) test run without having specified the expected results. After the first run, you may check the results and take the resulting values as "expected" values for consecutive test runs. This is useful if you test e.g. a sorting algorithm, where you can check the sorted result at a glance instead of manually determining the result and then entering it manually.

Regarding the input values: It would make no sense to run a test case with undetermined input values. However, Tessy is able to treat any input variable as "irrelevant" and you can run the test without specifying a value for it. This feature is often used to maintain the state of a function between subsequent test steps.

What relations are available for the evaluation of the output data?
The actual output data is compared to the expected data. Not only equality, but also inequality, ranges and tests for greater than, less than, etc. can be specified. The evaluation can also be suppressed, i.e. it yields o.k. for any output value.

Does Tessy support RTOS in general?
There is no special support. Tessy can test RTOS calls to the same amount (or with the same restrictions) as other functions.

Can test cases be copied?
Yes. Both test cases and test steps can be copied.

Why are test cases further subdivided into test steps?
Test cases group test steps, so that several tests are conducted in a certain order. This is most useful, if internal states of a test object shall be maintained between the test steps. Hence, if a test object needs an initialization, or if a test object resembles a state machine, the test step feature provides a solution.

Is it possible to execute tests without user interaction?
Yes, a batch test can test a selection of (or all) test cases of any test object automatically (e.g. over night). It is also possible to run a predefined batch test from the operating system's command line, i.e. without interactive usage of Tessy.

Can a stub function provide different return values dependent on the test case?
Yes. The behavior of the stub function can be differentiated dependant e.g. on the test case number. An application note exists on that topic.

Does Tessy allow the insertion of user supplied code in the test application?
Yes. Such code can be inserted at various places in the test application, e.g. in the prolog of the test object execution, before each test step, etc. Such code can be used to #include files, to #define macros/constants or to supply data for characteristic curves, etc.

Does Tessy have interfaces to other programs?
Yes. Tessy can import / export test data using pure text files (ASCII). Tessy can also export test data to Microsoft Excel. The latter is intended for documentation purposes.

How does Tessy provide the needed settings, configurations etc. to HiTOP, the compiler, linker etc.?
Tessy uses default settings that should ease the initial workload. These default settings are adjustable to almost any user preferences.

What happens if a test case cannot be completed e.g. due to an infinite loop or due to a crash of the target system?
Tessy will wait infinitely for the end of the test case. In consequence, the test execution has to be stopped manually by the user.

Are test results logged continuously?
Yes, the test report is extended automatically at the end of each single test run.

Is it necessary to adapt Tessy to embedded compilers?
Yes, for two reasons:

  1. Tessy parses the source code module and must therefore understand compiler and architecture specific keywords like "bit" or "interrupt".
  2. Tessy compiles and links using an embedded compiler. Therefore, Tessy must know about the compiler and linker (command line options, linker command files, etc.) and the appropriate microcontroller startup code.

A list of supported compilers and architectures is available at http://www.hitex.de/perm/tessy.htm.

Does Tessy support C++?
No. Tessy only supports C.

What about after-sales support?
For the first 6 months after purchase, support and updates are available free of charge. After that period, a maintenance contract provides these services. A training offer can be provided upon request.

What is the Classification Tree Editor (CTE)?
A graphical tool supporting the Classification Tree Method.

What is the Classification Tree Method?
A method to transform a functional problem specification into a minimal and sufficient set of test case specifications.

Why is the CTE offered as a separate product?
Because the usability of the Classification Tree Method (and hence the CTE) is not limited to embedded software, but to general (functional) problems. This method can be even applied to problems of everyday live.

Can the CTE generate test data automatically?
No, this is not the purpose of this tool. The CTE provides test case specifications. For example, a test case specification may state that a "big green triangle" is to be one of the input parameters of a test case. The actual input data for that parameter (e.g. the color coding for "green") is beyond the scope of CTE and has to be supplied by the user.

Can CTE export its results (the test case specifications) to Tessy?
Yes, and also to files of various formats, such as Excel.

What operating systems are supported?
Windows NT, 2000 and XP.

What technology is used for the link between Tessy and HiTOP?
Tessy uses HiTOP's Remote Control Interface (RCI).

Can Tessy be used with WinKSE5 ?
No. Tessy is not adapted to that debugger.