Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

1. Testes O que são? O que fazem? Como se reproduzem?

Slide 4

Slide 4 text

“ 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)

Slide 5

Slide 5 text

▷ 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

Slide 6

Slide 6 text

▷ Análise de mutantes ▷ Aceitação ▷ Integração ▷ Performance ▷ Sistema ▷ Unidade Exemplo de testes

Slide 7

Slide 7 text

▷ 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

Slide 8

Slide 8 text

▷ 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

Slide 9

Slide 9 text

▷ Exemplo simples Teste de unidade

Slide 10

Slide 10 text

▷ Exemplo menos simples Teste de unidade

Slide 11

Slide 11 text

▷ 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

Slide 12

Slide 12 text

2. py.test Testando código de uma maneira pythônica

Slide 13

Slide 13 text

py.test

Slide 14

Slide 14 text

unittest

Slide 15

Slide 15 text

py.test vs unittest

Slide 16

Slide 16 text

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.)

Slide 17

Slide 17 text

py.test ▷ Markers ○ Permite marcar testes ○ Rodar cada grupo de testes específico

Slide 18

Slide 18 text

py.test ▷ Markers ○ Rodando apenas testes funcionais (lentos): $ py.test -m "functional" ○ Rodando todos testes menos os funcionais $ py.test -m "not functional"

Slide 19

Slide 19 text

py.test ▷ Fixtures ○ Permite a criação de recursos para serem utilizados nos testes ○ Usados através de injeção de dependência

Slide 20

Slide 20 text

py.test ▷ Fixtures

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

▷ pytest-django ○ Markers: ■ pytest.mark.django_db ○ Fixtures: ■ client - django.test.Client ■ admin_user ■ live_server py.test

Slide 23

Slide 23 text

▷ Exemplos py.test

Slide 24

Slide 24 text

▷ Exemplos py.test

Slide 25

Slide 25 text

▷ Exemplos py.test

Slide 26

Slide 26 text

▷ Exemplos py.test

Slide 27

Slide 27 text

3. selenium Levando os testes para o navegador

Slide 28

Slide 28 text

selenium ▷ Automatização de tarefas do navegador: ○ Teste de aplicações web ○ Web crawling

Slide 29

Slide 29 text

selenium ▷ Para testar precisamos: ○ Navegador instalado ○ Servidor rodando a aplicação a ser testada

Slide 30

Slide 30 text

▷ Exemplo simples ○ Buscando "RuPy Campinas 2016" no google selenium

Slide 31

Slide 31 text

▷ Exemplo menos simples ○ Preenchendo os dados de um formulário e o submetendo: selenium

Slide 32

Slide 32 text

▷ Exemplo selenium

Slide 33

Slide 33 text

▷ Exemplo selenium

Slide 34

Slide 34 text

▷ 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

Slide 35

Slide 35 text

Obrigado! Dúvidas? Contato: @luiz_amf [email protected]