QTP - Not Just for GUI Anymore

Post on 23-Nov-2014

126 Views

Category:

Documents

9 Downloads

Preview:

Click to see full reader

Transcript

QTP: Not just for GUI anymore

Prepared by: Igor Gershovich

www.connectedtesting.com

The true beauty of QTP is that the only limitation is your imagination and ability to code in VBScript.

Ian Fraser

Topics

Web Services Telnet FTP XML

Advantages using APIs

Accessing non-GUI applications via API directly: Increases test execution speed Reduces synchronization problems related to GUI

window like Telnet, DOS CMD, PuTTY, Exceed, etc.

Allows execute scripts on locked boxes No need for QTP add-ins

Let’s talk about Component Object Model (COM) first

COM is used by developers to create reusable software components, link components together to build applications, and take advantage of Windows services.

The family of COM technologies includes: COM+ Distributed COM (DCOM) ActiveX Controls.

COM methods and properties

COM properties and methods Properties don’t take any arguments and can be read/write

value = object.property (read)

object.property = value (write) Methods are read only if they returns value

value = object.method() (returns value)

Set RS = Conn.Execute(“Select * From Tbl") (returns object)

Conn.Close (returns no value)

tdc.Login “username", “psw" (method with parameters, returns no value)

VBScript CreateObject functionCreateObject function creates and returns a

reference to an Automation object CreateObject(servername.typename [, location])

Example connecting to Quality Center (QC):

Set tdc = CreateObject ("TDApiOle80.TDConnection")tdc.InitConnectionEx sServerName 'Connecttdc.Login sUser, sPasswordtdc.Connect sDomain, sProject

COM objects in Registry editor

Resources:

Microsoft “COM: Component Object Model Technologies” www.microsoft.com/com/default.mspx

“COM for ASP Programmers”By Wayne Berry http://www.15seconds.com/Issue/971214.htm

File Transfer Protocol (FTP)

Using WinInet API for FTP

Windows WinINet.DLL enables applications to interact with the following protocols: FTP HTTP Gopher

WinInet FTP hierarchy

FTP: File download steps

1. Open an FTP session with InternetOpen function. The function returns a session handle.

2. Connect to the host by calling the InternetConnect function using session handle. It returns a connection handle.

3. Call the FtpGetFile function to get the file.

4. Close the handles created in Steps 1 and 2, using the InternetCloseHandle function

FTP: File download Script

FTP: File download is successful

ActiveX components (COM) for FTP The are numerous ActiveX (COM)

components for FTP free and not free: by Chilkat Software www.chilkatsoft.com by Easewe Software www.easewe.com by X360 Software www.x360soft.com by Dart Communications www.dart.com etc.

FTP: Download file using Chilkat’s ActiveX component (COM)

Resources:

“FTP your scripts” by Dani Vainstein

www.advancedqtp.com “Creating an FTP Component in Visual

Basic”

By Jeff Niblack www.15seconds.com

Telnet to Unix/Linux using COM objects

A little bit of history

A while back I had to automate a Client/Server application and execute quite a few UNIX commands on a backend.After trying several things, like PuTTY, TE Add-in, Exceed, etc.Exceed worked decent enough, but it was a complicated solution. I had to use "Capture to File" feature and then parse the file.After working with LoadRunner WinSock protocol for Telnet interface I start looking for WinSock (ActiveX) COM interface that can be used in QTPThe goal was to connect to Unix/Linux box bypassing external GUI applications and execute scripts on locked boxes. Another reason was that QTP has problems with GetVisibleText method.

ActiveX components (COM) for Telnet The are numerous ActiveX (COM)

components for Telnet free and not free: by Dimac Development www.dimac.net EasyCom 3.1

www.sharewareconnection.com/easycom.htm by Dart Communications www.dart.com etc.

Dimac w3sockets DLL methods and properties       COM Object - socket.tcp    Buffer : String

DoTelnetEmulation : BooleanHost : StringTelnetEmulation : StringTimeOut : IntegerClose() : GetLine() : StringGetText( len ) : StringOpen() : SendLine( Line ) : SendText( text ) : Wait() : WaitFor( Substring ) : BooleanWaitForDisconnect() :

Dimac W3Socket API installation You need to download W3Socket Dll to your

location and register it using SocketReg.exe included in a zip file.

Note: Readme said that you need to download winsock2 also - ignore it.

The full W3Sockets reference is located: 

http://www.dimac.net/Products/FreeProducts/w3Sockets/Reference/Refstart.htm

Example for Unix/Linux

The function on next slide: connect to Unix/Linux box via Telnet navigates to TestDirectory executes “grep” command returns “grep” results

You can also find more examples on Web: http://www.tek-tips.com/viewthread.cfm?qid=938038&page=3 http://www.mediamonkey.com/forum/viewtopic.php?t=21124

W3Sockets API limitation

This API has a problem with SendLine method when sending over 80 characters.

Web Services and XML

Web Services architecture

HP/Mercury Solutions for WebServices The HP Service Test software – is a SOA

testing solution that simplifies and accelerates the automated functional testing of SOA services. HP Service Test Management module plugs into Quality Center

QTP Web Services add-in

Windows APIs for Web Services HP Service Test and QTP Web Services

Add-in are great solutions for comprehensive Web Services testing. However, the lightweight solution using Windows APIs works perfect in most cases.

WinHTTP DLL

Microsoft Windows HTTP Services (WinHTTP) provides developers with a server-supported, high-level interface to the HTTP/1.1 Internet protocol.

WinHTTP WinHttpRequest COM object uses Winhttp.dll

WinHttp.WinHttpRequest.5.1 Methods and PropertiesMethods of WinHttp Abort: Aborts a WinHTTP Send method. GetAllResponseHeaders: Retrieves all HTTP response headers. GetResponseHeader: Retrieves the HTTP response headers. Open: Opens an HTTP connection to an HTTP resource. Send: Sends an HTTP request to an HTTP server. SetAutoLogonPolicy: Sets the current Automatic Logon Policy. SetClientCertificate: Selects a client certificate to send to a Secure Hypertext Transfer Protocol (HTTPS)

server. SetCredentials: Sets credentials to be used with an HTTP server—either an origin or a proxy server. SetProxy: Sets proxy server information. SetRequestHeader: Adds, changes, or deletes an HTTP request header. SetTimeouts: Specifies, in milliseconds, the individual time-out components of a send/receive operation. WaitForResponse: Specifies the wait time, in seconds, for an asynchronous Send method to complete,

with optional time-out value. Properties of WinHttp Option: Sets or retrieves a WinHTTP option value. ResponseBody: Retrieves the response entity body as an array of unsigned bytes. ResponseStream: Retrieves the response entity body as an IStream. ResponseText: Retrieves the response entity body as a string. Status: Retrieves the HTTP status code from the last response. StatusText: Retrieves HTTP status text.

ChangeMetricWeightUnit Web Service on-linehttp://www.webservicex.net/convertMetricWeight.asmx

ChangeMetricWeightUnit Web Service WSDL

Using Http.WinHttpRequest.5.1 for WebServices

WinHttp.WinHttpRequest.5.1 snippet' WinHttp.WinHttpRequest.5.1 ObjectSet oWinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")oWinHttpReq.Open "POST", sWebService_Url, FalseoWinHttpReq.setRequestHeader "Content-Type", sContentTypeoWinHttpReq.setRequestHeader "SOAPAction", sSOAPAction

'Send SOAP requestoWinHttpReq.Send sSOAP_Request

'Get XML ResponsesXMLResponse = oWinHttpReq.ResponseText

SOAP XML Response

Off topic: Using WinHTTP for Web pages

HTML Response

Msxml2.DOMDocument

A DOM for XML is an object model that exposes the contents of an XML document

We use the XML DOM by creating an instance of an XML parser

CreateObject(“Msxml2.DOMDocument ”) is the method to create an instance of the Parser object

Msxml2.DOMDocument COM object uses Msxml.dll

XML Request file

Using Msxml2.DOMDocument to load XML file

Msxml2.DOMDocument Code Snippet'lMsxml2.DOMDocument

Set oInputXmlDoc = CreateObject("Msxml2.DOMDocument")

'loadXML from file

oInputXmlDoc.load("C:\XML_Files_Demo\Weight_Conversion.xml")

'Send SOAP request

oWinHttpReq.Send oInputXmlDoc

QTP XML Objects

XMLUtil Object XMLAttribute Object XMLAttributesColl Object XMLData Object XMLElement Object XMLElementsColl Object XMLFile Object XMLItemColl Object

Example: Compare XML files using QTP objects

Comparison results

Resources:

MSDN http://msdn.microsoft.com/en-us/library/aa384109.aspx

Stefan Thelenius about Software Testing http://abouttesting.blogspot.com

QuickTest Professional Help file

Igor Gershovich

E-Mail: igershovich@connectedtesting.com Phone: 720-933-9395 www.connectedtesting.com

top related