these two phasessince failures during integration testing lead to making changes to individual units integration testing is almost always more challenging than unit testing one reason for this is that the intended behavior of an entire program is often considerably harder to characterize than the intended behavior of each of its parts for examplecharacterizing the intended behavior of word processor is considerably more challenging than characterizing the behavior of function that counts the number of characters in document problems of scale can also make integration testing difficult it is not unusual for integration tests to take hours or even days to run many industrial software development organizations have software quality assurance (sqagroup that is separate from the group charged with implementing the software the mission of this group is to insure that before the software is released it is suitable for its intended purpose in some organizations the development group is responsible for unit testing and the qa group for integration testing in industrythe testing process is often highly automated testers do not sit at terminals typing inputs and checking outputs insteadthey use test drivers that autonomously set up the environment needed to invoke the program (or unitto be testedinvoke the program (or unitto be tested with predefined or automatically generated sequence of inputssave the results of these invocationscheck the acceptability of the results of the testsand prepare an appropriate report during unit testingwe often need to build stubs as well as drivers drivers simulate parts of the program that use the unit being testedwhereas stubs simulate parts of the program used by the unit being tested stubs are useful because they allow people to test units that depend upon software or sometimes even hardware that does not yet exist this allows teams of programmers to simultaneously develop and test multiple parts of system ideallya stub should check the reasonableness of the environment and arguments supplied by the caller (calling function with inappropriate arguments is common error)modify arguments and global variables in manner consistent with the specificationand return values consistent with the specification orfor that matterthose who grade problem sets in very large programming courses