WinMap

WinMap is an analysis tool used to take a “snapshot” of a window’s controls, compare it to a previous “snapshot”, and display which controls have been altered between releases. Some users rely on the Automation ID or name (which can be a resource ID in an MFC application), and are forced to use a tool like ProdSpy to manually compare each control to make sure nothing changed. This is a cross-technology application, meaning it will map older MFC forms, .Net WinForms or WPF applications.

WinMap will scan a window and store “control points” for each control. Then, when you want to reanalyze that window, you can run it again, and WinMap will give you a score indicating the likelihood that the window, as a whole, hasn’t changed.

Below is the basic window. We’ll be using our good old friend “Windows Calculator” for demonstration.

clip_image002

 


 

clip_image005There are two ways to initiate a map.

The first way is by directly loading a saved map-file using the clip_image004 button on the toolbar. This will load the window into the data grid.
The second way is to scan for applications running on your system (which must have a main window to map) using the clip_image007 button.

This will populate the list on the left with windows you can analyze (child windows show up as their own window).

In our example, we selected Calculator from the list and clicked clip_image009

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

This will produce an output similar to the window below. These are the controls most likely to be impacted by any change to the form.

To save your form’s map, press clip_image011, and a dialog will allow you to save this window to your desired location. The name of the loaded window is displayed in the status bar

clip_image013

 

 

One feature to note is the ability to assign a custom name to the control. This could be helpful to tracking changes. To add a custom name, right-click on desired control. Choose “Assign Name” and enter whatever name sequence you’d like.

clip_image014

Custom names are saved along with the map (though it is not part of the window comparison score).

 

 


 

 

So What?

Well, fast-forward six months, and we’ve found out that Microsoft has release a new version of their calculator! Our Automation/testing system is built using resource IDs or Automation IDs, and we need to determine if any changes were made.

So, we use WinMap again to examine the new calculator. Now we can use the clip_image016 button, then selecting our old calculator map-file. It will now display any differences since the previous map. The points that can be used to uniquely identify a control are part of a weighted calculation.

 

clip_image017Our results screen displays, showing us that we can be 99% sure this window contains the exact same controls as before. Each control is broken down by alternating shaded areas.

But, really, 99% for a calculator change (especially since, in reality, this was mapped and compared on the same day) is considered an insignificant difference. If we scroll down a bit, we can see what caused that 1% loss.

This is where you should use a bit of common sense. Here, I had calculator in a normal state when I mapped it (original value) and had it minimized on the second snapshot (scanned value). Since this is not a simple pass/fail system, this indicates a very small chance of change. I’m confident if we were to compare with calculator in normal mode, the score would be 100%.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

clip_image018

 

To illustrate a drastic “form change”, here’s a comparison between Windows Media Player and Calculator:

Let’s assume this is actually a comparison of the old calculator to the new. By the score (12%) we can tell immediately something’s very different.

For illustration purposes, we’ll scroll all the way down and take a look at some major failure points.

First, there’s a menu item that has a different access key--a strong indication that this control has been changed, since these must be set at design time. Also, the AutomationID and Name are different. From this, we can deduce that we have an entirely different control here.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • You can also compare two saved maps by using the “Open Map” to load in a pre-existing file, then use the “Compare” button to show differences between the two.

Last edited Sep 4, 2011 at 9:05 PM by hroark, version 5

Comments

No comments yet.