$30 off During Our Annual Pro Sale. View Details »

Porque todo QA deveria saber testes de APIs

Porque todo QA deveria saber testes de APIs

Palestra apresentada no Agile Testers Conference de Belo Horizonte em 2017.

Frederico Moreira

June 05, 2017
Tweet

More Decks by Frederico Moreira

Other Decks in Technology

Transcript

  1. Frederico Moreira
    @fredaomoreira
    Porque todo QA deveria saber testes de API ?

    View Slide

  2. MG
    ● Café, testes e pão de queijo
    ● MTC - Minas Testing Conference
    Agile Testers
    ● Fórum
    ● Agile Testers Conference
    UAI, TREM, SÔ, PÃO DE QUEIJO
    ● if(pinga && torresmo)
    @fredaomoreira
    @ConcreteS

    View Slide

  3. Mas porque?
    Porque eu como QA deveria
    saber testar API?
    O que teste de API pode me
    ajudar no meu dia a dia?

    View Slide

  4. Quem aqui testa API hoje?
    Quem já testou API?

    View Slide

  5. Arquitetura Calabash IOS
    https://github.com/calabash/calabash-ios-server

    View Slide

  6. Front-End Back-End
    Node.js
    HTML 5
    CSS 3
    Angular.js
    iOS
    Android

    View Slide

  7. O que é uma API?

    View Slide

  8. Uma API é criada quando uma empresa de software
    tem a intenção de que outros criadores de software
    desenvolvam produtos associados ao seu serviço.

    Fonte: https://goo.gl/zMwp3U

    View Slide

  9. Exemplos de APIs:
    Companhias Aéreas
    ● Google Flights
    ● Sky Scanner
    Cálculo de entrega (CEP)
    ● e-commerce
    Geolocalização
    ● API Google Maps

    View Slide

  10. Pirâmide de Testes
    “Ideal”
    Mike Cohn
    UI
    Service
    Unit
    Manual

    View Slide

  11. Testes no Nível de Serviço
    Preenche o gap entre testes unitários e de UI
    Acontecem em paralelo ao desenvolvimento
    Foco na funcionalidade e não no comportamento/experiência
    Testa critérios de aceite mesmo antes da
    interface(mobile ou web) estar desenvolvida.
    Subcutaneous Test - Martin Fowler

    View Slide

  12. REST
    em cima de protocolo HTTP
    mas você pode usar REST com outro protocolos como
    TCP, UDP e gRPC (http://www.grpc.io/).
    O mais comum de encontrar no mercado são projetos novos
    usando

    View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. http://racksburg.com/choosing-an-http-status-code/

    View Slide

  23. Como testar manualmente?

    View Slide

  24. Ferramentas
    http://www.telerik.com/fiddler
    https://www.getpostman.com/

    View Slide

  25. Entendendo transações
    HTTP

    View Slide

  26. request
    response
    VIEW

    View Slide

  27. View Slide

  28. #COMANDO CURL
    curl -i -X GET "http://localhost:5000/contacts?name=Tester"
    #HEADER
    HTTP/1.1 200 OK
    X-Powered-By: Express
    Content-Type: application/json; charset=utf-8
    Content-Length: 110
    ETag: W/"6e-Za+ESrkoytVXhydy0NJoFA"
    Date: Mon, 14 Mar 2016 18:17:19 GMT
    Connection: keep-alive
    #BODY
    [{"_id":"56d5efa8c82593800291c02b","name":"Tester","mobilephone":"05
    52188889999","homephone":"0552133332222"}]

    View Slide

  29. Mas eu preciso mesmo automatizar testes de
    API?

    disse o QA

    View Slide

  30. View Slide

  31. Mundo JS
    http://frisbyjs.com/
    http://www.fredmoreira.com/2014/11/como-voce-anda-testando-sua-api-rest.htm
    l
    http://dareid.github.io/chakram/
    https://github.com/fredmoreira/ApiTest

    View Slide

  32. Mundo Ruby
    https://ruby-doc.org/stdlib-2.3.1/libdoc/net/http/rdoc/Net/HTTP.html
    https://github.com/jnunemaker/httparty
    https://github.com/jnunemaker/httparty
    https://github.com/lostisland/faraday
    https://github.com/fredmoreira/api-test-ruby

    View Slide

  33. Mundo Java
    https://github.com/fredmoreira/demo-rest-assured
    https://www.youtube.com/watch?v=dShI6n1CSoY @juliodelimas

    View Slide

  34. Mundo Python
    https://github.com/fredmoreira/demo-pyresttest
    https://github.com/svanoort/pyresttest

    View Slide

  35. https://github.com/fredmoreira/phone-book

    View Slide

  36. Segurança
    O que eu como QA
    consigo pensar em
    segurança, nos testes de
    APIs?

    View Slide

  37. Dependências
    NodeJs
    ● Snyk
    ● NSP
    Java e .NET
    ● OWASP Dependency-check
    Python
    ● Dependency-check-py

    View Slide

  38. X-XSS-Protection

    View Slide

  39. Appcanary
    Tudo que você precisa saber sobre
    segurança em headers HTTP
    https://blog.appcanary.com/2017/http-securit
    y-headers.html

    View Slide

  40. E se eu sou preguiçoso(a) ?

    View Slide

  41. http://www.mocky.io/

    View Slide

  42. https://apiary.io/

    View Slide

  43. Links:
    ● https://snyk.io/
    ● https://github.com/nodesecurity/nsp
    ● https://www.owasp.org/index.php/OWASP_Dependency_Check
    ● https://github.com/jhermann/dependency-check-py

    View Slide

  44. ● http://www.fredmoreira.com/2014/11/como-voce-anda-te
    stando-sua-api-rest.html
    ● https://httpstatuses.com/
    ● http://apimetrics.io/2015/03/31/automated-api-testing-ne
    cessary/
    ● https://goo.gl/5vM84j
    ● http://sensedia.com/blog/apis/sites-para-descobrir-apis/
    ● http://keeptesting.com.br/2014/09/09/testando-suas-api
    s-com-frisby-js/
    Links:

    View Slide

  45. Repositórios:
    ● https://github.com/fredmoreira/demo-pyresttest
    ● https://github.com/fredmoreira/demo-rest-assured
    ● https://github.com/fredmoreira/ApiTest
    ● https://github.com/fredmoreira/api-test-ruby
    ● https://github.com/fredmoreira/phone-book

    View Slide

  46. Dúvidas?

    View Slide

  47. View Slide