Wednesday, December 16, 2009

Feature Parity Is Rarely a Goal

This is a fun requirement that we sometimes see:

"Must have feature parity with X"

Depending on what you're working on, X might be the previous version of the product (if you're doing a rewrite), or it might be a competitive product, or it might be some analog that should be followed (e.g., "must follow Apple's style guide", which is just a variant on this theme). In any case, you've been presented with the easiest test oracle ever. Just go find X, and whatever it does, make sure your product does, too!

This may be the complete correct thing to do. But before you go blindly accepting the oracle, don't forget that testing your requirements is also a useful exercise. In this case you have a requirement that seems fairly straightforward, but let's dig a little deeper. Is "must do everything X" does really interesting or useful to the consumer of the product? Maybe.

If the consumer is... a marketing type who needs to put up a list of checkboxes and check as many as the competitor does, then yes, having all the features (in some way, anyway) will give him that. Here you probably want to engage in a discussion of how much of the feature is required to meet the "checkbox requirements" and proceed based on that.

If the consumer is... someone who currently uses the product and wants to maintain functionality, then complete feature parity probably isn't actually required. What you want here is the ability to do the same things that the user was doing before. Features the user didn't actually use in the old product probably don't need to be carried forward. Rather than trying to use the entirety of product X as your oracle, concentrate on the features that are actually used.

If the consumer is... a certifying or regulatory entity and product X is a reference implementation, then you really do need to match product X step for step.

The lesson of the day is that the requirement of feature parity may sometimes mean feature parity, but sometimes it may mean something else. Success is in finding the intention of the requirement and meeting that; in the end, this is what will keep your customers happy.

No comments:

Post a Comment