Blog to understand automation concepts in QTP, Selenium Webdriver and Manual Testing concepts

Six challenges in Software Integration testing:

Integration testing has been changing over the time with the development of web services and change from integrating large application to smaller sets of application. In this article, we will focus on the major challenges in the system integration testing.

1.     Perception for Integration testing


The perception that Integration testing is testing the integration points between two units or system and verifying if the systems are working properly. This can actually cause issues when the actual user s) uses the application. Integration between different systems should not be oversimplified and should follow by an exhaustive testing considering collection of Systems integrated together as an environment focusing on different sets of inputs and corresponding outputs from other system.

2.     Our Individual systems are perfect, but together teamwork is missing.


Let us consider a banking system. There are multiple layers  Individual systems) for Front Office, middle Office and back office. While delivering the system, there may be possibility for systems developed by different parties. The integration testing should be done in a manner that the integration testing suite should be minimal impacted by change in other third party systems. While Creating individual systems, we should keep in mind, possible integrations with other software systems with which the software will interact, so as to minimize efforts and seamless integration of software with other soft wares

3.     Are we following the standards


 Consider transfer of banking instruction across the globe in the form of Swift messages? Suppose different banks have different messaging format, it would have been very difficult to integrate between different bank and virtually impossible to create an interconnected network between systems. Similar to this, we can follow standards of messages in the form of web services with predefined set of request and response messages. Use of Web Services also helps in integrating systems developed by different teams

4.  Complexity in managing Systems Integration


Test includes factor like Application, Platforms, Environments, data and resource availability for different application.

5.  Most of the legacy systems were isolated system with lot of functionality


Integration of new systems with the legacy system or between two different legacy systems requires a lot of changes in both the systems.

6.   In earlier systems, there was relatively small number of large application as compared to new system which focuses on large number of small applications. 

This results in changing approach for Integration testing with time.

Understanding the SOAP Part of SOAPUI

 In this series of article, we will discuss on frequently asked question in Soap UI, we may know how to test using SOAP UI, but at times, we do not have answers when explaining what the terms in SOAP means.  In the first article in the series of  learning SOAPUI through Question/Answers, we will discuss on the SOA, What a WSDL is , what a SOAP is and how service provider , service User and UDDI are related for a SOAP Web Service

SOAP UI is used to test Web Services and SOA architecture, but many of us do not have words to explain what a web service is or what SOA architecture is. So the first question is what are SOA Architecture and Web Service.


Answer:  SOA stands for Service Oriented Architecture. Application components provide services and interact with applications and other services through asynchronous message-based communication model in this architecture.

A service is a unit of work done by a service provider to achieve desired end results for a service consumer. SOAs are comprised of highly interoperable services. Web Service is a service that supports web standards. Web Services exposes the functionality and methods in WSDL format file. WSDL stands for Web Services description language.
Once a web services is created, it is published in the Universal Description, Discovery, and Integration (UDDI) registry repository.

SOAP (Simple Object Access Protocol) is an XML-based protocol to exchange messages between a requester and a provider of a Web Service. This protocol specifies conventions for packaging a message and its processing rules.





SOAPUI uses the SOAP Protocol to access response for a request for a SOAP Web services request. To understand how SOAPUI works. There are WSDL available for web services on UDDI; SOAP protocol specifies conventions for packaging a message and its processing rules. For e.g.: there are Web Services available on the UDDI with exposed functionalities and methods in WSDL files for the end users of the web services. Using SOAP UI, we request for the methods. On executing the request, we get a response based on input in the request.

Selenium - Waiting using implicit, explicit and fluent classes for Objects

While automating with Selenium, we may require to pause the execution for specific duration or until a specific condition is satisfied. In this article, we will discuss on common scenario where we might like script to wait for few seconds or minutes. Before going to discuss different methods to wait in selenium Web driver, 

Let us discuss on scenarios where we require to pause the execution.
  • In case, we require to execute some other process between execution in the web browser. E.g. compressing some files to be uploaded from web.
  • In case of Page load, waiting until the new pages opens.
  • In case of availability or value displayed in controls, enable/disable of object in the Page or specific conditions is satisfied. 

Below are the different wait method used with selenium scripts for synchronization:

  •  Using Thread.sleep

  Thread. Sleep (10000) will make the script pause for 10 sec. Thread.sleep is used in script in case of execution outside of selenium code. For e.g.: Suppose in between performing browser operation, we need to execute some exe file which takes some time for execution to complete.

  • Using Implicit Wait 

 Implicit wait tells Webdriver to poll the DOM for a certain amount of time for object Identification and wait for availability of object, if not available at the instance of step execution. Once set, the implicit wait is set until the webdriver instance is closed.If the object is found below 50 sec , it will move to next step in the script.
          WebDriver driver = new  InternetExplorerDriver();
         driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

  • Using Fluent Wait 

 Another wait which is very similar to Explicit Wait is fluentWait.
           FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver);
         //define the timeout – this is time the driver will wait for condition to be              satisfied.
        wait.withTimeout(10000, TimeUnit.MILLISECONDS);
        // define the poll time, here it will poll the DOM after 200 ms and will poll at fixed  interval until 10000 ms
       wait.pollingEvery(200, TimeUnit.MILLISECONDS);
       driver.get(url);
      // we define the wait time for a specific condition to be satisfied using                              wait.until(ExpectedConditions.condition) as explained below where the driver will wait until    the title of the Page contains “qaautomationqtp.blogspot.in”; We can also select from multiple conditions as shown in screenshot below:
 wait.until(ExpectedConditions.titleContains("qaautomationqtp.blogspot.in"));
 //We can also define to ignore specific types of exceptions using wait.ignoring (exception.class)e.g. :
  wait.ignoring(NoSuchElementException.class);


  • Using Explicit Wait   

WebdriverWait is an extension of fluent class but has functionality compared to fluent class for waiting for an object including pooling time, ignore settings to name a few.
         WebDriverWait wait = new WebDriverWait(driver, 50)
         wait.until(ExpectedConditions.elementToBeClickable(By.Id("dra_reference")));

WebdriverWait and fluent class can be considered as example of explicit wait as are defined explicitly for an element in the page, e.g. in wait.until(ExpectedConditions.elementToBeClickable(By.Id("dra_reference")));

It is explicitly waiting for the condition specific to object with Id as "dra_reference" to be clickable.
Implicit wait is not defined for specific object but checks for the existence of each element used and are implied until the driver instance is closed.

So if an object is not getting loaded before the script fails, give the object some time to load and let the script wait for object to get identified. If all the objects are slow, give an implicit wait for the driver that will wait for all the objects to be available or an explicit wait, waiting explicit for an objects condition. Hope this make some sense.