views:

119

answers:

5

My understanding is that it's advised testers are separate from developers, i.e you obviously have developers testing their code but then dedicated testers as well.

How does that actually work in practice on a small project, say 5 developers people or less? It seems unlikely you could keep a tester occupied full-time, and while you could bring in random short-term people I'd argue a tester should understand the app well - its intended usage, its users, its peculiarities - just like you don't want developers to be transient on the project.

A: 

In a small company, this is difficult because you're right: you can't just have the testers sitting idle between rounds of formal testing. Sure, they could do other things like write test cases and test plans, but even then they may have some idle time. For a small company, it might make sense to hire testers on contract when they are needed, as you might only have one product for them to test and the time between products is large. You might also look to see if you can find another company that will do the testing for you - similar to hiring contractors, but the contract would be with the parent company not the individuals.

In larger companies, there are usually (but not always) enough projects at different stages of development/testing going to keep all of full-time testers mostly occupied with work of some sort. Of course sometimes the demand exceeds the resources on hand (full-time testing staff) so contractors are sometimes brought in for a specific project. And yes, you're correct, even the contractors need to be trained to the system they are testing, even if they are ony there for the one project.

FrustratedWithFormsDesigner
A: 

You can ask developers to test each other's parts but in general it's not a good idea and a separate tester will be the best way to go.
Another option is to find a 3rd-party company that will test the application for you. This will also force you to have a better spec on the project.

Li0liQ
+12  A: 

You can definitely keep a tester working full time - they should be testing the product throughout the development process, not just at the end. In fact leaving testing to the end of a project is absolutely the worst thing you can do.

I have worked in a couple of companies that have typically 1 tester for every 2 developers, and there has never been an issue with them running out of things to do - in fact quite the opposite.

Both of these have been small companies with 10-20 developers and 5-10 testers.

Dave Kirby
Pity I can only vote for this answer once...
Joel Mueller
Testing during active development leads to defect reports that aren't really defects and get closed by developers saying "I just coded that, wait for the next build!". Much better to have structured cycles of development activity followed by testing activities. Repeat that cycle as often as you need, but try not to overlap them. The duration of each part of the cycle (and the cycle as a whole) really depend on the nature of the system being developed/tested.
FrustratedWithFormsDesigner
Once a new tester has 'caught up' working through the whole app, you genuinely find the amount of code a developer can write can practically keep one tester fully occupied? Do they literally re-test the whole app every time you change anything?
John
@Frustrated: that is not our experience. We do iterative development on a feature-by-feature basis, so there is a steady stream of completed features to be tested. Where possible the testers create automated tests for features which are run as part of the nightly build, so regressions are no a problem.
Dave Kirby
@John: Yes we can genuinely keep them fully occupied - often testing is the bottleneck rather than coding. The testers are also responsible for specifying the acceptance tests which are part of the feature requirements, and that can (and should) be started before a single line of code is written.
Dave Kirby
If you're doing continuous integration and short increments / sprints and you're building something that isn't completely trivial, then you can definitely keep a tester (or 2) busy. I agree that it is better to keep a good person engaged throughout the project that try outsourcing / third party testing (the only time that I would consider that is if I had a legacy app that needed lots of time-consuming integration testing or something similar). Your tester(s) should work closely with the developers, help them fill in gaps in the automated unit/developer tests etc., they'll have lots to do.
Jim Bird
A: 

I work in a small team environment, with only rarely more than 1-2 developers on any given project. We do not have, nor could I realistically see having, a dedicated tester. Usually, I involve my customers doing the QA testing of the application in a staging environment prior to putting any release into production. This is more or less successful depending on the customer's buy in to the testing process. I also rely heavily on automated unit tests, using TDD, and significant hand testing of the UI.

While I would like to have people with specific QA test responsibilities, and sometimes my customer will designate someone as such, this rarely happens. When I do have a dedicated tester (almost always a customer representative) who is engaged in the process I feel that the entire development process proceeds better.

tvanfosson
A: 

It's important in situations like this to utilize formalized test plans, and find whatever non-developer resources you can for testing. Often the Technical Architect or Project Manager will need to author Acceptance Criteria or full on Test Plans for new functionality, as well as test plans for regression testing. Try to get users, project managers, any stakeholders who are willing to help you test. But give them structure to ensure that all necessary test cases are reviewed.

An outside QA engineer could be very helpful in helping you architect the test plan(s), even if he/she is not doing all the testing.

Good luck

techphoria414