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

Automatização de Testes de Integração para a sua API - Python Nordeste 2020/2021

Automatização de Testes de Integração para a sua API - Python Nordeste 2020/2021

Camila Maia

July 17, 2021
Tweet

More Decks by Camila Maia

Other Decks in Technology

Transcript

  1. Automatização de Testes de Integração para a sua API
    Python Nordeste 2020/2021 - Jul 2021
    Camila Maia

    View Slide

  2. Esta apresentação está disponível em:
    speakerdeck.com/cmaiacd

    View Slide

  3. Quem sou eu?
    - Desenvolvedora Backend
    - 10+ anos xp 👵
    - Python 🐍 e Ruby 💎
    - OpenSource e Comunidades ❤
    - Organização de eventos:
    Pyjamas, EuroPython, Python Brasil….

    View Slide

  4. - Primeiro perfil aprovado no
    programa de Sponsors para quem
    reside no Brasil 󰎙
    Quem sou eu?

    View Slide

  5. Motivação
    Tudo começou numa bela semana de firefighter… 🔥
    1. Erros de integração
    2. Documentação desatualizada
    3. Dificuldade em recriar o cenário

    View Slide

  6. /reservar/:id_do_assento
    id_do_voo?
    id_da_aeronave?
    id_do_passageiro?
    Aeronave está disponível?
    ????
    Motivação
    Dificuldade em recriar o cenário 😤

    View Slide

  7. Motivação
    Dificuldade em recriar o cenário 😤

    View Slide

  8. View Slide

  9. View Slide

  10. ● Framework de código aberto
    ● Command line interface (CLI)
    ● Escrito em Python
    Objetivos:
    1. Fornecer Live Documentation
    2. Possibilitar a implementação de Testes de Integração
    O quê é?

    View Slide

  11. PokéAPI: https://pokeapi.co
    $ http https://pokeapi.co/api/v2/pokemon/
    Como funciona?
    Exemplo: PokéAPI

    View Slide

  12. View Slide

  13. View Slide

  14. Como funciona?
    ● Python
    ● $ pip install scanapi
    Exemplo: PokéAPI

    View Slide

  15. # scanapi.yaml
    endpoints:
    - name: pokeapi
    path: https://pokeapi.co/api/v2/
    endpoints:
    - name: pokemon
    path: pokemon
    requests:
    - name: list_all
    method: get
    path: /
    Como funciona?
    Exemplo: PokéAPI
    path: https://pokeapi.co/api/v2/ pokemon /
    name: pokeapi :: pokemon :: list_all

    View Slide

  16. Como funciona?
    Executar...
    Exemplo: PokéAPI

    View Slide

  17. Documentação 📄

    View Slide

  18. Documentação 📄

    View Slide

  19. Documentação 📄

    View Slide

  20. Documentação 📄

    View Slide

  21. ...
    requests:
    - name: list_all
    method: get
    path: /
    tests:
    - name: status_code_is_200
    assert: ${{ response.status_code == 200 }}
    - name: response_time_is_under_half_second
    assert: ${{ response.elapsed.total_seconds() < 0.5 }}
    - name: results_length_is_20
    assert: ${{ len(response.json()["results"]) == 20 }}
    - name: count_is_gte_1118
    assert: ${{ response.json()["count"] >= 1118 }}
    Como funciona?
    https://requests.readthedocs.io
    Testes de Integração ✅

    View Slide

  22. Testes de Integração ✅

    View Slide

  23. Como funciona?
    - Pegar detalhes de um Pokémon
    - Neste caso o dado é “estático”, mas poderia não ser
    https://pokeapi.co/api/v2/pokemon/bulbasaur
    Encadeamento ⛓

    View Slide

  24. Como funciona?
    ...
    endpoints:
    - name: pokemon
    path: pokemon
    requests:
    - name: list_all
    method: get
    path: /
    vars:
    pokemon_name: ${{ response.json()["results"][0]["name"] }}
    tests: ...
    - name: details
    method: get
    path: ${pokemon_name} pokemon/${pokemon_name}

    View Slide

  25. Encadeamento ⛓

    View Slide

  26. scanapi.dev 🌐

    View Slide

  27. Próximos passos
    E o futuro? 🔮
    ● Foco: aumentar a adoção da ferramenta. Divulgação!
    Falando em novas features, e se….
    ● Exportar: OpenAPI, Postman Collection, Insomnia…
    Esforço quase nulo para adoção!

    View Slide

  28. Por que utilizar ScanAPI? 8 motivos!
    1. Funciona para qualquer API REST
    2. Excelente para testar e documentar APIs próprias e de terceiros
    3. É possível encadear requests, o que é essencial para testar cenários
    complexos
    4. A documentação é gerada automaticamente, ela nunca fica desatualizada
    5. É simples. A sintaxe é simples e não requer quase nenhum conhecimento
    específico da linguagem
    6. É extremamente flexível
    7. É seguro
    8. Não há nada no mercado que faça o que o ScanAPI faz

    View Slide

  29. GitHub
    - https://github.com/scanapi
    Twitter
    - @ScanAPI_
    Discord
    - discord.scanapi.dev
    Comunicação
    Bora trocar uma ideia! 🗣

    View Slide

  30. github.com/scanapi ⭐

    View Slide

  31. Bora usar!

    View Slide

  32. E compartilhar! 🚀

    View Slide

  33. MUITO OBRIGADA!
    @cmaiacd camilamaia
    󰠁
    cmaiacd.com

    View Slide