Você está na página 1de 11

Testes Ágeis

Entenda o que são e para


que servem

https://www.gp4us.com.br contato@gp4us.com.br

https://www.facebook.com/gp4us https://www.twitter.com/gp4us

1
Sumário

Testes Ágeis Entenda o que são e para que servem ........................................................................ 1


1. Introdução .......................................................................................................................................... 3
2. Testes Ágeis........................................................................................................................................ 3
2.1. Testar durante o desenvolvimento, mais que testar somente ao final ......................... 5
2.2. Trabalhar a prevenção de defeitos, mais que procurar defeitos .................................. 5
2.3. Testar entendimentos, mais que checar funcionalidades ............................................... 5
2.4. Construir o melhor sistema, mais que quebrar o sistema ................................................ 6
2.5. Time responsável pela qualidade, mais que responsabilidade exclusiva dos
analistas de testes .................................................................................................................................... 6
3. Checklist para testes de software ............................................................................................... 7
3.1. Defina a estratégia ...................................................................................................................... 7
3.2. O que não fazer é uma boa prática ...................................................................................... 7
3.3. Automatize o mais cedo possível ........................................................................................... 8
3.4. Código de teste é tão importante quanto código de produção .................................. 8
3.5. Seja consistente e confiável ..................................................................................................... 8
3.6. Faça testes independentes ....................................................................................................... 9
3.7. Mantenha seu valor por toda a vida do produto ............................................................... 9
3.8. Documentação eficáz ................................................................................................................ 9
3.9. Priorize funcionalidades que têm maior uso ........................................................................ 9
3.10. Antecipe os testes .................................................................................................................. 10
3.11. Verifique testes que não quebram há muito tempo.................................................... 10
4. Automação de tarefas ................................................................................................................. 11
5. Conclusão ........................................................................................................................................ 11

2
1. Introdução

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.

2. 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/release 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.

3
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.

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

2.1. Testar durante o desenvolvimento, mais que testar somente ao


final

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

O time deve pensar junto 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.

2.2. 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.

2.3. 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.

5
2.4. 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?

2.5. 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

6
entregar o melhor software com o menor prazo e o menor custo possíveis.
3. 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.

3.1. 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.

3.2. 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,

7
pode fazer com que o sucesso da automação de testes não seja alcançado.
3.3. 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 riscos.

E todos os testes executados em todas as fases anteriores do desenvolvimento


precisam ser automatizados.

3.4. 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!

3.5. 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!

8
3.6. 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!

3.7. 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.

3.8. 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).

3.9. Priorize funcionalidades que têm maior uso

Tenha foco na cobertura de testes para as funcionalidades que mudam com maior

9
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.

3.10. 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.

3.11. 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.
10
4. 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.

5. 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.

11

Você também pode gostar