Why does QTP lose its mind?

If you've been following my blog, you know that we use Mercury QuickTestPro here for our automated testing solution and I have fallen victim to one of QTP's quirks today.

For some reason I have yet to figure out QTP occasionally loses it's mind.  How can a software package lose its mind you may wonder?  Well I'd like to know the answer to that question too.

Here are the symptoms of QTP losing its mind:

Objects that QTP once knew appear to be forgotten.  Its as if QTP suffers from Alzheimer's or something.  Objects learned into the Object Repository as one object type suddenly are recognized as something else. 

For example: 

We have a object in our repository for one of the components which reads a pop-up our application will generate.  Under normal conditions, QTP reads this popup as a window and will successfully interact with the buttons on the page.  However this morning, QTP read that object as nothing but a "WinObject : Internet Explorer_Server" object.  This of course meant that it could not "see" the buttons on this page or interact with them in any way shape or form.  Now I tried the "reboot and try again" method to see if that would help; alas it did not.  So after struggling with this, I decided to take the sledgehammer approach to attempt a fix to this problem.  This entailed running two .bat files that Mercury includes with the installation of QTP which will reregister QTP's components and dlls with Window's registry.  Apparently this "Alzheimer's" issue is so common with QTP that Mercury takes the liberty in providing these .bats as a standard part of the install.  I ran these scripts and PRESTO QTP suddenly could see this window and all the child objects on it.   So I ask you, Why on earth does QTP have to be reregistered with such frequency that Mercury gives you these tools with the install????

Wouldn't this behavior be categorized as a bug???

The other issue I've found has got to be some sort of .NET compliance issue with QTP.  We have applications in our application suite which are written in .NET.  When I worked on the development of automation cases for these applications, I recorded some of the objects required to do work in the application.  These objects came in as .NET objects.  No problem, I can handle dealing with these.  NOW for some reason in at least one test case this object appears as a traditional Web Object.  Therefore QTP says, I'm sorry the object you're attempting to use does not exist on the page.  Why would QTP behave this way???  <baffled>

So now, I have figure out a way to handle this different case...do I put an If, Then,Else case in there saying if the .NET object exists, do work on it, else use the traditional Web object instead?  Sounds like a hack solution to me.  I'd rather get QTP to see it as the same object all the time....

<sigh>

I guess I should get back to fighting the good fight...  /rant off

<wields her sword to do battle with QTP once more>

 

«July»
SunMonTueWedThuFriSat
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234