Lei Geral de Proteção de Dados pode entrar vigor em agosto deste ano
7 de agosto de 2020Lançamento do PostgreSQL 12.3, 11.8, 10.13, 9.6.18, 9.5.22 e 13 Beta 3!
18 de agosto de 2020O moderno ciclo de vida de desenvolvimento de software iterativo faz com que os desenvolvedores façam check-in de código nos sistemas de controle de versão com frequência, com a integração contínua lidando com a criação e execução de testes automatizados a uma taxa igualmente rápida. Dependendo do tamanho da equipe de desenvolvimento, isso pode gerar uma enorme quantidade de dados de resultados de teste. O que você deve fazer com isso?
Quando relatados de maneira eficaz, os dados dos resultados dos testes gerados pela automação podem ajudar as equipes a agir mais rapidamente; encontrar, isolar e corrigir os erros mais rapidamente; impedir regressão; e até acompanhar as melhorias de desempenho.
Veja o que você pode fazer para garantir que você está relatando resultados de maneira eficaz para toda a equipe.
O armazenamento é fundamental
Os dados dos resultados não devem ser etéreos. É comum que os dados dos resultados sejam descartados imediatamente após serem gerados, mas isso é um erro. Essa é a primeira coisa a ser acertada: armazene todos os resultados do teste por pelo menos algumas semanas ou, de preferência, um mês.
Observar os resultados de uma única execução de teste isoladamente é melhor do que nada, mas manter um histórico de todas as suas execuções pode ajudá-lo a realizar comparações para acompanhar o progresso, identificar a regressão e até encontrar testes inadequados, que podem ajudar a descobrir problemas que nem sempre são altamente reproduzíveis, como problemas de alocação de memória.
Mais importante ainda, o armazenamento de dados de resultados permite que a análise seja realizada nos dados. Você pode descobrir quais alterações foram responsáveis pela introdução de uma falha. Armazenando o número da revisão mais recente ou o número da compilação com uma execução de teste, um desenvolvedor pode restringir exatamente quais alterações introduziram um problema. Desenvolvedores podem economizar várias horas do seu tempo graças a isso. Você também pode descobrir rapidamente que alteração corrigiu um problema e separar novas falhas das falhas existentes.
As tendências de resultados históricos podem até ajudar a melhorar o processo. Eu pedi a um líder da equipe que decidisse mudar um processo depois de examinar nossas tendências de resultados para uma equipe que mostrava padrões de queda nos resultados após o check-in mais tarde em determinados dias da semana.
Mais do que resultados aprovados ou reprovados
Arquivos e artefatos gerados por testes automatizados, como logs, capturas de tela e arquivos de dados de desempenho, também devem ser armazenados com os dados dos resultados. Juntos, todos esses dados devem ser facilmente acessíveis a todos da equipe, desde o último teste realizado três dias atrás até esse momento. Muitas vezes, a única maneira de encontrar dados é dependendo de um especialista acessando os dados em um servidor remoto. Não faça sua equipe depender apenas de uma ou duas pessoas para obter essas informações. As informações devem estar disponíveis para todos.
Os logs devem ser detalhados o suficiente para fornecer informações precisas aos desenvolvedores para corrigir problemas mais rapidamente. Garantir que as informações da pilha de chamadas e informações detalhadas da execução passo-a-passo sejam postados é um fator muito importante. Dessa forma, mesmo os testes no nível do sistema e de integração podem destacar a fonte exata de um problema. Isso é crítico se sua equipe tiver um número baixo de testes de unidade (ou nenhum teste de unidade).
Geralmente, as equipes usam teste de integração abrangente ou testes de ponta a ponta para obter mais valor com a criação de testes com menos tempo. Relatórios sólidos sobre onde esses testes falharam são absolutamente críticos para tornar essas falhas acionáveis. Sem ele, um desenvolvedor precisaria passar por um longo processo para reproduzir o problema.
Se seus testes armazenam dados de desempenho, você pode plotar tendências para ver como as coisas estão progredindo ao longo do tempo. Este é um dos bônus mais úteis dos testes automatizados e armazenamento de dados de resultados.
O benefício oculto dos dados visíveis
Tornar os resultados dos testes automatizados mais visíveis tem um benefício oculto interessante. Até você perceber que algo especial começa a acontecer: relatar testes automatizados efetivamente tem um efeito cíclico de melhorar seus testes automatizados, aumentar a cobertura, aumentar rapidamente a qualidade e impulsionar a gravação de mais e melhores testes.
Não vi isso acontecer quando eu estava implementando relatórios para minha equipe há alguns anos atrás. Eu só precisava de uma maneira de relatar resultados, então montei algo para fazer isso. De repente, houve um grande interesse nos resultados de testes automatizados pela primeira vez em toda a equipe de desenvolvimento, especialmente os líderes das equipes.
Esses testes já existiam há algum tempo eu somente tornei-os mais visíveis, para que agora as pessoas pudessem ver com que frequência os testes estavam sendo executados, o que estavam testando e o que não estavam. Houve uma aceitação no número de novos testes sendo gravados, os testes existentes foram aprimorados para torná-los mais confiáveis, e os gerentes e líderes começaram a investir mais em automação e pediram mais. A ação de falhas foi priorizada. Chegar a uma taxa de aprovação de 100% em todas as entregas – e mantê-la – tornou-se uma meta em nossa equipe.
Refleti sobre por que essa mudança repentina na cultura ocorreu, quando antes havia uma apatia geral por testes automatizados e integração contínua em toda a equipe.
Eu acho que se resumiu a três razões:
- A visibilidade aumenta o compartilhamento de ideias
- Há maior clareza em relação ao retorno do investimento
- As pessoas gostam de ser recompensadas por seu trabalho duro
Começamos a colocar nossos resultados em uma tela de TV do escritório, e eles também foram acessíveis a todos por meio de seus navegadores. Embora os mesmos testes existissem antes, eles eram gravados em um log do console com arquivos em um diretório temporário em um servidor de compilação em algum lugar que ninguém além do responsável pela compilação pudesse acessar. Eles estavam fora da vista e da mente, então ninguém entendia a importância e o valor da automação.
O retorno do investimento também não era claro, sem visibilidade. Agora, podíamos ver quantos bugs estávamos descobrindo e percebemos que, com melhores relatórios, podíamos identificar rapidamente e restringir as causas e as correções. Isso também ajudou a melhorar a confiabilidade dos testes, porque ver constantemente testes não confiáveis alterarem a taxa de aprovação não era mais sustentável com os resultados bem diante dos nossos olhos; isso poderia desacreditar os nossos testes.
Por fim, o trabalho com a construção de código é obviamente gratificante; você cria um produto que as pessoas usam, e isso é uma recompensa altamente visível. Escrever testes automatizados, no entanto, não tinha uma recompensa visível antes. Ninguém realmente sabia sobre eles ou o quão importante eles eram. Relatórios sólidos mudaram isso, tornando-se gratificante, porque agora todos podiam ver os testes.
Aqui está outra dica: tente tornar o nome do autor do teste visível ao lado do teste também, juntamente com quem o corrigiu após a interrupção. Assim as pessoas podem ver quem escreveu os testes, quem os corrigiu toda vez que erros eram descobertos e nos impediam de enviar um código com problemas. Isso dá crédito ao autor do teste e quem o corrigiu.
Transforme hoje o fluxo de trabalho de teste automatizado de sua equipe com relatórios eficazes. Você vai descobrir como fazer entregas de qualidade superior e com mais rapidez.
Este texto é uma adaptação livre do artigo publicado por Ajeet Dhaliwal em https://www.stickyminds.com/article/reporting-automated-test-results-effectively.
Você precisa melhorar o seu processo de qualidade de software? Clique aqui e veja como nós podemos te ajudar.