tags:

views:

680

answers:

8
+5  Q: 

QA to dev ratio

We have a pretty complex Java system which includes a few back-end tiers including a database and a proprietary Swing front-end. There are back-end APIs to which external parties can attach that mimic our front-end. There are approximately 5 silos within our org that share this system. In total there are around 15 developers maintaining this system.

Is there a rule of thumb on what the size our QA team should be?

Edit: To add a bit of context based on questions raised in the responses thus far:

  1. We have about four major releases a year, and a bunch of minor ones in between.
  2. Our platform has money changing hands, so there are calcs that mean a lot to our customers.
  3. We do use a formal bug tacking system.
  4. We don't utilize TDD.
  5. We use tools like cruisecontrol for continuous integration.
+2  A: 

It likely depends on how involved the code base is (whether there are lots of integrating modules) and how involved the user experience is (if there are lots of visual elements and input controls to test).

If it's a pretty complex system, you may want to consider 2-3 QA engineers for every 5 developers. If however, the features don't really change much or are less involved, I would think you could get away with just 1 QA for every 5 developers (maybe even for every 10 developers).

mkmurray
What would these 10 developers be production if "the features don't really change much?"
Yishai
I was naming a ratio, not really a number of developers needed for the project.
mkmurray
1 QA for 5 Devs on a system is quite thin and 1 QA for 10 Devs is just absurd. Even with good TDD you should have a good ratio of around 1 QA to 3 Devs.
AutomatedTester
If "the features don't really change much or are less involved," then yes I think you would go "quite thin" with your QA resources compared to when the system is "pretty complex." I qualified when you would want to go "quite thin." There is obviously a middle ground in between my two scenarios, which you hit with 1 QA to 3 Devs.
mkmurray
+1  A: 

No, there is no rule of thumb. Every organization is different, as every organization has a completely different set of requirements, needs, projects, etc. You are only going to be able to find what works for your organization.

matt b
+1: Not sure why this got downvoted, there are many factors that make a decision like this unique to each company.
Troubadour
+2  A: 

Start off with a 1 QA to 5 or 6 developers. Then start tweaking it depending on how much work you think the QAs are having to do or having nothing to do.

In truth, that's just based on my own experience because there's too many factors involved. How developed or stable is your codebase? How big is it? How comprehensive does the testing need to be? What sort of testing and analysis tools are involved? How often are milestone releases? What sort of development process do you have? How much manual testing and how much automated testing?

There's a lot more questions. So just start with an arbitrary number and go from there.

aberrant80
+6  A: 

As a former test team lead, I would suggest having as much testing as you can. It sounds like a lot of people in your organization depend on your software. Test early and test often.

It's very important to realize that testing is everyone's responsibility. Developers need to be writing good unit tests. UI developers should be manually testing the UI.

I try to encourage test driven development, keep eyes on metrics (using a formal bug tracking system, tracking defect densities, etc), setup a continuous integration service, and design code for testability (use a framework like Spring for dependency injection, use mocks and stubs for external services, etc - I'd be happy to discuss in more detail). The cost of fixing a bug gets exponentially more expensive the later you find it, so it's best found before it gets to formal QA.

Jeff

Jeff Storey
"UI developers should be manually testing the UI"? should we not invest in automated UI testing for developers or is that a waste of time/money?
akf
Automated UI testing is good when it works, but it's really difficult to get right. The UI needs to be designed for testing, and ideally it should be a very thin layer - this means using patterns like model-view-controller and making sure no business logic is in the UI.If you can do automated testing, I would do that too. I just really meant that UI developers should also be testing their own changes manually, not necessarily doing the full regression tests manually. QA testers inevitably will do some or all of the UI testing manually too.
Jeff Storey
Since you're using Swing, I'd recommend the FEST http://easytesting.org/swing/wiki/pmwiki.php testing framework - it allows you to write functional tests of your Swing GUIs.
Nate
Another thing to remember is that good tools don't make good testers. You need good testers to start with - those who are passionate about testing and want to be testers, not just some developers that got selected for testing. They should have a desire to come in every day and break the software, use it in unexpected ways (and of course the expected ways). A programming background helps too because of scripting languages for testing.
Jeff Storey
+2  A: 

A rational QA to dev ratio can only be derived relative to the complexity of an application in question.

Clearly, an uberdeveloper can probably come up with a complex application where only 3 QAs full time can efficiently test because of the complexity of the workflow; in turn, there can be 1 QA for 3 junior devs piecing together a relatively simple input-output report application.

So the number of QA personnel you need will be determined by the number and complexity of requirements you have, and not the number of software developers you use.

Jon Limjap
A: 

I don't know if his point of view has changed since this article 9 years ago, but Joel would recommend 1 full time QA person per 2 full time devs. I'd say, with a system that's constantly evolving, with regular updates, this ratio is pretty good.

Then again, if you're system's not changing that often, rarely updating, why would you have many devs to begin with? I've mamaged to convince myself that 1:2 is the perfect ratio in most all situations. :)

dustyburwell
A: 

2 test engineers per 3 developers is a decent start. If many test cases involve stuff that can't be automated (physically plugging/unplugging stuff, ocular verification of UI rendering) add 1 tester per 2 test engineers.

Christoffer
+1  A: 

A lot of it depends on what the system does and what the consequences of defects is? Are you writing financial software? Or social networking? The likely cost of one failing are greater than the other so the QA effort varies. Similarly if it's a product (with multiple installed user bases which might be harder to patch) you need it to be more stable than if it's internal.

You also need to ask are you expecting them to do basic system testing or volume and load testing too. It sounds like you're looking at a combination of UI testing and API testing.

Tgive you a starting point, assuming that you're talking a "normal" type of system and we're talking basic system testing, the metric I'd go with is that 33% of all effort should be test effort. In theory this gives you a 1 to 2 ratio but assume that your developers are unit testing perhaps stretch it to 1 to 3. Certainly I'm currently running with 1 to 4 and that's not enough (I'll be rectifying it as soon as the business allows me to).

But you also want to consider how mature your software development processes are and what your specifications are like. As well as having the right number of testers you need to give them the right information to test against - if they don't have that then they're not going to be able to do a job and it's arguably wasted money.

One other option to throw in there - it sounds like the product has been under development for a while. As well as a core of regular testers, you might want to bulk up for an initial major test using short term contractors. If you're only just bringing test resource in you don't want to start them with a major backlog.

Jon Hopkins