Que as metodologias ágeis estão dominando as empresas de software, ajudando estas a alcançarem resultados mais rapidamente e com maior valor para os clientes, não é novidade para ninguém. Mas, como fica a qualidade do software dentro desse novo modelo de gestão de projetos que visa fazer entregas constantes, iterativas, dentro do prazo e ainda assim atendendo aos requisitos definidos pelo cliente?

No artigo de hoje falaremos sobre o papel da qualidade no ambiente de desenvolvimento ágil e o novo papel do testador nesse meio.

Métodos tradicionais

Os métodos tradicionais de desenvolvimento de software são os modelos que trabalham de forma sequencial, ou seja, uma tarefa só ocorre após a anterior ter sido concluída. Também não é prática das metodologias tradicionais a participação dos clientes durante a execução do projeto. Outra característica dessas metodologias tradicionais de desenvolvimento de software é definir bem os requisitos no início do projeto, seguindos-os sem mudanças até a entrega do que foi acordado.

Fica claro, então, que pelo modelo tradicional, uma etapa só ocorre após a anterior ter sido finalizada completamente. Dessa forma, esse modelo de trabalho apresenta alguns problemas, como a equipe de testes ter acesso ao software somente após o fim do desenvolvimento. Isso implica em um maior custo quando nos atentamos ao retrabalho, já que, caso o sistema apresente problemas de usabilidade ou funcionalidade, será necessário iniciar novamente o fluxo com escrita dos requisitos, codificação e só depois novos testes, afetando assim tanto o prazo de correção quanto o desenvolvimento de novas funcionalidades.

Surgem então os conceitos de Agilidade e metodologias que buscam resolver os problemas encontrados nas metodologias tradicionais.

Metodologias Ágeis

Diferente do que o nome transparece, quando falamos em metodologias ágeis não estamos falando de rapidez na entrega, mas sim de dividir o trabalho em etapas e entregar pequenas partes deste trabalho, permitindo assim que os clientes tenham visão do andamento do desenvolvimento do software.

Baseadas em alguns princípios, as metodologias ágeis conseguem fazer com que softwares com mais valor sejam entregues aos clientes. Esses princípios estão escritos no manifesto ágil da seguinte forma:

Indivíduos e interações mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano

O desenvolvimento de software seguindo os métodos ágeis traz uma forma de trabalho que valoriza o empenho das pessoas na resolução de problemas como um time. Nesse método de trabalho deixam de fazer sentido os resultados individuais ou das etapas, como é comum nas metodologias tradicionais, e começam a fazer sentido o trabalho do time e a entrega de software funcional já nas primeiras semanas.

Com essa mudança de paradigma de trabalho, os papéis do time se transformaram, com novos desafios para desenvolvedores, gerentes de projetos, testadores e designers. Novos papéis também surgiram e o cliente agora passou a ser integrante do time, participando ao receber e validar o que é entregue nos prazos estipulados.

Desenvolvedores de software, por exemplo, se adequaram a essa mudança com frameworks como XP (eXtreme Programming), Integração Contínua e programação em par. Gerentes de projetos se tornaram Product Owners, Scrum Masters ou se reinventaram passando a atuar em gestão de produtos, gestão de processos ágeis e tantas outras atividades.

Benefícios de se adotar metodologias ágeis

Empresas que optaram pelo Agile dentro de seus times de desenvolvimento acabaram vendo benefícios muito latentes em suas operações.

De acordo com o 13th Annual State of Agile, respondentes em diversas partes do mundo relataram que os principais benefícios das metodologias ágeis são a habilidade em gerenciar mudanças de prioridade (69%), visibilidade no projeto (65%), alinhamento entre TI e negócios (64%) e até melhoria na moral do time (64%).

Em outras palavras, existem desde vantagens operacionais até ganhos em termos de negócios e em motivação na equipe – pontos que podem não ter benefícios percebidos se tratando de metodologias tradicionais.

Outro benefício citado por 47% dos respondentes foi a qualidade de software. Pelo fato da etapa de testes ficar muito ao fim do processo em projetos que utilizam metodologias tradicionais, pode ser comum que ela seja ignorada por conta de prazos apertados.

Então, junto com as metodologias ágeis, foi criado um nome modelo de garantia da qualidade em projetos: o Agile Testing.

Agile Testing

Com a mudança de paradigma na forma de realizar as tarefas de todos os integrantes do time de desenvolvimento, surge então o Agile Testing, um conjunto de práticas onde a atuação dos testadores acontece durante todo o ciclo de desenvolvimento do software, desde a ideação, passando pelo planejamento, desenvolvimento e chegando à entrega da funcionalidade para os usuários finais.

O Agile Testing afirma também que o testador é a pessoa responsável por compartilhar e fortalecer a cultura de qualidade dentro do time no qual está inserido.

Leia mais: O que é a cultura da qualidade?

Para implementação do Agile Testing nos projetos, são esperadas algumas características dos testadores. Algumas delas são:

Foco no usuário: o testador a todo tempo tem que pensar em como a funcionalidade que está sendo trabalhada será utilizada pelo usuário. Isso inclui, por exemplo, o testador trazendo no planejamento junto aos designers e gestores de produto, possíveis modos de como o usuário iria operar o sistema, casos de testes utilizando personas diferentes e também aplicando conceitos de experiência de uso em todas as etapas de desenvolvimento do software.

Prevenção de bugs: praticando o Agile Testing é esperado que o testador consiga antecipar possíveis problemas que possam ocorrer. Ao participar do planejamento das tarefas que serão realizadas e contribuir com casos de testes e critérios de aceitação, os testadores conseguem prevenir possíveis bugs. Isso se torna possível porque os desenvolvedores, antes de começarem a codificar, poderão entender quais testes serão realizados, podendo direcionar então as suas atividades à prevenção de bugs.

Visão sistêmica: é esperado também que o testador seja o profissional que tenha o conhecimento tanto da área de negócio quanto da área técnica. Essa visão sistêmica ajudará o time a realmente entregar o que é importante. Possuindo esses diferentes pontos de vista, o testador conseguirá entender melhor os riscos envolvidos em cada entrega, pois entende quais são as preocupações e necessidades de todos os envolvidos no projeto.

A jornada diária do testador ágil

Diferente do método tradicional de testes, onde o testador era o único responsável pela qualidade do software, no Agile Testing o testador precisa diariamente validar se as tarefas realizadas individualmente estão indo ao encontro do produto final. Isso implica em incrementar a jornada diária com novas atividades.

Uma dessas novas atividades é a validação e compartilhamento de feedbacks constantes: os testadores agora são responsáveis por informar o time sobre os resultados obtidos nos testes. Essa atividade de feedback ajudará desenvolvedores, designers e gestores de produto a entenderem o que tem funcionado ou não na construção desse software.

Algumas dicas para implementação deste formato de trabalho

Envolvimento da diretoria: por envolver mudança de cultura, é desejado que a diretoria esteja envolvida na implementação e acompanhando os resultados. É possível que as pessoas que terão suas atividades impactadas pelas mudanças criem resistência, então, ter a diretoria envolvida e patrocinando a ideia dá às pessoas a confirmação de que é algo que tem valor para todos da empresa.

Abertura de canais de comunicação entre testadores, designers e usuários: é necessário que sejam criados canais onde o testador possa dialogar e conhecer quem é o usuário final do software. Essa comunicação com os designers permitirá que o testador e o time de desenvolvimento estejam atentos se as entregas têm alcançado a visão do produto. Os canais de comunicação podem ser: acompanhamento das pesquisas realizadas com os clientes, leituras em conjunto das estatísticas de acesso (Google Analytics, Amplitude e outros) ou até ligações para os clientes mais engajados.

Entender e absorver o propósito do manifesto ágil: essa atividade deve ser realizada constantemente. O manifesto ágil, se entendido, consegue direcionar os integrantes do time à reflexão acerca das atividades que vêm sendo realizadas.

Dar autonomia às pessoas: por entendermos que a entrega de valor para os usuários, é o objetivo do time, é importante que as pessoas possuam autonomia para buscar soluções que venham em direção a esse objetivo. É importante também que as pessoas sejam encorajadas a praticar a melhoria contínua. Com a autonomia é esperado protagonismo, responsabilidade e, claro, resultados.

A qualidade deve ser responsabilidade de todos

A prática de teste de software evolui com o Agile Testing porque o testador passa a ser o guardião da qualidade do software dentro do time, mas não é o único responsável por ela.

É esperado que o time por completo comece a ter o tópico “qualidade” como responsabilidade, seja prevenindo bugs ou corrigindo-os. A qualidade deve estar a todo tempo sendo levada em consideração se quisermos continuar a impactar no sucesso de quem usa nossos softwares.