System Testing Strategies
This section is concerned with testing and debugging of the programs and general processes involved in achieving the objectives of the system requirement. System testing is conducted on a complete integrated system to evaluate the system’s compliance with its specified requirements. System testing falls within the scope of black box testing and as such should require no knowledge of the inner design of the code or logic. During system testing, the focus is on the software design, behavior and even the believed expectations of the customer. So we can also refer to the system testing phase as investigatory testing phase of the software development life cycle. The system testing strategies used in this system include the unit test and integration test.
- Unit Test
The primary goal of unit testing is to take the smallest piece of testable software in the application, isolate it from the remainder of the code and determine whether it behaves exactly as it is expected to behave. Each unit is tested separately before integrating them into modules to test the interfaces between modules. Unit testing has proven its value in that a large percentage of defects are identified during its use.
The most common approach to unit testing requires drivers and stubs to be written. The driver simulates a calling unit and the stub simulates a called unit. The investment of developer time in this activity sometimes results in demoting unit testing to a lower level of priority and that is almost always a mistake. Even though the drivers and stubs cost time money, unit testing provides some undeniable advantages. It allows for automation of the testing process, reduces difficulties in discovering errors contained in complex pieces of the application. During unit testing of the application, errors uncovered by the different researcher can be rectified and the result was satisfactory.
- Integration Testing
Integration testing is a logical extension of unit testing. In its simplest form, the units that have already been tested are combined into a component and the interface between them is tested. A component, in this sense, refers to an integrated aggregate of more than one unit. In a realistic scenario, many units are combined into components, which are in turn aggregated into even larger parts of the program. The idea is to test combination of pieces and eventually expand the process to test your modules with those of other groups. Integration testing can be done in a variety of ways which include top-down approach, bottom-up approach and the umbrella approach.
Software Maintenance Issues
This section focuses on software maintenance issues. Software maintenance is the modification of a software product after delivery to correct faults, improve performance or other product attributes or to adapt the product to a new or changing environment. It also serves as an opportunity to improve the performance o the software to suit the needs of the users if it becomes necessary for the user requirements to be improved upon or changed.
Maintenance would be seen in three areas in this research; corrective maintenance, preventive maintenance and adaptive maintenance.
- Corrective Maintenance
Corrective maintenance is a maintenance task performed to identify, isolate and rectify a fault so that the failed system can be restored to an operational condition within the tolerances or limits established for in-service operations. Necessary corrections in the form of removal, modification or addition of program modules should be permitted by the software to allow for optimal use of the application.
- Preventive Maintenance
This is a schedule o planned maintenance actions aimed at the prevention of breakdowns and failures. The primary goal of preventive maintenance is to prevent the failure of software before it actually occurs. It is designed to preserve and enhance software reliability by replacing error-prone components before they actually fail. Recent technological advances in tools for inspection and diagnosis have enabled more accurate and effective software maintenance. Measures like regular diagnosis, database backups, creating system mirrors preserve the integrity of information stored in the application. If these are strictly followed, limited instances of such occurrences would be noticed in the use of the software application.
- Adaptive Maintenance
This involves enhancing the system by adding features, capabilities and functions in response to new technology, upgrades, new requirements or new problems. Since the environment in which the application would be running is dynamic, it should be made to suit whatever requirements that may change in the long run.