Chapter 2: Introduction to Microprocessor-Based Control
Software TestingSoftware testing is the last but necessary and important activity of software development process.It is the costliest activity. So proper strategy is required.Software testing strategy provides a framework or set of activities which are essential for the success of the project.Testing is usually relied upon to detect the faults remaining from earlier stages.
Levels of TestingUNIT TESTINGINTEGRATION TESTINGSYSTEM TESTINGACCEPTING TESTING
Unit testingThe first level of testing is called unit testing. In this different modules are tested against the specifications produced during design for the modules. It is done specially for verification of code produced during the coding phase. Hence the goal is to test the internal logic of the module. It is usually done by the programmer of the code.
Integration testingThe second level of testing is integration testing. In this many unit tested modules are combined into subsystems, which are then tested. The goal here is to see if the modules can be integrated properly. Hence the emphasis is on testing interfaces between modules. This activity tests the design.Following types of errors may arise during the integration of modules:Data can be lost across an interface.One module can have adverse affect on other modules.
Client Acceptance Needs Testing
Requirements System Testing
Design Integration Testing
Code Unit TestingLevels of testing
Acceptance testingThe next level is acceptance testing. Acceptance testing is sometimes performed with realistic data of client to demonstrate the working of software. Here testing focuses on the external behavior of the system. Mostly functional testing is performed at these levels.
Modules when combined, may not produce the desired major function.Individually acceptable imprecision may be magnified to unacceptable levels.Global data structures can create problem.
Each time a new module is added as a part of integration testing, the software changes. Therefore regression testing is needed every time a new module is added.
System testingThe next level of testing is system testing. In this entire software is tested. The reference document for this process is the requirements document, and the goal is to see if the software meets its requirements. This is essentially a validation exercise. System testing involves the following:Recovery testing: is designed to examine how easily and completely the system can recover a system failure.
Security testing: it attempts o verify that protection mechanism built into a system will protect it from unauthorized access.Stress testing: it is designed to control program with abnormal situations. This testing is normally used to understand the upper limits of capacity within the application.Performance testing: it is designed to test the run-time performance of software within the context of an integrated system. Performance testing occurs throughout all steps in the testing process.