Conceito: O Ciclo de Vida do Teste
Esta diretriz descreve como a Disciplina de Teste se ajusta ao ciclo de vida do RUP.
Relacionamentos
Descrição Principal

O software é refinado por meio de iterações no ciclo de vida de desenvolvimento de software do RUP. O ciclo de vida do teste se beneficia de seguir uma abordagem iterativa equivalente neste ambiente de processo. Em cada iteração, a equipe de desenvolvimento de software produz uma ou mais construções, com cada construção sendo uma potencial sugestão para teste.

O foco e os objetivos da equipe de desenvolvimento diferem de uma iteração para outra. Portanto, os membros da equipe de teste devem estruturar seus esforços de teste apropriadamente. Sugerimos manter a quantidade do planejamento e design de teste detalhado e direto em um mínimo e, onde precisar fazer isso, tentar produzir este trabalho o mais próximo possível da hora em que ele será utilizado. Também recomendamos tratar do desenvolvimento de teste detalhado e direto não mais cedo que uma iteração adiantada.

Inclusões, refinamentos e exclusões são feitos nos testes implementados e executados para cada construção. Alguns desses testes são retidos e acumulados em um conteúdo de testes, que são utilizados para regressão ao testar construções subseqüentes utilizadas em cada ciclo de teste futuro. Essa abordagem retrabalha e revisa os testes durante todo o processo, assim como o software em si é revisado. Não há nenhuma especificação de software congelada e nem testes congelados. A figura a seguir ilustra como os testes evoluem ao longo do tempo.

Diagrama de Componentes de Iteração e Teste

Nesta abordagem iterativa, combinada com o uso de arquiteturas de componentes, é necessário considerar o teste para regressões na qualidade do produto em cada construção subseqüente. Quaisquer testes desenvolvidos na iteração X são potenciais sugestões para o teste de regressão na iteração X+1, na iteração X+2 e assim por diante. Quando houver possibilidade de repetição do mesmo teste várias vezes, convém considerar a automatização do teste. A automatização do teste fornece uma abordagem para o teste repetido de cenários de uso e libera a equipe de teste para explorar o teste em novas áreas funcionais.

Observe o ciclo de vida do teste sem considerar o restante do projeto. A figura a seguir mostra a divisão dos detalhes do trabalho para a disciplina Teste em uma determinada iteração.

Diagrama de Componentes de Iteração e Teste

Este ciclo de vida se alinha com o ciclo de iteração seguido pelo restante da equipe de desenvolvimento. A Iteração começa com uma investigação pela equipe de teste, que negocia com o Coordenador de Projetos e outros investidores em relação ao trabalho de teste mais útil que pode ser realizado na próxima iteração. A maioria dos membros da equipe de teste tem participação nesse esforço de trabalho.

Geralmente cada iteração contém pelo menos um ciclo de teste, conforme mostrado na próxima figura. É uma prática muito comum de várias construções serem produzidas para cada Iteração e de um ciclo de teste ser alinhado com cada construção. No entanto, em alguns casos, construções específicas não são testadas.

Com o principal esforço de teste em curso, um subconjunto dos membros da equipe pode estar investigando novas técnicas de teste. Esse esforço tenta provar que as técnicas funcionam para que a equipe possa contar com elas, especialmente em iterações subseqüentes.

Diagrama de Iteração ao Longo do Tempo

O ciclo de vida do teste faz parte do ciclo de vida do software; eles devem ser iniciados em um período de tempo equivalente. O processo de design e desenvolvimento de testes pode ser tão complexo quanto o processo de desenvolvimento do software em si. Se os testes não forem iniciados juntamente com os primeiros releases executáveis do software, o esforço de teste retardará a descoberta de muitos problemas no ciclo de desenvolvimento. Em geral, isso resulta em um longo período de correção de erros após a programação de desenvolvimento, acabando com as metas e as vantagens do desenvolvimento iterativo.

Embora as tarefas de planejamento e definição de teste com início antecipado possam expor falhas ou imperfeições no trabalho de especificação inicial, é recomendável escolher o trabalho de teste com cuidado e antecedência. Além da possibilidade de retrabalho já mencionado, a equipe de teste precisa ter cuidado para manter sua função como orientadora de qualidade imparcial e não se desviar dos requisitos e das tarefas de design iniciais, atuando como "guardiã da qualidade". Por sua própria natureza, as tentativas antecipadas da equipe do projeto de compreender os espaços de problema e solução falharão. Criar demandas insensatas sobre a qualidade desse trabalho inicial põe em risco a alienação da equipe de teste em relação ao restante do grupo de desenvolvimento.

Os problemas localizados durante uma iteração podem ser resolvidos na mesma iteração ou adiados para a próxima, uma decisão que fica, em última instância, a critério da função Coordenador de Projeto. Uma das principais tarefas da equipe de teste e dos coordenadores de projeto consiste em medir a abrangência da iteração, verificando se os objetivos descritos no Plano de Iteração foram alcançados. Há a "descoberta contínua de requisitos" de uma iteração para outra. É algo que você precisa estar ciente e preparado para gerenciar.

Como os testes serão executados depende de vários fatores:

  • o domínio do aplicativo
  • o orçamento
  • a política da empresa
  • a tolerância de risco
  • a equipe

Quanto você deve investir em teste depende de como você avalia qualidade e tolera riscos em seu ambiente.