Posts in Tools
Open Source Testing Tools
Last weekend we held the June session of the Indianapolis Workshops on Software Testing. The attendees were:

  • Taher Attari

  • Charlie Audritsh

  • Mike Goempel

  • Michael Kelly

  • Marc Labranche

  • Jeffrey Mexin

  • Patrick Milligan

  • Richard Moffatt

  • Dana Spears

  • Jon Strayer


The topic we focused on for the five-hour workshop was open source testing tools.



I would like to relate some deep insight, but tools being what they are we didn't get a lot of discussion. Five tools were presented by Charlie Audritsh, Mike Goempel, and myself. In general, it seemed to generate interest in those tools and there were targeted questions about applying the tools, but the discussion level was relatively low. Rather then doing a play-by-play of this months meeting I thought I would just share the tools covered and let you do your own research. The tool creators say it better then me anyway.

Here are the tools we looked at:

Watir
WATIR stands for "Web Application Testing in Ruby". Watir (pronounced water) is a free, open-source functional testing tool for automating browser-based tests of web applications. Watir drives the Internet Explorer browser the same way an end user would. It clicks links, fills in forms, and presses buttons. Watir also checks results, such as whether expected text appears on the page. Watir is a Ruby library that works with Internet Explorer on Windows.

Web Application Stress Tool
The Microsoft WAS web stress tool is designed to realistically simulate multiple browsers requesting pages from a web site. You can use this tool to gather performance and stability information about your web application. This tool simulates a large number of requests with a relatively small number of client machines. The goal is to create an environment that is as close to production as possible so that you can find and eliminate problems in the web application prior to deployment.

A visual cognition video
This video was part of an experience report given by Mike Goempel. Mike was shown this video at STMR 10 by Cem Kaner and has used it as an example to show project managers some of the drawbacks of scripted manual testing. Cem also shows and explains this video in detail in his course on Black Box Software Testing. Look under "test procedures and scripts" I think...

Firefox Web Developer Extension
Adds a menu and a toolbar with various web developer tools that are useful for helping with test automation, security testing, usability testing, and functional testing.

WebGoat
WebGoat is a full J2EE web application designed to teach web application security lessons. In each lesson, users must demonstrate their understanding by exploiting a real vulnerability on the local system. The system is even clever enough to provide hints and show the user cookies, parameters and the underlying Java code if they choose. Examples of lessons include SQL injection to a fake credit card database, where the user creates the attack and steals the credit card numbers.

Next month we look at assessing test coverage. I'm saving my energy to blog about that. I think we will generate a lot of interesting and useful content at that meeting. If you would like to attend, let me know.
Test case reporting in Rational TestManager
Today I decided to boldly go where I have avoided going for the last six years. I finally started querying the Rational TestManager database. Mostly so I don't forget what I did, I thought I would share my attempt with the world.

I used the RATL_RT_TestManagementDatastore ODBC configuration (set up when you install the tools) and WinSQL.

The problem I wanted to solve was to get test case results for a given test plan. If you use TestManager, you can get results based on build folders, but if your test case results are in multiple folders, the results are aggregated and duplicates are added in multiple times. This makes the resulting numbers not quite worthless for large projects, but close...

This query returns the most recent test results for each test case within the test plan:
select
RESULT1.RecordedCaseName,
ITERATION1.Name,
RESULT1.ActualResultText,
LOG1.ModificationDate
from
TMS.CaseResult RESULT1,
TMS.Log LOG1,
TMS.TestCase CASE1,
TMS.Iteration ITERATION1,
TMS.Case_Iterations CASE_ITER1
where
CASE1.TestPlan = '11a1e288-f078-4082-b97e88a4b21e8454'
and RESULT1.TestCase = CASE1.UID
and CASE1.UID = CASE_ITER1.UID
and CASE_ITER1.IterationUID = ITERATION1.UID
and RESULT1.Log = LOG1.UID
and RESULT1.Promoted = 1
and (
ITERATION1.Name = 'R2_0 PLIQ WRS Auto'
or
ITERATION1.Name = 'R2_0 PLIQ WRS HUP')
and LOG1.ModificationDate = (select
Max(LOG2.ModificationDate)
from
TMS.CaseResult RESULT2,
TMS.Log LOG2,
TMS.TestCase CASE2,
where
CASE2.TestPlan = CASE1.TestPlan
and RESULT2.TestCase = CASE2.UID
and RESULT2.RecordedCaseName = RESULT1.RecordedCaseName
and RESULT2.Log = LOG2.UID
and RESULT2.Promoted = 1)

In the query above, '11a1e288-f078-4082-b97e88a4b21e8454' is the UID for the Test Plan from the TMS.TestPlan table. I'm not a SQL guy, so there may be a better way. If you know one, or have other queries you use, please share!