TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPass
Home  >  Detail: Staying on the Critical Path



A StickyMinds.com Original

Staying on the Critical Path

By Michael Bolton

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentBe the First to Comment on This Content

Summary: Connect with an expert to learn how to work smarter and discover new ways to uncover more defects. Michael Bolton leads us further down the path to successful critical thinking by teaching us the kinds of questions we should ask to obtain the most useful information.


AccuRev
New Page 1

In my last column, I wrote about the importance of critical thinking. Critical thinking skills are central to James Bach’s philosophy of Rapid Software Testing. In our courses, presentations, and conversations, people often ask if critical thinking skills can be taught. I'm pretty sure that they can, but I'm almost positive that they can be inspired, practiced, and cultivated. Mind you, incuriosity can be taught easily too; that happens whenever a teacher or manager provides a "right" answer, deems the matter closed, and permits no further discussion—or worse, no further thought. I think a good start to promoting critical thinking skills is to encourage people to ask questions. That's important for testing, too; when we stop asking questions, we build tunnels for our vision, we ignore context, and we start to believe in "best practices" as though there were such things.

James developed the Heuristic Test Strategy Model as a way to ask questions that help testers quickly and effectively frame their approach for testing the product. In this installment, we will look at the project environment, the first of four components of the model. The model identifies eight categories that we can ask about to obtain useful information. Rapid Testers love lists, and we love mnemonics to help us remember those lists on the spot. So think "CIDTESTD" (Mother Approved!) as you ask questions.

Customer. Who are the customers of the product? As I mentioned last time, it’s a good idea to think expansively about this. Consider not only those who use the software but also the people who are their customers. Remember that someone other than the end-user might purchase the product. Another important question related to customers—who are the customers of the testing effort? To whom do we report? Who else might be interested in our work? Do we have access to all of these people?

Information. What are the sources of information about the product and the domain in which it will operate? Do testers already have background information—knowledge and inferences and implied specifications from which to derive test ideas? Do we have access to project planning documents, and if so, in what kind of shape are they? Who on the project could provide us with useful information?

Developer Relations. Who is responsible for the code? Where are they—in one location or all over the place? How do they get along with the rest of the project community? With each other?

Test Team. With whom are we working? Do we know yet? Is there a diversity of skills in place? Is someone going to have to do special research or training, or will we need to recruit outside help?

Equipment and Tools. Is there a test lab set up, or do we have to make do with our own computers? Are there separate development, testing, and production environments available? Does our testing require peripherals or special hardware of some kind? Are our favorite testing tools available now, or are we going to have to collect and install them?

Schedule. When can we expect code to test and documentation to read? What hard deadlines or milestones are in place? What is the rate of change on the project? How much time do we have for test planning, preparation, and execution? What do we have to do right now?

Test Items. What is the product that we're testing? Do we have access to it? Is it relatively stable, or is it changing a lot? Will changes require new tests, or will we focus on retesting? What hooks or features exist that might make the product easier to test? And what is the future direction of the product?

Deliverables. What do our clients want to see from the test process? How are we going to record and report progress? How formalized is the reporting process, and to whom do we report? Are there standards that we could—or must—follow? We've found it helpful to ask of each document: Is it a tool that supports our work or a product that we are required to show to others? Don't work too hard preparing documents that people aren't going to read or use; focus on the important stuff.

A more detailed and specific list, including questions and subcategories, is available in the document on James Bach’s Web site www.satisfice.com. If you have categories or questions that you'd like to add to the list, by all means do so, especially if it’s a question that you find yourself asking on several projects. But the general process is the main thing: With practice—and by carrying the mnemonic “CIDTESTD” (Mother Approved!) around in your head—you can gather a remarkable amount of important information about any project in a very short time.

As a two-sided critical thinking exercise, try this alone, or with a colleague or two:

Use the list to get three minutes’ worth of new observations about your product's context.

If you're working on your own, pause for a few minutes, then revisit the categories trying to think of alternatives to your answers. If you're working with colleagues, compare notes and then brainstorm alternatives together. Don't stop until you've come up with at least three new observations in each category.

Then try to imagine aspects of the project environment that the "CIDTESTD" model itself misses, aspects that would change your approach to testing. (And if you come up with something, please let us know so that we can start a conversation about it.)

As an example, at one point, I suggested to James that "budget" might be an important addition to the model and asked why it was missing. He welcomed the question and noted that budget had been on the list for several years. He said that he had dropped it when he found that, for him, budgetary issues were covered by other questions raised by the model and that asking further questions about it didn't help him to plan or execute tests more quickly or more effectively. He then asked me if I could come up with some circumstance in which asking questions about the budget might change my test strategy in some meaningful way that wasn't already covered by the other questions. Can you come up with such a circumstance?

The matter isn't yet resolved. It may be the case that I develop a model different from his, and that would be fine. Either way, neither a good model nor a good critical thinking exercise is necessarily conclusive. Its outcome might be to prompt new questions or to cause us to consider new information that could prompt us to change our assumptions.

I believe that good testing requires us to do that constantly. As testers, we don't want to be fooled by an application that seems to be working correctly, and we don't want to be fooled into thinking that we're doing a good job. To be intellectually honest, I believe we must welcome criticism of our own work and thinking, and must be self-critical. We should be prepared to accept the strongest challenges to our beliefs so that we can continuously refine our tools, our practices, and our approaches. By questioning our project, our mission, our models, and our strategies, we reduce the chance that we will be surprised by a disastrous bug.

About the Author
Michael Bolton lives in Toronto and teaches James Bach's Rapid Software Testing course all over the world. Contact Michael at mb@developsense.com.

Back to Top
 
 
Member Comments
Add Your Comment


Marketplace

RESOLVE SUPPORT ISSUES from your Desktop!
Minimize downtime with a remote support solution that lets you resolve issues right from the desktop

See how EASY REMOTE SUPPORT can be. Try WebEx FREE!
DELIVER SUPPORT MORE EFFICIENTLY. Remotely Control Applications. Leap Securely through Firewalls!

Web based bug tracking - AdminiTrack.com
AdminiTrack offers an effective web-based bug tracking system designed for professional software development teams.

Census: Web-based Bug Tracking and Defect Tracking
Track software bugs, defects, enhancements, support calls, and more. Issue tracking software that is scaleable, fully customizable and integrated with VSS. Includes e-mail notifications, role-based workflow, change history, and Crystal reporting.

Six Sigma Certification
100% Online-Six Sigma Certificate from Villanova - Find Out More Now.

Get your product or service listed here.
Subscribe to Better Software Magazine
Subscribe to Better Software Magazine

First Name:

Last Name:

Email Address:


Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2008 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


Ravenflow



Better Software Conference & EXPO 2008