What is Integration Testing
Software testing is done primarily to assess and evaluate the quality of a program, application, or product. It is an important part of software development and is an effective way to ensure that the software works as it is supposed to. Software testing also helps determine whether the software is able to meet the requirements that served as a basis for its development and design.
Software can fail in a number of ways. Softwares bugs are unavoidable because of the complexity of software modules. Defects in design are not uncommon when it comes to software and software testing can help find errors in the program. However, it is basically infeasible to conduct a complete and thorough test on software because of its intricate and dynamic nature.
Software testing is critical in each phase of software development. Testing is usually done to improve the software, to verify and validate product specifications, and to measure the software’s reliability. Software testing can be quite expensive but it is essential part of software development and certainly cannot be overlooked. It does not only reduce the cost of development but it can also decrease the cost of ownership. It also helps engage customers if a quality software program is provided.
There are different levels of software testing. These are unit testing, integration testing, and system testing.
Unit testing involves taking the smallest part of testable software in the application. This is then separated from the rest of the code and testing is done to see if it works exactly as expected. Every unit is tested individually and a large number of defects and errors are actually detected in this testing level. After each unit is tested, these are then integrated into sections.
Integration testing follows unit testing. This involves combining and testing different units of the program. This level of testing is important because even if a unit has successfully passed the unit testing, this is useless if the unit cannot be incorporated into the program.
Two units are usually combined then the interface of this combination is tested. Different combinations of units are tested and these sections are eventually tested together.A lot of problems are actually discovered during integration testing. This is one of the reasons why testing teams usually focus more on this level of testing.
Before integration testing can be done, it is imperative that all units have been tested. Integration testing involves creating a test plan, making test cases and test data, creating scripts to run the test cases, running the test cases, fixing any errors and retesting the code, and repeating the entire cycle until all the units have been combined effectively.
There are different ways to do an integration testing. The four most common approaches are top-down approach, bottom-up approach, big bang approach, and umbrella approach.
- TOP-DOWN APPROACH
The modules belonging to the top levels are tested and combined first in the top-down approach. This enables early testing of high-level logic as well as of data flow. There is also a decreased need for drivers. However, it tends to make test management difficult and utilities in the lower levels are tested belatedly.
- BOTTOM-UP APPROACH
In the bottom-up approach, units in the lower levels are first to be tested and combined. These units are also known as utility modules. Utility modules are tested early in the process and there is a decrease in the need for stubs. One disadvantage of a bottom-up approach is that data flow and high-level logic are analyzed late in the development process. Its need for drivers also makes test management more complicated.
- BIG BANG APPROACH
Another common approach to integration testing is the big bang approach. In this approach, individual sections of the software are not combined until the point when everything is set. No formal integration testing is utilized and the software is combined then run. The big bang approach is a less controlled controlled method to integration testing. Among its many disadvantages include difficulty in isolating errors, late detection of defects in component interfaces, and large possibility of missing several major bugs.
- UMBRELLA APPROACH
The last common integration testing method is the umbrella approach. This involves testing the control flow paths and the functional data. Initially, the inputs for the different functions are combined using the bottom-up approach. The outputs are then combined utilizing the top-down approach. This approach offers a high degree of support for early detection of limitations in function. There is also a decreased need for drivers and stubs. The umbrella approach, however, is less systematic compared to the other integrating testing methods.
Integration testing is considered to be complete when when all the interfaces of the components have been successfully tested. This testing level is crucial to the software development process and it is important to document the entire process of integration to reduce omission errors. Failure to run required scripts can lead to inaccurate integration test results.
Figure: Customer Investing Phases.
System testing is the next level of software testing. This involves testing the program as a whole. This is important to ensure that the software meets standards of quality. System testing is a crucial part of the process of quality management. The product specifications, including the functional and technical requirements, are checked to ascertain adherence to standards. In this testing level, the application or program is tested in an environment that is similar to the actual production environment.
In order to conduct a system testing, all units should have undergone unit testing and integrating testing. The test environment should also resemble the actual production environment where the software will be used. The steps involved in system testing are the same with unit testing.
Software testing is truly important to ensure quality. It can take forever to identify the errors in the software and bugs cannot be totally discounted due to the complexity of software. There are other ways to improve the quality of software aside from software testing. Other methods such as inspection and walkthroughs are also effective and may even work better so these should also be considered.