Types of Software Testing
By Paul Scanlon
![]() | Amazon Price: $19.89 List Price: $44.99 |
![]() | Amazon Price: $22.99 List Price: $34.99 |
![]() | Amazon Price: $36.30 List Price: $49.99 |
Amazon Price: $8.95 |
Software testing is that part of the development process that aims to find all (or most) of the coding errors introduced into a product. This helps to ensure that a program behaves exactly as the customer has requested, and minimises the added expense of fixing a product once it has been released. It can be part of a quality assurance group or more usually closely linked to the development team. The methods used in software testing can be both technical and diverse, ranging from detailed logical tests to user interaction testing. Because of the range of specialist skills required, a dedicated test team should carry out testing. It is therefore important to have an understanding of the various types of software testing that can be performed.
Unit Testing.
The first stage of testing is not normally carried out by the test team, but rather by the developers themselves. Unit testing takes the smallest possible section of code – or unit – and conducts tests to ensure the code works as required. This involves a detailed examination of the program code, so knowledge of the language is needed. This normally prohibits anyone other than a developer, carrying out this type of test.
Functional Testing
Functional testing is normally the first set of tests conducted by a test team. This involves testing the intended function of a module or program, without any reference to the internal coding structure. Heavy reference is made to the specifications drawn up at the start of a project, and if a bug is encountered, the discrepancy should be easily referenced back to the functional spec document. If a module can only operate when integrated to other modules or systems, then it is possible that a test ‘stub’ may be used to simulate the interface.
Integration Testing.
Once all software functions are known to work, the next test phase is usually to integrate all modules together. This Integration testing is aimed at ensuring the interfaces are correctly coded. This should be carried out after functional testing, else it cannot be determined if an error caught here would be an interface or functional bug.
System Testing or End-to-End Testing
This tests the system as a whole, ensuring it can operate in a ‘real-world’ environment. The system is usually set-up connected to databases and servers, as it would be in the live environment. Tests are conducted to mimic real use cases, as defined or indicated in the design specification.
Load Testing
Depending on the application, the system may have to perform under a defined load level. An example of this could be a web application needing to respond to a page request within a certain time, but with many hundreds of simultaneous requests. Load testing is a specialist area with automation tools commonly used. Often there will be a specialist load tester within the test team. This testing should be carried out only when system testing has been complete, or at lease with a stable build.
Usability Tests.
Complaints from users can often be down to a poorly designed user interface. Usability testing is aimed at testing a product purely from the interface point of view. Is a screen form properly laid out? Are the tab sequences correct? Is the information displayed in convenient form? These tests are becoming more important as accessibility regulations come into force.
Security Testing.
Any system that is open to the internet is a possible target for hackers and intrusion. These days, any such system needs to be tested for its security protection. There are a number of surprising simple ways that a system can be compromised resulting in loss of sensitive data, or even corruption of the entire system
Regression Testing.
Tests should not only be conducted on new modules, but also existing ‘untouched’ ones as well. Errors can be introduced in unexpected ways, altered code unknowingly referenced in various unaltered modules. It is therefore important to test all areas of functionality with the existing test scripts.
Business Acceptance Test
The customer will normally carry out the final stage of testing. Business acceptance tests are used to ensure the whole system behaves in a manner that the customer can use in their real world business environment. It can range beyond just software, and has been known to include documentation and phone support. There should be no software problems found at this stage.
The place of software testing in the development process is becoming more recognised with an internationally recognised training course entitled ISEB Foundation and ISEB Practitioner. Certification in these demonstrates a detailed working knowledge of the test process.



ReviewEnvelope 12 months ago
Voted up your Hub...Nice one