sábado, 23 de maio de 2020

Testes em Métodos Ágeis

Métodos ágeis e testes de software

A modelagem ágil é uma realidade para as empresas que necessitam de desenvolvimento eficiente. Os métodos ágeis estabelecem um conjunto de práticas no desenvolvimento de software que está cada vez mais se tornando habitual. Mas, diferente do que muitos pensam, não existe um modelo predefinido ou um conjunto de regras a serem adotadas.

Desenvolvimento ágil

Fonte: Trueffelpix / shutterstock

Na modelagem ágil, cada equipe, dentro de suas atribuições e de acordo com as características dos projetos da empresa, adota uma forma ágil mais adequada para atender suas demandas. Isto quer dizer que, em modelagem ágil, apenas é mostrado o caminho, e a equipe adota as práticas mais adequadas dentro do conceito ágil. Não há procedimentos ideais preestabelecidos apenas princípios adotados a partir da necessidade particular do negócio.

Segundo Highsmith e Cockburn (2001), a novidade nos modelos ágeis não está nos métodos ágeis, mas no envolvimento de pessoas que participam no sucesso do projeto e que estão focadas na capacidade de gestão do negócio.

A modelagem ágil visa colocar em prática o conjunto de valores que o negócio já possui. Vamos imaginar um brainstorm no qual todas as ideias são apresentadas e depois colocadas em uma desafiadora sequência de ações e procedimentos. A modelagem ágil começa a ser aplicada desta forma. Durante este processo é que definimos os procedimentos relacionados aos testes de software.

Vamos voltar a um conceito antigo relacionado à lógica de programação. Os mais experientes se lembram de que, muito antes de começar a desenvolver um programa, o programador desenhava um diagrama de fluxo de dados estruturado do sistema e somente depois começava a programação em si. Estes profissionais mais experientes entendiam que, se você soubesse passar por esta fase antes da programação, a linguagem de programação seria apenas um detalhe. Assim, você poderia escolher qualquer linguagem, pois a lógica de funcionamento seria a mesma. Na modelagem ágil ocorre o mesmo: a linguagem é um detalhe que pode ser pensado e adotado depois do entendimento dos requisitos que o software precisa atender.

Em teste de software, encontramos a figura do testador, que atua junto com a equipe de desenvolvimento estabelecendo técnicas ou definindo conceitos que serão aplicados durante o desenvolvimento para testar a integridade e validar os resultados.

De acordo com Nogueira (2016), uma equipe ágil reúne basicamente dois times:

  • o time do cliente, que representa os que estão do lado do negócio no projeto e tem a responsabilidade de escrever histórias e funcionalidades que fornecem os requisitos que o time de desenvolvimento utiliza para a criação do produto;
  • o time de desenvolvimento, que reúne todos os programadores, com papeis que variam conforme as necessidades do projeto, responsáveis por transformar as histórias do time do cliente em software.

Seguindo as práticas ágeis, esses dois times trabalham próximos na maior parte do tempo e colaboram para que o resultado do trabalho resulte em um produto que agregue valor para a organização. Muitos times ágeis não possuem membros com a função de testadores. Entretanto, o time de desenvolvimento precisa de alguém que ajude na tarefa de escrever testes, verificar se as histórias estão de acordo com os requisitos e automatizar os testes de regressão, que são essenciais para que haja um feedback rápido e contínuo sobre a qualidade do produto sendo desenvolvido.

Assim, Nogueira (2016, s/p) define o testador ágil como

[...] 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. Esse profissional 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 à procura de comportamentos, erros e problemas.

O testador não precisa ser um componente externo, pois, dependendo das definições prévias das funções do time, ele poderá ser um dos integrantes de dentro do time de desenvolvimento. Este testador será um membro valioso e, como tal, participará ativamente no apoio para as entregas consecutivas que ocorrem no método ágil de desenvolvimento.

“Equipes de desenvolvimento ágil trabalham com testes automatizados. Ter agilidade e não contar com as atividades específicas automatizadas não condiz com o mundo real. O que aconteceria se todos os testes tivessem que ser aplicados manualmente pela equipe a cada incremento de código? Acredito que você saiba a resposta: desperdício de tempo, retrabalho e falta de qualidade.”

Fonte: Vidal (2017, p. 220).

O Manifesto ágil (BECK et al., 2001, s/p, tradução nossa) diz que:

Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:

- Indivíduos e interação entre eles, mais do que processos e ferramentas

- Software em funcionamento, mais do que documentação abrangente

- Colaboração com o cliente, mais do que negociação de contratos

- Responder a mudanças, mais do que seguir um plano

Seguindo os princípios ágeis, em intervalos regulares, o time deve refletir sobre como se tornar mais eficaz e então refinar e ajustar seu comportamento de acordo. Portanto, podemos perfeitamente concluir que as condições ideais existentes que levam um negócio a implantar o modelo ágil também são ideais para se implantar os testes de software de forma muito eficiente.

Assim, o mesmo princípio de modelo ágil se aplica em teste de software: não existe uma fórmula mágica padronizada e ideal, cada empresa, de acordo com suas necessidades específicas, adotará o procedimento ideal. E se este modelo não existir, deve ser criado um que atenda as suas necessidades.

Desta forma, exposto o cenário em que os métodos ágeis se aplicam, podemos chegar à definição do que são os testes ágeis.

Nenhum comentário:

Postar um comentário