Mondays are frequently “One of Those Days”, where I start off by questioning myself over and over “Why did I get into this business of test automation? What was I thinking??” Then I hear the dire financial news, look at my personal slice of the national debt, and realize that it’s too late in my life to get a real job, of which there apparently aren’t many any more anyway. And the coffee kicks in so I move on.
I hate when things end badly, and I felt kind of sorry for HP with their QuickTest Pro 10.00 Beta. I hope they at least appreciate the irony of naming a product release after a lost continent that sank into the ocean thousands of years ago*.
* unless they’re Stargate Atlantis fans, and believe QTP 10.00 is part of a really advanced civilization that built a cool place on another planet, then disappeared. Wait — there’s still the disappearing part, either way…ha!
There was one last sliver of a chance, a drowning man’s clutch (Atlantis?) at a slim straw: would QTP 10.00 be able to run QTP 9.5 scripts from Test Lab in Quality Center 9.0? I didn’t stop to calculate the odds against such a thing, I quickly booted the virtual machine which held the precious beta copy, then clicked my Quality Center 9.0 bookmark. I went to the latest test set in Test Lab, and fired up the local runner.
“Stop All!” I clicked it. Stop all the madness! This just can’t be. I tried installing the QC add-in for QTP: I couldn’t, it told me I already had a newer version.
My straw sank, and my spirits with it.
No! No! It can’t be over! It just can’t!
Calm yourself. It’s just software. Until the machines take over, it’s not that important.
HP is a big company, they’ll make it work…some day.
See: I didn’t make you wait too long for that SOAP submission tool. Lucky for all of us those gurus that write FireFox add-ons came up with one that does just what we want!
Called Poster, it’s described as “A developer tool for interacting with web services and other web resources that lets you make HTTP requests, set the entity body, and content type. This allows you to interact with web services and inspect the results.”
I won’t go into great detail here, since it’s a very straightforward concept and you can read all about it here on the FireFox add-ons page.
The UI is clean and works with various types of content:
Hmmm…I wonder if mega-humungo-giganticorp Microsoft has anything like this?
In my never-ending (or so it seems) quest for a cool set of tools for testing web services, I have come across another free(ware)bie, TCPMonitor. You can download a version from here.
First, define a Port to be used for intercepting requests/responses on your local test PC. Choose any port number that is not currently in use, like 8888:
Target Hostname is the name of the server hosting the web service to be tested.
Target Port # is the port where the web service is found.
This info can be easily found in the original web service URL. For example:
When you use a tool (like VuGen) to import a WSDL or submit a SOAP request and you want to capture all the data that is exchanged between the client and the web service, you simply modify the URL to point instead to the TCPMonitor “interceptor” on your local PC. For example, modifying the URL above, we would get:
The web service doesn’t care where the request comes from, and it sends its response right back to the local port. You then get a monitor console readout of your request (in the top pane, where it says “POST / “) and its response (in the bottom pane). For example:
For ease of viewing, make sure the ‘XML Format’ box is checked.
After you capture the information, click the ‘Save’ button to store the request and response in a text file. This file contains information about the port and server settings, the body of the request, and the body of the response. Here’s our example above, which you might use to trace the error:
Not too shabby for freeware!
Since TCPMonitor is a Java applet, you can even run it on your PC directly from the download website.
You might ask, “Soooo, if I don’t have VuGen, and I need a tool for actually submitting a SOAP request so I can use TCPMon to monitor the transaction, where might I find one that’s simple and free?” I’m glad you asked.
But that’s a subject for another blog!
This time, let’s look at a few that work to our advantage as test automation developers:
Continuous attention to technical excellence and good design enhances agility.
Technical excellence and good design would seem to go hand-in-glove for software development. Or are these just lofty notions? Since everything we read on the Internet must be true *grin*, let’s assume these are acheivable goals that will help us, and move on.
Working software is the primary measure of progress.
Well, this one does seem to take the focus off of deadline-driven development projects. Writing elegant code which doesn’t do what the customer wants would be pointless. QA could even prove it’s elegant, but is more likely (I hope) to focus on whether or not it meets the business requirements. Here, QA automation becomes a valuable tool at the developer’s disposal for proving objectively that software works.
There are a few principles centered around people and teams as well:
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
I especially like these team-related principles, and I apply them to managing our test automation development team. Does that make our team Agile? Not necessarily. But it does allow individuals to make full use of their individual skills and talents, while contributing to the progress of the entire group. And in accordance with the “self-organizing” aspects, the designated manager can assume the roles of motivator and facilitator — a much more comfortable position than dictator!
Let’s leave this topic on one final principle:
Simplicity — the art of maximizing the amount of work not done — is essential.
In other words, don’t waste time doing what doesn’t need to be done. Figure out how to do things the simplest and most easily maintained way before you begin. This usually implies that there will be a common and visible thread throughout the design which is an essential element for creating simple and effective test automation downstream.
There is a certain economy to anything done artfully.
“Deals are my art form. Other people paint beautifully on canvas or write wonderful poetry. I like making deals, preferably big deals. That’s how I get my kicks.” – Donald Trump
Coding software is a developer’s art form.
Scripting test automation is one of my art forms.
What are your art forms?
Yesterday I said, “I hope I don’t find out tomorrow that QTP 10 is not compatible with QC 9.0.”
Guess what? QTP 10 is not compatible with Quality Center 9.0 — at least as far as saving Business Components, scripted or otherwise!
It does allow me to save QTP scripts, function libraries, and other low level resources. But not Business Components.
Game Over, Man!
“A warrior does not live to Hope; a warrior lives to Fight!”
There was one last chance. A couple months ago, HP had opened up an evaluation site for Quality Center 9.2 so that we could try out some web services testing tools. Was this still available? It was still in my list of IE Favorites. I tried it. It was.
With my last few minutes of available beta-tesing time, I verified that QTP 10 could save business components to QC 9.2. It does.
The larger problem still remains: my company has no intention of upgrading Quality Center any time soon, so a QTP 10 upgrade would be useless.
Will Greg’s company finally upgrade?
Will HP relent and make patches that make old and new work together?
Watch for future episodes of this blog to find out!
Today I began installing the QuickTest Pro Version 10 Beta. I would have done this last week, except that HP insisted that the installation files be downloaded from a storage website — from several websites, I should say, because 7 RAR files each ~200MB used up their download quotas pretty fast, so they kept sending out alternate URLs. And the downloads kept failing due to the vagaries of network traffic (can’t blame sunspots this time, there haven’t been any for quite a while) and had to be restarted.
The RAR archive format is pretty common amongst ‘net’o’philes, but my company does not have a standard utility for “un-rar’ing” these files, so I first had to download a trial copy of WinRar to take care of this. Since HP had not seen their way clear to just send the beta-testers a DVD, and since I was running out of space on my laptop because I insisted on doing all this “harmless” beta testing in the friendly confines of a disposable virtual machine, I had to orchestrate this massive file extraction on a USB flash drive. That took quite a while.
The virtual machine I was using was pretty much plain vanilla except for a previous installation of QTP 9.5. I wanted to test the upgrade path, which is how the majority of our workstations would be handled, but when I kicked off setup.exe, the QTP 10 install complained that I could not continue while QTP 9.2 was present. 9.2? Where does it see 9.2? I have 9.5, which the install guide says is OK! Just to keep forging ahead, I uninstalled QTP 9.5 then kicked off setup again. This time it completed — eventually.
Well, that’s about all I could get done today in the time I had allocated for the beta testing. I did make sure that the installed QTP 10 runs and can load existing scripted components. However, I became concerned toward the end because it was not letting me save my components to Quality Center. We have version 9.0, with no intention of upgrading any time soon. I hope I don’t find out tomorrow that QTP 10 is not compatible with QC 9.0. That would bring this beta test to a screeching halt!
In the kick-off presentation, I don’t think HP said specifically that QTP 10 is compatible with QC 9.0 — which usually implies that it isn’t. *sigh*
“Way down below the ocean where I wanna be she may be.
My antediluvian baby, oh yeah yeah, yeah yeah yeah,
I wanna see you some day
My antediluvian baby, oh yeah yeah, yeah yeah yeah,
My antediluvian baby,
My antediluvian baby, I love you, girl,
Girl, I wanna see you some day.
My antediluvian baby, oh yeah
I wanna see you some day, oh
My antediluvian baby.
My antediluvian baby, I wanna see you
My antediluvian baby, gotta tell me where she gone
I wanna see you some day
Wake up, wake up, wake up, wake up, oh yeah
Oh glub glub, down down, yeah
My antediluvian baby, oh yeah yeah yeah yeah ”
– Atlantis lyrics by Donovan
A lot of organizations claim to be doing Agile development, but it’s often difficult to pin down exactly what they mean by that claim.
I remember reading the Manifesto for Agile Software Development and thinking, “Well, that’s one way to get managers and bean counters off your back!” But if you look at the actual Principles, there are a few that make a test automation scripter cringe:
Welcome changing requirements, even late in development.
So that complicated business process component I created in QTP yesterday won’t work tomorrow, and that’s OK??!!??
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
So now I have less time to develop my scripts which can change as often as the requirements? Why do I suddenly feel dizzy? (No, my anti-static strap isn’t too tight)
Once the fear wears off, there are advantages to developing test automation in an Agile environment. We will explore those in a follow-up article.
Hey, ‘Agilimation’ sounds better than ‘Autogility’…doesn’t it?
Here is a very handy structure for dealing with objects contained in a web frame:
Set rc = frmObj.Object.getElementsByTagName(“IMG”)
numObjs = rc.length
If numObjs > 0 Then
For i=0 to numObjs-1
objClass = “” : objText = “” : objID = “”
On Error Resume Next
objClass = rc.Item(i).className
objText = rc.Item(i).innerText
On Error GoTo 0
‘ condition to check, stuff to do:
If objID = “_toolbar_rsimg” Then
‘frmObj’ is set to the definition of some frame in a web application, as in this example of descriptive programming:
Set frmObj = Browser(“name:=My Web App”).Page(“title:=My Web App”).Frame(“name:=My Frame One”)
‘getElementsByTagName’ is a method of the Frame object.
For the child objects, you can use any of their “Run-time Object Properties” and Methods, which are often more useful than the QTP “Test Object Properties”. And sometimes more stable (like .click).
The section which captures the object properties has error trapping turned off (‘On Error Resume Next’) in case the child object in question does not support a particular property. Since the capture variables (objClass, objText, objID) are set to null at the start of each iteration, they won’t retain any previous values if an error does occur, so they can still be used to evaluate whatever condition your are dealing with.
Not recently, several test tool vendors introduced a concept known as Business Process Testing. In general, it’s a method for organizing test assets in such a way that their relationship to the business processes they represent is obvious to the non-technical user.
To understand what this implies, let’s first clarify what is meant by “business process”.
One of the first people to describe business processes was Adam Smith in his famous (1776) example of how a pin is produced in a factory:
”One man draws out the wire, another straights it, a third cuts it, a fourth points it, a fifth grinds it at the top for receiving the head: to make the head requires two or three distinct operations: to put it on is a particular business, to whiten the pins is another … and the important business of making a pin is, in this manner, divided into about eighteen distinct operations, which in some manufactories are all performed by distinct hands, though in others the same man will sometime perform two or three of them.”
So a business process can be represented as a series of components whose steps performed together create something of value to the consumer of the company’s product. Let’s see how Adam Smith’s example translates into some business components:
- Draw Out Wire
- Straighten Wire
- Cut Wire
- Point Wire
- Grind Wire Top
- Make Pin Head
- Attach Pin Head to Wire
- Whiten Finished Pin
Each component involves a series of steps or operations which are required to complete that process.
If this all sounds familiar, it should, because we are also describing the structure of a test case. At some point, test tool designers sat back and thought “Wow! If we organize test cases under business processes, even people who don’t fully understand automated test tools can understand how to build tests — Eureka!”
And so was born Business Process Testing – BPT.
Recommended links for some really good information related to HP Mercury Quality Center and QuickTest Professional:
Titled as “An HP Software Community”, this is a great place to look for answers to technical questions. It’s worth joining as well. You will see the name Eric Schumacher a lot: he posts awesome answers.
Wilson Mar: http://www.wilsonmar.com/
You gotta love this guy! His site is not just informative, it’s fun to browse. This is how the internet was supposed to be — remember??
This site is brought to you by the folks from Software Quality Engineering (http://www.sqe.com/). It’s where all the automatorati* hang out when they aren’t busy testing.
* I invented this word. Comment if you like it
Advanced QTP: http://www.advancedqtp.com/
“AdvancedQTP offers the largest online collection of tips, advanced articles, demo projects and tutorials, all designed to deliver an effective professional learning experience.” That sums it up pretty well. This site is both timely and highly educational. For example, I learned more about the QTP 10 beta release here than I could from HP.
Brett Pettichord’s Software Testing Hotlist: http://www.io.com/~wazmo/qa/
OK, so maybe a link to a list of links is kinda cheating. But like, this guy writes books and stuff, while I just blog.
I hope this helps in your quest for professional automation solutions using HP test tools. These resources have certainly helped me in the past, and I’m sure I will continue to use them in the future.
Isn’t that right, Captain Mercury?