É... Chegou a hora dos testes. Sabemos que em muitas vezes, ela até já passou. Bom, e agora? Consigo reforçar a qualidade do meu desenvolvimento?
A resposta é: SIM. Sim, você consegue. A ferramenta Toolqa busca exatamente isto. É um facilitador. Qual é o seu objetivo? Garantir que as APIS atendam aos requisitos de negócio pré-estabelecidos, e também mantenha-se rígida com as <sarcasm> futuras tentativas frustradas </sarcasm> de acabar com a sua aplicação, site, App ou qualquer outro que utilize-se de sua API.
Agora deve estar se perguntando, mas como é que isto acontece? Onde está a mágica?
A classe ToolQA.tool.BP.Tool foi projetada como um agente de teste inteligente e automatizado para classes de API no InterSystems IRIS, e seus maiores objetivos são:
- Gerar de forma automática (a partir da seleção de uma classe) novas classes de teste para qualquer classe de API;
- Avaliar os próprios métodos e parâmetros da classe de API usando metadados da classe IRIS;
- Gerar diversos valores de teste sintéticos para cada parâmetro do método com base em seu tipo (Integer, String, Float, Date...);
- Confrontar esses valores de teste em relação ao esquema do seu banco de dados antes de invocar o método da API, garantindo a conformidade com o tipo e os limites;
- Compilar e salvar a classe de teste gerada no ambiente IRIS;
- Fornecer um método Run() executável dentro da classe de teste gerada para executar os testes e reportar os resultados.
Certo, entendi, mas, e como eu faço isto? Basta seguir os passos abaixo:
Input
Você chama o método
DO ##class(ToolQA.tool.BP.Tool).GenerateTestForClass(“Your.API.ClassName”)
Com o nome da API que você deseja testar.
- Introspecção e Análise de Metadados A ferramenta utiliza IRIS’ %Dictionary.ClassDefinition :
Abra a definição de classe da API;
Enumere todos os métodos de classe públicos;
Extraia os nomes e tipos de parâmetros de cada método.
- Synthetic Test Data Generation For each method parameter:
O método CreateFakeValue gera um valor fictício compatível com o tipo do parâmetro (por exemplo, string, inteiro, float);
A ferramenta tenta encontrar um mapeamento entre parâmetros e classes/campos persistentes do banco de dados por meio do método ClassBank, examinando classes persistentes conhecidas em busca de campos correspondentes;
Se existir um mapeamento, o valor fictício gerado é validado em relação ao tipo e às restrições do campo do banco de dados (ValidateValueField), verificando a correção do tipo, os limites de comprimento e os limites numéricos.
- A geração da classe de teste é criada dinamicamente pelo agente como uma nova classe de teste com a convenção de nome:
ToolQA.QA.Tests.Test
A classe contai um método Run() que:
Exibe a mensagem de início do teste;
Executa cada método da API com os parâmetros gerados, após a validação;
Captura e registra erros ou exceções durante chamadas de métodos;
Relata o sucesso ou a falha do teste.
- A compilação e execução da classe de teste gerada é salva no formato de arquivo *.cls e compilada automaticamente com o IRIS. Em seguida você executa os testes com:
DO ##class(ToolQA.QA.Tests.Test).Run()
Como as respostas e resultados são tratados:
A classe de teste captura o status de retorno (%Status) de cada chamada de método da API;
Erros (códigos de insucesso) são exibidos no console com os detalhes:
Exceções geradas por métodos de API são capturadas e registradas com seu rastreamento de pilha;
Como o agente gera entradas sintéticas, ele não valida o conteúdo da resposta além do sucesso da execução — mas você pode estender a classe de teste para adicionar asserções em objetos de saída ou estruturas de dados retornadas, conforme necessário.
Para mais informações sobre a ferramenta e como proceder, acesse o link:
https://openexchange.intersystems.com/package/toolqa
Esta ferramenta foi desenvolvida em conjunto com @Andre Ribera Dienes Friedrich. Obrigado pela sua consideração... E o céu é o limite.