O gRPC é uma estrutura de chamada de procedimento remoto (RPC), concebida pelo Google.
Existe uma observação interessante sobre a origem do seu nome. Uma chamada de procedimento remoto permite executar uma função ou método numa máquina distante como se fosse uma função local. É uma abstração que simplifica a complexidade das chamadas HTTP e outras nuances da rede.
O gRPC facilita e acelera a comunicação e a transferência de dados entre microsserviços. Utiliza o protocolo HTTP/2, mas simplifica a conexão para os programadores.
Os microsserviços podem operar em diversas linguagens, o que exige uma programação que permita a sua comunicação.
O gRPC simplifica este processo, oferecendo suporte a várias linguagens. Ele emprega buffers de protocolo como linguagem de definição de interface, estabelecendo a estrutura das mensagens.
Testando Aplicações gRPC
O teste é crucial para qualquer software complexo, incluindo aplicações gRPC. Testar aplicações gRPC assegura que os microsserviços e outros serviços se comuniquem de maneira eficiente e confiável.
Garante que serviços desenvolvidos em diferentes linguagens se comuniquem sem barreiras linguísticas. Isto é possível graças aos buffers de protocolo do gRPC, que são independentes da linguagem.
O tratamento de erros e exceções também se torna claro ao testar a aplicação. Além disso, testes de desempenho permitem avaliar o comportamento dos serviços sob diferentes cargas de tráfego.
Agora que já conhece o gRPC, vamos explorar algumas ferramentas de teste.
Kreya
Kreya é um cliente de API com uma interface gráfica para gRPC e APIs REST. O cliente gRPC suporta streaming de solicitações, chamadas unárias, validação e muito mais. Permite também gerar dados simulados para testar a API.
As solicitações e as suas configurações são armazenadas num sistema de ficheiros, permitindo o uso do git ou outro sistema de controlo de versões para sincronizar projetos. O Kreya permite também definir testes através de scripts, testando a API em cada chamada.
O Kreya oferece um plano gratuito para uso individual, que inclui um cliente gRPC completo, configurações de autenticação reutilizáveis, ambientes e modelos, entre outros.
ghz
ghz é um utilitário de linha de comando de código aberto, escrito em Go, para testes de carga e benchmarking gRPC. Suporta ficheiros proto, protosets pré-construídos ou reflexão de servidor. Permite a inclusão de dados personalizados nas solicitações através de variáveis de modelo em Go.
Além do utilitário de linha de comando, o ghz oferece uma interface web complementar para visualizar, monitorizar e salvar os resultados dos testes. Os resultados podem ser visualizados em diversos formatos de ficheiro, como CSV, JSON e HTML. No momento da redação deste artigo, a interface web encontrava-se em fase beta.
Postman
Postman é uma plataforma de desenvolvimento de API que suporta a construção e o teste de diversos tipos de APIs, incluindo gRPC. No Postman, é possível escrever testes para solicitações individuais, coleções ou pastas.
Ao realizar uma solicitação gRPC no Postman, aceda à aba Scripts na visualização da solicitação e selecione quando deseja realizar o teste: antes ou depois da resposta. Pode ainda usar snippets de código para acelerar a escrita de testes.
Insomnia
Insomnia é uma ferramenta para projetar, testar e depurar APIs. Suporta solicitações REST, GraphQL, WebSockets e gRPC. Ao criar uma nova solicitação no Insomnia, pode selecionar gRPC e inserir o endpoint da URL da API.
É necessário adicionar um ficheiro .proto para definir as mensagens. O Insomnia suporta vários tipos de solicitações, incluindo streaming de cliente e servidor, além de solicitações unárias e streaming bidirecional.
Para testar APIs no Insomnia, adicione um documento de design para a sua API e, na aba Teste, crie um conjunto de testes. O Insomnia usa o framework Mocha para testes unitários e Chai para asserções.
Stackhawk
Stackhawk é uma ferramenta de teste de segurança de API que também oferece uma solução para serviços gRPC. Permite garantir a segurança dos endpoints da sua API. Para verificar uma aplicação gRPC com o Stackhawk, é preciso definir um ficheiro stackhawk.yml com as configurações necessárias.
O Stackhawk oferece um plano gratuito com testes automatizados modernos integrados no DAST no pipeline de CI/CD para uma única aplicação. No entanto, recursos como autenticação, automação, insights, notificações e suporte a todos os tipos de API estão incluídos em todos os planos pagos.
gRP Curl
gRP Curl é um utilitário de linha de comando de código aberto para conectar a servidores gRPC. É considerado um “curl para servidores gRPC”. O cURL não pode ser usado em servidores gRPC porque não suporta buffers de protocolo, que são mensagens binárias, lidando apenas com strings JSON.
É possível verificar o esquema dos serviços gRPC consultando um servidor que suporte reflexão de servidor, lendo arquivos de origem proto ou carregando arquivos “protoset” compilados, que contêm protos descritores de ficheiro codificados.
O gRPCurl não é uma ferramenta de teste completa, mas permite realizar consultas e testes básicos via linha de comando.
ReadyAPI da Smartbear
ReadyAPI da Smartbear suporta testes de API gRPC, mas apenas operações unárias. Para testar um serviço gRPC, é necessário configurar a etapa de teste Conexão API. Após essa configuração, é possível enviar solicitações e receber respostas do seu serviço gRPC.
Atualmente, o ReadyAPI suporta apenas operações unárias, ou seja, aguarda apenas uma única resposta do servidor.
NosyMouse
Nosymouse é uma ferramenta que inclui um testador gRPC para executar testes funcionais, de desempenho e de segurança, de forma manual ou automática. Oferece recursos como usuários virtuais simultâneos, aceleração, critérios de aprovação, tempos de reflexão, dados de teste e suporte para cenários de teste, juntamente com vários casos de uso ponderados.
Segue a metodologia de teste baseada em dados, garantindo suporte para dados de teste separados, variáveis, verificações automatizadas e casos de uso reais. Permite executar testes com diferentes entradas e verificar as saídas na interface.
Oferece um teste gratuito de 14 dias para testar dois usuários de serviço simultâneos.
Considerações Finais
Com o crescimento dos serviços e ferramentas gRPC, a escolha da ferramenta de teste gRPC adequada pode ser um desafio. A seleção correta é crucial porque afeta diretamente a funcionalidade da API. Um ponto importante a considerar é o suporte para diversas funcionalidades do gRPC, como reflexão de servidor e streaming. É essencial estar atento aos recursos específicos do gRPC ao escolher uma ferramenta de teste.
A seguir, descubra as melhores plataformas de teste de carga de API para otimizar o desempenho.