Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Developer testing vs. QA team testing - What is the right division of work? [closed]

While trying to advocate more developer testing, I find the argument "Isn't that QA's job?" is used a lot. In my mind, it doesn't make sense to give the QA team all testing responsibilities, but at the same time Spolsky and others say you shouldn't be using the $100/hr developers to do something a $30/hr tester could be doing. What are the experiences of others in a company with a dedicated QA team? Where should the division of work be drawn?

Clarification: I meant QA as a validation and verification team. Devs should not be doing the validation (customer-focused testing), but where is the verification (functional testing) division point?

like image 837
Joe Schneider Avatar asked Aug 18 '08 00:08

Joe Schneider


People also ask

Should QA be a separate team?

QA is not a separate team, so its efficiency can be negatively impacted by delays in development, changes to product features, etc. Since QAs are tightly bound with a module, the verification of that module can become monotonous. This might impact performance of long-term projects.

What is the difference between QA and Dev?

The primary distinction between dev and QA is state of mind. While developers write pieces of code that later become features in the application, QA is expected to understand how real users think, engage customers to learn business scenarios, and confirm that the application satisfies customer needs.

How should testers and developers work together?

Testers and developers should jointly emphasize a test-first approach. Testing will inform and benefit construction the most when testing is present early in the development process. The clearest manifestation of this is the test-first approach.

What is the hierarchy in testing team?

Senior Software Tester / Senior QA Engineer. Test Architect. QA Lead / Test Lead. QA Manager / Test Manager.


1 Answers

It's the difference between "black box" testing (where you know what the code is supposed to do, but not how it works), and "white box" testing (where knowing how it works drives how you test it). "Black box" testing is what most people think of when you mention Quality Assurance.

I work for a company where the QA team are also software developers. (That narrows the field a lot if you care to guess the company.) I know Joel's opinion, and my experience leads me to partially disagree: for the same reason that a "white hat" hacker is more effective finding security holes, certain kinds of errors are more effectively found by white box testers who know how to write code (and therefore what the common mistakes are - for example, resource management issues like memory leaks).

Also, since QA-oriented developers are part of the process from the initial design phase, they can theoretically help to drive higher-quality code throughout the process. Ideally, for each developer working on the project with a mental focus on functionality, you have an opposing developer with a mental focus on breaking the code (and thus making it better).

Seen in that light, it's less a matter of using developers for testers than it is kind of disconnected pair-programming where one developer has an emphasis on controlling quality.

On the other hand, a lot of testing (such as basic UI functionality) frankly doesn't need that kind of skill. That's where Joel has a point.

For many businesses, I could see a system where programming teams trade off code review and testing duties for each others' code. Members of the Business Logic team, for example, could spend an occasional tour testing and reviewing code for the UI team, and vice-versa. That way you're not "wasting" developer talent on full-time testing, but you are gaining the advantages of exposing the code to (hopefully) expert scrutiny and punishment. Then, a more traditional QA team can take up the "black box" testing.

like image 147
Wing Avatar answered Oct 01 '22 11:10

Wing