YES WE DO!!!
Not once I hear that when using Agile Development Methodologies you don’t need testers, “We are using Test Driven Development (TDD) that covers everything so why do we need testers for?”
It is true that when using the Test Driven Development (TDD) or regular unit tests the quality of the software is much better but it is definitely not instead of testers, unit testing is for testing units what about integration testing, system testing, black box, white box etc. all are not covered by unit tests.
Lets look at an example:
scenario: A log in scenario needs to have a user name and a password.
TDD or Unit Tests: Will check that when I pass credentials (User name and password) to a method that authenticate the credentials it will return true when the credentials are “good” and false when the credentials are incorrect.
Tester: Will test the input formatting in each of the fields, will check the boundaries of the fields, will check what appends when the log-in failed, will check what appends when the log-in success, will check the usability of the log-in screen, will check if a certain log-in credentials gives the right permissions in the application etc.
You see that the unit tests and the tester have a different scopes for what they test, the lists are incomplete and depends on the application under test but I hope I made it clear that the tester rule can’t be skipped no matter what methodology is being used.
The rule of the tester is changing when using Agile Development Methodologies, a change that requires a different approach.
In None Agile Development Methodologies the specification of the software is written before the code, the testers gets all the specifications, write the test plan and all the test cases, only than the tester receives the build and start to test.
In Agile Development Methodologies the specification of the software is written during the coding what makes the life of the tester a little different, the tester needs to react to changing requirements that evolves during the development.
In Agile Development Methodologies the tester is part of the development group and the time he have to test is the sprint/Iteration time, the tests that are done by the tester are most of the time relate to the part that is being developed in the sprint/Iteration.
What about Tests that relates to the complete product?
Depends on the project, the most likely situation is a tester in the development group tests the developed part of the system and later in the development process before the release to the customer there is a group of testers that does all the integration tests, system tests, performance tests etc.