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

TDC São Paulo 2020: ScanAPI Automatização de Te...

TDC São Paulo 2020: ScanAPI Automatização de Testes de Integração para a sua API

A ScanAPI é um framework de código aberto escrita em Python que possibilita a criação de testes de integração para REST APIs.

Através de um arquivo de configuração (YAML/JSON), você consegue implementar testes automatizados para os endpoints da sua API. O framework gera um relatório de execução dos testes que também pode ser utilizado como a própria documentação da API

Essa palestra visa mostrar um pouco do funcionamento da ScanAPI, como ela pode ajudar o seu time na sua arquitetura de micro serviços e discutir os próximos passos a serem seguidos

Link do projeto: https://github.com/scanapi/scanapi

https://thedevconf.com/tdc/2020/sampaonline/trilha-api

Camila Maia

August 26, 2020
Tweet

More Decks by Camila Maia

Other Decks in Technology

Transcript

  1. ScanAPI Automatização de Testes de Integração para a sua API

    Camila Maia 1 TDC São Paulo Agosto de 2020
  2. Quem sou eu? 4 - Desenvolvedora Backend - Formada em

    Sistemas de Informação na UFSC - Entrei na área em 2010 - Maior experiência com Python e Ruby - Organização de eventos: PyJamas e EuroPython
  3. Motivação Erros de integração 6 - Cliente mandando campos diferentes

    do esperado - Frontend recebendo campos diferentes do esperado
  4. O quê a ScanAPI se propõe a fazer pela sua

    API? 11 - Framework de código aberto - Command line interface (CLI) - Escrito em Python 1. Fornecer uma documentação “Ao Vivo” 2. Possibilitar a implementação de testes de Integração
  5. 13

  6. 14

  7. Como funciona? Exemplo: PokéAPI 16 # scanapi.yaml endpoints: - name:

    pokeapi path: https://pokeapi.co/api/v2/ endpoints: - name: pokemon path: pokemon requests: - name: list_all method: get path: / https://pokeapi.co/api/v2/pokemon https://pokeapi.co/api/v2/pokemon/
  8. 19

  9. 20

  10. 21

  11. Como funciona? Testes de Integração ✅ 25 ... 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_equals_to_1048 assert: ${{ response.json()["count"] == 1048 }}
  12. 26

  13. Como funciona? Encadeamento ⛓ 27 - Pegar detalhes de um

    Pokémon - Neste caso o dado é “estático”, mas poderia não ser - https://pokeapi.co/api/v2/pokemon/bulbasaur
  14. Como funciona? Encadeamento ⛓ 28 requests: - name: pokemon path:

    pokemon requests: - name: list_all method: get path: / vars: pokemon_name: ${{ response.json()["results"][0]["name"] }} tests: ... pokemon/${pokemon_name} - name: details method: get path: ${pokemon_name}
  15. 29

  16. # my-project/.circleci/config.yml ... scanapi: docker: - image: camilamaia/scanapi:2.0.0 steps: -

    checkout - run: name: Run ScanAPI command: | scanapi run scanapi/scanapi.yaml -c scanapi/scanapi.conf -o scanapi/report.html - store_artifacts: path: scanapi/report.html 33 - build-push: name: build-push-staging env: staging requires: - scanapi filters: branches: only: - master workflows: version: 2 main: jobs: - scanapi: filters: branches: only: - master
  17. Como funciona? E tem mais 34 - Independente de linguagem!

    - Especificação da API também é aceita em JSON - Variável de Ambiente - Esconder dados sensitivos no relatório - Especificação da API em vários arquivos - Templates Customizados - Visual Studio Code Plugin
  18. Próximos passos E o futuro? 37 - Outros métodos HTTP

    (além de GET, POST, PUT, PATCH, DELETE) - Documentação + Tutoriais - Website - GitHub Action E se…. - OpenAPI
  19. Por que colaborar com a ScanAPI? Chega junto! 38 -

    Todas as áreas: automação, backend, front, design - Python - Entender como uma lib funciona - Cobertura de testes > 90% - Automação - spectrum.chat/scanapi
  20. Por que colaborar com a ScanAPI? Chega junto! 39 How

    Open Source Changed My Life with Max Stoiber