TDD e ATDD

conteúdo
  1. Quality Assurance equilibrada
  2. automação de testes
  3. TDD e ATDD
  4. conclusão
  5. ler em um lado

Com ferramentas de análise estática de código como FindBugs muitas vezes, FXCop ou CheckStyle ser usado para verificar o código contra falhas independente da aplicação. exceções descobertos nulos óbvio referências de ponteiro e fragmentos de código não utilizado pode assim encontrar específica. Em geral, no entanto, não deve ser limitado a análise estática de código, mas complementar as métricas por programação em pares. Esta partilha de conhecimentos também é muito apoia a equipe e Coletivo Código propriedade permite. Se qualquer programador na equipe é capaz de mudar qualquer outro código, criando uma nova forma de trabalhar, porque nenhum código Peters já não vão mais de uma vez, mas é o código de todos os membros da equipe.

Tal como acontece com todas as métricas, no entanto, ter em mente que não se trata de medir o desempenho individual dos membros da equipe ou usar, por exemplo, métricas de cobertura como um alvo para a equipe de desenvolvimento de software. Cem Kaner e Walter P. Bond chumbo "Engenharia de Software Metrics - O que eles medir e como sabemos?" [3] de que tal comportamento à adulteração e outsmarting os resultados de métricas. Por exemplo, o teste de unidade pode criar uma forma orientada de modo que a cobertura percentual é alcançado. Eles são, então, geralmente fortemente ligado à lógica da aplicação, por isso é difícil em retrospecto para alterar o código sem quebrar o teste. Em vez disso, os autores propõem a investir no treinamento de desenvolvedores e trabalhar com eles diretamente para o código.

O suficiente não é suficiente

Uma vez que uma rede de testes automatizados está posicionada, juntamente com a integração contínua, que é apenas um pequeno passo para (TDD) desenvolvimento orientado a testes. O ciclo de desenvolvimento começa com um pequeno teste, falhando: Executa um teste não apenas como muito código de produção deve ser escrito para que ele possa ser completa com sucesso. Subsequentemente, são redundância no código para reduzir por refatoramento (Fig. 3). A maioria das equipes não percebem é que este também está em automação de testes de desenvolvimento de software onde o código de teste é limpo, como é caso contrário, rapidamente enfrentar o problema de maus testes sustentáveis.

Com o desenvolvimento orientado a testes no passível de manutenção de longo prazo, testado código a ser criado (Fig. 3).Com o desenvolvimento orientado a testes no passível de manutenção de longo prazo, testado código a ser criado (Fig. 3).


Esta abordagem inicialmente parece dogmático, mas para aprender-Test Driven Development, ele deliberadamente escolheu este caminho. Quando a segurança ocorre depois de algum tempo em determinadas áreas também pode tentar implementar em incrementos maiores. No entanto, deve ficar claro que muito grande um passo implica o risco de se atolar, eo teste não virá rapidamente voltar a funcionar. Se isso ocorrer, o problema deve ser dividido em unidades menores e ser resolvidos dessa maneira.

Especificação com exemplos

Uma nova tendência no desenvolvimento de métodos vai atualmente para o desenvolvimento Acceptancetest-driven (ATDD) e Behavior Driven Development (BDD). Na sua essência, BDD é a associação de TDD, ATDD, Domain-Driven Design, Fora-In Desenvolvimento e uso de uma linguagem ubíqua como oficinas de especificação criados por instrumentos. Na prática ATDD infelizmente, é muitas vezes confundida com BDD.

ATDD está concebido para ajudar as funções de certas para desenvolver (Fig. 4).ATDD está concebido para ajudar as funções de certas para desenvolver (Fig. 4).

Em ATDD (ver [4].) É uma medida para implementar requisitos correctamente quanto possível no código (fig. 4). O trabalho começa cedo, mesmo quando as necessidades reais são definidos. Representantes do desenvolvimento e da equipe de teste virá junto com o cliente e identificar critérios de aceitação para futuras funções (Fig. 5). Aqui, testadores e programadores ([5] Ver.) Um entendimento comum das necessidades do cliente, com uma sala suficientemente grande para diferentes decisões de design permanece em aberto. Então, programadores e testadores podem encontrar uma solução para o problema do cliente, com o qual ele pode ser satisfeita a longo prazo.

A equipe inteira de clientes, programadores e testadores deve ser um entendimento comum das funções resultantes têm (Fig. 5).A equipe inteira de clientes, programadores e testadores deve ser um entendimento comum das funções resultantes têm (Fig. 5).


Com base nos critérios de aceitação acima, a equipe de desenvolvimento trabalhando inicialmente em exemplos descritivos que antes de se mudar a função, no entanto, continuar a aperfeiçoar. Exemplos empurrá-lo de forma sucinta e com precisão o que é para ser conseguido através das funções. Eles se movem em um nível com os requisitos de negócio e deve ter nada a ver com detalhes de implementação, tais como a posição dos elementos GUI.

Em paralelo com a implementação das funções da equipe então trabalha para automatizar os exemplos. Alguns grupos de desenvolvedores são ainda capazes de integrar a lógica de negócios dos casos de negócios com base em seu código de domínio. A literatura fala de fora para dentro-de desenvolvimento: O desenvolvimento é conduzido de fora para dentro. Neste caso, apenas o código de domínio e aplicação lógica tanto é projetado e escrito como é absolutamente necessário. Na prática, existem algumas equipes que atingiram um tal nível de maturidade. As vantagens desta abordagem, no entanto, não devem ser demitidos fora de mão: Pode ser antes do show desenvolvimento que a aplicação proposta irá executar o que eles querem, então a flexibilidade para mudanças nas exigências a longo prazo.

TDD Total e ATDD formar uma simbiose com que um alto grau pode ser alcançado em automação de testes. Assim, é possível por uma tampa ATDD pedido perto de 100 por cento, enquanto que com o TDD 100 por cento de cobertura de código é possível. Combinada TDD garante, assim, que o código foi correcta, enquanto ATDD assegura que ele é o código correcto.