Copyright © 1998 Cem Kaner (kaner.com) and Johanna Rothman
Many project managers don't know what to expect from a testing organization. They don't know what the group does, how the product is going to be tested, when things will be done, what deliverables to expect, or how to find this information out. Complicating matters, some test managers want to keep things this way.
We've been successful at managing both development projects and testing groups, mainly for companies that develop and publish packaged software. We see the testing effort as an integral part of the overall process of developing an appropriate quality product on time and within budget. To succeed at this, though, the project manager must be able to see schedules, to receive meaningful deliverables, and to recognize genuine problems, which test groups--like all other software groups--have in plenty.
This article is written for project managers, with suggestions on how to work with a test group and hold them accountable for their work on your project. In particular, we recommend that you:
We are NOT suggesting that you manage the test group. We are not suggesting that you eliminate the intellectual independence of the test group. And we are definitely not suggesting that you should develop these assessments and project plans yourself. What we're saying is that the test group provides services to your project, just like the programming groups do (you track their progress, don't you?), just like the documentation group does, just like the other groups that make pieces of the product that you have to release. You have a responsibility, as the manager of the overall project, to ensure that the services provided to you are effective and timely. To do that, you need to understand what will be done, when it will be done, what can derail it, and how those inevitable problems are to be managed.
More and more project leaders are thinking about risk, how to assess risk and plan for it. We can't address that general problem here, but if you could use some starting references to the literature, we suggest that you look at the Software Program Manager's Network, http://ww.spmn.com; the Software Engineering Institute, Risk FAQ, http://www.sei.cmu.edu/organization/programs/sepm/risk/risk.faq.html; and the Project Management Institute's Project Management Body of Knowledge, http://www.pmi.org.
All that we'll say here is that you have a challenge when building a product, because you have to trade off four factors:
You can't optimize your project against all of these. The product will probably be late or over budget or unreliable or lacking in features. If you manage well, you get to pick which of these dimensions suffers most, and which is held closely to your initial plan. The risk assessment question is, "What could happen on your project that would increase your time, raise your costs, keep your reliability low, or force you to cut features?" Listing the risks (the "what could happens") is the first step in managing them.
The testing part of your project plan has serious risks. Some of our favorite risk questions are:
Discovering and facing issues like these is just one step in running a successful project. You aren't going to solve them just by listing them. And you won't solve them all at the start of the project. (Or, for some of them, ever.) Having them clear, though, will help you understand where to focus your managerial attention, money, and time. If you want to ship the right quality product within budget and on time, then you have to protect your project from the defects, delays and overruns posed by these risks.
You have to work closely with the test manager in assessing these risks. Otherwise, you are thinking in a vacuum. Even if you have years of project management and testing experience, you are working in a vacuum if you aren't working with the people who will have to face the risks that you are trying to manage. You and the test manager may not agree on these risks, on how important they are, or on who should do what to manage them. However, it is very valuable for you to understand each other's assessment and management approach.
An important tool for managing the project, and your relationship with the test group, is a milestone criteria chart. This lays out criteria for moving the project through different development milestones. How complete is the project supposed to be at a certain point? How should we measure that completeness? These are project-wide issues, and though a good test manager or test lead will gladly help you develop them, these are ultimately your issues to clarify.
Brian Lawrence and Bob Johnson present an excellent set of milestone definitions and checklists at their website, http://www.coyotevalley.com. We don't agree with all of their definitions, but that's not the point of their lists. The lists are intended as a starting point and a model. You can customize them for your project. For an alternative set of milestone-specific ideas, see Chapter 12 in Kaner, Falk & Nguyen's Testing Computer Software. You can probably find additional milestone lists and definitions--none will be perfect for your project, but the mix might help you settle on a specific set of criteria that work for you.
One of us (Johanna) helped a client develop a set of project criteria and is in a position to publish some of the details. We can't reveal the true name of the company or the product. Here, we call it the "Messenger" product. Johanna was retained mid-project to manage Messenger and get it released. Johanna wrote in more detail about "Messenger" in "Achieving Repeatable Processes" in the June 1998 Software Development.
Messenger had been in the market already. This upgrade was of particular interest to specific, important customers. We had negotiated specific, firm delivery dates for interim versions of the product. The product had to go beta in April and it had to ship in July. These customers' acceptance of the final version of the new product would depend on our meeting of these dates with the agreed features at the agreed level of reliability.
As part of our planning, we developed the criteria listed in Table 1. (Note: these are fairly generic criteria. There were some very specific other ones, too, but we're not in a legal position that lets us tell you about those. In your project, you will include items that are more specific than these.)
Table 1: Messenger's milestone criteria
System Test Entry Criteria |
Beta Criteria |
Release Criteria |
|
|
|
Note that the testing group is vitally interested in these criteria, but the ultimate decision-maker for them was me (Johanna) because I was the project manager. The testing group helped me understand whether the project was meeting the criteria, they helped me understand how to word the criteria and what else should be included. They played an important role. But the list was mine.
Looking at Messenger's product release criteria, we see a focus on getting to the ship date with a certain set of features, but not a particularly low defect rate. More precisely, several classes of defects didn't matter (as far as the executives and the market researchers were concerned). The overall project reliability had to be understood and reasonable. Specific aspects of the product had to be immaculate. Errors in those areas became high priority quickly. Additionally, anything that genuinely interfered with early use of the product became high priority. Getting ourselves clear on these expectations was essential for successful testing. How could a test group provide support for these very specific objectives if they didn't understand them?
Messenger's system test entry criteria were chosen as the minimum set that would allow system test to start, even if not all the features were complete. Allowing testers to start early meant that they could find problems early. Every study that we (Johanna and Cem) have seen says that the sooner that you find and fix bugs, the cheaper. We wanted every opportunity to make our dates, and that meant getting good information as soon as possible.
The project was a success. We released the beta version two weeks late. We might have released an earlier version, that had been a beta candidate, but it didn't meet our beta criteria. However, we were able to explain our criteria to our customers who had insisted on beta copies, and to explain our status against those criteria pretty precisely. This level of control made them comfortable and they accepted the late release without protest. We also had disputes with the testing group, who wanted to continue testing in areas that we had made clear were not relevant to the customers' acceptance criteria. The clarity of the written, approved beta and release criteria went a long way toward keeping those difficult discussions focused and within sensible time bounds. We shipped the product on time and the key customers were extremely happy with it.
To determine whether the project has met the criteria (which is Johanna's view of the testing task) or to prove that the product has not met the criteria (Cem's view of the task), the test group has a lot of work to do, probably involving more than one person, over a period of weeks or months (or years). Somehow, they have to be able to tell what is supposed to be done, what they've actually gotten done so far, what's left to do, and when they have achieved a goal or met a milestone.
Different test managers handle the planning problem differently. Forget about the incompetents and the turf-hoarders and the blame-it-all-on-you experts. Competent, cooperative test managers differ significantly in how they schedule and in how they communicate their schedule to the rest of the company. We've had success with variants of a method written up by Kaner and we recommend it to testing groups ("Negotiating Testing Resources: A Collaborative Approach." Proceedings of the International Quality Week Conference, San Francisco, 1996. Available at http://www.kaner.com.). However, you can't impose a method on a good test manager (you can try, but the next test manager might reject your method too, after the first one quits.) You can ask for clear communication.
Here are some of the things that we think it is fair to request (and expect) in the testing project plan:
First, a clear statement about the minimum level of testing that will be done for every area of the product (program plus documentation plus marketing materials plus associated hardware). Some areas will get more than this, but none will get less. What is that minimum? Do you think it is enough? Too much?
Second, a description of different levels of depth of testing that will be used in different areas of the program. For example, we often think in terms of four categories:
Your test manager might use different names and different descriptions. There's nothing magic about ours. You just need some descriptions that are clear, clearly different, and that cover the options that the test group will actually use.
Third, a list of the areas of the product. The test group will define the "areas" in its own way. You might help them with this or not. They have to be free to organize their work in a way that works for them, which might be different from how you would do it. However, you should be able to get from them a list of areas that together include all of the things that the testers will test.
Fourth, for each area of the product, a list of sub-areas or sub-tasks. This list should be detailed. It should include anything that takes a day (or even half a day) of work. Having things broken down this finely makes it possible to accurately estimate the size of the task and to accurately track how much work is remaining to be done. You might not be able to get this list--some people refuse to estimate tasks this finely, dividing the project into two week phases instead. We would want more than that, but you might not be able to force it.
Fifth, for every sub-area of the product, the list should specify how much time it will take to test that sub-area at the level of depth that it will be tested.
Sixth, a total across sub-areas. For every major area of the product, how much time will be spent testing, and, overall, what is the level of testing of this area?
This list of areas and sub-areas gives you something to review, to negotiate, and to track progress against. If the test group wants to spend too much time on one area, you can ask why they intend to test this area's sub-areas at the levels they have chosen. What tradeoffs are they making? As you come to understand the test group's tradeoffs, you might decide that they really do need more time and money. Or you might persuade them to test some areas less intensely (with your support). Or you might come away with a well-understood disagreement. In any case, the level of detail of the list is what makes possible the calm, task-oriented (rather than pointy-haired-manager-wants-to-save-money) discussion that safeguards the quality of the product by focusing the most resources on the most important tasks.
Project managers sometimes react with shock when they see an honest estimate of the time needed to do some testing tasks. If the number is too big, you have to manage it. But don't make these common mistakes, which will bite you in the tush later.
If the test team has a detailed list of tasks and an estimate of how long each one should take, then every week, they can report progress against this. For each area of testing, how much time was spent and how close is it to completion? Are they spending more time per task than they expected? Because the areas are broken down into specific tasks that don't take many days each, everyone can tell when specific things are getting finished. You are less likely to see wild overestimates of progress, followed by long unexpected schedule slips.
It takes time to create this list and it takes time to track progress against it. The testing budget must allow time for this task or it won't be done.
Not only should the test team review their progress every week, the project team can review the relevant milestone criteria every week at the project team meeting. Before system test, review the system test entry criteria, to see if the project is ready for system test. Before Beta, review the progress made against the Beta criteria, and then review the project status against the ship criteria.
As a project manager, you don't have to know how to test and you probably don't have the right (or reason) to micromanage the testing group. But this group does owe you services that are essential for the success of your project. You can and should hold the group accountable for those services (their quality and schedule) without interfering with the group's work.
[This paper was originally published in PMI ISSIGreview, Volume 10, Number 4.]
Copyright © 1998-2007 Rothman Consulting Group, Inc.
All rights reserved.