by a tester. Quality assurance is done by the QA Analyst and she is responsible for the prevention of defects in to the system.
One of the key success factors for agile testing is the whole team approach. This means the whole team is responsible for quality and do their part. I am ok with specialists performing specific tasks like system level testing or the actual end users for UAT. That makes sense. However, your last sentence made me a little uneasy as I firmly disagree that one person is responsible for prevention of defects. If the whole team doesn't take responsibility, and work together, there is no way a single person can make that happen.
When you mention pigeon holing a role, do you mean that developers could test their own code? If so, I would say that as developer, I think it would be a very bad idea to rely solely on that role to execute the test cases, especially when it is their own code. This is simply because the developer role is too close to the code to see a bigger picture and come up with sufficient negative test cases and scenarios.
That is not what I meant Bob. I was referring to the separation of tester vs. QA Analyst. I think people grow faster when they are allowed to stretch and try new things. You get different perspectives. I do think that testers can learn lots from developers, and vice versa so we should collaborate to get the best possible coverage. I don't think developers should be the only tester of their own code except at the unit test level. However, that doesn't mean they can't help with testing when it is needed.
Let's talk more about the separation of test activities and your point about feedback. I agree that the development team should get the shortest feedback loop possible. However, I disagree that you need a blurred role of Test/QA Analyst to achieve this goal. The QA Analyst should be responsible for guiding the team to do better testing, to focus on the problem areas, and to work with the BA and PO for better acceptance criteria. It is not to spend time coming up with a huge number of test cases that cover the code from end-to-end. This is a poor use of time as the ROI is minimal and is only viable in an automation sense. End-to-end testing for manually is time consuming and prone to human error. It would be a disservice to the team if the QA Analyst spend his/her time working on test cases the entire time and not focusing on test planning, metrics collection and interpretation, and acceptance criteria definition.
I think here is our fundamental difference of opinions. In agile teams, the tester collaborates very closely with the customer and developers throughout the iteration. They are involved at the beginning to help uncover hidden assumptions and collaborate with the Product Owner to define acceptance tests which guide development. However, as the iteration begins, they do not hand over the work to someone else. They continue working on the story expanding tests and automating them at the API level to give to the developers. Once the coding is done and all the acceptance tests pass, the tester is then able to perform exploratory testing on the story. The Product Owner can do final acceptance. I feel that you are advocating a hand-off, although that may not be what you are intending. I also think that our definition of the type of testing that