Dr. Dobb's: What's "software quality"?
Rothman: Jerry Weinberg's notion that "quality is value to someone" helps me see who the "someones" are and what they value. Some people want more features. Some want more defects fixed. Some want the product faster. Some want all three. When you start a project, you make decisions about which customers you want to please first. Capers Jones' definition is more concrete: "software that combines the characteristics of low defect rates and high user satisfaction."
Dr. Dobb's: What's your favorite quality metric?
Rothman: When I'm using Agile or defining requirements with user stories, I like acceptance tests. I use burn-up velocity charts in any incremental life cycle. They show total requirements, requirements done, and requirements remaining. That helps management realize when a project will be done, assuming we care about quality. If I'm not using Agile, I like the ratio of good fixes to bad. That tells you if you're making progress. I also look at cost to fix a defect if I'm trying to decide if it's worth fixing problems before release.
Dr. Dobb's: What are the most effective testing methods?
Rothman: I like test-driven development because the quality is in the design. I think of TDD as an advanced skill. It's difficult to think ahead with tests when we've been trained to think about design and then test. Without TDD, I'm a huge fan of unit, feature, and integration testing, and if the developers are ready to pair, pairing. Pairing improves people's ability to see the whole system. If people aren't ready for pairing, then go with peer review of some sort.