QA E DORA Métrics

As aplicações que utilizamos atualmente sempre estão em evolução, ambientes cada vez mais complexos e com regras de negócios rígidas fazem com que devemos metrificar tudo que puder a fim de garantir uma entrega de qualidade para o cliente final. Desde as mudanças dos softwares para ambientes em nuvem, foi necessário mudar conceitos que antes eram aplicados em sistemas desktops, como por exemplo a divisão entre time de desenvolvimento e time de implantação, hoje uma vertente que foi popularizado é o DevOps que é a junção desses times.
Dentro dessa visão de conceito de DevOps um dos autores mais conhecido chamado Gene Kim e precursor de DevOps criou o livro Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations, apresentou o conceito de DORA Metrics para o mundo e está se popularizando cada vez mais.
O conceito DORA Metrics (DevOps Research and Assessment) propõem o acompanhamento de quatro métricas que indicam como anda o desempenho da equipe DevOps e dos softwares desenvolvidos por uma empresa. Com isso, os gestores têm melhores informações para embasar decisões sobre mudanças na organização e processos da equipe. No estudo feito durante oito anos, os pesquisadores chegaram a quatro métricas consideradas ideais para acompanhar e medir o desempenho das equipes DevOps e dos softwares utilizados. Elas são:
- Deployment Frequency (“Frequência de Implantação”) — A métrica Deployment Frequency mede a frequência que a equipe atualiza seus softwares em Produção, disponibilizando melhorias ou correções nas aplicações usadas pela empresa ou por seus clientes. Esse valor é ajustado dependendo do tamanho da empresa, podemos dizer que normalmente, essa métrica é acompanhada dia a dia e, em geral, quanto mais ações de deployment são realizadas, melhor o time está trabalhando.
- Lead Time for Changes (“Tempo para Implantações”), também denominada “Delivery Lead-Time” — Mede o tempo que a equipe demora para fazer o código sair do status de “commited” para “executado com sucesso”, ou seja, analisa o tempo médio de desenvolvimento e implantação de um software.
É uma métrica que mede a velocidade de desenvolvimento dos códigos e softwares, ajudando a compreender melhor o ciclo de vida das soluções criadas pela equipe. Naturalmente, o ideal é que as adaptações sejam realizadas o mais rápido possível. - Change Failure Rate (“Taxa de Falhas em Implantações”) — A Change Failure Rate, como o próprio nome sugere, aponta qual é a taxa de falhas nas adaptações e mudanças propostas pela equipe DevOps. Logo, é um excelente indicador de qualidade e estabilidade das soluções desenvolvidas. Basicamente, a taxa é obtida dividindo o número de falhas e problemas apresentados pelo número total de mudanças e implantações realizadas, ajudando a balancear a métrica Deployment Frequency.
Tudo o que se quer é fazer implantações com a maior frequência possível, porém não a qualquer custo. Uma ótima métrica de Deployment Frequency só deve ser comemorada caso a métrica de Change Failure Rate esteja baixa. - Time to Restore Service ( “Tempo para Restauração de Serviço”), também denominada Mean-Time-to-Restore ou Mean-time-to-Recover — Por fim, Time to Restore Service é uma métrica bastante direta, que indica a média de tempo necessário para que a equipe restaure falhas e problemas que tiram os sistemas e aplicações do ar. Em empresas que atendem seus clientes digitalmente, essa é uma métrica especialmente crítica, pois quanto mais tempo leva para solucionar problemas que tiram os sistemas do ar, mais insatisfeitos ficam os clientes e mais dúvidas eles terão para expandir o relacionamento com sua empresa.
Bom, a partir do conhecimento de cada métrica que o time deve utilizar para acompanhar como está a entrega e performance do seu produto para o cliente final. O papel do QA dentro dessa métrica é muito importante, assim estaremos analisando como o QA está relacionado a cada uma das métricas.
- Deployment Frequency — O QA desempenha um papel fundamental ao garantir que os testes automatizados e manuais sejam executados de maneira eficiente e eficaz. Aqui nessa camada o QA deverá assegurar a implantação dos testes contínuos e auxiliar no desenvolvimento da automação baseando se por exemplo na pirâmide de testes.
- **Lead Time for Changes **— O QA contribui para a redução do tempo necessário para implementar mudanças ao garantir que os testes sejam executados de maneira rápida e eficaz. Participar ativamente da implementação de práticas de integração contínua e incluir testes de desempenho e escalabilidade para garantir que as alterações não causem degradação significativa no desempenho do sistema.
- Change Failure Rate — O QA desempenha um papel vital na redução da taxa de falha de mudanças. Isso é alcançado por meio de testes rigorosos que identificam e corrigem bugs e problemas de qualidade antes que as alterações sejam implementadas. Nesse contexto uma das formas que o QA pode atuar é na análise da cauda raiz, assim, quando ocorre uma falha, deve se realizar análises de causa raiz para identificar os motivos das falhas ajudando a aprender com erros passados e implementar medidas preventivas.
- **Time to Restore Service **— O QA contribui para a rápida restauração de serviços após uma falha, assegurando que os procedimentos de recuperação sejam testados e eficazes. Isso envolve a execução de testes de resiliência e a participação no desenvolvimento de estratégias de recuperação.
Metrificar nossas aplicações nos dias atuais se tornaram mais que um opcional para a empresa, mas uma obrigatoriedade a fim de garantir a qualidade das entregas, nesse sentido a participação atuante do QA a fim de garantir que a métrica DORA está sendo implementado e seguido se torna crucial para essa garantia de qualidade.
Caso a empresa ou time que você atue não aplica a métrica, comece aos poucos mudando a cultura coletando dados iniciais e a partir desses dados começar a construir uma cultura baseada na monitoria como premissa de uma entrega mais segura e correta ao cliente.
Para ter conteúdos semanais sobre Tecnologia e Qualidade de Software, assine minha newsletter Tech & Quality 🚀.