Nos últimos um ano, conduzi minha equipe para o modo de desenvolvimento release-release-release-freqüentemente (AKA: Desenvolvimento Rápido de Aplicativos, não Agile). Para obter mais informações sobre a maneira pela qual fechamos a compilação, consulte minha resposta aqui: Maneiras simples de melhorar a qualidade da versão no ambiente RAD
Quando adotamos o RAD, as pessoas eram bastante independentes e estavam fazendo testes de unidade primeiro; os testes integrados aconteceram muito mais tarde no processo. Foi um processo natural para eles sem muita aplicação formal. Agora a situação é bem diferente:
Toda a plataforma está bem integrada com compilações / lançamentos estabelecidos, trabalhando no lado do cliente sem pontos de acesso.
Novos requisitos de funcionalidade continuam chegando e nós os construímos gradualmente à medida que avançamos.
A dinâmica geral do sistema é muito importante porque, embora grupos de desenvolvimento independentes possam estar seguindo os processos corretamente, surgiram grandes falhas devido a circunstâncias complicadas e não óbvias.
Muitas partes do sistema envolvem novos algoritmos e dados de pesquisa, portanto os desafios (e, portanto, o mecanismo de teste) nem sempre são previstos corretamente, como o teste de recursos em software bem definido.
Recentemente, eu estava tentando obter uma melhor visão geral para ver se precisamos melhorar o processo. Quando me sentei com minha equipe, muitos deles hesitaram: "Não fazemos mais testes de unidade!" enquanto outros pensavam que não deveríamos começar agora, porque nunca será eficaz.
Os testes de unidade são úteis em um sistema relativamente maduro? Deveríamos, pelo menos, pesar o escopo do teste, dependendo da maturidade das unidades? Os testes de unidade desacelerarão o ritmo do desenvolvimento? É necessário avaliar o teste de unidade de uma maneira diferente?
Quais são as melhores práticas de teste para uma plataforma madura em um ambiente de lançamento antecipado e lançamento frequente?