Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Testing comes in a number of forms and can be performed at different stages. Apart from design validation before code is even written, code testing may be divided into unit testing, integration testing, system testing and acceptance testing (though exact terms and number of stages may very). In the V model, these would correspond horizontally with stages in requirements and design development. Also in development and maintenance you might perform regression testing - ensuring that fixed bugs remain fixed when other changes are applied.</p> <p>As far as tools are concerned, these can be divided into static analysis and dynamic analysis. Static tools analyse the source code without execution, whereas dynamic analysis is concerned with the behaviour of the code during execution. Some (expensive) tools perform "abstract execution" which is a static analysis technique that determines how the code may fail during execution without actual execution, this approach is computationally expensive but can process far more execution paths and variable states than traditional dynamic analysis.</p> <p>The simplest form of static analysis is code review; getting a human to read your code. There are tools to assist even with this ostensibly manual process such as <a href="http://smartbear.com/" rel="noreferrer">SmartBear's Code Collaborator</a>. Likewise the simplest form of dynamic analysis is to simply step through your code in your debugger or even to just run your code with various test scenarios. The first may be done by a programmer during unit development and debugging, while the latter is more suited to acceptance or integration testing.</p> <p>While code review done well can remove a large amount of errors, especially design errors, it is not so efficient perhaps at finding certain types of errors caused by subtle or arcane semantics of programming languages. This kind of error lends itself to automatic detection using static analysis tools such as <a href="http://www.gimpel.com/" rel="noreferrer">Gimpel's PC-Lint and FlexeLint tools</a>, or <a href="http://www.programmingresearch.com/" rel="noreferrer">Programming Research's QA tools</a>, though lower cost approaches such as setting your compiler's warning level high and compiling with more than one compiler are also useful.</p> <p>Dynamic analysis tools come in a number of forms such as code coverage analysis, code performance profiling, memory management analysis, and bounds checking.</p> <p>Higher-end tools/vendors include the likes of <a href="http://www.coverity.com/" rel="noreferrer">Coverity</a>, <a href="http://www.mathworks.com/products/polyspace/" rel="noreferrer">PolySpace</a> (an abstract analysis tool), <a href="http://www.ipl.com/products/tools/pt400.uk.php" rel="noreferrer">Cantata</a>, <a href="http://www.ldra.com/" rel="noreferrer">LDRA</a>, and <a href="http://www.klocwork.com/products/insight-pro/?gclid=CIzwoqfz3KcCFQod4QoduBCv9A" rel="noreferrer">Klocwork</a>. At the lower end (in price, not necessarily effectiveness) are tools such as PC-Lint and <a href="http://www.razorcat.com/frame_main/produkte/unterpunkte/tessy_e.html" rel="noreferrer">Tessy</a>, or even the open-source <a href="http://www.splint.org/" rel="noreferrer">splint</a> (C only), and a large number of <a href="http://www.opensourcetesting.org/unit_c.php" rel="noreferrer">unit testing tools</a></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload