SOFTWARE TESTING, VERIFICATION AND RELIABILITY Softw. Test. Verif. Reliab. 8, 133–154 (1998) Coupling-based Criteria for Integration Testing ZHENYI JIN AND A. JEFFERSON OFFUTT* Department of Information and Software Engineering, George Mason University, Fairfax, VA 22030-4444, U.S.A. SUMMARY Integration testing is an important part of the testing process, but few integration testing techniques have been systematically studied or defined. The goal of this research is to develop practical, effective, formalizable, automatable techniques for testing of connections between components during software integration. This paper presents an integration testing technique that is based on couplings between software components. This technique can be used to support integration testing of software components, and satisfies part of the USA’s Federal Aviation Authority’s requirements for structural coverage analysis of software. The coupling-based testing technique is described, and the coverage criteria for three types of couplings are defined. Techniques and algorithms for developing coverage analysers to measure the extent to which a test set satisfies the criteria are presented, and results from a comparative case study are presented. 1998 John Wiley & Sons, Ltd. KEY WORDS integration testing; software coupling; software testing 1. INTRODUCTION Testing software is one of the most common methods for assuring the quality of complex computer software systems. The general purpose of the research reported in this paper is to formalize, via new coverage criteria, routine aspects of testing at the integration level. Formal coverage criteria offer the tester ways to decide what test inputs to use during testing, making it more likely that the tester will find any faults in the program and providing greater assurance that the software is of high quality and reliability. Such criteria also provide stopping rules and repeatability. A program unit, or procedure, is one or more contiguous program statements having a * Correspondence to: A. Jefferson Offutt, Department of Information and Software Engineering, George Mason University, Fairfax, VA 22030-4444, USA. E-mail: {zjin,ofut}isse.gmu.edu ² Previous papers considered the terms module and unit to be synonymous, and thus used the term module when this paper uses unit. This paper chooses to differentiate between the two terms and use module to emphasize the modularity in design, particularly with regard to the trend of data abstraction starting with Parnas’ classic paper (Parnas, 1972) and continuing through the current OO languages. Contract/grant sponsor: National Science Foundation Contract/grant numbers: CCR-93-11967 and CCR-98-04111 CCC 0960–0833/98/030133–22$17.50 Received 10 March 1997 1998 John Wiley & Sons, Ltd. Revised 10 June 1998 Accepted 8 July 1998