Alguns conceitos para começar a testar APIs REST. Precisamos saber alguns conceitos básicos e depois podemos começar a testar. De forma bem resumida o que são os métodos HTTP, o que é URL e URI, como fazer uma requisição no Postman e os principais códigos de status HTTP!
Alguns links e materiais indicados para quem quer iniciar nesse mundo de testes em API foram disponibilizados.
2. O que é uma API ?
Application Programming Interface, de forma resumida, é um conjunto de rotinas
e padrões disponibilizados por uma aplicação, através da qual ela possibilita
que outras aplicações se comuniquem e/ou utilizem seus recursos.
De um lado existe a aplicação que deseja compartilhar padrões, rotinas ou
protocolos e que disponibiliza tudo isso através de uma API. Do outro lado,
existe a aplicação cliente que deseja consumir os recursos oferecidos, devendo
então utilizar a API disponibilizada.
3. O que é REST?
Primeiro é importante saber que REST (Representational State Transfer) é
resumidamente, um modelo arquitetural de transferência de estado de recursos
entre aplicações que desejam se comunicar. Trabalha com base no protocolo HTTP
para:
➔ realizar a comunicação entre aplicação servidor e aplicação cliente
➔ padronizar como são feitas as requisições e respostas entre as aplicações
➔ manipular recursos em um servidor
4. Comunicação em rest
O modelo REST utiliza-se dos métodos HTTP
para estabelecer a comunicação e manipular
recursos em um servidor:
➔ GET: utilizado para buscar e obter
informações
➔ POST: utilizado para enviar
informações (inserir)
➔ PUT: utilizado para para enviar
informações a um recurso já existente
(atualizar)
➔ DELETE: utilizado para remover um
recurso do servidor.
5. Padrão de representação em rest
Para que aplicações diferentes possam de fato entender as informações trocadas
entre si, é preciso utilizar um padrão de transferência e representação dos
dados. Em aplicações que seguem o REST, tipicamente a representação é feita em
XML ou JSON.
6. Afinal, o que é aPI REST???
APIs REST são aquelas desenvolvidas seguindo os padrões de comunicação e
representação (entre outros princípios), definidos pela arquitetura REST.
7. o QUE TESTAR EM
API REST?
➔ Testar quando não ainda não
existe interface pronta
➔ Segurança (autenticação,
autorização, criptografia, etc)
➔ Stress, carga e performance
➔ Os códigos de erros e mensagens
das respostas
➔ Os padrões de representação do
conteúdo de retorno (body)
8. cOMO TESTAR?
Testes para APIs podem ser automatizados ou manuais. Existem ferramentas,
tanto de interface gráfica como por linha de comando, que possibilitam
realizar testes e ainda automatizá-los.
9. Testando uma API...
Quando queremos acessar uma API para consultar ou manipular um recurso,
através dos métodos HTTP, precisamos informar seu endereço.
O endereço de um recurso, também chamado de URI, é a soma da sua localização e
do seu nome.
Vamos testar requisições na API informada acima, que é pública e sua
documentação está disponível em: https://battuta.medunes.net/
10. Testando uma API...
É informado na documentação da API (muito importante sempre consultar o
contrato da API antes de testar), que para toda requisição a ser realizada
devemos informar uma “api-key”.
Isso é muito comum em acesso a APIs: api-key, key, id-user, token...
São restrições de segurança geralmente implementadas para autenticar e
autorizar o consumo de recursos em uma API.
Para essa API, o hash code de identificação (veja na documentação como
gerar) deve ser enviada como parâmetro na URI de requisição.
11. EXEMPLO COM POSTMAN
No exemplo acima, passamos parâmetros na URI, pois, foram necessários para
executar a requisição. Parâmetros são opções que influenciam diretamente na
resposta que a API retornará.
12. EXEMPLO COM POSTMAN
➔ Os parâmetros acrescentados à URI iniciam após o sinal de ? (query parameters)
➔ A requisição retornará apenas as regiões = new york
➔ Foi concatenada a opção do token, exigido pela API para autorizar o acesso às
informações (& para concatenar)
➔ Existem 4 tipos de parâmetros: headers parameters, query parameters, path
parameters e body parameters. Veja mais em:
https://idratherbewriting.com/learnapidoc/docapis_doc_parameters.html
13. EXEMPLO COM POSTMAN
Feita a requisição GET, devemos analisar a resposta, que retorna código de
status, mensagens, body e headers.
Body em formato JSON
Status Code e tempo de resposta Headers: detalhe da requisição/resposta
14. Códigos de status HTTP
Quando estamos testando, é importante conhecer o significado dos códigos de
status nos retornos das requisições:
➔ 1XX: Informativo – a solicitação foi aceita ou o processo continua em andamento
➔ 2XX: Confirmação – a ação foi concluída ou entendida
➔ 3XX: Redirecionamento – indica que algo mais precisa ser feito ou precisou ser feito
para completar a solicitação
➔ 4XX: Erro do cliente- indica que a solicitação não pode ser concluída ou contém a
sintaxe incorreta
➔ 5XX: Erro no servidor – o servidor falhou ao concluir a solicitação
“XX” refere-se ao detalhe do código, que indica de forma mais específica o
retorno. Veja mais detalhe: http://www.macoratti.net/http_err.htm
15. Em breve...
Em breve continuarei falando sobre testes de API REST, mas
com foco em automatização dos cenários.
Testes de API automatizados visam agilizar o processo e
atualmente, existem diversas ferramentas para nos auxiliar
nessa jornada!!!
16. Referência e Links utilizados
Imagem slide 2: https://damienfremont.com/2017/11/23/rest-api-maturity-levels-from-0-to-5/
o que é api rest?: https://phpenthusiast.com/blog/what-is-rest-api
O que é API? REST e RESTful? https://becode.com.br/o-que-e-api-rest-e-restful/
JSON vs XML: https://www.sunnyhoi.com/json-vs-xml-format-use-api/
Imagem slide 3: http://www.matera.com/blog/post/como-testar-uma-api-rest
Imagem do slide 4: https://phpenthusiast.com/blog/what-is-rest-api
Diferença entre URL, URI e URN:
https://www.igluonline.com/qual-diferenca-entre-url-uri-e-urn/
17. Materiais indicados
Documentação Postman: https://learning.getpostman.com/docs
Blog Robotizando Testes:
http://robotizandotestes.blogspot.com/2017/10/season-api-testing-ep-01-testes-de-api.html
Site do Robot Framework: https://robotframework.org/
Biblioteca RequestsLibrary:
http://bulkan.github.io/robotframework-requests/#Create%20Session
Exemplos de testes de API com Robot Framework: https://github.com/alinebiath
Testando serviços web API com Postman:
http://www.linhadecodigo.com.br/artigo/3712/testando-servicos-web-api-com-postman.aspx