How to Write a Great Software Test Plan

With complex software systems, you can never test all of the functionality in all of the conditions that your customers will see. Start with this as a fact: You will never test enough!

Step 2 in getting started is to read and re-read The Art of Software Testing by Glenford Myers. This classic will set the stage for understanding some of the strategies and methodologies for testing software. He provides a good definition of a number of terms we will be using in this article. Myers makes a simple statement that most of us miss when we test:

[Software] Testing is the process of executing a program with the intent of finding errors.

There is big difference between testing to show that something works versus testing to show that something fails. Step 3 is to follow these guidelines and you will be home free.

Why Write a Software Test Plan?

A better question is why plan anything? You plan those things that you know are more complicated than what you can do by the seat of your pants. You plan things for which order and completeness are important. Even the simplest software system is so complex and is so prone to failure, that planning to test is just as essential as planning your design.

The second major reason is that, as an industry, we are doing a lousy job at releasing quality products. Current industry standards are that tested and released software averages more than ten significant bugs per 1000 lines of code. How many hundreds of thousand of lines was that last project? Thinking ahead and planning your testing is one way to cut that down.

All of these are good starting reasons for having a software test plan.

What is the difference between a Test Procedure and a Test Plan?

Most good software development models call for both a Test Plan and a Test Procedure. Although in principle this sounds good, test procedures are extremely costly to develop, costly to maintain and don’t catch enough of the bugs in a short enough time.

Simply put – a test plan tells you what you are going to test while a test procedure tells you how you are going to test it. And a quality test plan, as outlined in this article, will cover a large percentage of systems being delivered today without the need to develop a test procedure.

Software Test Plan Part 1

This part falls under the more conventional definition of software test plans and includes:

1. Definition and Objectives of the Phases of Testing – This should answer the questions:

  • Will there be Module Testing? If so, what are the objectives?
  • Will there be Integration Testing? If so, what are the objectives?
  • Will there be Systems/Acceptance Testing? If so, what are the objectives?
  • Will there be Beta Testing? If so, what are the objectives?

2. Schedules – This should answer the questions:

  • When will Part 2 of the Test Plan be written for each Phase?
  • When will each of the Phases be scheduled?
  • What are the dependencies of each Phase?

3. Responsibilities: For each phase, the people who will design, write, execute, and verify test cases as well as the people who correct the problems should be identified.

4. Target Equipment Required: All of the target equipment required for testing should be identified. This is a much neglected part of the process. If two prototypes are required, they need to be planned very early. Will you be testing on one prototype and one pre-production piece of hardware? On how many shifts will testing take place?

5. Test Equipment Required: All of the test equipment required for testing should be identified. Any off the shelf test equipment should be identified as well as any test equipment that will need to be created. The plan should identify what test equipment is already owned and what will need be procured either by purchasing or renting.

Software Test Plan Part 2

This is the part that we have found can replace the Test Procedure. The goal in this phase is to define exactly what should to be tested. And what needs to be tested but the requirements from the great SRS you created (as a result of reading our “How to Write a Great SRS”).

Here are the guidelines we follow in creating this important phase:

  • Create a document which is structured identically to the SRS
  • Take every requirement from the SRS and create one or more test cases from that document.
  • Provide a check box beside each test case. This allows the Test Plan to easily become a Test Report.
  • Create stress testing scenarios that step outside of the SRS and look at the system as a whole. For example, if the system has TCP/IP Ethernet connection on it, perform certain tests with large amounts of data being sent to the system. Or, if the system has a keyboard as input, perform testing with the keyboard being pounded with both valid and invalid data.
  • Provide off-design test scenarios outside of the SRS that test the system in conditions for which the SRS provides no definition. Showing that the software does what it’s supposed to do is only half the battle. The other half is determining if the software is doing what it is not supposed to do.

Test Case Generation

The following are some general guidelines for creating test cases:

  • Every test case should define expected results as a result of the defined inputs.
  • Every requirement should be tested at and beyond its boundary conditions (for example: high and low limits) as well as mid points.
  • Re-read Myers on Test Case generation. Then re-check your test cases.

Mix black box and white (or glass) box testing. This means that some test cases are written without knowing what is inside the box (black box testing). Other testing should include testing based on knowing what is inside. For example, if you know that an algorithm for generating 10,000 different outputs is done with a formula, you will not need to test all 10,000 outputs. However if you know that it is done with a table with some break points in the table where different algorithms are used at each break point, you will want to include this in your testing. Also, white box knowledge can reduce the number of actual tests necessary through equivalence partitioning. (Don’t know what equivalence partitioning is? Go To Step 3 and repeat!)

Who should execute the Test Plan?

We have found that it is essential to have a different person or team execute the Test Plan from those who created the software. Find individuals who like to break things! Develop a creative tension between development teams who test each other’s software.

Bob Japenga
Bob Japenga has been designing embedded systems since 1973. In 1988 he started MicroTools with his best friend. MicroTools specializes in creating a wide variety of real time embedded systems. With a combined embedded systems experience base of over 150 years, they love to tackle impossible problems together. Bob has been awarded 11 patents in a variety of areas related to embedded systems and motion control. Bob and his wife Barbara live in Simsbury Connecticut. They have 3 daughters and 8 grandchildren. In their spare time, they are co-directors of the Center for Renewal Retreat Ministry (http://retreats.cpcbarn.org). You can reach Bob at rjapenga@microtoolsinc.com.
Bob Japenga
Bob Japenga has been designing embedded systems since 1973. In 1988 he started MicroTools with his best friend. MicroTools specializes in creating a wide variety of real time embedded systems. With a combined embedded systems experience base of over 150 years, they love to tackle impossible problems together. Bob has been awarded 11 patents in a variety of areas related to embedded systems and motion control. Bob and his wife Barbara live in Simsbury Connecticut. They have 3 daughters and 8 grandchildren.

The Related Post

This is an adaptation of a presentation entitled Software Testing 3.0 given by Hung Nguyen, LogiGear CEO, President, and Founder. The presentation was given as the keynote at the Spring 2007 STPCON conference in San Mateo, California. Watch for an upcoming whitepaper based on this topic. Introduction This first article of this two article series ...
Has this ever happened to you: You’ve been testing for a while, perhaps building off of a branch, only to find out that, after all of this time, there is something big wrong. It’s a bad build and now you have to go backwards, fix something, and get a new build. Basically, you just wasted ...
As I write this article I am sitting at a table at StarEast, one of the major testing conferences. As you can expect from a testing conference, a lot of talk and discussion is about bugs and how to find them. What I have noticed in some of these discussions, however, is a lack of ...
Let’s look at a few distinctions between the two process improvement practices that make all the difference in their usefulness for making projects and job situations better! An extreme way to look at the goals of these practices is: what makes your work easier (retrospective) versus what did someone else decide is best practice (post-mortem)? ...
Differences in interpretation of requirements and specifications by programmers and testers is a common source of bugs. For many, perhaps most, development teams the terms requirement and specification are used interchangeably with no detrimental effect. In everyday development conversations the terms are used synonymously, one is as likely to mean the “spec” as the “requirements.”
Last week I went to StarWest as a presenter and as a track chair to introduce speakers. Being a track chair is wonderful because you get to interface more closely with other speakers. Anyway…one of the speakers I introduced was Jon Bach. Jon is a good public speaker, and I was pleasantly surprised that he ...
The key factors for success when executing your vision.   There is an often cited quote: “…unless an organization sees that its task is to lead change, that organization—whether a business, a university, or a hospital—will not survive. In a period of rapid structural change the only organizations that survive are the ‘change leaders.’” —Peter ...
In today’s mobile-first world, a good app is important, meaning an effective Mobile Testing strategy is  essential.  
The V-Model for Software Development specifies 4 kinds of testing: Unit Testing Integration Testing System Testing Acceptance Testing You can find more information here (Wikipedia): http://en.wikipedia.org/wiki/V-Model_%28software_development%29#Validation_Phases What I’m finding is that of those only the Unit Testing is clear to me. The other kinds maybe good phases in a project, but for test design it ...
People who follow me on twitter or via my blog might be aware that I have a wide range of interests in areas outside my normal testing job. I like to research and learn different things, especially psychology and see if it may benefit and improve my skills and approaches during my normal testing job. ...
Dr. Cem Kaner – Director, Center for Software Testing Education & Research, Florida Institute of Technology PC World Vietnam: What did you think of VISTACON 2010? Dr. Kaner: I am very impressed that the event was very professionally organized and happy to meet my old colleagues to share and exchange more about our area of ...
Introduction This article discusses the all-too-common occurrence of the time needed to perform Software Testing being short changed as specification, development, and unforeseen “issues” cause the phases prior to testing to expand. The result is that extreme pressure is placed upon the testing organization to perform the testing function within a reduced time frame. The ...

Leave a Reply

Your email address will not be published.

Stay in the loop with the lastest
software testing news

Subscribe