Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nathanael Araujo - Testando sua API com HTTPART...

Agile Testers
November 14, 2017

Nathanael Araujo - Testando sua API com HTTPARTY e Rodando em um CI

Hoje é essencial o uso de API nas construções de novas aplicações, onde os desenvolvedores podem se utilizar de API's que atendam seus negócios a fim de melhorar o desempenho da sua aplicação, não precisam desenvolver tudo do zero, além de que um mesmo serviço pode ser usado em mais de uma aplicação dentro ou fora de uma empresa, que é melhor do que ter vários códigos espalhados fazendo a mesma coisa, e também uma mesma API pode ser usada no mundo mobile ou WEB! Tendo em vista isto, é essencial que se garanta a qualidade dessas API's que estão sendo desenvolvidas através de testes que validem todos os dados que estão sendo expostos pelas API's, e como vivemos em um contexto ágil, é ideal que automatizamos os testes das inúmeras API's que um projeto possa conter, além de colocar essa automação em uma integração contínua para quando houver qualquer mudança termos um feedback mais rápido se algum defeito acontecer.

Agile Testers

November 14, 2017
Tweet

More Decks by Agile Testers

Other Decks in Technology

Transcript

  1. O que vamos ver? • API ◦ Por quê API?

    ◦ Exemplos do uso de API • REST • Protocolo HTTP ◦ Métodos HTTP ◦ HTTP Status Code • Por quê teste de API? ◦ HTTParty ◦ RSpec ◦ Como Testar? ◦ Como é na prática? • Integração Contínua ◦ Jenkins ◦ Como é na prática?
  2. API - Application Programming Interface Interface de programação de aplicativos.

    Uma API é um conjunto de comandos, funções, protocolos e objetos que os programadores podem usar para criar software ou interagir com um sistema externo. Ele fornece aos desenvolvedores comandos padrão para executar operações comuns para que não tenham que escrever o código do zero." TechTerms, 2017
  3. Por quê API? • Construções de novas aplicações • Desempenho

    da sua aplicação • Desenvolvedores não precisam desenvolver tudo do zero • Serviço pode ser usado em mais de uma aplicação dentro ou fora de uma empresa
  4. REST - REpresentational State Transfer Transferência de Dados Representacional é

    um estilo de arquitetura e uma abordagem às comunicações que é freqüentemente usada no desenvolvimento de serviços da Web. Normalmente é executado em HTTP (Hypertext Transfer Protocol).
  5. REST - REpresentational State Transfer • Interações entre clientes e

    serviços são aprimoradas por ter um número limitado de operações (verbos). • Flexibilidade é fornecida ao atribuir recursos seus próprios identificadores de recursos universais (URIs) únicos. • Como cada verbo tem um significado específico (GET, POST, PUT e DELETE), o REST evita a ambiguidade. Ou seja, dependendo de como o recurso será consumido através do identificador, o seu comportamento irá mudar.
  6. REST - REpresentational State Transfer As interações são compostas, principalmente,

    de três informações: • Endpoint: endereços web que executam as ações e são acessados diretamente pelos clientes. • Verbo: ação desejada a ser realizada no recurso identificado. • Body: Informações que são enviadas, como dados de um cadastro.
  7. Protocolo HTTP O protocolo HTTP define métodos (às vezes referidos

    como verbos) para indicar a ação desejada a ser realizada no recurso identificado. Quantos aos métodos, existem 4 que são os mais utilizados.
  8. HTTP Status Code Esse é outro item importante para a

    arquitetura de uma API REST, porque, da mesma maneira que acontece como os verbos HTTP, elas formam um padrão facilmente reconhecido por quem for consumir o webservice. Os códigos de sucesso tem o padrão 20x, os de redirecionamento 30x, os de erro do cliente 40x e os de erro de servidor 50x. Os principais códigos utilizados para as respostas de um endpoint são:
  9. RSpec O RSpec é um framework BDD (Behaviour-Driven Development ou

    Desenvolvimento Guiado por Comportamento) escrito em Ruby, que permite que você escreva testes em uma linguagem mais natural.
  10. Como Testar? GET POST PUT DELETE Faça um request GET

    para um conteúdo específico e verifique se o status code 200 foi retornado. Depois verifique se o conteúdo esperado foi retornado também.
  11. Como Testar? GET POST PUT DELETE Faça um request com

    POST e verifique se o status code 201 foi retornado Depois, faça um request com GET para o conteúdo gravado anteriormente e verifique se o mesmo foi salvo corretamente. Adicione testes POST com request incorretos, como falta de conteúdo por exemplo, que irão falhar. Deve-se retornar status code 400 ( Bad Request).
  12. Como Testar? GET POST PUT DELETE Faça um request PUT

    para atualizar um conteúdo e verifique se o status code 204 foi retornado Depois, faça um request com GET para um conteúdo alterado e verifique se retorna o novo conteúdo.
  13. Como Testar? GET POST PUT DELETE Faça um DELETE para

    um conteúdo específico. Depois faça um GET para o ID do conteúdo anterior, deve-se retornar status code 404 (Not Found).
  14. API de teste POST: api/series -> Adicionar série GET: api/series

    -> Retornar todas as séries GET: api/series/serie_id -> Retornar uma série específica PUT: api/series/serie_id -> Atualizar uma série específica DELETE: api/series/serie_id -> Deletar uma série específica
  15. Integração Contínua Integração Contínua é uma metodologia moderna de desenvolvimento,

    em que os desenvolvedores envolvidos em um projeto integram seus trabalhos continuamente.
  16. Jenkins Jenkins é um servidor de automação de código aberto

    escrito em Java. A Jenkins ajuda a automatizar a parte não humana do processo de desenvolvimento de software, com integração contínua e facilitando aspectos técnicos de entrega contínua.
  17. Referências • https://techterms.com/ • https://blog.mbeck.com.br/ • Tech Target - Search

    Microservices • https://fredmoreira.com/ • https://www.concrete.com.br/2015/03/06/integracao-continua-para-djang o-no-jenkins/ • Mike, Cohn. Succeeding with agile: Software Development Using Scrum. • Crispin, Lisa. Gregory, Janet. Agile Testing: A practical guide for testers and agile teams.