REST Assured vs. JMeter: Uma Comparação de Ferramentas de Teste REST
Publicados: 2022-03-11O teste automatizado é um componente crítico do processo de garantia de qualidade de software. Mas testar APIs de transferência de estado representacional (REST) pode ser um negócio complicado. Muitos que recorrem ao teste manual de APIs REST ignoram detalhes e perdem maneiras de economizar tempo.
Qualquer serviço de API REST sendo testado corretamente terá estas áreas cobertas:
- Testando se o serviço de API está em conformidade com os padrões REST
- Teste de códigos de resposta de serviço de API
- Asserção do conteúdo de resposta do serviço de API
- Benchmarking de desempenho do serviço de API
Para isso, você precisa das ferramentas certas. Apache JMeter e REST Assured são duas ferramentas de teste REST populares para testar serviços de API REST. Você pode aprender mais sobre como usá-los na prática aqui e aqui.
Neste artigo, você aprenderá os prós e contras dessas duas ferramentas e onde elas se encaixam melhor em seus projetos de API REST existentes.
Facilidade de configuração
Há um pré-requisito: Tanto o JMeter quanto o REST Assured requerem Java, portanto, você precisa ter o Java instalado em seu computador para executar o JMeter ou o REST Assured.
Instalar o Apache JMeter é muito simples: vá para a página de download, escolha o ZIP ou TAR, baixe o arquivo, descompacte-o e pronto.
Vá para a pasta onde você descompactou o arquivo, vá para a subpasta bin e execute jmeter.bat (ou similar para seu sistema operacional, se for diferente do Windows). Para obter informações mais detalhadas sobre como configurar o Apache JMeter, consulte esta página.
Instalar o REST Assured é uma experiência um pouco diferente. REST Assured não é uma ferramenta independente. É uma biblioteca Java. Para usá-lo, você precisa configurar um novo projeto Java e incluí-lo como uma biblioteca para seu projeto. Claro, há suporte para muitas ferramentas de compilação, então você pode simplesmente apontar seu resolvedor de dependência para algum repositório público (Maven). Você pode encontrar informações mais detalhadas sobre como configurar o REST Assured aqui.
Documentação
A documentação do Apache JMeter pode ser encontrada no site oficial do JMeter. Ele fornece uma documentação bastante completa, desde o início até recursos complexos, como ouvintes. Além disso, no site oficial do JMeter, você pode encontrar links para alguns recursos muito ricos, como tutoriais em vídeo. Se você gosta menos de ler e mais de assistir, isso é definitivamente uma vantagem para você.
A documentação REST Assured, como a própria ferramenta/biblioteca, pode ser encontrada dentro do repositório do Github. Ele tem uma grande lista de recursos listados na documentação online com explicações muito detalhadas de como conseguir algo. No entanto, toda a documentação é uma enorme página da Web - não é a maneira mais amigável de explorar uma ferramenta.
Criação e manutenção automatizada de testes REST
O Apache JMeter, como um aplicativo independente com uma interface gráfica do usuário (GUI), permite que você crie seus testes a partir da GUI. Isso pode ser útil especialmente por causa da hierarquia de entidades introduzida pelo JMeter—tudo o que você criar dentro do seu teste será mostrado em uma representação semelhante a uma árvore na GUI do JMeter.
Para criar um teste, não é necessário ter nenhuma habilidade de codificação. No entanto, a GUI não limita nenhuma das possibilidades em relação ao planejamento de testes. Se você ainda quiser adicionar alguma programação/fluxo personalizado, os componentes do BeanShell permitirão que você faça isso.
Ao salvar seu projeto JMeter, tudo o que você criou será salvo em um arquivo XML enorme (com a extensão .jmx ). Geralmente, mesmo para uma pequena alteração em um dos testes, você (muito provavelmente) terá que reabrir o projeto na GUI para fazer a alteração.
Se você precisar colaborar com outras pessoas no mesmo arquivo de projeto JMeter, esse enorme arquivo XML não será fácil de manter usando qualquer sistema de gerenciamento de controle de origem (SCM) (como Git, SVN, Perforce, etc).
O REST Assured, por outro lado, requer habilidades de codificação Java para criar os testes. Não há GUI amigável para criação de teste. No entanto, REST Assured permite que você escreva os testes usando a linguagem Gherkin (sintaxe Given-When-Then), portanto, mesmo que você precise de algumas habilidades de codificação Java, os testes são bastante legíveis por humanos.
given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));Como REST Assured é uma biblioteca e os testes são realmente escritos em Java, você pode organizar seus testes em arquivos Java separados para que, quando precisar alterar um teste, você só precise abrir um arquivo. Você não precisa de uma GUI, portanto, pode editar o teste facilmente, mesmo por meio de um terminal SSH. A colaboração com outras pessoas é bastante simples porque é fácil manter arquivos Java usando qualquer SCM.
Tipos de testes REST
O JMeter é conhecido como uma ferramenta de teste de desempenho para testar aplicativos e serviços da web. Pronto para uso, ele tem boas opções de relatórios com diferentes tipos de gráficos que você pode usar para mostrar as métricas de teste de desempenho.
Por outro lado, também não é o cenário de uso principal do JMeter. Você pode criar testes funcionais para APIs REST com JMeter, incluindo declaração de resposta.
O cenário de uso principal do REST Assured é para testes funcionais de serviços da API REST. Ele ainda vem com seu próprio mecanismo de afirmação de resposta (a sintaxe Gherkin). Como REST Assured é uma biblioteca Java, ela pode ser facilmente integrada a testes de unidade.
Quando se trata de testes de desempenho, o REST Assured não oferece suporte a testes de desempenho prontos para uso. No entanto, se você quiser usá-lo para teste de desempenho, terá que desenvolver sua própria estrutura personalizada para teste de desempenho em torno do REST Assured.

Execução de teste
Os testes JMeter podem ser invocados de duas maneiras.
Na interface do usuário, clicando no botão Executar:
Da linha de comando:
jmeter -n -t your_script.jmxA recomendação oficial do JMeter é não executar os testes de desempenho usando a GUI, pois os testes serão executados mais lentamente (em termos de número de solicitações por segundo) em comparação com a execução da linha de comando.
O REST Assured, por outro lado, requer um executor de teste separado, por exemplo, jUnit ou TestNG (ou qualquer outra forma de execução de código Java).
Do Eclipse usando TestNG:
A partir da linha de comando usando, por exemplo, a ferramenta de construção Ant:
ant run-testsTipos de relatórios
O Apache JMeter, devido ao seu objetivo principal, possui um grande número de tipos de relatórios que você pode criar a partir dos resultados de seus testes. Como você pode executar testes de desempenho do JMeter, as métricas de desempenho geralmente são mostradas usando gráficos como este:
Você pode aprender mais sobre os relatórios do JMeter e os tipos de relatórios que você pode criar aqui.
O próprio REST Assured não cria nenhum relatório, portanto, depende de você e de uma estrutura de teste que você escolheu. No entanto, quando integrado a alguma estrutura de teste de unidade, você pode obter relatórios bastante úteis em formatos HTML, texto ou XML.
Integração com Jenkins
Quando se trata de integração contínua de produtos em teste, é muito importante integrar sua estrutura de automação de teste com ferramentas de CI para executar testes e relatar resultados.
Os testes automatizados do JMeter podem ser facilmente integrados ao Jenkins usando o plug-in Performance, que permite configurar ações pós-compilação e obter uma página de painel bonita de uma página de trabalho do Jenkins.
O REST Assured também pode ser facilmente integrado ao Jenkins porque o Jenkins possui plugins para quase todas as estruturas de teste; por exemplo, o plugin TestNG que novamente pode criar um gráfico de tendência sólido para resultados de teste.
Atividade da comunidade
Esta é uma categoria que não pode ser medida facilmente. A atividade da comunidade depende de vários fatores, como maturidade da ferramenta ou número de colaboradores.
Apache JMeter tem uma comunidade maior hoje em dia. Isso se deve principalmente ao fato de que o JMeter apareceu no mercado há muito tempo e é considerado o padrão da indústria quando se trata de testes de desempenho de aplicativos e serviços da web. JMeter publica lançamentos oficiais a cada 5-6 meses. Seu repositório GitHub é muito ativo, com novos commits diariamente. O JMeter usa o Bugzilla como rastreador de problemas e possui uma lista de problemas abertos que são alterados com frequência. Existem mais de 23.000 resultados para JMeter na pesquisa do StackOverflow. Dos sites de redes sociais, o JMeter tem uma conta oficial no Twitter. No Facebook e LinkedIn, não há uma conta oficial para o JMeter, mas existem alguns grupos, o maior dos quais é este grupo do Facebook e este grupo do LinkedIn.
REST Assured está abrindo caminho para o palco principal e se tornou a primeira escolha, uma recomendação de várias fontes, quando se trata de automatizar os testes funcionais do serviço REST API. REST Assured tem publicado lançamentos oficiais uma vez a cada 6 meses nos últimos dois anos. O repositório do GitHub tem muitos contribuidores e é um pouco menos ativo que o do JMeter, mas também é muito ativo. O REST Assured está rastreando problemas no repositório do GitHub, então tudo está em um só lugar. No StackOverflow, existem mais de 2.000 resultados de pesquisa para REST Assured, portanto, podemos dizer que é significativamente menor em comparação com os resultados de pesquisa do JMeter. Quanto aos grupos de redes sociais, apenas o grupo LinkedIn foi encontrado com número significativamente menor de membros em relação ao JMeter. A comunidade REST Assured pode não ser tão grande quanto a comunidade JMeter, mas é muito ativa.
Resumo
Tanto o JMeter quanto o REST Assured têm suas vantagens um sobre o outro. Mas com base no projeto em que você está trabalhando, um será mais adequado do que o outro para a automação de teste da sua API REST. Ambos são muito robustos, têm opções de teste úteis, possuem recursos de relatórios interessantes e podem ser facilmente integrados a estruturas de teste personalizadas.
Aqui está um resumo de todos os critérios de comparação explorados neste artigo para essas duas ferramentas de teste REST populares:
| Apache JMeter | Tenha certeza | |
|---|---|---|
| Requer habilidades de codificação | Não | Sim (Java) |
| Documentos completos | sim | sim |
| Teste funcional | Sim (mas exagero) | sim |
| Teste de performance | sim | Não (fora da caixa) |
| Adequado para SCM (Git, P4...) | Não | sim |
| Relatórios de teste | sim | Não |
| Integração com ferramentas de CI | sim | sim |
| Integração com testes unitários | Não | sim |
| Testar paralelização | sim | sim |
| Atividade da comunidade | sim | sim |
