O desenvolvedor deve fazer o teste inicial para que possamos saber que a peça que codificamos funcionaria da maneira esperada, de acordo com os requisitos que temos. Então, nós fizemos o teste normal, assim como escrevemos Testes de Unidade para o código que escrevemos.
O próximo passo é o trabalho dos QAs para descobrir o que os desenvolvedores não vêem quando escrevemos o código. Um desenvolvedor pensa em um nível mais alto, mas o usuário pode não pensar no mesmo nível. Quando o desenvolvedor está testando sua parte e tem que inserir algum texto em uma caixa de texto, ele pode sempre digitar um pensamento completo que o usuário também faria. Pode ser que o usuário também faça isso, mas, aleatoriamente, quando ele insere um caractere especial como% & $ ^ no texto e interrompe o aplicativo, ele não fica bem no usuário final. Um desenvolvedor não pode e não vai pensar em todas as possibilidades que poderiam acontecer porque ele não é treinado para pensar dessa maneira. Quando se trata de um QA (testador), eles sempre pensam sobre o que o usuário pode fazer para quebrar esse aplicativo e tentar todas as coisas estúpidas no livro, e não os usuários são estúpidos, mas não devemos deixar nada ao acaso.
Agora também temos que entender que geralmente há mais de uma peça feita ao mesmo tempo e ambas irão para a produção. O desenvolvedor poderia testar apenas sua parte e pensar que está funcionando bem, mas o teste geral de regressão precisa ser feito para todas as partes que estão sendo enviadas, bem como para descobrir que a combinação de duas partes diferentes poderia quebrar o aplicativo e não não parece bom também. Também temos que considerar os cenários de teste de carga e outras coisas que os testadores estão mais familiarizados.
Finalmente, temos que passar pelo Teste de Aceitação do Usuário (UAT - User Acceptance Test) para ver se a peça que fizemos é o que é esperado. Em geral, embora os requisitos passem pelos BAs, a pessoa final pode não saber exatamente como é que ela se parece e talvez pense que não é o que eles esperavam, ou talvez queira adicionar outra coisa para parecer melhor ou, por algum motivo, peça inteira como eles acham que a peça não iria com a funcionalidade já disponível.
Como explicado acima, isso é muito importante e não pode ser feito apenas pelo desenvolvedor e é absolutamente necessário para o aplicativo funcionar bem. A gerência pode dizer que esta é uma abordagem conservadora, mas é a melhor abordagem. Podemos fazer alguns ajustes ao que foi dito acima, mas não podemos evitar como um todo.