Posts Tagged ‘Multiple Document Interface’

New Feature in QuickTest Pro 9: Multiple Document Interface

Monday, March 27th, 2006

This is first in a series of analyses of the new features of QTP 9. Over the next few days we’ll be posting more in varying levels of deatil, and within a week or two we hope to have just about all of them covered. We’ll try to address where they went right, but we’re not going to leave out where they could have gone farther. Please add comments where you agree/disagree with out conclusions. We want to be an accurate source of information, so if we’re wrong, TELL US!

In my opinion, the Multiple Document Interface is the best feature of version 9. It is going to alter how we address the question of External Actions vs Functions.

With the new interface you can have one test script open, and then any number of Function Libraries. Under the FileOpen and FileNew menu items, there’s now a separate entry for Function Libraries, and the libraries do appear in the Recent File list. The function libraries then appear as tabs across the top. From these tabs, you can right-click and it will bring up a small menu with “Save” and “Close” for options. There’s also a “Save All” button in the toolbar. All in all, it’s nice.

But more importantly than any of these small victories, there are the larger implications of the feature: you can now view, develop, execute, and debug your functions.

In the past, I’ve written the function inside my test script, made sure it worked properly, then put it in the VBS file. Then, if I find a bug in my function, I’ve had to copy it back into my test script, then repeat the whole thing ad nauseum. It’s even one of the things Mercury advises in their training materials.

Allowing me to write and debug the code in situ means I don’t need to be afraid to write new functions, or groan when I find a bug. In fact, if I get to a breakpoint where I’m calling an external function, it will open the library and allow me to step into the code without the extra step of opening it myself.

With this feature, we plan to shift the way we develop our framework: since we have full freedom to develop code in small chunks, we don’t always want to spend the necessary overhead to create External Actions. We’ll only create actions in certain situations. I’ll discuss this topic in detail under a different heading. For now, I just wanted to post a description of this nice new feature, and compliment Mercury on implementing it very effectively.

Next, I’ll cover in detail the little interface changes they’ve made. Some good, some not so good.

Comparison of QuickTest Pro 9.0 vs QTP 8.2

Monday, March 27th, 2006

How do you measure the overall quality of a product? One way is to take the spec, take the final product, and compare the two feature by feature. Well, QTP 9 went GA today, and we’ve pored over it so thoroughly you’d think we’ve had it for months. First I’ll present the summary, then over the next few days we will dissect the minutae of what they did, how well they did it, and whether or not it’s going to make your lives easier. Here’s a bullet-by-bullet summary of how well they did against their own press release:

  • Open and edit multiple Object Repositories - yes, the fact is that you can do this, but it’s not always easy, and there were a lot of missed opportunities to go from good to great
  • Multiple Object Repositories per test asset - I hate the term test asset. I think in this case they mean Action, because as far as I can tell, there is no other “thing” you can associate an OR with, and in version 9 you can associate multiple ORs with any given action. There are problems with this, but I’ll get to those later
  • Easy (Object Repository) conversion to/from XML - Yep, for what it’s worth, the conversion is easy. It is very very very slow, and the schema is complicated, but both of those are pretty understandable.
  • Easily copy/move objects between Object Repositories - Yes, you can even drag/drop objects from one repository to another, but maybe more importantly, you can reparent an object… this is super-duper cool, because you can now take all the objects under “Frame_4″ and “Frame_37″ and consolidate them under “Frame”. There are some HUGE problems with this feature that will probably be made easier in future releases, but it’s still possible and nice when you just have to do one or two objects
  • Manage functions and keywords centrally - I don’t know what this means, outside from the ability to view/edit functions from within the main IDE. If that’s the case, they’re kinda cheating in making this a separate bullet point from the “Step Into…” point below. If that’s not the case, I have no idea what this means and shall declare it an example of “silly marketingspeak”
  • New user interface - sure, OK. It’s not like the difference between vi and Visual Studio .NET, and they haven’t provided an Eclipse plugin yet (note to self: write Eclipse plugin for QTP), but I guess they’ve made some changes
  • Missing resources panel - This is très cool, but not nearly as cool as the way they make it sound
  • Comment and uncomment multiple lines in Expert View - One of those little nice things they’ve done to provide features we’re used to in every other programmer IDE on the market
  • Indent and un-indent multiple lines in Expert View - ibid
  • Pass parameters between Actions - I have no idea what this means, since you could do this before. Maybe they didn’t broadcast that you could do it before. Whatever
  • Multiple Document Interface for function libraries - I guess this means you can open more than one function lib at a time. That’s yet another restatement of the “Manage Centrally” nonsense from the earlier bullet. But I’m guessing they list it three separate times because it’s simply the single best feature of version 9. It’s changed the way we compose our tests, which is funny, because it essentially means that we use Mercury’s scaffolding a lot less because they’ve made it easier for us to write our own
  • Step Into Function Definition Code While Debugging the Test - Yes, THIS RULES!
  • Enhanced IntelliSense Support - the main thing I notice here is that your user-defined RegisterUserFunc methods now appear in the code. Maybe that was there before, but I don’t know. I could never make it work