Abrangência
Recurso disponível a partir do AppServer versão 20.3.1.13 & tlppCore versão 01.04.04.
O dilema do troubleshooting em DevOps
Em práticas de DevOps, é comum utilizar uma variedade de ferramentas que se integram, permitindo que uma acione a outra para executar processos específicos de forma automatizada e contínua.
Para obtermos uma compreensão mais aprofundada desse conteúdo, vamos analisar o diagrama simplificado apresentado abaixo:
Cada ferramenta possui um registro (log) que contém informações sobre o que acontece sob seu controle. No entanto, essas ferramentas não são capazes de obter informações específicas de outras ferramentas.
Da mesma forma ocorre na execução dos testes do PROBAT, que só tem conhecimento das informações de execução dos testes que ele mesmo iniciou.
O que queremos destacar é que, em um ambiente automatizado, haverá uma grande quantidade de informações sobre os eventos, mas essas informações estarão descentralizadas. Isso pode gerar um trabalho significativo para realizar a resolução de problemas (troubleshooting) quando os testes não forem executados conforme o esperado.
Se o erro estiver relacionado apenas a um teste específico, você poderá localizá-lo facilmente pelos resultados do PROBAT. No entanto, e se o evento ocorrer durante a execução do script ou em alguma outra ferramenta? Nesses casos, as informações descentralizadas podem dificultar a identificação e resolução do problema, tornando o processo de troubleshooting mais desafiador.
A Solução
Diante desse "problema", o PROBAT apresenta uma solução ao disponibilizar um recurso no qual ferramentas externas podem enviar informações importantes para o PROBAT usando o mesmo ID personalizado. Dessa forma, ao exportar os resultados dos testes, os dados dos eventos externos também são considerados, proporcionando uma visão mais completa e integrada das informações, facilitando o processo de análise e troubleshooting.
Com a centralização das informações, o trabalho de identificação do que ocorreu torna-se mais fácil, mesmo para pessoas menos experientes em ambientes complexos, uma vez que o PROBAT terá prontamente as informações de todas as ferramentas utilizadas no processo automatizado.
A proposta não é substituir as informações detalhadas presentes em cada log individual, mas sim centralizar os principais eventos para que o PROBAT possa sinalizar problemas ocorridos fora de sua própria execução, tornando o processo de troubleshooting mais assertivo e ágil. Essa abordagem permite que as equipes detectem e resolvam problemas de forma mais eficiente, melhorando a produtividade e a qualidade do desenvolvimento de software em um ambiente automatizado.
Como utilizar?
O PROBAT possui algumas 'Main Function', na qual permite que sejam executadas diretamente através do AppServer Command Line por qualquer processo de sua escolha. Aqui iremos utilizar como exemplo um Shell Script em Linux para orquestrar as tarefas de uma automação.
O script completo pode ser acessado por nosso projeto no GitHub que contém exemplos práticos de uso do PROBAT.
GitHub.com/TOTVS/tlpp-probat-samples/run/
Dessa forma, diretamente por um processo externo indicamos ao PROBAT quando o Script iniciou e encerrou sua execução, quando ocorreram eventos Positivos, de Erro ou somente Avisos, também podemos verificar se um Exit Code dentro do Script ocorreu sem erros e entregando ao PROBAT essa verificação.
Além dos estados acima, podemos informar qual é o Plano de Execução do processo, enviando ao PROBAT uma lista com os passos (Steps) e sua descrição. Com isso deveremos informar quando cada Step inicia e encerra, informando também se foi encerrado com sucesso ou erro.
Portanto, quando formos apurar os resultados no processo de exportação, o PROBAT irá considerar todos os dados recebidos da execução externa e anexar como fosse uma suite destacada, ou seja, se houver apenas um erro no script e não houver erro algum nos testes executados, ao mesclar as duas execuções o resultado final será negativo, justamente pelo erro ocorrido no evento do Script.
Importante: Para garantirmos que uma Execução real do PROBAT seja linkada com uma Execução Externa, devemos utilizar o recurso de Identificador Customizado e enviar o mesmo ID para todas as execuções do PROBAT, tanto as reais como a externa.
Funções
Abaixo seguem as funções disponíveis nesse recurso:
Início e Fim do Processo:
Asserts:
- tlpp.probat.over.assertOK
- tlpp.probat.over.assertError
- tlpp.probat.over.assertWarning
- tlpp.probat.over.assertExitCode
Plano de execução: