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