Cadastre-se

Cadastre-se para acesAcesse conteúdos exclusivos que só usuários cadastrados no site tem acesso.

Fases de um projeto – As 5 etapas e suas características

O gerenciamento de um projeto vem acompanhado de grandes desafios e com o objetivo de minimizar tais desafios. Assim, projetos são normalmente divididos...
HomeProjetosAgilTestes de software ágeis - Como fazer?

Testes de software ágeis – Como fazer?

Hoje, com a consolidação das metodologias ágeis de desenvolvimento de software, muito tem se falado em testes ágeis ou testes para desenvolvimento ágil.Mas o que é teste ágil? Quais são seus benefícios e riscos? Vamos então esclarecer alguns pontos.

Testes ágeis nada mais são do que uma prática de teste de software que segue as regras do manifesto ágil, tratando o desenvolvimento de software como o cliente de testes.

Testes ágeis envolvem testes a partir da perspectiva do cliente, o mais cedo possível. E os primeiros testes com o código do software já disponível e estável o suficiente a partir de testes de nível de módulo / unidade.

Testes Ágeis

Desde que partes funcionais do software, aquelas que agregam valor ao cliente, são liberadas para uso, há também a necessidade de se realizar testes por diversas vezes. Muitas vezes isso é feito por meio de testes de regressão automatizados para minimizar a quantidade de trabalho manual.

Como a cada nova versão ou release do produto liberada, existem funcionalidades novas para serem testadas, e o que já foi liberado ao cliente, precisa ser testado novamente, fazer apenas um teste manual em desenvolvimento ágil provavelmente resultaria em um atraso grande na entrega ao cliente. 

Acarretando, ainda, riscos desnecessários, como por exemplo, não encontrar defeitos que podem ser pegos nos testes de regressão. Isso porque, na maioria das vezes, não seria possível testar todo o software manualmente antes de cada lançamento.

Mas testes ágeis são mais do que processos otimizados, automatizados ou técnicas de testes avançadas. Teste ágeis estão ligados diretamente a atitude da equipe do projeto em fazer bem feito, ao compromisso do time com qualidade e valor agregado que será entregue ao cliente e a pró-atividade de todos os envolvidos.

Não quer dizer que não serão executadas tarefas necessárias ou aplicação de técnicas de testes que vão efetivamente aumentar a qualidade do sistema. É o chamado mindset que ser alterado.

É o pensamento do time, em conjunto, unidos, que deverá estar voltado para um único objetivo: entregar valor ao cliente!

Uma proposta de manifesto de testes ágeis, que é nada mais, nada menos, que uma lista de princípios, foi elaborada por Sam Laing e é bem simples. A figura abaixo mostra de forma bem didática os princípios deste manifesto.

gp4us - Testes Ágeis

Os princípios do manifesto ágil de testes são, em tradução livre, os seguintes:

Testar durante o desenvolvimento, mais que testar somente ao final

Os testes ágeis devem começar logo no início do projeto.

O time de desenvolvimento deve pensar juntos quais testes deverão ser criados e como serão criados, quais as estratégias de teste serão adotadas, quais riscos deverão ser evitados ou mitigados.

Trabalhar a prevenção de defeitos, mais que procurar defeitos

Um bom design de solução, uma boa arquitetura, um desenvolvimento, vai fazer com que se tenha menos defeitos. Um dos fatores que podem fazer com que se tenha menos defeitos é um desenvolvimento lean, ou seja, um desenvolvimento sem desperdícios.

E o que seria sem desperdícios? Desenvolver somente o código estritamente necessário para atender ao que o cliente vai precisar ou que irá gerar valor para ele. E nada mais do que isso.

Quanto menos código, menos chance de se ter defeitos.

Testar entendimentos, mais que checar funcionalidades

O foco é validar se o que o time entendeu sobre a necessidade do cliente é realmente o que o cliente precisa. Talvez seja necessário ter algum protótipo ou uma pequena parte funcional do sistema para se validar a ideia do cliente.

E o cliente, dentro do possível, precisa participar junto com o time desta validação.

Construir o melhor sistema, mais que quebrar o sistema

Aqui entra o dilema do ótimo é inimigo do bom. Então, façamos o ótimo! Sejamos excelentes.

Façamos o melhor que pudermos. Se coloque no lugar do cliente. Você não gostaria de receber o melhor serviço possível, o melhor atendimento ou o melhor sistema?

Time responsável pela qualidade, mais que responsabilidade exclusiva dos analistas de testes

Por muito tempo escutei uma frase:

A equipe de qualidade é a única responsável pela qualidade do sistema.

Então quer dizer que se a equipe de desenvolvimento fizer um sistema ruim, que não entrega valor ao cliente, o culpado é o analista de teste? Com certeza, não! Os responsáveis pela qualidade do projeto são todos os membros do time, incluindo o cliente.

Sim, inclusive o cliente! Todos devem estar envolvidos em entregar a maior qualidade possível.

Do contrário, vamos ter retrabalho, desperdício de tempo, um jogo de “caça às bruxas” e o cliente não será atendido.

Vejam que não se falam de técnicas ou níveis de certificação. Se fala em entrega de valor agregado ao cliente, em comprometimento, em trabalhar como um time.

Mas isto não nos permite fazer as coisas sem processos, técnicas ou padrões.

Desenvolvimento de software com metodologias ágeis, consequentemente a realização dos testes, exige rigor, disciplina e técnicas apuradas, pois temos que entregar o melhor software com o menor prazo e o menor custo possíveis.

Checklist para testes de software

Sabemos que erros apresentam muitos prejuízos para usuários e empresas, por isso é tão importante a realização dos testes de software.

E para a realização deste processo com assertividade e objetividade listamos doze tarefas que devem ser levadas em conta.

Defina a estratégia

Um bom planejamento e uma boa estratégia de automação de testes ágeis pode definir o sucesso (ou não!) da implementação de testes automatizados.

Saber o que testar, como testar e quando testar, entender as características do sistema a ser testado (web service, api, aplicação web, mobile, legado, batch), e quais SGBDs deverão ser contemplados, são apenas alguns itens que devemos ter em mente durante o planejamento do projeto de testes automatizados.

Outro segredo é este:

Tratar a implantação de um processo de testes automatizados como um projeto e com todas as prerrogativas que um projeto precisa ter.

O que não fazer é uma boa prática

Para definir a estratégia é preciso avaliar o que já foi feito por você, ou por outras pessoas, e que deu errado.

Saiba que testes ágeis manuais não existem. Realizar muitos testes manuais sem um direcionamento correto, bem como ter muitos testes automatizados de interface de tela (Automated GUI Tests) e poucos testes de integração e unitários, pode fazer com que o sucesso da automação de testes não seja alcançado.

Automatize o mais cedo possível

Testes manuais tem que ser realizados sempre. Eles são um complemento da estratégia de automação de testes, porém precisam ser realizados de acordo com um plano, um direcionamento de prioridades ou através da gestão de riscos realizada no projeto.

E todos os testes executados em todas as fases anteriores do desenvolvimento precisam ser automatizados.

Código de teste é tão importante quanto código de produção

Os testes devem ser bem escritos e em grupos pequenos, no mesmo contexto.

Toda a equipe deve escrever a suíte de testes ágeis. Se a equipe de desenvolvimento do software for uma equipe integrada (dev+qa+cliente+analista de negócio e quem mais for importante para o software ser entregue), é importante que todos participem da automação dos testes.

Qualidade não é responsabilidade somente do time de QA. Qualidade é responsabilidade do time todo!

Seja consistente e confiável

A sua suíte de testes deve conquistar a confiança da sua equipe, do seu gerente e do cliente. Não acreditar na suíte de testes, ou seja, não confiar nos testes automatizados é sinal de desastre para o software.

Não pode haver dúvidas sobre o ambiente de testes.

No menor sinal de desconfiança algo precisa ser feito para que seja restabelecida em todo o time a certeza de que o processo de testes automatizados funciona. E bem!

Faça testes independentes

Um teste não pode influenciar o resultado de outro e o feedback, se o teste passou ou não, precisa ser rápido.

Invista em ter testes cada vez mais atômicos, independentes e rápidos de serem executados. Escalabilidade para execução dos testes também é muito importante. Rodar os testes em paralelo é essencial para o sucesso do projeto.

Não subestime a ansiedade humana por resultados rápidos e confiáveis!

Mantenha seu valor por toda a vida do produto

Obviamente que a aplicação irá mudar ao longo do tempo. As necessidades do cliente irão se modificar numa taxa de velocidade maior do que a nossa taxa de entrega de software funcionando para o cliente.

Mas existe um núcleo do sistema que sofrerá menos alterações.

Testes para este núcleo precisam ser duráveis, perenes e firmes, para garantir que o núcleo do sistema continue funcionando até que mude, e quando mudar, que o teste aponte o impacto da mudança.

Documentação eficáz

Testes servem como documentação, na verdade, são a melhor documentação que você vai ter! Documentação viva, especificação executável.

Testes devem informar a intenção de um desenvolvedor e refletir a necessidade do cliente (o que ele vai usar e como vai usar).

Priorize funcionalidades que têm maior uso

Tenha foco na cobertura de testes para as funcionalidades que mudam com maior frequência e têm maior utilização.

Faça testes para os erros encontrados em produção – você automaticamente estará testando o mais crítico.

Se tem erros é porque alguém usou, logo, podemos entender que se existe maior uso, há maior risco de encontrar erros. Aqui vale o Princípio de Pareto (ou princípio 80/20):  80% dos resultados estão relacionados a 20% dos nossos esforços

Erros em produção também é um indicativo forte de que os seus testes precisam ser ampliados.

Antecipe os testes

Não rode a suíte de testes somente antes de gerar a versão. Faça integração contínua, ou seja, a cada check in no fonte, execute os testes de forma automatizada. Não permita ter fonte no branch principal com teste quebrado.

Não se preocupe com a performance de execução de um teste, mas sim, com o paralelismo e concorrência.

Verifique testes que não quebram há muito tempo

Verifique com frequência se os testes estão quebrando, isto é, se erros são encontrados durante a execução.

Um sinal de que os testes precisam ser ampliados é quando param de encontrar erros (efeito pesticida). Outro sinal são os erros em produção. Você pode não estar testando o sistema certo (ou a versão correta).

Certifique-se sempre de estar com a configuração correta para executar os testes e garanta que irá para a produção do cliente somente o que foi testado.

Automação de tarefas

Investir em aumentar a automação de tarefas executadas manualmente, integrar ferramentas e extrair dados do processo de teste de forma automática deve ser uma atividade constante do time.

Executar tarefas repetidas de forma manual é um desperdício de tempo e dinheiro.

Invista em DevOps! Automatizar o seu fluxo de trabalho é garantia de sucesso e aumento de produtividade no dia-a-dia do time e fará com que você tenha dias mais tranquilos.

Conclusão

Logo, nem tudo são flores, e obviamente, temos que nos preocupar com os riscos de uma má implantação da automação de testes no processo ágil, que é crucial para o sucesso de um processo de desenvolvimento ágil de software.

Foque o seu processo de desenvolvimento de software em ter integração com o time de testes. Precisam ser um time só! E no seu processo de testes precisa estar claro que usar automação de testes não é uma opção.

É uma obrigação! Quanto mais cedo for feita a automação dos testes, melhor.

Testes unitários, testes de integração e testes de sistemas, devem ser automatizados, mas sempre com o foco sobre o que estará agregando mais valor ao cliente.

Este site utiliza cookies para melhorar a sua experiência de navegação. Ao continuar navegando, assumiremos que você consente com isso. Fique à vontade também para ler nossa Política de privacidade. Mais informação

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close