Implementação do Quality Score

Medição da Maturidade: Qualidade de Software

Eric Sugai
Elo — Tecnologia e Inovação
5 min readAug 16, 2023

--

A busca pela excelência e a entrega de produtos e serviços digitais de qualidade são objetivos amplamente perseguidos por empresas de todos os setores. No entanto, alcançar essas metas é algo complexo e pouco trivial, visto que é preciso algumas mudanças significativas nos times na linha de Mindset de Qualidade, Processos e Papeis e Responsabilidades demandando uma abordagem sistemática e consistente, onde vários fatores devem ser levados em consideração.

É nesse contexto que se destaca a importância de medir a Maturidade de Qualidade, pois como diz uma famosa frase de William Thomson, importante físico irlandês do século XIX, “não se pode melhorar aquilo que não se pode medir”. Portanto, a medição de maturidade de Qualidade desempenha um papel fundamental para avaliar o progresso, identificar áreas/oportunidades de melhoria e embasar decisões que afetam diretamente a entrega de produtos digitais com maior qualidade.

Na Elo estamos empenhados em promover uma cultura em que todos se sintam responsáveis pela Qualidade. Como estratégia estabelecemos o Centro de Excelência em Qualidade de Software, iniciamos a jornada de transformação do papel dos QAs para QEs e posteriormente em Engenheiros de Software e desenvolvemos também um modelo de avaliação de maturidade, o qual tem como objetivo medir, orientar e aprimorar proativamente as práticas de qualidade, promovendo uma evolução contínua nos níveis de maturidade, impulsionando a excelência na entrega de produtos e serviços digitais, estimulando a colaboração, a responsabilidade coletiva e a aplicação de melhores práticas ao longo de todo o ciclo de desenvolvimento.

Neste artigo exploraremos modelo de maturidade de qualidade de software desenvolvido pela Elo (Quality Score) e a importância da medição de qualidade de software.

Quality Score

O Quality Score, na sua essência, é um ferramenta que permite medir o nível de qualidade das entregas e práticas realizadas pelos times durante o ciclo de desenvolvimento de software.
Aproveitando este conceito, sob a ótica de Qualidade de Software, construímos uma abordagem abrangente de avaliação que considera os pilares fundamentais da disciplina (Cultura de Qualidade, Qualidade de Código e Qualidade de Entrega) e 5 níveis de maturidade (Inicial, Gerenciado, Definido, Gerenciado Quantitativamente e Otimizado)

Pilares da Maturidade de Qualidade

Cultura de Qualidade: É a base sólida sobre a qual a Maturidade de Qualidade é construída. Trata-se de um conjunto de valores, atitudes e práticas compartilhadas por todos. Uma cultura de qualidade incentiva a responsabilidade coletiva pela qualidade do trabalho realizado, evitando a criação de silos nos times e reforçando o senso de unidade do time.

Esta cultura se reflete em comportamentos como a busca contínua por melhorias, o estímulo à colaboração e ao aprendizado, a antecipação da Qualidade cada vez mais no inicio do ciclo de desenvolvimento e o estabelecimento de metas realistas e mensuráveis, a transparência nas comunicações e a ênfase na satisfação do cliente. Uma equipe imbuída de uma cultura de qualidade se torna mais comprometida com o sucesso do produto e está disposta a investir tempo e esforço para entregar valor aos clientes.

Para avaliar o nível de maturidade da Cultura de Qualidade, utilizamos uma avaliação abrangente com 14 itens relacionados à responsabilidade pelas tarefas de testes, adoção de técnicas de shift left testing, envolvimento nas escritas de histórias e metodologias utilizadas. Essa medição permite identificar em qual estágio de maturidade os times se encontram, fornecendo insights valiosos para orientar o aprimoramento contínuo.

Qualidade de Código: A Qualidade de Código é um dos principais indicadores da maturidade de uma organização em relação à qualidade. Refere-se à avaliação da estrutura, legibilidade, manutebilidade, cobertura e eficiência do código fonte produzido. Código de alta qualidade é aquele que é fácil de entender, modificar e testar.

A utilização de boas práticas de desenvolvimento, como a padronização do código, a realização de revisões de código e a implementação de testes automatizados, contribui para a melhoria da qualidade de código. Além disso, a adoção de ferramentas de análise estática e métricas de qualidade de software pode auxiliar na identificação de problemas e áreas de melhoria.

Um código de qualidade não apenas aumenta a eficiência e a velocidade de desenvolvimento, mas também reduz a incidência de bugs e falhas. Isso resulta em maior estabilidade e confiabilidade do produto final, gerando maior satisfação do cliente e reduzindo os custos associados a retrabalhos e manutenção corretiva.

No âmbito da medição da Maturidade de Qualidade nesse pilar, são considerados indicadores como percentuais de cobertura de testes unitários, cobertura de testes de mutação, análise estática do código e a integração contínua (CI) na esteira de desenvolvimento.

Qualidade de Entrega: A Qualidade de Entrega se concentra na capacidade de uma organização em entregar produtos ou serviços de forma consistente, dentro do prazo e atendendo às expectativas do cliente. Envolve a execução de testes pertencentes aos níveis intermediário e superior da pirâmide de testes com uma abordagem abrangente e complementar aliado e a adoção de práticas de implantação contínua.

Para alcançar a maturidade de qualidade na entrega, é necessário implementar processos robustos, garantindo uma comunicação efetiva entre o time. Além disso, a automação de testes e o monitoramento contínuo da qualidade durante todo o ciclo de vida do produto são essenciais.

A medição desse pilar é realizada através de uma avaliação abrangente, que engloba mais de 30 itens. Esses itens incluem a estratégia de testes adotada, cobertura de testes de acordo com a pirâmide de testes, cobertura de testes automatizados nas camadas funcional e E2E, a realização de testes não funcionais e a aplicabilidade da execução nas esteiras CI/CD (integração contínua/entrega contínua).

Processo de medição e priorização:

O Quality Score é um processo contínuo e duradouro que permite que os times planejem e autem nas oportunidades de melhoria das práticas de Qualidade de forma constante. Embora o acompanhamento dos resultados seja contínuo, a classificação oficial dos itens que evoluíram ou não ocorre trimestralmente, seguindo os seguintes quatro passos:

Essa abordagem trimestral do Quality Score permite um acompanhamento regular e consistente, além de fornecer direcionamento para as equipes melhorarem continuamente suas práticas de Qualidade. É um modelo de referência que busca garantir que a Maturidade de Qualidade seja uma jornada contínua e que todos os envolvidos estejam alinhados em busca da excelência.

Considerações finais

A medição da Maturidade de Qualidade é um fator essencial para impulsionar o aprimoramento constante, estabelecer metas claras e garantir a entrega de produtos e serviços de alta qualidade. Por meio dessa medição, é possível identificar áreas de melhoria e as necessidades de capacitação das equipes, estimulando a adoção das melhores práticas e ferramentas de qualidade. Além disso, ela promove a comunicação e a colaboração entre os membros de cada equipe, permitindo a priorização adequada das ações necessárias para aumentar a maturidade.

Ao identificar as necessidades de qualificação das equipes por meio da medição, é possível investir em treinamentos e capacitações específicas, fortalecendo os conhecimentos e habilidades necessários para impulsionar a maturidade da organização. Essas ações contribuem para elevar a qualidade do trabalho realizado, resultando em produtos e serviços digitais de excelência.

Escrito por: CoE de Qualidade Elo

Referências:

MaturityModel (martinfowler.com)

Evolução de Papéis: Qualidade de Software | by Leonardo Dias | Elo — Tecnologia e Inovação | Jul, 2023 | Medium

Construindo um Centro de Excelência em Qualidade de Software | by Leonardo Dias | Elo — Tecnologia e Inovação | Medium

--

--