Thursday, January 6, 2011

Don't (explicitly) charge your clients for testing

Software development houses who write bespoke software will usually provide a quote to develop or customise an application.  Often, it's broken down into "Project management, requirements gathering, development, testing/QA, etc etc".  In my experience, it is a mistake to break testing off as a separate quote to give to clients.

Why?



Because the client will look at the quote and decide "we'll do our own testing" and strike it from the quote.  Your company, not wanting to lose the contract, will agree.  I have seen it happen many times, and it is a mistake.

Software testing is used to discover information so that stakeholders can make informed decisions.  Software testers shine the light on the project.  We hold the torch, and point it in directions we think need illuminating.  We look in the corners, and say "hey, umm, there's this spider over here, is that ok?"  Whether you go after the spider or not is your decision, but at least you know it is there, and won't be surprised by it in the night. We provide information to the project team to that they can make quality decisions.


It's tempting to think "yes I know this, but it's not really relevant who does the testing, just that it gets done, right?"

Your in-house testers work for your software company, not for the client.  Your testers protect your company's interests, not the client's.To reject your inhouse testing on the basis that the client will do their own testing is misguided. Client test teams don't work your for your company, and aren't there to protect your interests. Client testers often don't provide any useful information which will help the project make good decisions.  By the time they see the product, most of the risky decisions will have already been made.  Clients aren't specialised testers.  They often test in a rote fashion, adhering strictly to necessarily limited test scripts; have a limited understanding of the application; sometimes they outsource to cheaper testing companies which are sometimes paid by the bug, which leads to unimportant issues being logged - which the client will then want fixed.

You are letting the client decide whether to allow you to make decisions in the dark, or to be able to make informed decisions.  This makes no sense.  The client is given the power to decide how much risk you should take on, and not only that, but given an incentive to decide you should take on more risk.

Anyway, should a client be asked to pay for a service that helps you with your risky decisions?  Do you ask them to pay for your insurance?  You don't invoice clients for rent or power, even if those costs are an inherent part of your invoice.

Either accept that the Test Team should be part of these inherent costs, too, whose cost will be recovered in quicker and more efficient development cycles, and in bugs being found before your clients find them, or "hide" them in the general development quote.  You don't break development down into "setting up dev environments, writing code, writing unit tests" so why break testing away from that too?


Just don't decide that it's easier to let your clients be your testers.  Your software will suffer, and it will cost you real money and reputation.  A penny you won't lose is a penny earned.  Let your testers do what they do best, and that's look out for you.

1 comment:

  1. I completely agree with the underlying idea here that you want to do your testing in-house to protect your company's interest.

    I'm not sure striking it from the quote is usually feasible, though. Should you just eat the costs of in-house testing? Or should you inflate the cost of development to cover the testing role, and thereby appear to have higher dev costs than the competition?

    Perhaps, instead of striking/hiding it, make it mandatory. Just as you (most likely) don't allow customers to strike Project Management from the quote, don't allow testing/QA to be removed.

    Good article - keep writing!

    ReplyDelete