Testes em API, utilizando os métodos GET, PUT, POST e DELETE, a partir de um caso de teste simples onde é possível identificar os tipos de testes possíveis.
3. COMO FUNCIONA UMA
REQUISIÇÃO
Cliente (Aplicação) está em um Restaurante e verifica no Cardápio o prato desejado
(um suculento Bife). Em seguida chama o Garçom (API) e solicita esse pedido. O
Garçom consulta a disponibilidade do prato na Cozinha (Servidor), e os responsáveis
pelo prato na cozinha informam se o prato está disponível ou indisponível, havendo
disponibilidade do prato, o garçom devolve o prato a você.
4. TIPOS DE TESTE
Cliente (Aplicação) está em um Restaurante e verifica no Cardápio o prato desejado
(um suculento Bife). Em seguida chama o Garçom (API) e solicita esse pedido. O
Garçom consulta a disponibilidade do prato na Cozinha (Servidor), e os responsáveis
pelo prato na cozinha informam se o prato está disponível ou indisponível, havendo
disponibilidade do prato, o garçom devolve o prato a você.
Teste não funcional: Qual tempo
de resposta da
requisição(Pedido)?
Teste funcional: As informações
trazidas estão corretas?
O código de resposta está
de acordo para o recurso
indisponível?
6. CÓDIGOS HTTP DE RETORNO
MAIS COMUNS
http://www.restpatterns.org
• 200 Sucesso
• 201 Criado com sucesso
• 204 Sem conteúdo
• 400 Parâmetros inválidos
• 401 Não Autenticado
• 403 Não Autorizado
• 404 Não Encontrado
• 500 Erro interno do Servidor
8. MÉTODO GET
• GET http://api.cozinhadotiodan.com.br/pratos
Método
Protocolo
Endereço da API Recurso
9. COMO SOLICITAR O BIFE ENTÃO?
PARÂMETRO PATH
• GET http://api.cozinhadotiodan.com.br/pratos/19
• Informando o Id no Path estamos solicitando o nosso glorioso Bifão
11. O MÉTODO POST
Método
Divisor atributos
Nome do atributo
Valor atributo
POST http://api.cozinhadotiodan.com.br/pratos?valorCalorico=600 calorias
12. PARÂMETRO QUERY
CADASTRANDO UM NOVO PRATO
• POST http://api.cozinhadotiodan.com.br/pratos?valorCalorico=600calorias
• Body (Corpo da requisição)
• Formato JSON
• {
• “prato" : {
• "nomeDoPrato" : “bife com Quiabo",
• “valorPrato" : “40 reais"
• }
}
13. ANALISANDO O RETORNO DO
MÉTODO POST
01. HTTP/1.1 201 CREATED
02. Date: Sat, 01 Oct 2016 02:21:30 GMT
03. Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_perl/2.0.8 Perl/v5.20.0
04. X-Powered-By: PHP/5.6.2
05. Content-Length: 165
06. Keep-Alive: timeout=5, max=100
07. Connection: Keep-Alive
08. Content-Type: application/json;charset=UTF-8
09.
10. {
11. "code":, 201,
12. "message":“prato adicionado com sucesso",
13. "data”: {
15. “pratoid":21,
16. “nomePrato":“Bife com Quiabo",
17. “precoPrato":“40reais",
18. “valorCalorico:“600 calorias”
19. }
20. }
Informações do prato cadastradas
devem ser exibidas na resposta
Foi atribuído e criado um novo id para o prato cadastrado
O status response do body está correto
O status response do header está correto
14. O MÉTODO PUT
• PUT http://api.cozinhadotiodan.com.br/pratos/21
• Formato JSON
{
“prato" : {
"nomeDoPrato" : “bife com Quiabo",
“valorPrato" : “80 reais" ,
“descricaoAlteracao”: ”Crise financeira”
}
}
Acessando o prato criado
15. ANALISANDO O RETORNO DO
MÉTODO PUT
01. HTTP/1.1 200 OK
02. Date: Sat, 01 Oct 2016 02:21:30 GMT
03. Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zg DAV/2 mod_perl/2.0.8 Perl/v5.20.0
04. X-Powered-By: PHP/5.6.2
05. Content-Length: 165
06. Keep-Alive: timeout=5, max=100
07. Connection: Keep-Alive
08. Content-Type: application/json;charset=UTF-8
09.
10. {
11. "code": 200,
12. "message": “prato alterado com sucesso",
13. "data": {
15. “pratoid":21
16. “nomePrato":“bife com Quiabo ",
17. “precoPrato":“80 reais"
18. }
19. }
O valor do prato foi alterado de acordo com a chamada requisitada
O status response do Header está correto
O status Response do Body está correto
16. O MÉTODO DELETE
• DELETE http://api.cozinhadotiodan.com.br/pratos/21
• 204 Sem Conteúdo
• * Deletando um prato de nossa cozinha
Acessando o prato a ser deletado
17. ANALISANDO O RETORNO DO
MÉTODO DELETE
Retorno de status HTTP: 204
Status Response
Você = Aplicação ,Garçom = Endereço de requisição e cozinha = Mainframe/Servidor
Você = Aplicação ,Garçom = Endereço de requisição e cozinha = Mainframe/Servidor
Há, basicamente, três tipos de parâmetros quando trata-se de APIs REST, são eles: query, path e header.
Query são parâmetros enviados ao fim da URI, por exemplo,
http://api.juliodelima.com.br/clientes?clientenome=isabelle. Já os parâmetros do tipo Path são passados
como parte da URI, vejamos, http://api.juliodelima.com.br/clientes/456. Por fim, parâmetros do tipo
Header, são passados diretamente no cabeçalho da requisição ou resposta, neste caso, possui uma
propriedade, ex. “x-meu-token”, com um determinado valor, ex.
“1c0bda575202fb8d7ff108fca4c0eccc”.
Há, basicamente, três tipos de parâmetros quando trata-se de APIs REST, são eles: query, path e header.
Query são parâmetros enviados ao fim da URI, por exemplo,
http://api.juliodelima.com.br/clientes?clientenome=isabelle. Já os parâmetros do tipo Path são passados
como parte da URI, vejamos, http://api.juliodelima.com.br/clientes/456. Por fim, parâmetros do tipo
Header, são passados diretamente no cabeçalho da requisição ou resposta, neste caso, possui uma
propriedade, ex. “x-meu-token”, com um determinado valor, ex.
“1c0bda575202fb8d7ff108fca4c0eccc”.
Há, basicamente, três tipos de parâmetros quando trata-se de APIs REST, são eles: query, path e header.
Query são parâmetros enviados ao fim da URI, por exemplo,
http://api.juliodelima.com.br/clientes?clientenome=isabelle. Já os parâmetros do tipo Path são passados
como parte da URI, vejamos, http://api.juliodelima.com.br/clientes/456. Por fim, parâmetros do tipo
Header, são passados diretamente no cabeçalho da requisição ou resposta, neste caso, possui uma
propriedade, ex. “x-meu-token”, com um determinado valor, ex.
“1c0bda575202fb8d7ff108fca4c0eccc”.
Há, basicamente, três tipos de parâmetros quando trata-se de APIs REST, são eles: query, path e header.
Query são parâmetros enviados ao fim da URI, por exemplo,
http://api.juliodelima.com.br/clientes?clientenome=isabelle. Já os parâmetros do tipo Path são passados
como parte da URI, vejamos, http://api.juliodelima.com.br/clientes/456. Por fim, parâmetros do tipo
Header, são passados diretamente no cabeçalho da requisição ou resposta, neste caso, possui uma
propriedade, ex. “x-meu-token”, com um determinado valor, ex.
“1c0bda575202fb8d7ff108fca4c0eccc”.