Analisar falhas no processo de engenharia computacional com visualização de dados

Aqui estão três áreas em que a visualização de dados pode facilitar a sua vida de engenheiro de software.

Como desenvolvedores, estamos sempre procurando as melhores maneiras de garantir o envio de código de qualidade. Muitos de nós já usamos processos como solicitações de pull (PRs), testes de integração automatizados e monitoramento para garantir que o código que entregamos está bem escrito e funcionando conforme o esperado. A popularidade desses fluxos de trabalho fala por si, mas o que acontece quando eles dão errado? (E eles vão dar errado.) Quando estamos trabalhando em escalas maiores, como podemos saber se eles estão dando errado? A resposta é a visualização de dados; quando aplicada de maneira adequada, é uma ferramenta poderosa para obter informações sobre nossos fluxos de trabalho.

 

Neste artigo, discutiremos três áreas em que a visualização pode facilitar o diagnóstico e a solução de problemas na engenharia de software do dia a dia. 

 

Testes instáveis

 

Ao testar um novo código, você procura os testes que falham para destacar os bugs a serem corrigidos. Mas e os testes que só falham algumas vezes? Todos nós ficamos frustrados com a sutil perda de tempo de testes fragmentados, mas quantas vezes simplesmente descartamos isso como algo que simplesmente acontece conosco e aceitamos o tempo perdido como um custo de escrever software? E se pudéssemos ver o quão instáveis ​​nossos testes foram para todos na equipe?

 

 

A visualização acima é obtida deste painel de exemplo de código aberto que mostra o status dos conjuntos de teste executados para o repositório sveltejs / svelte. Esse tipo de visão panorâmica reúne muitas informações em um pequeno espaço para que seus olhos possam fazer o que fazem de melhor: detectar padrões. Cada linha na visualização representa um único teste, enquanto cada coluna representa uma execução (talvez acionada por uma solicitação pull). Se uma linha tiver muitos círculos vermelhos (falhas no teste), você pode começar a suspeitar que o teste é escamoso. No entanto, se uma coluna tiver muitos círculos vermelhos e / ou cinza (testes sendo cancelados), então é mais provável que haja um problema com o código que está sendo enviado. 

 

Os testes de integração, em particular, levam muito tempo para serem executados. Se todos na equipe estão esperando alguns minutos extras cada vez que enviam código, esses minutos podem adicionar dias de produtividade desperdiçada muito rapidamente. 

 

A visualização a seguir mostra quanto tempo cada teste levou para ser executado e expõe os padrões.

 

 

Algo que você pode notar em ambas as visualizações é a falta de agregação. Essas técnicas de visualização enfatizam os padrões de superfície, mostrando os dados subjacentes diretamente. Isso permite uma investigação mais aprofundada diretamente da visualização. Por exemplo, cada teste de integração representado aqui tem uma dica de ferramenta interativa que fornece detalhes, bem como links diretos para a execução no GitHub para análise posterior.

 

Considere onde poderíamos estar sem essas visualizações: essencialmente olhando para uma tabela de informações. Esta é a interface padrão para o mesmo conjunto de testes de integração mostrado nas visualizações:

 

 

Embora essa seja sempre uma interface útil para obter informações detalhadas e analisar uma execução de teste específica, ela não nos dá uma visão dos padrões que podem ter impacto sistêmico em nossa produtividade.

 

Solicitações de pull

 

As solicitações pull são a forma como a maioria das equipes colabora para enviar código de qualidade. Eles fornecem um processo para dar feedback e garantir a qualidade, mas o processo nem sempre é equilibrado. Alguns colegas de equipe podem acabar revisando muitos RPs, enquanto outros podem estar ajudando, mas não são solicitados. A visualização de dados pode nos ajudar a revelar esses padrões no processo, para que possamos ajudar a trazê-los de volta ao equilíbrio.

 

 

Podemos usar a visualização para obter uma visão panorâmica das solicitações de pull aberto em um repositório e responder a algumas perguntas importantes. A primeira pergunta que podemos fazer é: qual é a carga de trabalho do revisor na equipe? Pode fazer sentido que os membros mais antigos revisem mais, mas você também pode notar que alguns companheiros de equipe estão prontos para mais responsabilidades.

 

 

A visualização de dados nos permite responder a outra pergunta: onde estão as solicitações de pull estagnadas que precisam de atenção? Você também pode procurar padrões em RPs que não foram revisados ​​ou estão estagnados há muito tempo. Os desenvolvedores individuais podem ter aquela sensação incômoda de que seu RP não está recebendo a atenção que merece, mas pode ser difícil entender onde isso se encaixa com todos os outros trabalhos que estão acontecendo na equipe. Ver os PRs não revisados ​​no contexto pode ajudar uma equipe a decidir o que precisa de atenção extra.

 

 

Monitoramento

 

Um caso de uso bem conhecido para visualização de dados no processo de engenharia é o monitoramento do status de nossos sistemas. Seja observando as métricas do sistema, como uso da CPU e latência da rede, ou observando um aumento nos erros ou nas inscrições de usuários, a maioria das equipes tem algum tipo de painel para rastrear métricas importantes.

 

O que você pode não ter visto é uma visão muito compacta de suas métricas usando o que é chamado de gráfico de horizonte. A visualização a seguir mostra os códigos de status HTTP por minuto para um aplicativo em um período de quase duas semanas, minuto a minuto.

 

 

O princípio de fazer a menor quantidade de agregação surge novamente. Com essa forma compacta, podemos obter informações muito detalhadas ao mesmo tempo em que vemos padrões mais amplos surgindo. Você pode ver que em algum ponto por volta de 17 de abril, houve um grande aumento de erros 403 (devido a algum código com erros que foi implantado). Para o mesmo período, você pode ver que o status 200 é mais claro, indicando menos solicitações bem-sucedidas.

 

Este é um componente de código aberto baseado em D3 chamado TimeChart, que se destina a facilitar a visualização de padrões em métricas de séries temporais densas. Suporta interação, então você pode ver os valores exatos para qualquer minuto no intervalo de tempo.

 

Conclusão

 

 

No final das contas, todos nós queremos ser produtivos e entregar código funcional de qualidade, mas nem sempre é fácil ver como estamos nos saindo. A visualização de dados pode ser uma maneira poderosa de direcionar nossas energias e obter uma visão mais clara de como nossos processos estão funcionando. Agregar o mínimo de dados possível pode nos dar uma visão ainda mais precisa do que está acontecendo em nossos sistemas. Você usou a visualização de dados para gerenciar o processo de engenharia de sua equipe? Quais visualizações de dados você acha que seriam benéficas para o seu fluxo de trabalho? Deixe-nos saber nos comentários o que funciona para você!

 

 

O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.


Strong

5178 Blog Postagens

Comentários