Testando aplicações web com py.test e selenium

Testando aplicações web com py.test e selenium

Palestra apresentada no RuPy Campinas 2016

Baixe os slides para conseguir clicar e acessar os links que estão no final da apresentação.

Fd349405eaec4414ccf8720edea9b4fa?s=128

Luiz Menezes

June 18, 2016
Tweet

Transcript

  1. Testando aplicações web: py.test e selenium

  2. Oi! Eu sou o Luiz Estou aqui para falar um

    pouco sobre testes em aplicações web Podem me encontrar por aqui: @luiz_amf github.com/lamenezes
  3. 1. Testes O que são? O que fazem? Como se

    reproduzem?
  4. “ Teste de software é um grupo de processos, definidos

    para garantir que um código faz o que ele foi desenhado para fazer, e não faz nada que não foi especificado para fazer. (Myers, Glenford, The art of software testing, 1979)
  5. ▷ Teste caixa-preta ◦ Especificação do programa ▷ Teste caixa-branca

    ◦ Implementação ▷ Teste baseado em defeito ◦ Usam informações de informações históricas sobre defeitos comuns Tipos de testes
  6. ▷ Análise de mutantes ▷ Aceitação ▷ Integração ▷ Performance

    ▷ Sistema ▷ Unidade Exemplo de testes
  7. ▷ Encontrar erros o quanto antes ▷ Garantir que novas

    mudanças não quebrarão o resto do código ▷ Documentar funcionamento do sistema Benefícios
  8. ▷ Objetivo ◦ Identificar erros de lógica e de programação

    na menor unidade de programação ▷ Unidade ◦ Menor parte testável da aplicação ◦ Funções, métodos e classes Teste de unidade
  9. ▷ Exemplo simples Teste de unidade

  10. ▷ Exemplo menos simples Teste de unidade

  11. ▷ Verificar se o programa interage corretamente com o sistema

    para o qual foi projetado ▷ No ambiente de produção (ou similar) ▷ Pode ser feito manualmente Teste de sistema
  12. 2. py.test Testando código de uma maneira pythônica

  13. py.test

  14. unittest

  15. py.test vs unittest

  16. py.test ▷ Características "pythônicas" do py.test ◦ Não é necessário

    criar subclasses para testes (classes de teste são suportadas) ◦ Casos de testes são só funções ◦ Não é necessário importar o módulo pytest para testes simples ◦ Uso de assert (e não de TestCase.assertEqual etc.)
  17. py.test ▷ Markers ◦ Permite marcar testes ◦ Rodar cada

    grupo de testes específico
  18. py.test ▷ Markers ◦ Rodando apenas testes funcionais (lentos): $

    py.test -m "functional" ◦ Rodando todos testes menos os funcionais $ py.test -m "not functional"
  19. py.test ▷ Fixtures ◦ Permite a criação de recursos para

    serem utilizados nos testes ◦ Usados através de injeção de dependência
  20. py.test ▷ Fixtures

  21. py.test ▷ Plugins ◦ pytest-django https://github.com/pytest-dev/pytest-django/ ◦ pytest-cov ◦ http://pytest.org/latest/plugins.html

  22. ▷ pytest-django ◦ Markers: ▪ pytest.mark.django_db ◦ Fixtures: ▪ client

    - django.test.Client ▪ admin_user ▪ live_server py.test
  23. ▷ Exemplos py.test

  24. ▷ Exemplos py.test

  25. ▷ Exemplos py.test

  26. ▷ Exemplos py.test

  27. 3. selenium Levando os testes para o navegador

  28. selenium ▷ Automatização de tarefas do navegador: ◦ Teste de

    aplicações web ◦ Web crawling
  29. selenium ▷ Para testar precisamos: ◦ Navegador instalado ◦ Servidor

    rodando a aplicação a ser testada
  30. ▷ Exemplo simples ◦ Buscando "RuPy Campinas 2016" no google

    selenium
  31. ▷ Exemplo menos simples ◦ Preenchendo os dados de um

    formulário e o submetendo: selenium
  32. ▷ Exemplo selenium

  33. ▷ Exemplo selenium

  34. ▷ Curso online http://napsol.icmc.usp.br/ats/? q=node/2 ▷ Exemplo de testes usado:

    https://github. com/lamenezes/django-ecom ▷ Curso de python/django abordando testes: https://github.com/opensanca/python- intro Materiais
  35. Obrigado! Dúvidas? Contato: @luiz_amf luiz.menezesf@gmail.com