You are on page 1of 3

Software Testing

Software testing is the process of executing a program with the intention of finding defects and errors. Testing demonstrates that software functions meet specifications and performance requirements. Testing Methods There are two basic ways of constructing tests. White box tests examine the internal design of a program. Black box tests are designed without knowledge of the internal design of the program. Types of Software Tests There are seven types of software tests. Unit tests verify single programs or modules. Integration tests verify interfaces between system parts. Function tests verify external system functions. Regression tests verify program changes by running a subset of previous integration and function tests. System tests validate the system to its initial objectives. Acceptance tests validate the system to the user’s requirements. Installation tests validate the installation of the system. Unit Testing Unit testing is done on a white box basis. The focus is on a relatively small segment of code with the intention of executing every statement at least once. The programmers who produced the code often perform the testing. This introduces bias since the person who created the program is least likely to recognize errors. It is also difficult to exhaustively test all possible combinations. Despite these disadvantages, unit testing generally has the highest error yield of all testing techniques. Integration Testing Integration testing can be performed using three different approaches. Top-down testing involves moving downward from level to level, testing each module by simulating calls to lower level functions using program stubs. In bottom-up testing modules are tested individually using specially developed drivers that provide the needed system functions. Drivers are gradually replaced as more modules are integrated. Big-bang testing is the most common and least effective approach. Modules are tested individually, assembled, and run. Function Testing Function testing is also referred to as black box testing. Tests validate the program to its external specifications. Testers are not biased by knowledge of program design and are therefore more likely to provide tests resembling the user’s environment. Function testing starts by identifying the functions the program is to perform and devising inputs to test them.

volume. security. recovery. and test cases should be properly defined to ensure consistent collection of data. and test libraries • Establish procedures and standards for planning and conducting the tests • Set the criteria for test completion and success • • Test Execution and Reporting Every test should be carefully controlled and recorded so that it can be reproduced. Different categories of system tests include load/stress. and human factors. facilities. Acceptance testing can be performed by a team in the field or through beta testing where selected users act as special test sites in return for early program availability. compatibility. System Testing System testing validates a program to its written objectives. Regression testing is most useful in software maintenance. The regression testing approach involves periodically applying selected test cases in an attempt to detect problems. Test planning should be done by a special test organization in conjunction with a user group. System testing helps to determine whether the system will satisfy user requirements.Regression Testing Regression testing is concerned with the effects of newly introduced changes. procedures. Test Planning The major elements of test planning are: Establish objectives for each test phase Establish schedules and responsibilities for each test activity • Determine the availability of tools. The test environment. installability. The following values are often used in the analysis of test data: Defect density – ratio of the number of defects to the number of lines of code • Error density – ratio of the number of errors to the number of lines of code • . Acceptance and Installation Testing Acceptance and installation testing are performed in the user’s environment after development testing is completed. Analysis of test data can provide important information about product quality and help to improve the testing process. serviceability. performance. reliability/availability.

Task testing – each task is tested independently 2.Quality index – ratio of the number of defects detected in the field to the number of defects detected in development • Real-Time Testing Real-time testing refers to the testing of real-time systems. The following steps can be used in real-time testing: 1.uncovers time-related errors 4. Parallelism of tasks must be considered when designing test cases and each system state should be tested in either real time or in simulated parametric time. Inter-task testing . which offers major challenges when testing is developed. Behavioural testing – detects behavioural errors 3. The critical factor in real-time testing is time. System testing – uncovers hardware and software interface errors .