Focus Testing on Conformance To Requirements

Many projects I have worked on in my career have suffered from misunderstandings about quality from the very beginning.  Software testers were told to “bang on” the software and do some “try to break it” tests (usually for some prescribed amount of time) and report back on what they found.  Sometimes,  work like that will find bugs — but there is always this nagging feeling that the testers might miss something important or that they might be looking at the wrong functionality entirely.  If you work on a project and find yourself worrying that the test team isn’t testing enough or is testing too much, the best way to address the problem is to focus your test on conformance to requirements.

By nailing down requirements early in the process and then testing to be sure they have been implemented correctly, the test team always stays on track.  The work that they do is, after all, being used to ensure that the product you release does what it was meant to do.  Effective test efforts are built around well-understood product requirements. In finding bugs, the test team is usually finding problems the product should address. Leaving the product quality up to some standard in your test team’s head will most likely lead to tests that are not focused on product functionality and that can mean that requirements of the software don’t get developed.  If the test team doesn’t understand the requirements from the beginning of the test effort, they have no way of knowing when those requirements aren’t met.

It’s commonly said  that testers and programmers don’t like each other.  I think that’s silly and wrong.  More often than not, the tester’s role is just left undefined.  Programmers, the story goes, feel antagonized by the tester’s criticism of their work and often dread having to deal with their test teams.  Focusing on software requirements, both in your development and your test effort can really help to alleviate some of this tension also.  Instead of seeing testers as annoying critics, programmers can see them as partners in implementing and validating the sofware project’s goals.  Good test plans and test cases can help to bring the programmers and testers together in their understanding of how this work will be done.  Allowing everyone to have a hand in understanding and approving of the requirements and the test strategy as a whole gives a test effort one focus and allows everyone on the team to feel a part of the work.

Tone at the top

I’ve been doing a lot of work with Sarbanes Oxley governance compliance lately. It’s interesting how many similarities there are between what it takes to put good accounting and financial processes in place, and what it takes to do the same for software engineering. I’ve found that many of the core project management principles — transparency, honesty, “doing it right” all the time — which Jenny and I write about are very important in accounting and finance as well. So I guess I shouldn’t be surprised that we software project managers can learn something from our cousins in the accounting discipline. They’ve identified an important idea which I’ve encountered many times in software enigneering, but which I’ve never had a name for: “tone at the top”.

Essentially, if your senior managers don’t have the right attitude — if they don’t honestly support the idea of transparency and good practices — then that’s an reliable leading indicator that there are more serious problems down the line. You can fail an audit if the auditor finds that your company has poor tone at the top.

In an organization with poor tone at the top, the senior managers are simply unconvinced of the value of good practices. They will often reject the ideas of transparency, honesty and measurement. They run the organization based on gut instincts rather than sound planning, and they reject attempts at improvement. I suspect that the reason this is a more recognized and discussed problem in accounting than it is in software engineering is that there are codified ethics principles and more visible consequences. Poor tone at the top in a software project manifests itself in micromanagement or lack of leadership, which leads to project failure. That may sound serious, but in contrast, poor tone at the top in accounting manifests itself in ethical breaches and fraud, which can lead to shareholder revolt and even jail time for executives. If project managers could go to federal prison because they lied to their stakeholders about the project schedule, we would see much more transparency in software organizations.

The “tone at the top” problem may sound very familiar to anyone who has tried to put a good practice in place only to find resistance from the boss. A basic tenet of software project management is that a project manager has no hope of putting better practices in place if his company’s senior managers aren’t behind them. I’ve talked to many project managers who recognize that sinking feeling that they get when the boss — who previously said he was completely behind the PM’s effort — did an about-face as soon as he heard a complaint from a programmer or stakeholder about the new practice. It turns out that that’s a classic example of bad tone at the top. The next time I need to talk about that problem, I’ll have a name for it!

Getting started with use cases

A friend of mine is introducing use cases to his company, and asked for some advice. It sounds like an interesting project — they’ll be using it for both a hardware and software component.

Here’s what I told him:

  • Spend a lot of time talking about what’s actually going to be covered in the use cases up front, and try to stay flexible.
  • When you’re working on the use cases, there’s a good chance that you’ll spend some time talking to people and eventually think, “I understand now, I don’t have to talk about this any more.” It’s useful to learn to recogize that feeling as an indicator that you need to verify everything one more time.
  • Also, recognize that when you think, “This person doesn’t really understand this, but I’ll give them what I know they need” that roughly translates to, “There’s something here that I don’t understand, and I need to tease it out of the person.”
  • Don’t be afraid to scrap everything and start over. It’s a lot cheaper to do that now than after you start coding.
  • And don’t let anyone convince you not to do that one last review — that’s the one that will find the really BIG problem.