{"id":5113,"date":"2021-11-29T21:23:48","date_gmt":"2021-11-29T21:23:48","guid":{"rendered":"https:\/\/www.softwaretestinghelp.com\/?p=5113"},"modified":"2025-05-09T10:50:29","modified_gmt":"2025-05-09T10:50:29","slug":"what-is-integration-testing","status":"publish","type":"post","link":"https:\/\/www.softwaretestinghelp.com\/what-is-integration-testing\/","title":{"rendered":"What is Integration Testing? Integration Test Example"},"content":{"rendered":"\n<p><strong>This tutorial is all about integration testing. We have explained the concept with the help of an example for better understanding. Let&#8217;s get started. <\/strong><\/p>\n\n\n\n<p>Integration testing is done to test the modules\/components when integrated to verify that they are working as expected, i.e. to test the modules that work fine individually and do not have issues when integrated.<\/p>\n\n\n\n<p>When testing large applications using the black box testing technique, it involves the combination of several modules that are tightly coupled with each other. We can apply the Integration testing technique concepts to test these scenarios.&nbsp;<em>  <\/em><\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">List of tutorials covered in this series:<\/mark><\/strong><\/span><\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #1: <\/mark><\/strong><\/span><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><span style=\"color: #ff6600;\"><span style=\"color: #000000;\"><a href=\"https:\/\/www.softwaretestinghelp.com\/what-is-integration-testing\/\">What is Integration Testing?<\/a> (This Tutorial)<\/span><\/span><br><\/mark><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #2:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/incremental-testing\/\">What is Incremental Testing<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #3:<\/mark><\/strong><\/span> <a href=\"https:\/\/www.softwaretestinghelp.com\/what-is-component-testing-or-module-testing\/\">What is Component Testing<\/a><br><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Tutorial #4:<\/strong> <\/mark><\/span><a href=\"https:\/\/www.softwaretestinghelp.com\/continuous-integration\/\">Continuous Integration<\/a><br><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Tutorial #5:<\/strong> <\/mark><\/span><a href=\"https:\/\/www.softwaretestinghelp.com\/the-difference-between-unit-integration-and-functional-testing\/\">Difference Between Unit Testing and Integration&nbsp;<\/a><br><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Tutorial #6:<\/mark><\/strong><\/span><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"> <\/mark><a href=\"https:\/\/www.softwaretestinghelp.com\/integration-testing-tools\/\">Top 10 Integration Testing Tools<\/a><\/p>\n\n\n  \n \n \n\n\n<h2 class=\"wp-block-heading\">What is Integration Testing<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"700\" height=\"350\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-Testing-Tools.png\" alt=\"Integration Testing Tools\" class=\"wp-image-300534\" style=\"width:696px;height:auto\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-Testing-Tools.png 700w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-Testing-Tools-300x150.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/figure>\n\n\n\n<p>The meaning of the term, &#8216;Integration testing&#8217; is quite simple &#8211; Integrate\/combine the unit-tested module one by one and test the behavior as a combined unit.<\/p>\n\n\n\n<p>The main function or goal of this testing is to test the interfaces between the units\/modules.<\/p>\n\n\n\n<p>We normally do Integration testing after \u201cUnit testing\u201d.&nbsp;Once all the individual units are created and tested, we combine those \u201cUnit Tested\u201d modules and start doing the integrated testing.<\/p>\n\n\n\n<p>The main function or goal of this testing is to test the interfaces between the units\/modules.<\/p>\n\n\n\n<p>The individual modules are first tested in isolation. Once the modules are unit tested, they are integrated one by one, until all the modules are integrated, to check the combinational behavior, and to validate whether the requirements have been implemented correctly.<\/p>\n\n\n\n<p>Here, we should understand that Integration testing does not happen at the end of the cycle, rather it is conducted simultaneously with the development. So most of the time, all the modules are available for testing, and the challenge is to test something that does not exist!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why Integration Test<\/h3>\n\n\n\n<p>Integration testing can be challenging and demands development and logical expertise. What is the reason for incorporating this testing into our overall testing approach?<\/p>\n\n\n\n<p><strong>Here are some reasons:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the real world, when applications are developed, it is broken down into several smaller modules and individual developers are assigned 1 module. The logic implemented by one developer differs from another developer, so it becomes important to check whether the logic implemented by a developer is as per the expectations and renders the correct value following the prescribed standards.<\/li>\n\n\n\n<li>Many a time, the face or the structure of data changes when it travels from one module to another. Some values are appended or removed, which causes issues in the later modules.<\/li>\n\n\n\n<li>Modules also interact with a few third-party tools or APIs, which also need to be tested to ensure that the data accepted by that API \/ tool is correct and that the response generated is also as expected.<\/li>\n\n\n\n<li>Frequent requirement change is a very common problem in testing. Many a time, the developer deploys the changes in unit testing. Integration testing becomes important at that time.<\/li>\n<\/ol>\n\n\n\n<p><strong>Advantages<\/strong><\/p>\n\n\n\n<p><strong><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">This testing has several advantages, and a few of them are listed below.<\/mark><\/span><\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This testing ensures that the integrated modules\/components work properly.<\/li>\n\n\n\n<li>Integration testing can start once the modules to be tested are available. This does not require another module to be completed for testing to be done, as Stubs and Drivers can be used for the same.<\/li>\n\n\n\n<li>It detects errors related to the interface.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Challenges<\/h3>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">We have identified several challenges associated with the Integration Test.<\/mark><\/strong><\/span><\/p>\n\n\n\n<p><strong>#1)<\/strong> Integration testing means testing two or more integrated systems to ensure that the system works properly. Besides testing the integration links, it is necessary to perform exhaustive testing, considering the environment to ensure that the integrated system works properly.<\/p>\n\n\n\n<p>There might be different paths and permutations which can test the integrated system.<\/p>\n\n\n\n<p><strong>#2)<\/strong> Managing Integration testing becomes complex because of a few factors involved in it like the database, platform, environment, etc.<\/p>\n\n\n\n<p>When integrating a new system with the legacy system, extensive changes and testing are necessary. This concept is relevant when merging two legacy systems.<\/p>\n\n\n\n<p>#4) Integrating two different systems developed by two different companies is a big challenge because the impact of changes made in one system on the other is uncertain.<\/p>\n\n\n\n<p>To minimize the impact while developing a system, developers should consider a few things, such as possible integration with other systems, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Types of Integration Testing<\/h3>\n\n\n\n<p><strong>Given below is a type of Test Integration along with its advantages and disadvantages.<\/strong><\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Big Bang Approach<\/strong><\/mark><\/span><\/p>\n\n\n\n<p>Big Bang approach integrates all the modules in one go, i.e. it does not go for integrating the modules one by one. It verifies if the system works as expected or not once integrated. If any issue is detected in the completely integrated module, then it becomes difficult to find out which module has caused the issue.<\/p>\n\n\n\n<p>The Big Bang approach consumes a lot of time in finding a module that has a defect itself because it takes time, and once the defect is detected, fixing it would cost more as the defect is detected at a later stage.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2018\/05\/Big-bang-approach.jpg\"><img decoding=\"async\" width=\"504\" height=\"275\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2018\/05\/Big-bang-approach.jpg\" alt=\"Big bang approach\" class=\"wp-image-27026\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2018\/05\/Big-bang-approach.jpg 504w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2018\/05\/Big-bang-approach-300x164.jpg 300w\" sizes=\"(max-width: 504px) 100vw, 504px\" \/><\/a><\/figure>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Advantages of the Big Bang approach:<\/strong><\/mark><\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It is a good approach for small systems.<\/li>\n<\/ul>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Disadvantages of the Big Bang Approach:<\/mark><\/strong><\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>It is difficult to detect which module is causing an issue.<\/li>\n\n\n\n<li>The Big Bang approach requires all the modules together for testing, which leads to less time for testing as design, development, and integration would take most of the time.<\/li>\n\n\n\n<li>Testing takes place at once only, which thereby leaves no time for critical module testing in isolation.<\/li>\n<\/ul>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Integration Testing Steps<\/strong>:<\/mark><\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Prepare Integration <a href=\"https:\/\/www.softwaretestinghelp.com\/how-to-write-test-plan-document-software-testing-training-day3\/\">Test Plan.<\/a><\/li>\n\n\n\n<li>Prepare integration test scenarios &amp; test cases.<\/li>\n\n\n\n<li>Prepare test automation scripts.<\/li>\n\n\n\n<li>Execute test cases.<\/li>\n\n\n\n<li>Report the defects.<\/li>\n\n\n\n<li>Track and re-test the defects.<\/li>\n\n\n\n<li>Re-testing &amp; testing goes on until integration testing is complete.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Test Integration Approaches<\/h3>\n\n\n\n<p>There are fundamentally 2 approaches for doing test integration:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Bottom-up approach<\/strong><\/li>\n\n\n\n<li><strong>Top-down approach.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Please consider the figures given below to test the approaches:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-1.jpg\"><img decoding=\"async\" width=\"485\" height=\"167\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-1.jpg\" alt=\"Integration 1\" class=\"wp-image-5118\" style=\"width:558px;height:auto\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-1.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-1-300x103.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Bottom-up Approach<\/strong><\/mark><\/span><\/p>\n\n\n\n<p>Bottom-up testing, as the name suggests, starts from the lowest or the innermost unit of the application, and gradually moves up. Integration testing starts with the lowest module and gradually progresses towards the upper modules of the application. <\/p>\n\n\n\n<p>We continue this integration until we integrate all the modules and test the entire application as a single unit.<\/p>\n\n\n\n<p>In this case, modules B1C1, B1C2 &amp; B2C1, B2C2 are the lowest modules which are unit tested. Modules B1 &amp; B2 are not yet been developed. <\/p>\n\n\n\n<p>The functionality of Module B1 and B2 is that it calls the modules B1C1, B1C2 &amp; B2C1, B2C2. Since B1 and B2 are not yet developed, we would need some program or a \u201cstimulator\u201d which will call the B1C1, B1C2 &amp; B2C1, B2C2 modules. These stimulator programs are called <strong>DRIVERS<\/strong>.<\/p>\n\n\n\n<p>In simple words, <strong>DRIVERS<\/strong> are the dummy programs that are used to call the functions of the lowest module in a case when the calling function does not exist. The bottom-up technique requires a module driver to feed a test case input to the interface of the module being tested.<\/p>\n\n\n\n<p>The advantage of this approach is if a major fault exists at the lowest unit of the program, it is easier to detect it, and corrective measures can be taken.<\/p>\n\n\n\n<p>The disadvantage is that the main program does not exist until the last module is integrated and tested. As a result, we can only detect the higher-level design flaws at the end.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Top-down Approach<\/strong><\/mark><\/span><\/p>\n\n\n\n<p>This technique starts from the topmost module and gradually progresses towards the lower modules. Only the top module is unit-tested in isolation. After this, we integrate the lower modules one by one. The process is repeated until all the modules are integrated and tested.<\/p>\n\n\n\n<p>In the context of our figures, testing begins with Module A, and we integrate the lower modules B1 and B2 one by one. Here are the lower modules B1 and B2 that are not available for integration. So, testing the topmost module A, we develop \u201cStubs\u201d.<\/p>\n\n\n\n<p>\u201cStubs\u201d can be referred to as code a snippet that accepts the inputs\/requests from the top module and returns the results\/ response. This way, although the lower modules do not exist, we can test the top module.<\/p>\n\n\n\n<p>In practical scenarios, the behavior of stubs is not as simple as it seems. In this era of complex modules and architecture, the called module, most of the time involves complex business logic like connecting to a database.<\/p>\n\n\n\n<p>As a result, creating Stubs becomes as complex and time-consuming as the real module. Sometimes, the Stub module may be bigger than the stimulated module.<\/p>\n\n\n\n<p>Both Stubs and drivers are dummy pieces of code which is used for testing the \u201cnon-existing\u201d modules. They trigger the functions\/method and return the response, which is compared to the expected behavior.<\/p>\n\n\n\n<p><strong>Let\u2019s conclude with some differences between <a href=\"https:\/\/w3.cs.jmu.edu\/bernstdh\/web\/common\/help\/stubs-and-drivers.php\" target=\"_blank\" rel=\"noopener nofollow\">Stubs and Driver<\/a>:<\/strong><\/p>\n\n\n\n<div id=\"tablepress-28-scroll-wrapper\" class=\"tablepress-scroll-wrapper\">\n<table id=\"tablepress-28\" class=\"tablepress tablepress-id-28 tablepress-responsive\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Stubs<\/th><th class=\"column-2\">Driver<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Used in Top down approach<\/td><td class=\"column-2\">Used in Bottom up approach<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Top most module is tested first<\/td><td class=\"column-2\">Lowest modules are tested first<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Stimulates the lower level of components<\/td><td class=\"column-2\">Stimulates the higher level of components<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Dummy program of lower level components<\/td><td class=\"column-2\">Dummy program for Higher level component<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<!-- #tablepress-28 from cache -->\n\n\n<p>Change is the only constant in this world, so we have another approach called \u201cSandwich testing\u201d which combines the features of both top-down and bottom-up approaches. When we test huge programs like operating systems, we have to have some more techniques that are efficient and boost confidence. <\/p>\n\n\n\n<p>Sandwich testing plays a very important role here, where both the top-down and bottom-up testing start simultaneously.<\/p>\n\n\n\n<p>Integration starts with the middle layer and moves simultaneously towards up and down. With our figure, our testing will start from B1 and B2, where one arm will test the upper module A and the other arm will test the lower modules B1C1, B1C2 &amp; B2C1, B2C2.<\/p>\n\n\n\n<p>Since both approach starts simultaneously, this technique is complex and requires more people along with specific skill sets, thus adding to the cost.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GUI Application Integration Test<\/h3>\n\n\n\n<p>Now let\u2019s talk about how we can imply integration testing in the Blackbox technique.<\/p>\n\n\n\n<p>We all understand that a web application is a multi-tier application. We have a front end that is visible to the user. We have a middle layer that has business logic; we have another middle layer that does some validations, integrates some third-party APIs, etc., then we have the back layer which is the database.<\/p>\n\n\n\n<p><strong>Integration Testing Example<\/strong><\/p>\n\n\n\n<p><strong>Check out the example below:<\/strong><\/p>\n\n\n\n<p>I am the owner of an advertising company, and I post ads on different websites. At the end of the month, I want to see how many people saw my ads and how many people clicked on my ads. I need a report for my ads to be displayed and I charge accordingly to my clients.<\/p>\n\n\n\n<p>GenNext software developed this product for me and below is the architecture:<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><a href=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-2.jpg\"><img decoding=\"async\" width=\"485\" height=\"251\" src=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-2.jpg\" alt=\"Integration 2\" class=\"wp-image-5117\" style=\"width:612px;height:auto\" srcset=\"https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-2.jpg 485w, https:\/\/www.softwaretestinghelp.com\/wp-content\/qa\/uploads\/2014\/12\/Integration-2-300x155.jpg 300w\" sizes=\"(max-width: 485px) 100vw, 485px\" \/><\/a><\/figure>\n\n\n\n<p><strong>UI<\/strong> module, which is visible to the end user, is where all the inputs are given.<br><strong>BL<\/strong> is the Business Logic module, which has all the calculations and business-specific methods.<br><strong>VAL<\/strong> is the Validation module, which has all the validations of the correctness of the input.<br><strong>CNT<\/strong> is the content module that has all the static contents, specific to the inputs entered by the user. These contents are displayed in the reports.<br><strong>EN<\/strong> is the Engine module, this module reads all the data that comes from the BL, VAL, and CNT modules, extracts the SQL query, and triggers it to the database.<br><strong>Scheduler<\/strong> is a module that schedules all the reports based on the user selection (monthly, quarterly, semiannually &amp; annually)<br><strong>DB<\/strong> is the Database.<\/p>\n\n\n\n<p>Now, having seen the architecture of the entire web application, as a single unit, Integration testing, in this case, will focus on the flow of data between the modules.<\/p>\n\n\n\n<p><strong>The questions here are:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>How will the BL, VAL, and CNT module read and interpret all the data entered into the UI module?<\/li>\n\n\n\n<li>Is BL, VAL, and CNT modules receiving the correct data from UI?<\/li>\n\n\n\n<li>In which format the data from BL, VAL, and CNT is transferred to the EQ module?<\/li>\n\n\n\n<li>How will the EQ read the data and extract the query?<\/li>\n\n\n\n<li>Is the query extracted correctly?<\/li>\n\n\n\n<li>Is the Scheduler getting the correct data for reports?<\/li>\n\n\n\n<li>Is the result set received by the EN, from the database is correct and as expected?<\/li>\n\n\n\n<li>Is EN able to send the response back to the BL, VAL, and CNT modules?<\/li>\n\n\n\n<li>Is the UI module able to read the data and display it appropriately to the interface?<\/li>\n<\/ol>\n\n\n\n<p>In the real world, the communication of data is done in an XML format. So whatever data the user enters in the UI, it gets converted into an XML format.<\/p>\n\n\n\n<p>In our scenario, the data entered in the UI module gets converted into an XML file which is interpreted by the 3 modules BL, VAL, and CNT. The EN module reads the resultant XML file generated by the 3 modules, and extracts the SQL from it and queries into the database. <\/p>\n\n\n\n<p>The EN module also receives the result set, converts it into an XML file, and returns it to the UI module, which converts the results in a user-readable form and displays it.<\/p>\n\n\n\n<p>In the middle, we have the scheduler module, which receives the result set from the EN module, creates and schedules the reports.<\/p>\n\n\n\n<p><strong>So where does integration testing come into the picture?<\/strong><\/p>\n\n\n\n<p>Well, testing whether or not the information\/data is flowing correctly will be your integration testing, which in this case would be validating the XML files. Are the XML files generated correctly? Do they have the correct data? Is the data being transferred correctly from one module to another? These things will be tested as part of Integration testing.<\/p>\n\n\n\n<p>Try to generate or get the XML files and update the tags and check the behavior. This is something very different from the usual testing that testers normally do, but this will add value to the tester\u2019s knowledge and understanding of the application.<\/p>\n\n\n\n<p><strong>A<\/strong> <strong>few other sample test conditions can be:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Are the menu options generating the correct window?<\/li>\n\n\n\n<li>Are the windows able to invoke the window under test?<\/li>\n\n\n\n<li>For every window, identify the function that calls for the window that the application should allow.<\/li>\n\n\n\n<li>Identify all calls from the window to other features that the application should allow.<\/li>\n\n\n\n<li>Identify reversible calls: closing a called window should return to the calling window.<\/li>\n\n\n\n<li>Identify irreversible calls: calling windows closes before the called window appears.<\/li>\n\n\n\n<li>Test the different ways of executing calls to another window e.g. \u2013 menus, buttons, keywords.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Steps to Kick Off Integration Tests<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Understand the architecture of your application.<\/li>\n\n\n\n<li>Identify the modules.<\/li>\n\n\n\n<li>Understand what each module does.<\/li>\n\n\n\n<li>Understand how the data is transferred from one module to another.<\/li>\n\n\n\n<li>Understand how the data is entered and received into the system (entry point and exit point of the application).<\/li>\n\n\n\n<li>Segregate the application to suit your testing needs.<\/li>\n\n\n\n<li>Identify and create the test conditions.<\/li>\n\n\n\n<li>Take one condition at a time and write down the test cases.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Entry\/Exit Criteria for Integration Testing<\/h3>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Entry Criteria<\/strong>:<\/mark><\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Integration test plan document is signed off and approved.<\/li>\n\n\n\n<li>Integration test cases have been prepared.<\/li>\n\n\n\n<li>Test data has been created.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.softwaretestinghelp.com\/unit-testing\/\">Unit testing<\/a> of developed modules\/Components is complete.<\/li>\n\n\n\n<li>All the critical and high-priority defects are closed.<\/li>\n\n\n\n<li>The test environment is set up for integration.<\/li>\n<\/ol>\n\n\n\n<p><span style=\"color: #ff6600;\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\"><strong>Exit Criteria:<\/strong><\/mark><\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>All integration test cases have been executed.<\/li>\n\n\n\n<li>No critical and Priority P1 &amp; P2 defects are opened.<\/li>\n\n\n\n<li>Test Report has been prepared.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Integration Test Cases<\/h3>\n\n\n\n<p>Integration test cases focus mainly on the interface between the modules, integrated links, and data transfer between the modules as modules\/components that are already unit tested, i.e. the functionality and other testing aspects have already been covered.<\/p>\n\n\n\n<p>So, the main idea is to test if integrating two working modules works as expected when integrated.<\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">For example, Integration Test cases for LinkedIn applications will include:<\/mark><\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Verifying the interface link between the login page and the home page, i.e. when a user enters the credentials and logs, it should be directed to the homepage.<\/li>\n\n\n\n<li>Verifying the interface link between the home page and the profile page, i.e. profile page, should open up.<\/li>\n\n\n\n<li>Verify the interface link between the network page and your connection pages, i.e. clicking the accept button on Invitations of the network page should show the accepted invitation on your connection page once clicked.<\/li>\n\n\n\n<li>Verify the interface link between the Notification pages and the Say Congrats button, i.e. clicking the Say Congrats button should direct toward the new message window.<\/li>\n<\/ol>\n\n\n\n<p>Many integration test cases can be written for this specific site. The above four points are just an example to understand what integration test cases are included in testing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Is Integration a White box or Black box Technique<\/h3>\n\n\n\n<p>Integration testing techniques can be counted in both black boxes as well as <a href=\"https:\/\/www.softwaretestinghelp.com\/white-box-testing-techniques-with-example\/\">white box techniques<\/a>. <a href=\"https:\/\/www.softwaretestinghelp.com\/black-box-testing\/\">Blackbox technique<\/a> is where a tester need not have any internal knowledge of the system, i.e. coding knowledge is not required whereas white box technique requires internal knowledge of the application.<\/p>\n\n\n\n<p>Now, performing integration testing, it could include testing the two integrated web services which will fetch the data from the database and provide the data as required which means it could be tested using the white box testing technique whereas integrating a new feature in the website can be tested using the black box technique.<\/p>\n\n\n\n<p>So it\u2019s not specific if integration testing is a black box or white box technique.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Integration Testing Tools<\/h3>\n\n\n\n<p>There are several tools available for this testing.<\/p>\n\n\n\n<p><span style=\"color: #ff6600;\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-contrast-color\">Below is a list of tools:<\/mark><\/strong><\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Rational Integration Tester<\/li>\n\n\n\n<li>Protractor<\/li>\n\n\n\n<li>Steam<\/li>\n\n\n\n<li>TESSY<\/li>\n<\/ul>\n\n\n\n<p><strong>For more details on the above tools, check this tutorial:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-software-testing-help wp-block-embed-software-testing-help\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"3Xuee2hM5o\"><a href=\"https:\/\/www.softwaretestinghelp.com\/integration-testing-tools\/\">Top 10 Integration Testing Tools to Write Integration Tests<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Top 10 Integration Testing Tools to Write Integration Tests&#8221; &#8212; Software Testing Help\" src=\"https:\/\/www.softwaretestinghelp.com\/integration-testing-tools\/embed\/#?secret=z6EsrcU9FL#?secret=3Xuee2hM5o\" data-secret=\"3Xuee2hM5o\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">System Integration Testing<\/h3>\n\n\n\n<p>System Integration Test is done to test the <strong>complete integrated system<\/strong>.<\/p>\n\n\n\n<p>The team tests modules or components individually in unit testing before integrating them. Once all the modules undergo testing, the team integrates them and performs system integration testing to test the system as a whole.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Difference Between Integration Testing and System Testing<\/h3>\n\n\n\n<p>Integration testing is a testing in which one or two modules that are unit tested are integrated to test and verification is done to verify if the integrated modules work as expected or not.<\/p>\n\n\n\n<p>System testing is testing where the <strong>system as a whole<\/strong> is tested, i.e. all the modules\/components are integrated to verify whether the system works as expected and no issues occur because of the integrated modules.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>This was all about integration testing and its implementation in both the white box and black box techniques. Hope we could explain it clearly with relevant examples.<\/p>\n\n\n\n<p>Test Integration is a big deal in the testing cycle because it helps find defects when modules are combined. Spotting defects early on saves time and money. This makes sure that the integrated modules are working fine.<\/p>\n\n\n\n<p><strong>Hope this detailed tutorial on Integration Testing has enriched your knowledge of the concept. We would love to know what you think. Please post your feedback in the comments section below.<\/strong><\/p>\n\r\n\t\t\t<div id=\"daexthefup-container\"\r\n\t\t\t\tclass=\"daexthefup-container daexthefup-layout-stacked daexthefup-alignment-center\"\r\n\t\t\t\tdata-post-id=\"5113\">\r\n\r\n\t\t\t\t<div class=\"daexthefup-feedback\">\r\n\t\t\t\t\t<div class=\"daexthefup-text\">\r\n\t\t\t\t\t\t<h3 class=\"daexthefup-title\">Was this helpful?<\/h3>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<div class=\"daexthefup-buttons-container\">\r\n\t\t\t\t\t\t<div class=\"daexthefup-buttons\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefup-yes daexthefup-button daexthefup-button-type-icon\" data-value=\"1\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-up-cls-1{fill:#c9c9c9;}.thumb-up-cls-2{fill:#e1e1e1;}.thumb-up-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_up\">\r\n                        <path class=\"thumb-up-cls-2 daexthefup-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-up-cls-3 daexthefup-icon-secondary-color\" x=\"10\" y=\"20\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefup-icon-primary-color\" d=\"m30.57,9.06l-.49-.1c-.81-.17-1.61.35-1.78,1.16l-5.3,11.74c-.17.81,3.16,1.61,3.97,1.78l1.96.41c.81.17,1.61-.35,1.78-1.16l2.18-10.27c.34-1.61-.7-3.21-2.31-3.56Z\" \/>\r\n                            <path class=\"thumb-up-cls-1 daexthefup-icon-primary-color\" d=\"m38.17,20h-18.67c-.83,0-1.5.67-1.5,1.5v12c0,.83.67,1.5,1.5,1.5h16.27c.71,0,1.33-.5,1.47-1.21l2.4-12c.19-.93-.53-1.8-1.47-1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t<div class=\"daexthefup-no daexthefup-button daexthefup-button-type-icon\" data-value=\"0\">\r\n\t\t\t\t\r\n                <svg>\r\n                    <defs>\r\n                        <style>.thumb-down-cls-1{fill:#c9c9c9;}.thumb-down-cls-2{fill:#e1e1e1;}.thumb-down-cls-3{fill:#676767;}<\/style>\r\n                    <\/defs>\r\n                    <g id=\"thumb_down\">\r\n                        <path class=\"thumb-down-cls-2 daexthefup-icon-circle\" d=\"m24,3c11.58,0,21,9.42,21,21s-9.42,21-21,21S3,35.58,3,24,12.42,3,24,3m0-1C11.85,2,2,11.85,2,24s9.85,22,22,22,22-9.85,22-22S36.15,2,24,2h0Z\" \/>\r\n                        <g>\r\n                            <rect class=\"thumb-down-cls-3 daexthefup-icon-secondary-color\" x=\"10\" y=\"13\" width=\"6\" height=\"15\" rx=\"1.5\" ry=\"1.5\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefup-icon-primary-color\" d=\"m30.57,38.94l-.49.1c-.81.17-1.61-.35-1.78-1.16l-5.3-11.74c-.17-.81,3.16-1.61,3.97-1.78l1.96-.41c.81-.17,1.61.35,1.78,1.16l2.18,10.27c.34,1.61-.7,3.21-2.31,3.56Z\" \/>\r\n                            <path class=\"thumb-down-cls-1 daexthefup-icon-primary-color\" d=\"m38.17,28h-18.67c-.83,0-1.5-.67-1.5-1.5v-12c0-.83.67-1.5,1.5-1.5h16.27c.71,0,1.33.5,1.47,1.21l2.4,12c.19.93-.53,1.8-1.47,1.8Z\" \/>\r\n                        <\/g>\r\n                    <\/g>\r\n                <\/svg>\t\t\t<\/div>\r\n\r\n\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefup-comment\">\r\n\t\t\t\t\t<div class=\"daexthefup-comment-top-container\">\r\n\t\t\t\t\t\t<label id=\"daexthefup-comment-label\" class=\"daexthefup-comment-label\"><\/label>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"daexthefup-comment-character-counter-container\">\r\n\t\t\t\t\t\t\t\t<div id=\"daexthefup-comment-character-counter-number\"\r\n\t\t\t\t\t\t\t\t\tclass=\"daexthefup-comment-character-counter-number\"><\/div>\r\n\t\t\t\t\t\t\t\t<div class=\"daexthefup-comment-character-counter-text\"><\/div>\r\n\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\r\n\t\t\t\t\t<textarea id=\"daexthefup-comment-textarea\" class=\"daexthefup-comment-textarea\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Type your message\"\r\n\t\t\t\t\t\t\t\tmaxlength=\"\r\n\t\t\t\t\t\t\t\t400\t\t\t\t\t\t\t\t\t\"><\/textarea>\r\n\t\t\t\t\t<div class=\"daexthefup-comment-buttons-container\">\r\n\t\t\t\t\t\t<button class=\"daexthefup-comment-submit daexthefup-button\">Submit<\/button>\r\n\t\t\t\t\t\t<button class=\"daexthefup-comment-cancel daexthefup-button\">Cancel<\/button>\r\n\t\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\r\n\r\n\t\t\t\t<div class=\"daexthefup-successful-submission-text\">Thanks for your feedback!<\/div>\r\n\r\n\t\t\t<\/div>\r\n\r\n\t\t\t","protected":false},"excerpt":{"rendered":"<p>This tutorial is all about integration testing. We have explained the concept with the help of an example for better understanding. Let&#8217;s get started. Integration testing is done to test the modules\/components when integrated to verify that they are working as expected, i.e. to test the modules that work fine &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"What is Integration Testing? Integration Test Example\" class=\"read-more button\" href=\"https:\/\/www.softwaretestinghelp.com\/what-is-integration-testing\/#more-5113\" aria-label=\"Read more about What is Integration Testing? Integration Test Example\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":300534,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_helpful_pro_status":1,"footnotes":""},"categories":[55],"tags":[],"class_list":["post-5113","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-types-of-testing"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts\/5113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/comments?post=5113"}],"version-history":[{"count":0,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/posts\/5113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/media\/300534"}],"wp:attachment":[{"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/media?parent=5113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/categories?post=5113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softwaretestinghelp.com\/wp-json\/wp\/v2\/tags?post=5113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}