Testing Software
for Product Efficiency and Quality

In recent years, both enterprise and embedded application dimensions are increased a lot. Together with the number of code lines, the criticalities are increased as well: complex codes reduce the comprehension, increasing maintenance costs. On the other side, applications with an affordable complexity level contribute to money and time savings.

Nowadays, companies are aware of the strict relationship between the code complexity and the strength of the application. A complex code is difficult to test by means of standard methodologies, thus increasing the risk of errors within the released product. Redundancies and/or dead code lines can be present, which imply computational power wasting and greater maintenance difficulties. Test cases may not be enough for covering the code entirely, thus increasing the risk of releasing bug-affected code.

This is why several standards (such as ISO 26262) require a low-complexity level code.

Our Solutions for Software Testing

DOFWARE proposes two Verifysoft Technology tools for code coverage and for code complexity analysis.

Testwell CTC++

It is the leading product among the code coverage analyzers, mainly concerning the development of the embedded and the safety-critical software, which are typical of the aeronautical, the automotive and the healtcare domains.

Testwell CTC++ can be adopted with any embedded target and with any compiler for C, C++, C# and Java languages.

Testwell CMT++/CMTJava

Testwell CMT++ and Testwell CMTJava are tools devoted to the code complexity analysis for C, C++, C# and Java languages. They both analyze the source code and identify the product quality level quickly.

Discover the problems and the bugs of your software
before your Customers

Testwell CTC++

Code coverage compliant with the highest safety regulations.

On-Target Code Coverage

Testwell CTC++ provides an overview of the code coverage based on run and testing activities performed by taking into account any coverage level. It is the ideal solution for safety-critical products. Test results are reported identifying which code areas have been covered. Either a few portions of the code or the entire code can be analyzed, depending on the user needs. By adopting Testwell CTC++, all the released code will be tested previously.

Hundreds of companies all over the world are adopting Testwell CTC++ with great results. Testwell CTC++ is the first choice for the companies that must achieve and demonstrate a high code coverage across several industrial domains (aerospace, automotive, transportation, healthcare, etc.) in order to be compliant with the safety regulations.

Testwell CTC++ tests C, C++, C# and Java codes efficiently, highlighting any criticality and minimizing the bug risk before the release.

Testwell CTC++ integrates easly within the existing build & test infrastructure by means of a complete command line prompt interface.

As test progresses, Testwell CTC++ monitors the application execution and records the achieved code coverage. This information is shown run-time or at the end of the test.

Code coverage for all quality levels, for any compiler and for any embedded target

The tool allows analysis for any code coverage level, as today required for safety-critical projects, and assists to ensure the utmost quality level. Testwell CTC++ can be used with any compiler and cross-compiler, only one standard license being needed.

Testwell CTC++ for any coverage level:
  • Statement Coverage
  • Function Coverage
  • Decision Coverage / Branch Coverage
  • Condition Coverage
  • Modified Condition/Decision Coverage (MC/DC)
  • Multi-condition Coverage (MCC)

Why CTC++?

Testwell CTC++ allows:

• to have available a quantitative evaluation of the test coverage level, by reporting how many and which lines of code have been tested in order to show the code coverage to the Customer and to ask for the code coverage tests to the Suppliers;

to accomodate the requirements of the regulations;

• to find out uncovered code portions needing additional tests and bottlenecks by analyzing the run-time behavior;

• to find out any redundant test and any dead code, to be removed for avoiding any useless computational effort and for reducing the code complexity, thus limiting the maintenance costs;

• to write down better test cases.

Simple to Use

• Generic build integration

• Excellent performance

• Integration within IDEs

• Modular architecture for full integrability

Support to Multiple Languages

• Native languages: C and C++

• Add-Ons for Java and C#

Clear and Intuitive Reports

• Native languages: C and C++

• Add-Ons for Java and C#

Simplify all the certification processes of your projects by means of the Security Standards Qualification Kit

The Security Standards Qualification Kit enables to check and to certify the correct application process of Testwell CTC++ within the company. It is applied successfully by leading companies in the industrial (IEC 61508), automotive (ISO 26262), transportation (EN 50128), aerospace (DO-178C) and healthcare (IEC/EN 62304) domains.

The kit provides the documentation, the test cases and the practices to follow for qualifying the projects/products that must be compliant with the safety regulations, simplifying the certification of embedded systems. It can be customized in accordance with the user needs.

Testwell CTC++ Security Standards Qualification Kit is compliant with:

  • DO-178C all levels (DAL A, DAL B, DAL C, …)
  • ISO 26262 all levels (ASIL A, ASIL B, ASIL C, ASIL D)
  • IEC 61508 all levels (SIL 1, SIL 2, SIL 3, SIL 4)
  • EN 50657 resp. EN 50128 all levels (Basic integrity/SIL 0, SIL 1, SIL 2, SIL 3, SIL 4)
  • IEC 60880
  • IEC/EN 62304

The Qualification Kit is made by:

• User guide;

• Qualification support, which drives the user through all the needed steps, and generates the following documents:

  – Report classification tool;

  – Plan / Report qualification tool;

  – Safety guide;

  – Test Plan;

• Test automation unit;

• Test case suite.

Testwell CMT++/CMTJava

Code complexity analyzer for C, C++, C# and Java.

Why code complexity analysis?

The code complexity is related to the number of bugs and to the application robustness. A complex code is more difficult to test and to maintain: in addition, it can have more bugs than a low-complex code.

Testwell CMT++ and Testwell CMTJava are tools devoted to the code complexity analysis for C, C++, C# and Java languages. They both analyze the source code and they give back a qualitative overview, thus making simple the testing and the maintenance activities. CMT++/CMTJava can help project team to identify the code portions where the problems can be concentrated more likely. They provide an approximated estimation of how much the code complexity affect the amount of bugs that can be present and of how much time should be devoted to the code comprehension.

Testwell CMT++ and Testwell CMTJava analyze the applications based on the following metrics:
  • Lines-of-Code (LOC)
  • LOCbl number of empty lines
  • LOCcom number of comment lines
  • LOCphy total number of code lines
  • LOCpro total number of actual code lines
  • Halstead Metrics
  • B – estimation of bugs number within the code
  • D – complexity level / inclination to bugs
  • E – implementation effort
  • L – program level (code abstraction level)
  • N – code length
  • N1 – number fo operators
  • N2 – number of operands
  • n – vocabulary size (unique operators + unique operands)
  • n1 – number of unique operators
  • n2 – number of unique operands
  • T – execution time / comprehension time
  • V – Volume: measure related to the algorithm implementation difficulty
  • McCabe Ciclomatic Number v(G): code flow control complexity
  • Maintainability Index: it is related to the number of code lines and to the McCabe and the Halstead metrics. It supports the reduction or the inversion of the inclination to the entropy increase or to the reduction of the code integrity. As results, a suggestion is provided about when re-writing the code is less risky than modifying it.

Testwell CMT++ and CMTJava alarm thresholds can be customized.

Default alarm thresholds are only suggestions previously defined on statistical-basis from data collected on “great success” test cases. The metrics adopted within CMT++ and CMTJava are the same as the ones defined from industrial regulations. Since no absolute value exists, Testwell CMT++ and CMTJava allow to customize the alarm thresholds in accordance with specific needs.

Testwell CMT++/CMTJava Highlights

  • measure of non-preprocessed original files
  • very fast: entire codes are analyzed in a few minutes
  • ability to manage medium-size and large-size files
  • HTML and/or text report format
  • GUI integration within Visual Studio
  • available on several platforms (Windows, Linux, HP, Solaris)
  • customizable alarm thresholds

Verybench: a Graphical Add-On for Different Visualizations

Verybench is the Testwell CMT++ GUI. It enables to measure the code complexity by means of Testwell CMT++, and to show the overall results within an interactive and intuitive environment. Verybench offers several integrated views and sub-views which show the key relationships of the analyzed source code.

Verybench allows managers, developers and testers to cooperate for the code quality more easily. It speeds up the comprehension of the quality and of the complexity metrics from entire development teams, and not only from single technicians involved in the quality improvement.

Verybench is released with two main views: dashboard and metrics.

Verybench enables to:

  • plan and perform the code refactoring quickly, simply by analyzing the metrics, the alarm thresholds and/or the reference value distributions;
  • estimate quickly and with greater accuracy the maintainability state of the source code by means of the integrated snapshot system;
  • check the quality level of the code by means of the integrated quality evaluation system;
  • get detailed reports about the code quality.

Improve, strengthen and optimize your software by means of DOFWARE and Verifysoft Technology