Equipe de teste separada? Então possivelmente você tem um problema
Testar é uma responsabilidade da equipe de testes, certo? Errado! A responsabilidade do teste é do desenvolvedor, pois o código é dele. Ele deve ser o responsável por garantir que o cliente receberá um produto com a menor quantidade de falhas possível. Se na sua empresa você tem uma equipe de testes separada, “responsável” por testar as suas aplicações, então eu digo que você tem problema nas mãos. Vou explicar o problema, funciona assim:
Desenvolvedores
Como existe uma equipe dedicada para testar as aplicações, o desenvolvedor acaba relaxando nos testes que ele deveria implementar, e passa a responsabilidade do teste para aquela equipe, com o seguinte pensamento: “Ok, ok, vou testar aqui mais ou menos aqui porque o teste pra valer é com o pessoal da equipe de testes… Se eles não pegarem, o cliente também não pega. E se o cliente pegar, bem, foram eles que deixaram passar…”
Equipe de testes
A equipe de teste, que certamente não deve usar testes automatizados, executa os testes conforme o humor da equipe, ou seja, um dia pegam pesado, no outro a paciência não está tão grande e o teste sai mais “fraquinho”. O ponto aqui é que os testes acabam nunca sendo repetidos da mesma maneira, e isso é muito ruim porque acaba passando uma falsa sensação de dever cumprido para a equipe e de segurança para o resto da empresa.
Jogo de empurra-empurra
Além do comportamento mostrado anteriormente pelas duas equipes, é quase certo que existirá uma concorrência entre as equipes, sempre com o intuito de culpar o outro. Se um bug é pego em produção e o cliente reclama, a equipe de desenvolvimento argumenta que a culpa é da equipe de testes que deixou o erro passar. Já a equipe de teste rotula todos os desenvolvedores de incompetentes, porque sempre enviam uma versão da aplicação cheia de erros, e dos mais básicos possíveis.
Na verdade as duas equipes deveriam estar trabalhando juntas, e quando digo juntas quero dizer lado a lado. Os analistas de teste devem sentar com os programadores para ajudar a pensar os testes que devem ser implementados. Só assim, com atenção e foco dobrados é possível chegar a uma quantidade mínima de erros.
A responsabilidade é sua
Depois do que falei acima, muita gente vai dizer o seguinte: “Ah, mas na minha empresa é assim mesmo, as equipes são separadas e a gerência entende que assim é melhor… blá, blá, blá“. Faça um favor para você mesmo, tome a responsabilidade de criar os testes para você, como se não existisse outra maneira de fazer software (na verdade essa é a única que funciona a longo prazo). Não espere que o seu gerente, o líder de equipe ou seja lá quem está acima de você peça para você implementar os testes. Inclua sempre nas suas estimativas o tempo necessário para escrever os seus testes, organizar o seu código, deixar tudo limpinho.
Lembre-se, o código é seu, a responsabilidade é sua!
Gostou ou não gostou? Ah, não concorda não? Então fala aí! Quero ouvir :-)

Felipe Munhoz Said,
October 26, 2010 @ 23:41
Ismael, estou começando com os testes automatizados agora, mas durante esse período que não testei pude testemunhar essa rotina que você descreveu. Não tenho mais dúvidas que escrever testes é a única forma que funciona a longo prazo. Ótimo post!
Renato Borges Said,
November 2, 2010 @ 00:03
Ismael,
Acredito que o post tem certo fundamento, mas nada que funcione em todos as empresas. Uma boa solução começa com a documentação. Ela sendo bem feita, os testes poderão ser escritos de maneira mais abrangente, favorecendo tanto os desenvolvedores quanto a equipe de teste. A questão é que muitos acreditam que documentação gera custo desnecessário ao projeto e acabam deixando de lado.
Bem, é isso. Ótimo post!
Forte abraço!
Luís Custódio Said,
February 28, 2011 @ 10:28
@Renato, sou defensor que testes unitários com claros e bem elaborados geram a documentação necessária. “Gostaria de ver o comportamento do sistema? Pois bem, leia os testes unitários.”. Ruby mesmo, usa essa potencialidade ao máximo.
Aqui na empresa a documentação está alinhada a alta cobertura de código + bugtracker bem integrado.