- Qualidade e Testes
Este é o primeiro de uma série de textos que iremos publicar relacionados às ferramentas utilizadas para realizar testes de serviços. Em nossos posts anteriores, já falamos sobre estratégias para testes de software, automação de testes funcionais web, e agora falarei sobre uma opção de abordagem para testes de serviço. Se você não tem conhecimento sobre o conceito de testes de APIs e suas variações, é interessante fazer uma leitura complementar – uma opção é este texto sobre um dos encontros da nossa Comunidade Prática de Qualidade.
Na SoftDesign, acreditamos que existem várias estratégias de testes passíveis de aplicação em um projeto. A escolha de uma delas depende do contexto, das skills dos profissionais que integram o time, da tecnologia utilizada, entre outros. Entretanto, essa regra não é válida quando falamos de esforço de testes para as camadas de uma aplicação. Mike Cohn, no livro Succeeding with Agile, apresenta o conceito de pirâmide de testes na qual uma suíte é constituída de três camadas de testes: Unidade, Serviço e Interface.
Ainda que este texto não seja sobre testes unitários, é importante deixar claro que indicamos fortemente o investimento de tempo de desenvolvimento nessa camada, principalmente se a aplicação está em fase inicial de construção. Caso você esteja trabalhando em um sistema legado, simplesmente comece de alguma forma, pois o aumento de segurança no código será observado em um curto espaço de tempo.
No Scrum Rio 2019, o palestrante Elias Nogueira falou sobre como efetivar o máximo de cobertura nos testes de APIs, sugerindo um raciocínio em testes similar à divisão de Pipeline, ou seja:
Este primeiro texto mostra como realizar testes de APIs (serviço) com Postman, mas os exemplos que daremos a seguir vão servir para qualquer outra ferramenta de validação de serviços Rest, como o Rest-Assured TestMace, Restlet, SoapUI ou JMeter, basta adaptar ao contexto. Utilizamos o Postman pois ele facilita a integração no pipeline, sendo necessário apenas exportar o JSON e utilizar o Newman.
Agora vamos falar sobre como aplicá-lo na rotina do trabalho de forma genérica, e ao longo dos próximos posts iremos aprofundar o tema.
Variáveis globais auxiliam muito na manutenção dos testes. Por exemplo, você pode utilizá-las para alterar a URL do serviço de acordo com o ambiente em um pipeline de CI ou CD, para versionar a API, para organizar os headers e tokens de autenticação, entre outros.
Como pode ser observado na imagem acima, criei duas variáveis globais, a primeira “BASE_URL” para indicar qual o link do serviço, e a segunda “jwt_token” para colocar a token do serviço. Mantenho o valor inicial e o valor atual em branco, pois o valor será inserido quando os testes forem executados. Também utilizamos as variáveis globais para centralizar as rotas dos serviços e poder reutilizá-las nos scripts.
Deste modo a aplicação fica assim:
É comum ver coleções sem uma estrutura lógica de validação e de evolução da aplicação que está sendo testada. Como pode ser observado na imagem a seguir, o que cada requisição vai validar não está legível. Com o passar das iterações, é natural que fique cada vez mais complicado gerenciar e dar manutenção nos testes.
Para organizar a suíte de testes, sugerimos a separação das pastas coleção por rotas ou caminhos, pois isso facilita a visualização dos testes e auxilia na organização em cada iteração, além de permitir rodar pre-request que auxiliam a gerar dados para os testes.
Essas duas dicas são básicas e iniciais, mas são a base para todas as outras dicas que iremos dar ao longo dos próximos posts. Assim que você colocá-las em prática, já poderá observar que seus testes de APIs terão uma fluidez maior e menor manutenção, resultando em economia de tempo, visto que você estará eliminando pequenos desperdícios.
Dicas de Programação; Simple Programmer; Inflectra; Quora; Elias Nogueira; Get Postman (1); Get Postman (2); Mountain Go At Software; Martin Fowler.