Modelo de Maturidade em Quality Assurance: Para que serve e como desenvolver?

O autor Martin Fowler define Modelo de Maturidade em um de seus textos como “uma ferramenta que ajuda as pessoas a avaliarem a eficácia atual de uma pessoa ou grupo e ajuda a descobrir quais recursos precisam adquirir a seguir para melhorar seu desempenho. Em muitos círculos, os modelos de maturidade ganharam má reputação. Mas embora possam ser facilmente mal utilizados, em mãos adequadas podem ser úteis.”

No contexto de Qualidade de Software e de maneira simplificada, podemos entender que um Modelo de Maturidade seria:

  • Uma forma de ter visibilidade da saúde das aplicações;
  • Uma ferramenta para ajudar a priorizar ações;
  • Um retrato atual;
  • Um guia para onde devemos seguir.

Ou seja, a ideia central da implementação dessa ferramenta não é acrescentar processos dentro de uma esteira de Qualidade, mas sim obter através dela o conhecimento/reconhecimento da situação atual e desenvolver os próximos passos de forma mais eficaz, em direção a um objetivo.

Por onde começar?

Para orientar o processo é importante estabelecer algumas premissas, ou seja, condições baseadas nas necessidade do contexto específico, como por exemplo:

  • Qual é o objetivo? (visibilidade da saúde das aplicações, aumento da cobertura de testes etc.);
  • Qual a prioridade? (criticidade das aplicações, integração contínua etc.).

Podemos utilizar como inspiração os modelos consolidados como TMMi, complementar ao CCMI, que é focado na melhoria do processo de teste de software, ou ainda outros modelos já criados, mas o importante é adequá-los às necessidades do time.

Agora, a parte mais importante é: definir os níveis do seu Modelo de Maturidade e, em seguida, os Critérios para cada nível. E claro, como cada critério será medido. Vamos a um exemplo básico, onde o nosso modelo teria 4 níveis: Inicial, Gerenciado, Definido e Otimizado.

Nível 1 – Inicial:

Nesse nível, não temos processo de Qualidade de Software estruturado. Os testes são intuitivos, não existe estratégia e são feitos de forma manual.

  • Critério: acompanhar issues geradas no processo de postmortem.
  • Como medir? Registro dos incidentes postmortems e acompanhamento das ações.

Nível 2 – Gerenciado:

A estratégia de teste definida, é baseada em um comportamento funcional e os testes são realizados em maioria, de forma manual.

  • Critérios: cobertura mínima de 20% dos testes automatizados, documentação disponível sobre a aplicação e code review realizado durante o desenvolvimento.
  • Como medir? Ferramentas como SonarQube, Confluence, GitHub.

Nível 3 – Definido:

Estratégia e tipos de testes definidos. Métricas de qualidade de software definidas. Percentual significativo de testes automatizados.

  • Critérios: cobertura mínima de 60% dos testes automatizados, ter métricas de qualidade definidas.
  • Como medir? Ferramentas como SonarQube e acompanhamento das métricas definidas.

Nível 4 – Otimizado:

Automação de testes contínua e consistente, e todas as validações estão no processo de CI/CD. As métricas são monitoradas para melhorar continuamente a eficácia do processo de teste de software.

  • Critérios: cobertura mínima de 90% dos testes automatizados, execução de testes não funcionais sob demanda, processo de CI/CD estabelecido, sinalização automática de problemas.
  • Como medir? Ferramentas como SonarQube, ferramentas como GitLab, acompanhamento por dashboard e relatório automático de execução por e-mail.

 

Como aplicar?

Após desenhar o modelo de maturidade que melhor atenda ao contexto do seu time, é hora de colocar em prática. Podemos utilizar o excel ou qualquer outra ferramenta que auxilie a catalogar as aplicações e avalia-las sob os critérios já definidos.
Feita a avaliação, atribuímos um nível, levando em conta o percentual de critérios atendidos (exemplo: 90%). Para subir de nível, a aplicação precisa atender a todos os critérios do nível anterior.

Para concluir, a estruturação e implantação de um Modelo de Maturidade, não só em qualidade de software, deve ser orientada aos objetivos e por consequência, ações que serão tomadas a partir dos dados colhidos.

Neste conteúdo foi possível perceber que o Modelo de Maturidade ideal será aquele que melhor se adequar as necessidades do seu contexto, cumprindo as premissas que foram estabelecidas, sendo a estruturação do modelo uma etapa muito importante de todo o processo. Cabe ressaltar que essa ferramenta pode ser muito útil quando bem utilizada, uma vez que nos permite olhar onde estamos, onde queremos chegar e qual caminho percorrer até o objetivo.

Referências:

https://martinfowler.com/bliki/MaturityModel.html