Desenvolvimento Aberto

Testes automatizados
Igor dos Santos Montagner ( igorsm1@insper.edu.br )
Igor Montagner License CC BY-NC-SA 4.0

Projeto profissional

  • Qualidade de código
    • Linting - formatação e erros comuns
  • Documentação
    • Usuário
    • Desenvolvedor
Igor Montagner License CC BY-NC-SA 4.0

Projeto profissional

  • Qualidade de código
    • Linting - formatação e erros comuns
    • O código funciona?
  • Documentação
    • Usuário
    • Desenvolvedor
Igor Montagner License CC BY-NC-SA 4.0

Meu programa funciona?

  • Sob quais condições?
  • Em quais plataformas?
  • Quais operações são suportadas?
  • Consigo conferir o resultado de uma execução? Se sim, existe um valor de referência?
Igor Montagner License CC BY-NC-SA 4.0

Testes automatizados

Ideia: escrever um programa que verifica se um outro programa responde como esperado

  • Definir situações a serem testadas ...
  • e o resultado esperado em cada situação
Igor Montagner License CC BY-NC-SA 4.0

Testes automatizados

Não ajudam:

  • a revelar novos bugs
  • a garantir que um software é livre de bugs

Ajudam

  • a evitar que bugs descobertos voltem
  • a evitar que mudanças não intencionais quebrem código que estava funcionando.
  • a documentar em quais situações o software funciona.
Igor Montagner License CC BY-NC-SA 4.0

Testes automatizados

  1. Testes de unidade
  2. Testes de integração
  3. Testes de interface de usuário
Igor Montagner License CC BY-NC-SA 4.0

Testes unitários

Ideia: dada uma função, verificar se ela devolve o valor esperado para um certo conjunto de parâmetros.

  • Testa as funções de maneira isolada
  • Cobertura: porcentagem das linhas de código que é executada durante os testes de unidade.
  • Serve como documentação da função
Igor Montagner License CC BY-NC-SA 4.0

Testes unitários - pytest

Igor Montagner License CC BY-NC-SA 4.0

Testes de integração

Ideia: dados um conjunto de classes com interdependências, verificar se elas funcionam bem em conjunto.

  • Testa interação entre em objetos
  • Possibilidade de criar mocks, que são objetos falsos feitos para simular a interação entre vários objetos.
Igor Montagner License CC BY-NC-SA 4.0

Testes de interface de usuário

Ideia: simula ações do usuário (cliques, entrada de dados, etc) e confere se a saída esperada é mostrada na tela

  • Menos específico possível
  • Mais fiel ao uso real de um usuário
Igor Montagner License CC BY-NC-SA 4.0

Testes de interface de usuário

Selenium

Permite fazer scripts que interagem com uma página web, realizando entrada de dados, rolagem de tela e cliques. Cada assert pode ser feito com o conteúdo de um objeto da página.

Igor Montagner License CC BY-NC-SA 4.0

O quê eu preciso testar?

Igor Montagner License CC BY-NC-SA 4.0

O quê eu preciso testar?

Ninguém sabe....

Igor Montagner License CC BY-NC-SA 4.0

Atividade prática: Testado e aprovado

Objetivo: Primeira experiência com testes automatizado de código.

"metadata": {"url": "acceppted PR", "group": ["igual", "6"]}

Igor Montagner License CC BY-NC-SA 4.0