Qualidade e testes como cultura no desenvolvimento de softwares: uma jornada de transformação

Itaú Tech
ItauTech
Published in
7 min readOct 17, 2023

por Bruno Trevisan e Jorge Simocovski, Especialista e Engenheiro de Tecnologia no Itaú

No lado esquerdo, há a frase “Testes e qualidade como cultura organizacional: tornando a qualidade de softwares um tema importante na rotina de todo o time de desenvolvimento”. No lado direito, há a foto de uma pessoa tocando uma tela, que contém grafismos que representam tecnologia.

Em um cenário em que as metodologias de trabalho ágil já fazem parte do dia a dia da maior parte dos times de desenvolvimento de software, uma abordagem na qual todas as pessoas desenvolvedoras se envolvem ativamente na verificação e validação da qualidade de seus projetos se torna cada vez mais relevante.

Essa abordagem pressupõe que testar é uma atividade essencial para garantir a qualidade do software, e que a sua qualidade é responsabilidade de toda a equipe — e não apenas de uma única pessoa com o papel de QA (que possui, na prática, um chapéu responsável pela qualidade dos softwares).

No entanto, para squads que não possuem uma pessoa especializada em testes e qualidade, iniciar a construção de uma cultura de testes pode parecer um desafio amedrontador: é possível que surjam preocupações relacionadas à sobrecarga dos times e à especificação de processos na rotina do time, por exemplo.

Neste artigo, buscamos mitigar alguns desses pontos e apontar diretrizes que podem te ajudar na implementação dessas práticas enquanto parte da cultura do time, além de explorar em detalhes o seu valor para a qualidade em equipes ágeis.

Cultura organizacional e seu poder da transformação

A cultura de uma organização é capaz de moldar valores, crenças e comportamentos compartilhados por todas as pessoas colaboradoras. Uma cultura forte e positiva impulsiona o alinhamento de objetivos, aprimora o engajamento e fortalece a identidade da empresa.

No Itaú, atuamos com base em uma cultura centralizada nos desejos do cliente, que busca na inovação maneiras de melhor atendê-lo. Com ela, nos tornamos capazes de nos adaptarmos rapidamente a um ambiente de constante mudança, o que nos torna como consequência uma organização mais resiliente.

Entre os pontos contemplados por ela, podemos mencionar também uma mentalidade de aprendizado contínuo, para que pessoas colaboradoras também possam se adaptar às mudanças e abraçar a inovação constante, e o espaço para a diversidade de perspectivas, o que também incentiva a colaboração entre as pessoas.

Quando uma empresa adota uma cultura solida e positiva, ela cria um ambiente que potencializa o talento individual, promove a excelência e estabelece uma base para o sucesso — e para qualidade de software, os desafios da transformação cultural não são diferentes.

Testes e qualidade como prática cultural: desafios e como endereçá-los

Quando falamos sobre os desafios na implementação de uma cultura de testes e qualidade, conseguimos classificá-los em três pilares principais. Abaixo, detalhamos cada um deles — e traçamos possíveis soluções para os endereçarmos. São eles:

Especialização: pode ser difícil para que as pessoas desenvolvedoras de sua equipe de desenvolvimento implementem as práticas de teste mais adequadas e garantam a qualidade do software sem o conhecimento técnico necessário nessa disciplina.

Então, para que uma rotina de testes também se torne parte da cultura, é necessário empoderarmos as pessoas desenvolvedoras, para então permitirmos que eles assumam a responsabilidade pela qualidade dos seus softwares.

É possível estruturar uma série de ações para alcançarmos esse objetivo, como trilhas de treinamento, workshops, imersões ou quaisquer outras práticas para a transmissão de conhecimento. Essas ações devem fazer parte do dia a dia das pessoas, já que ajudarão o time a evoluir seu conhecimento constantemente e amadurecer as suas habilidades para testar efetivamente.

Tempo: essas pessoas também podem não ter tempo o suficiente para se concentrar nas atividades de teste, já que precisam se dedicar ao desenvolvimento do software em si. Isso pode levar a uma cobertura inadequada de testes e à descoberta de bugs em momentos menos oportunos.

Para endereçarmos esse pilar, primeiro precisamos solucionar o desafio de adequarmos o planejamento para incorporar as atividades de teste desde o momento inicial do desenvolvimento, antes mesmo do código começar a ser escrito.

Conhecida como “shift left testing”, esta técnica faz com que os defeitos sejam detectados durante a construção do software, e não quando ele já está em produção, o que reduz significantemente o custo das correções e diminui a necessidade de retrabalho de código produtivo, além do tempo total até a entrega de valor.

Neste passo é comum que surjam questionamentos acerca do prejuízo no prazo de entrega. Neste aspecto, o papel da liderança é fundamental: será importante alinhar expectativas, negociar escopo e até mesmo quebrar entregas em incrementos graduais de funcionalidades, para que a etapa de testes como parte do desenvolvimento se torne indispensável.

Independência: uma pessoa dedicada à testes e qualidade normalmente tem uma visão independente do software, o que significa que ela pode encontrar problemas que talvez passem despercebidos por desenvolvedores que estejam focados em outros aspectos do código (como seus requisitos e funcionamento, por exemplo). Então, como podemos habilitar os times para as práticas de qualidade, tornando-os capazes de garantir a qualidade de seus softwares de forma efetiva, isenta e sem sobrecarregá-los?

Nesse sentido, o code review é uma atividade que tem um papel importante para mitigarmos as dificuldades relacionadas a visão independente necessária. O olhar de um par para a implementação de uma história também pode compensar a ausência de um observador externo, além de promover a melhoria contínua da base de código e auxiliar na adoção de novas boas práticas.

Outro ponto importante a ser trabalhado é ajustar a forma como o time trabalha com testes. Normalmente, os testes são escritos depois do código, para satisfazer alguma norma de qualidade ou critério de esteiras. Escrever testes junto com o código é uma mudança que traz benefícios que ajudam a melhorar a qualidade e a eficiência na escrita dos testes e do próprio código.

Neste aspecto o TDD é um forte aliado na implementação da cultura de testes, pois acelera o processo de desenvolvimento e facilita a manutenção. No entanto, mudar a forma com que as pessoas desenvolvedoras estão habituadas a escrever códigos impõe desafios importantes, sendo o principal deles a mudança da metodologia de trabalho, que exige também uma mudança de mentalidade. Com uma estratégia amigável, é possível incentivar os times a testar a técnica, para que os ganhos sejam percebidos na prática, o que facilita a superação de barreiras ideológicas e viabiliza a consolidação do uso do TDD.

Propor, acompanhar e medir

Promover uma mudança cultural vai muito além de educar e de prover técnicas e ferramentas. É preciso orientar as pessoas na direção da transformação.

Nesse processo, muitas vezes as pessoas envolvidas podem ter dúvidas sobre estarem explorando as melhores alternativas para promover as mudanças desejadas. Desta forma é preciso criar formas para que se possa medir o progresso e dar segurança aos times e pessoas gestoras para avaliar e aprimorar seus planos de ação.

As métricas devem ser pensadas para avaliar se o objetivo inicial está sendo alcançado, e não devem ser estabelecidas como metas, mas sim como indicadores de resultados. Para tanto, é preciso escolher métricas que possam ser quantificadas e acompanhadas frequentemente, que sejam consistentes e que promovam a identificação entre o esforço e o alcance dos objetivos.

Uma boa técnica é definição de indicadores chave de desempenho (KRs). Os KRs podem incluir métricas como taxa de defeitos, tempo médio para corrigir defeitos, evolução da cobertura de testes e dados relacionados a qualidade e segurança obtidos a partir de ferramentas de análise estática.

Aqui estão alguns exemplos de métricas que podem auxiliar neste acompanhamento:

a. Aumentar a cobertura de testes em determinadas áreas do software em um determinado percentual.
b. Reduzir a taxa de bug de novas funcionalidade de 15 para 8% (média do mercado)
c. Reduzir o tempo médio de resolução de bugs críticos em produção.

Também é importante avaliar regularmente o desempenho da equipe a cada etapa de implementação da transformação cultural, a fim de verificar se houve melhorias na qualidade dos testes.

Uma transformação cultural só faz sentido e se consolida se as partes envolvidas forem capazes de perceber claramente a melhoria na sua qualidade de vida e satisfação com os produtos entregues.

A cultura de testes é fundamental para equipes ágeis que buscam garantir a qualidade do software. Empoderar pessoas desenvolvedoras, medir e acompanhar os resultados e fornecer treinamento adequado são práticas essenciais para se atingir o objetivo de implementá-la.

Sabemos que a presença de uma pessoa QA é de extrema importância para o processo como um todo — porém, é possível mitigar esse desafio implementando um processo de transformação cultural na visão de qualidade, com especial foco em testes, fortalecendo os times para incorporar as práticas de qualidade no seu dia a dia, melhorando o software, reduzindo custos e aumentando a satisfação do cliente.

Um processo de transformação cultural é um grande desafio e não há uma receita pronta que sirva a todos. É importante experimentar, observar os resultados, corrigir os planos de ação e manter-se focado no objetivo. O estabelecimento de uma visão comum, o comprometimento da liderança e o respeito à capacidade que as pessoas possuem de acompanhar a transformação são fatores importantes para o sucesso.

Ainda que outras abordagens também possam ser efetivas, neste artigo, apresentamos algumas ideias que se mostraram eficazes na conquista deste objetivo em um cenário real, complexo, e que contempla para um grupo numeroso e diversificado de times.

--

--