Friday, August 28, 2009

Testing WebServices using QTP

It is tricky but extremely simple to test web services using QuickTest. I was given this task of creating a framework for testing a particular set of Use Cases which had to be done using services as no UI was available. I started with using the Web Services wizard to pass input parameters and get the output data sets or values. Later I found that the same could not be extended as the Object Repository holds the Webservice name with wsdl path and port name. This forced me think differently to make every parameter configurable.Let's first know few points:

1) SOAP : SOAP, which stands for Simple Object Access Protocol, is defined by the SOAP standard available at http://www.w3.org/TR/SOAP. The SOAP protocol defines the format of standard XML messages that are used to communicate among systems. Because the message format is standardized and based on the XML standard, SOAP can be used to communicate among multiple computer architectures, languages, and operating systems. SOAP enables a new class of applications called Web services, which expose services in a standard way so that application developers can create new applications by putting together services from many different sources on the Web.There are four main areas covered by the SOAP specification: a required SOAP Envelope format that defines what the envelope that surrounds the XML content of a SOAP message must look like; an optional set of encoding rules that defines how language types are mapped to XML in a SOAP message (since this is defined in section 5 of the specification, it is referred to as "section 5 encoding"); an optional RPC format that defines how function calls are expressed in SOAP messages; and an HTTP binding that defines how SOAP messages may be exchanged through HTTP.

2) WSDL: WSDL stands for Web Service Description Language. In order to successfully call a Web service you will need to know how to get to the service, what operations the service supports, what parameters the service expects, and what the service returns. WSDL provides all of this information in an XML document that can be read or machine-processed.
The next necessary steps to call this SOAP method using the high-level SOAP API are:create a SOAPClient objectinitialize the SOAPClient object with the WSDL fileand call the method
Below is a snippet for same:
Set oSOAPClient = CreateObject("MSSOAP.SoapClient")

oSOAPClient.mssoapinit wsdl_path, service_name, port_name

oSOAPClient.Methodname param1, param2, return_param1

Above snippet might give error while running on windows 2003 of ActiveX component. To correct it download the SOAP Tool kit from msdn version 3.0 and install it and following change to first line of script:

Set oSOAPClient = CreateObject("MSSOAP.SoapClient30")


Reply back to me if you need any clarifications or updates.

2 comments:

yogenkale said...

Really nice article...anaother great work by Rohan...

simi said...

First of all. Thanks very much for your useful post.

I just came across your blog and wanted to drop you a note telling you how impressed I was with the information you have posted here.

Please let me introduce you some info related to this post and I hope that it is useful for software testing community.

There is a good Software Testing resource site, Have alook

http://SoftwareTestingNet.com

simi