Primeiramente, para entender Agile Testing temos que dar uma olhada no Manifesto Ágil. Em um grande resumo, o manifesto coloca que temos entregas de valor em um curto espaço de tempo.
Muitas práticas são utilizadas por um time ágil referente a teste. Programadores utilizam TDD (Test Driven Development) para desenvolver código com uma maior qualidade. Com ele, os programadores escrevem testes para um pequeno pedaço de uma funcionalidade no ciclo do TDD (falha na primeira vez, é refatorado até possuir o comportamento esperado. Sempre que é alterado ou melhorado, passa por esse processo). Essa prática não é somente usada exclusivamente por equipes ágeis, mas como uma forma inteligente de pensar no design de software e agir de forma a prevenir os defeitos futuros.
Mas TDD não é teste. É uma maneira que temos de pensar no design do software e garantir que este, se alterado, continuará a funcionar. Se alguma inconsistência for encontrada frente a alguma modificação, facilmente com um conjunto de testes que asseguram o comportamento do software, podemos detectar e alterar/refatorar o ponto de inconsistência.
Alguns acham que TDD é aplicar Agile Testing, mas ele é muito mais que isso….
Times
Dentro de uma equipe ágil possuímos, basicamente, dois times:
- Time do Cliente: todos que estão do lado do negócio no projeto (product owner, business experts, business analyts). Este time escreve histórias e funcionalidades que o time de desenvolvimento entrega.
- Time de Desenvolvimento: todos que entregam código são parte integrante deste time, e o papel de cada um pode ser misto ou variado. Eles transformam todas as histórias do time do cliente em software.
Esses dois times trabalham próximos uma grande parte do tempo e se transformam em um único time com um objetivo em comum: entregar valor para a organização.
E o testador?
Falando do conceito de time para o Time do Cliente, os testadores são membros parciais do negócio, ajudando-os a descobrir requisitos e exemplos, e também ajudando o time a expressar requisitos como testes. Testadores também são parte do Time de Desenvolvimento advogando por qualidade a favor do cliente e ajudando o time a entregar o máximo de valor ao negócio.
Muitos times não possuem membros se intitulando testadores. Entretanto, o time precisa de alguém que ajude o Time do Cliente a escrever histórias e características, a escrever testes para elas, garantir que elas estão atendendo às necessidades e automatizar os testes de regressão (para termos um feedback rápido e contínuo sobre a qualidade/saúde do software).
O que é então Agile Testing?
Agile Testing é um conjunto de práticas, seguindo o Manifesto Ágil, que incorpora todas as técnicas de teste comumente utilizadas por profissionais de teste, tendo um grande foco em automação. A principal função é criticar o produto, ou seja, constantemente garantir que o que está sendo especificado e desenvolvido realmente atende às necessidades do cliente e irá entregar valor ao negócio.
O que é um Testador Ágil?
Um Testador Ágil é aquele profissional que abraça as mudanças, colabora com pessoas técnicas e de negócio e entende o conceito de usar testes para documentar requisitos e guiar o desenvolvimento. Ele tende a ter bons conhecimentos técnicos para colaborar com o time de desenvolvimento a automatizar os testes e também para explorar o sistema a procura de comportamentos, testes e problemas.
Ser um testador ágil está ligado muito mais a atitude e comportamento do que a conhecimento técnico. Ele olha para o produto como um todo, com uma visão de usuário e/ou cliente, que é o fator mais importante. Assim, ele consegue tanto interrogar o Time do Cliente quanto a requisitos e funcionalidades como guiar o desenvolvimento, por meio de testes, exemplos e ferramentas, para que o Time de Desenvolvimento tenha também a visão do valor que cada um desses itens tem para o produto final.