Faz sentido falar sobre "desenvolvimento ágil" ou afirmar que você está aplicando uma "metodologia ágil" se a base de código em que você está trabalhando tem 0% de cobertura de teste de unidade? (E você, como equipe, não está fazendo nada a respeito).
Para deixar claro: para mim, não faz sentido. Na minha experiência pessoal, descobri que os testes de unidade são a única ferramenta que permite que você seja realmente "ágil" (ou seja, responda a mudanças, aprimore seu design, compartilhe conhecimento, etc ...) e o TDD é a única prática que leva você até lá .
Talvez haja outras maneiras, mas ainda não consigo ver como elas podem funcionar.
unit-testing
agile
tdd
Sapo Malvado
fonte
fonte
Respostas:
Para ser pedante, nada no Agile Manifesto ou no Scrum Guide faz qualquer referência a práticas técnicas, como testes de unidade ou TDD. Portanto, sim, em teoria, você pode entregar cedo e com frequência, com foco na colaboração e no valor sem eles e se chamar Agile; pode até ter agilidade .
Na prática, porém, é quase impossível fornecer valor ( em produção ) de forma consistente a cada poucas semanas sem um bom conjunto de testes. Isso inclui testes de integração e também testes de unidade. Os testes de unidade só vão tão longe. Há uma razão para ser a pirâmide e não um retângulo, afinal.
Sem os testes como rede de segurança, você introduzirá muitos erros de regressão em cada versão ou ficará com medo de refatorar. Ambos terão um grande impacto na sua capacidade de continuar em um ritmo sustentável . Se você não conseguir manter o ritmo ou mudar de rumo (reprojeto) quando necessário, não terá agilidade. Afinal, a agilidade é o objetivo que estamos buscando.
fonte
O manifesto ágil simplesmente declara:
Indivíduos e interações sobre processos e ferramentas
Software de trabalho sobre documentação abrangente
Colaboração do cliente sobre negociação de contrato
Respondendo a mudanças após seguir um plano
Nenhuma menção de testes de unidade lá. Mesmo os 12 princípios não mencionam testes.
Portanto, tecnicamente, é possível ser uma equipe ágil sem escrever testes de unidade. Na prática, é realmente difícil ver como uma equipe pode manter o software em funcionamento em um ambiente ágil sem testes para ajudá-los a fazer alterações constantes.
fonte
Mesmo que não haja uma palavra direta declarando sobre teste de unidade ou TDD ou qualquer tipo de teste no manifesto ágil, como outros já responderam aqui, acredito que um bom Scrum Master ou Desenvolvedor seria capaz de discernir uma das declarações no manifesto.
Software de trabalho sobre documentação abrangente.
Como alguém saberia se o software está funcionando? O manifesto não precisa declarar explicitamente o termo teste. É sucinto.
O teste de unidade (no contexto do tópico) tornará sua fase de codificação lenta no estágio anterior, mas valerá a pena à medida que você progride, tornando o desenvolvimento muito mais rápido. Ele oferece controle fino dos testes no nível do código, além de tornar o design escalável, dando a você a confiança de que seu software está funcionando e pode lidar facilmente com a regressão; para qual tornaria seu desenvolvimento ágil.
fonte
Isso faz absolutamente sentido. Agile não se refere a testes, como já foram mencionados por outros, mas para responder especificamente à sua pergunta:
Não, você não precisa de nenhum teste de unidade.
Você pode executar um processo ágil apenas com teste de integração. Você pode executar um teste de integração automatizado todas as noites, por exemplo, e corrigir erros encontrados no dia seguinte. Você pode ter um testador manual executando testes de integração continuamente, se desejar. Independentemente do sistema, o teste de unidade é totalmente opcional.
Você pode achar que o teste de unidade o ajuda a desenvolver, e é justo o suficiente para isso, mas há muitas coisas que podem ajudar no desenvolvimento que você pode não ter.
Você precisa de alguma forma de teste, mesmo que sejam os antigos 'testadores beta do cliente'. Se o seu cliente estiver muito envolvido no processo e não se importar em encontrar bugs, isso poderá funcionar - pois eles tendem a encontrar bugs que ninguém mais pensou que fossem bugs!
fonte
Não é necessário. O teste é ótimo quando você tem pessoas que realmente sabem como usá-lo. Quando você não o faz, não apenas não é necessário, mas também se torna um passivo. Eu diria que existem muitos programadores que não são muito hábeis nisso.
Fico feliz que você tenha reconhecido em sua pergunta que ser ágil é como você realmente lança o software em vez de seguir alguma metodologia. O Manifesto Ágil é uma boa referência, mas não é o guia definitivo. O Agile existia antes dele. Existem maneiras de desenvolver software para ser "mais ágil", mas combinações diferentes podem ser usadas em vários projetos.
Se você estiver lançando um novo software em um ritmo aceitável para o cliente, provavelmente estará ágil. Eu também incluiria não ter muita repercussão e reclamar de alterações de recursos pelos desenvolvedores. Consertar uma coisa apenas para quebrar outra também não é o ideal. Quando os usuários estão com várias versões atrasadas na atualização, você provavelmente não é muito ágil, testando ou não.
fonte
Eu gostaria de contestar (outras respostas) que o manifesto Agile afirma claramente algo sobre isso, a saber:
Eu realmente gosto da definição de excelência técnica do LeSS e inclui testes de unidade e TDD. Agora você pode argumentar que pode não precisar de testes de unidade e / ou TDD para conseguir isso, mas é a maneira mais comum e provavelmente recomendada.
Se você pode impedir que seu produto resista a mudanças de outra maneira, você pode estar no caminho certo, mas:
O Scrum não possui práticas técnicas, mas Jeff disse o seguinte sobre isso:
Eu esperaria que as equipes Scrum sem práticas técnicas, eventualmente, usando retrospectivas, apresentassem uma prática semelhante. Você quer ser hiper produtivo também, não é?
O modelo de fluência ágil o menciona no nível de duas estrelas:
Se você segmentar apenas o primeiro nível de fluência ágil, poderá ignorar a prática, mas qualquer produto maior e com maior duração deve tentar atingir um nível de duas estrelas.
Portanto, o consenso geral é que sim, sem boas práticas de teste de unidade, código limpo e refatoração, atualmente não é possível ser verdadeiramente ágil. Isso pode mudar no futuro, à medida que novas práticas técnicas surgirem.
Qual você acha que a resposta seria se perguntássemos a alguns signatários do manifesto como Robert C. Martin, Martin Fowler ou Kent Beck? Talvez eles digam que depende, mas geralmente é algo que você deve fazer.
fonte