Overview of software testing

This section explains unit testing from a theoretical point of view and provides descriptions of strategies and techniques that are important to remember when developing unit tests. See the Testing your software section for instructions on how to perform unit tests on the S60 platform.

Software testing can be classified as follows:

A small program can be composed from a small unit, where there is no separate integration testing level. With large systems, it is wise to separate larger components, which are built from smaller units. In these cases, integration testing plays an important role in ensuring that integration did not disrupt any essential functionality.

Unit testing is usually designed and run by the developer. As a result, errors are detected early in development, and so fixing them costs less than it would during system or acceptance testing. For more information about unit testing, test-driven development, and test frameworks, see EUnit - a powerful unit testing framework for Erlang by Richard Carlsson and Mickaël Rémond.

A good practice in S60 C++ development is to separate algorithms and business rules from the user interface. It is common to have an engine DLL, which does not have UI dependencies. Unit testing is then applied only for classes that form the engine DLL. Testing the engine DLL as a whole is usually called "component testing," and it falls within the integration testing level. Separate classes that form the DLL should be tested separately, which falls into the unit testing level.