Agile

27 fev, 2017

Agile Testing: o que é?

Publicidade

No modelo tradicional de desenvolvimento de software, composto por fases bem definidas, o tester atuava apenas em sua fase específica. Ele recebia como entrada os artefatos da fase anterior, trabalhava “no seu quadrado” e gerava um artefato que seria direcionado a alguma outra fase. No caso de bugs encontrados, as evidências obtidas retornariam para o time de desenvolvimento por meio de ferramentas específicas para essa comunicação.

O tester tradicional tinha em seu mindset:

  • Procurar bugs;
  • Garantir o atendimento dos requisitos;
  • Resistência a mudanças;
  • Qualidade é responsabilidade do tester;
  • Trabalhar separado do time de desenvolvimento;
  • Teste é uma fase;
  • Teste é no final do desenvolvimento.

O desenvolvimento ágil de software mudou completamente o mindset do tester e a forma como esse profissional trabalha. Ao contrário de como o tester via o processo de desenvolvimento de um produto, de forma apartada e isolada, no contexto ágil o tester passa a ser parte do time de desenvolvimento e seu mindset se transforma. Agora ele:

  • Trabalha na prevenção de bugs;
  • Garante que as expectativas do cliente sejam claras;
  • Aceita novas ideias;
  • É parte de um time;
  • A qualidade é responsabilidade do time;
  • O teste é uma atividade do processo de desenvolvimento de software.

Toda essa mudança de postura e do trabalho desempenhado pelo profissional de testes está baseada na mudança de paradigma quanto ao desenvolvimento de software, que passou de um modelo em cascata ou Waterfall para o modelo Ágil. Este último é composto por princípios, que são condensados no Manifesto Ágil e descritos por meio de quatro valores:

  1. Indivíduos e a interação entre eles mais que processos e ferramentas
  2. Software em funcionamento mais que documentação abrangente
  3. Colaboração com o cliente mais que negociação de contratos
  4. Responder a mudanças mais que seguir um plano

Para o agile tester, seu trabalho e sua postura dentro de um time de desenvolvimento também são guiados por princípios ágeis. Vamos ver quais são eles:

1. Comunicação face-a-face

O método mais eficiente e eficaz de transmitir informações para o time e dentro de um time de desenvolvimento. Diferente do modelo tradicional, no qual o tester não tinha acesso ao time de desenvolvimento, no Ágil o tester é parte desse time, o coder está sentado ao lado e a comunicação basta ser face-a-face, eliminando a burocracia.

2. Feedback contínuo

Diz respeito à prática de testes automatizados, desde os testes unitários até os testes de interface, dentro da pirâmide de testes. Os testes automatizados proporcionam o feedback rápido (unitários e de serviço) e contínuo, sendo executados em um ambiente de Integração Contínua. Além disso, incluem a garantia de testes regressivos, que dá segurança na hora de fazer mudanças no software e passa confiança para o time de desenvolvimento em relação ao trabalho que está sendo desenvolvido.

3. Melhoria contínua

Buscar sempre trabalhar da melhor forma e entregar o melhor, em valor, para o cliente e para o usuário final. A melhoria contínua é tanto de processos quanto de pessoas. Times ágeis são focados em fazer sempre o melhor e para isso, utilizam, como no Scrum, os valores da transparência, inspeção e adaptação para melhorarem continuamente seu processo de desenvolvimento e a si mesmos como pessoas e profissionais.

4. Ter coragem

A coragem é fundamental para times ágeis, para fazer alterações no software ou refatorar, para mudar de paradigma, sair do mindset tradicional e migrar para o ágil… Sempre é preciso coragem. Compartilhar a responsabilidade, pedir ajuda, propor mudanças ou soluções, apontar problemas, permitir-se errar ou os outros errarem são exemplos que têm esse princípio como base.

5. Entregar valor para o cliente

Para entregar valor para o cliente, o tester precisa estar próximo dele, entender suas necessidades e ajudá-lo a transformar suas necessidades em cenários de testes voltados ao negócio que servirão para a validação de uma entrega ao final de uma iteração.

No desenvolvimento ágil, o tester atua tanto no time de desenvolvimento quanto no time de negócio, sendo o ponto de ligação entre os dois mundos. O tester consegue conversar com as pessoas de negócio, entender o negócio, levantar questões técnicas durante as explanações, fazer perguntas que levem ao melhor entendimento sobre cada regra de negócio ou feature debatida.

Assim, o tester pode ajudar o time a desenvolver aquilo que atende à necessidade de negócio e a entregar o valor esperado pelo cliente, além de utilizar suas habilidades técnicas para suporte e construção de uma suíte de testes automatizados durante o desenvolvimento.

6. Manter simples

Este princípio para os testers é especialmente delicado, pois por meio de sua visão crítica e analítica, o tester consegue pensar em diversos cenários que podem ocorrer durante o uso do usuário e, consequentemente, quer testar todos esses cenários.

No entanto, dentro de uma iteração curta de desenvolvimento, nem sempre dá para se testar todos os cenários levantados. Com isso, é necessário simplificar, utilizando as ferramentas mais leves para realizar o trabalho e priorizar juntamente com o cliente e com o time de desenvolvimento qual a área de maior risco no desenvolvimento, onde está o maior retorno para o cliente dentro das funcionalidades em desenvolvimento e qual é a maior dor do cliente. São essas questões que guiarão o trabalho do tester para testar “apenas o suficiente” com as ferramentas e técnicas mais leves.

De acordo com a priorização será realizado o trabalho de testes. Manter simples ajuda o time de desenvolvimento a manter o foco no risco, maior retorno e dor para o cliente.

7. Responder a mudanças

Diferentemente do modelo tradicional de desenvolvimento, no qual o planejado no início era levado a cabo e muitas vezes deixavam de considerar as mudanças ocorridas durante o período de desenvolvimento, no contexto de desenvolvimento ágil o time precisa responder às mudanças que naturalmente ocorrem durante esse período.

Assim, o tester precisa se adaptar e ter uma postura flexível para entender o contexto e ver como pode ajudar o time de desenvolvimento a entregar valor e software com qualidade durante as iterações. Aprender novas habilidades, manter-se atualizado com novas tecnologias, fazer pareamento e cuidar da saúde do time são algumas das atitudes que um tester pode ter para responder às mudanças ocorridas durante o desenvolvimento do produto.

8. Auto-organização

Times ágeis são auto-organizáveis. O time se organiza para resolver um problema ou enfrentar um desafio da melhor forma, utilizando as habilidades de cada membro com a maior eficiência. E essa auto-organização emerge do próprio time e essa característica é importante para o agile tester, pois como membro desse time, ele precisa ter a mesma visão e autonomia para se auto-organizar e também colaborar com o time no propósito.

9. Foco em pessoas

Agilidade tem muito mais a ver com humanidade do que com burocracia de processos, documentos e ferramentas. Ser ágil é muito mais ser humano do que ser metódico e procedural. Focar em pessoas é aplicar todos os outros princípios já mencionados e manter a proximidade com as pessoas envolvidas no desenvolvimento de um produto. É saber que todos têm o mesmo objetivo de sucesso e podem se ajudar para o alcançarem. Focar em pessoas é cuidar da saúde do time.

É muito bom trabalhar em um ambiente colaborativo e com pessoas motivadas e felizes com seu papel. Parece utópico, mas é um ideal que podemos buscar e ver resultados concretos no dia-a-dia, desde que assim acreditemos e trabalhemos por alcançá-lo.

10. Divertir-se

Um agile tester não pode ser o “chato” do time, aquele que só reclama e aponta os “bugs” e “acusa” os outros. Isso não tem nada a ver com Agile Testing. O agile tester é alguém que consegue viver a partir desses princípios e coloca-os em prática, tornando sua profissão atraente para o time, agregando valor ao time e ao produto. É alguém que passa confiança, que está preocupado com o bem-estar da equipe, com o valor entregue, com o desenvolvimento, com o produto e, principalmente, com as pessoas envolvidas (clientes, time de desenvolvimento e usuário final). Quando o tester e o time atingem essa maturidade, é divertido ser um tester. =)

Conclusão

O tester deixa de ter uma atuação em apenas uma fase de desenvolvimento, como no modelo tradicional de desenvolvimento de software, e passa a ter um papel atuante e fundamental para o desenvolvimento de um produto, desde o entendimento do negócio até a entrega do produto final.

Ele passa a ter habilidades diferentes, tanto técnicas quanto de negócio e de desenvolvimento de produto. Ou seja, ser tester, no contexto ágil, vai muito além de “achar bugs”. Para isso, não é preciso, necessariamente, de um tester, temos várias ferramentas de monkey testing e outras que podem encontrar bugs em menos tempo, menor custo e maior velocidade do que uma pessoa.

No entanto, para agregar valor ao desenvolvimento de um produto e ao time de desenvolvimento e ser uma referência em qualidade, o agile tester é fundamental dentro de um time ágil.

Ser um agile tester é ser alguém que serve ao time, ao cliente, à empresa com suas habilidades e capacidade crítica e analítica, e não fica apontando falhas ou erros de outros, mas busca soluções para os problemas.

Qual é sua visão ou experiência com Agile Testing? Trabalha em um time ágil? Fique à vontade para compartilhar nos campos abaixo.

***

Artigo publicado originalmente em http://www.concretesolutions.com.br/2017/02/20/agile-testing-o-que-e/