This is a showcase review for our sponsors at CodeProject. These reviews are intended to provide you with information on products and services that we consider useful and of value to developers.
We Pour Big Things Into Little Files.
Go Ahead, Funnel IT! Download your free copy here from ByStorm Software.
What it Means to Funnel IT
Unless you work in a vacuum (which sounds nice some days), you’ve probably had or heard a conversation similar to this:
02.01 9:01 AM Sam (QE): The print function doesn’t work. Click on print and it blows up.
02.01 10:05 AM Bob (Dev): Weird, it works for me. Can’t reproduce.
02.01 10:57 AM Sam (QE):Can’t reproduce!?!? I get it every time!
02.01 1:05 PM Bob (Dev): Well, I did your repro steps and it doesn’t happen for me.
02.01 4:26 PM Harry (Dev Manager): BOB, GO INTO SAM’S OFFICE AND WATCH HIM REPRO IT.
02.02 8:47 AM Bob (Dev): It did blow up . . . don’t know why . . . I’ll need to use Sam’s computer.
02.02 9:45 AM Sam (QE): You can’t use my computer! I need it to make a 3/15 ship date?!
02.02 10:40 AM Sally (QE manager): SAM, DO SOME TESTING ON ANOTHER MACHINE AND LET BOB LOOK AT IT.
02.02 11:15 AM Sam (QE): He’ll install tools on it!
02.02 1:17 PM Bob (Dev): I’ll need to, so I can figure out what is happening.
02.02 2:31 PM Sam (QE): If he installs anything on this machine, everything will start working. Customers in the field DON’T have development tools on their machines!
You can’t reproduce a defect, or you have a question about some configuration issue of the test machine, and now you and QE are bouncing a defect report back and forth instead of being able to resolve it. Switching gears all day isn’t very fun or productive.
In his position as Director of Engineering for several software vendors, Funnel IT developer Gene Allen saw too many high-salaried and highly-trained development and testing staff caught in endless communications about a test or development environment. “This is frustrating for them, expensive for the company, and ultimately affects the amount of bugs that can be found and fixed,” says Allen.
The essence of “Funneling IT” is to gather relevant environment information into a small, sharable file that can be attached to an email or defect report. When trying to resolve a defect, if you would like the first place you look—and the last place you look—to be the SAME place, then read on.
Figure One; Funnel IT in action:
How You Will Use This Tool
Funnel IT for Free is a Windows platform, language-independent freeware tool that actually serves three masters.
- For QE, it is a one-click assimilation of the operating environment surrounding a defect—information that would otherwise have to be collected individually.
- Funnel IT gathers: running tasks, loaded modules, screen resolution and depth, system up-time, virtual memory settings, load address, OS version, component details, processor information, and physical memory information.
- For management, it helps free employees from the above-mentioned communication volley resulting in quicker defect resolution time.
- For development, in addition to the above benefits, this product addresses DLL HELL, locked DLLs, and relocated load addresses, for starters. More on this below.
A note about our footprint before we step into the discussion:
We felt it was important to leave no footprint on your development (or test) environment. Funnel IT for Free is an executable using statically linked runtime libraries and has no installation.
Because of this, you will never have to reinstall our tool, and it will work the same every time, regardless of what else is on your system. We do need just a little disk space and one registry key to keep the license agreement from unnecessarily hassling you.
Components of a Funnel IT for Free File
The captured environment, now a .sqa file, is organized in an easy-to-use tree interface. At the root are the name of the computer and the time of day that Funnel IT captured the information. The rest of the tree is divided into three main branches:
- Modules Grouped by Process
- Processes Grouped by Module
- General Information
How each of these will benefit a user is discussed below under the branch heading.
Loaded Modules Grouped by Process
Goodbye, DLL Hell. This section of your Funnel IT tree shows all the running tasks on the system where the information was captured—and every loaded module associated with each process (see Figure Two for visual). Funnel IT for Free actually queries the OS for this information so it is a more complete list than with some other tools. The list shows modules loaded not only implicitly (linked) but explicitly (
LoadLibrary). In short, if there are multiple DLLs with the same name on a system, you’ll be able to see which one a given application is loading (which is probably not the right one, if you’re looking).
Hover over a module, and the tool tip gives the path of the loaded module. Is that where you thought it was loading from?
Double clicking on a loaded module will display a window with file details for that module (see Figure Three). From that window, you can easily scan the complete details of every module under that process by clicking “next” or “previous.” This is very useful to ensure consistency of version, copyright, and other information in testing.
Figure Two; Modules Grouped By Process
Figure Three; Module Properties Box
Running Processes Grouped By Module
What else is using this locked DLL? This branch of the Funnel IT tree shows all the loaded modules on the system where the information was captured—and every task that is using each module. If this sounds familiar, it is the same information as before, but in the opposite format, and has different benefits (see Figure Four for visual).
Aside from the obvious benefit of being able to see all the places a DLL is moonlighting (if only the current job market were as kind to people), this view addresses module rebasing. Hover over the module, and the tool tip will display its load address.
Each DLL is built to be loaded at a specific base address. If multiple DLLs are mapped into the same address space and their ranges butt heads, Windows automatically relocates (rebases) a module to another space in memory. Funnel IT for Free shows not only the load address, but the relocated address.
If you want to avoid this runtime relocation (which uses extra physical memory) you can use Funnel IT to identify which modules are being relocated, and then build those DLLs to load at different, unique addresses outside the system range.
Back at the Funnel IT tree, double click on the module and you will get the same Module Properties window as described above. If you’re in this branch, you might be looking to see who originally built this module, or what silly things they might have written in their version information.
Figure Four; Processes Grouped By Module
General System Information
Which version with how much memory? To diagnose what kind of equipment is showing the problems, this information is standard. However, it is now also instant with each .sqa file generated. Requirements matching made simple, with the addition of computer uptime (which is useful if you need to call someone and ask them: “when was the last time you actually left your desk?”).
- OS Version
- Processor Information
- Memory Information
- Display Information
- Computer uptime
Figure Five; General Information
- When a Funnel IT file is saved, the file is copied to the clipboard for easy pasting with existing defect systems or emails.
- Runs on Windows 98 and above with IE 5 or above installed.
- The Funnel file is compressed into a file that is usually about 20K—a very high rate of compression.
- Accepts a command line argument for quick launching of saved data—this is handy when you want to be able to launch the application from email or a defect report.
- Automatically registers .sqa as a Funnel IT file for easy identification.
- Accepts a command line argument to run “silent mode” to gather all the data and put it in a clipboard for easy emailing or attaching to a defect report, which is useful for test automation.
Why You Will Use This Tool
In various forms and by various means, you could get all this information somewhere else. What you can’t get is one little application that holds all the answers in an easy-to-use tree format, the ability to gather it all in one click, and the ability to SAVE it and SEND it to someone.
A quick peak into what’s next? Now that you have a very deep snapshot into any system at any time you want, wouldn’t it be cool if you could quickly compare .sqa files? Or better yet, tell the Funnel IT application to gather specific information and files from any system. Funnel IT for QE, available for sale December 8, 2003, does just that.
Load two .sqa files and they will show up in side-by-side windows in their normal tree format. Click compare and they become a synched, color-coded (color-blind friendly) comparison report that you can still navigate for additional information.
In addition to everything gathered in Funnel IT for Free, Funnel IT for QE also captures:
- TCP/IP Address information for found adaptors
- DNS information
- Domain name
- Subnet mask, WINS settings, etc.
- Network adaptor information
- IP address, MAC address, etc.
- Running status, name, dependencies, start-up information
- Installed software
- On XP, Microsoft Updates (do you have the latest security patch?)
- Drive information
- Letter and path, UNC path
- Total free space to user (quota)
- Time zone information
Now for the really great part! Funnel IT for QE is packaged with Funnel EdIT, an editor program that lets you configure your own versions of the Funnel IT application. You can make your own information-gathering tool for your own purposes, with the capability to capture:
- Specific files (files will be compressed and included, and will open on any system with compatible software for viewing)
- File list information (directory)
- Complete registry hives
- Specific registry values
All of this is subject to a high rate of compression, and unless you do a file capture on the whole Windows System Directory the resulting .sqa file can still be easily attached and shared.
What it Means to Funnel IT, Revisited
Let’s go back and visit Sam and Bob. In the initial scenario, the defect wouldn’t reproduce, and the developer ended up using one of the tester’s machines for half a day to track down the problem that was keeping them from resolving the actual defect. With Funnel IT for QE, the whole conversation would have been:
02.01 9:10 AM Bob (Dev): Hey Sam, regarding your last PR, I compared our .sqa files and you had an old version of the print module. We updated it three days ago; it must not have gotten into the build. Reassigning to Build/Install.