Padrões deTestes Automatizados
Exame de Defesa de MestradoPaulo Cheque BernardoOrientador: Fabio Kon
DCC – IME/USP4 de julho de 2011
2
Objetivos
● Parte I: Introdução e Conceitos
● Introduzir o tema Testes Automatizados● Discutir questões sobre nomenclatura e
definições de termos● Relacionar Testes Automatizados com
Qualidade, Métodos Ágeis e Software Livre
● Discutir boas práticas de automação de testes
3
Objetivos
● Parte II: Práticas Padrões e Técnicas para Teste de Correção
● Integrar conceitos da área de Testes de Software com os dos Métodos Ágeis
● Documentar dicas e boas práticas de automação
● Encontrar e definir Padrões e Antipadrões
4
Objetivos
● Parte III: Gerenciamento de Testes Automatizados
● Discutir o gerenciamento de projetos com testes automatizados
● Métricas
5
Motivação do Trabalho
● Tema relativamente novo● Pouco estudo nacional● Poucos livros nacionais● Pouca documentação de padrões● Tema de muito interesse por empresas
MotivaçãoPesquisa Agilcoop
MotivaçãoPesquisa Agilcoop
MotivaçãoPesquisa Agilcoop
MotivaçãoPesquisa Agilcoop
Parte I
Introdução e Conceitos
11
Introdução
● Comparação com testes manuais– Discussão para mostrar a importância
da automação
● História– Entendimento da evolução da área
● Recomendações gerais: quem deve implementar, quando implementar, onde executar, quando executar, documentação etc
12
Parte II
Práticas Padrões e Técnicas para Teste de Correção
13
Testes de Correção de Qualidade
● Automático● Repetitível● Útil● Único● Preciso● Profissional
● Legível e Claro● Simples● Independente● Isolado● Rápido
14
Indícios de Problemas
15
Testes de Unidade Boas Práticas
● Dicas sobre o código fonte:– Sem rigores das linguagens de
programação
– Arquitetura simples
– Sem variáveis globais mutáveis
– …
● Refatorações● Orientação a Objetos
– Padrões de projetos
16
Programação Orientada a Aspectos
● Algumas abordagens comuns:– Aspecto como unidade
– Testes de integração
● Proposta sugerida: Testar como sistema Orientado a Objetos (Util4Selenium)
● Pontos de Junção: Objeto Protótipo (útil também para Reflexão)
● Adendos: Objeto Humilde (Humble Object)
17
Módulos Assíncronos
● Assert Eventually– Selenium (ajax/ajaj)
– Util4Testing
– Growing Object-Oriented Software: Guided by Tests
18
Padrões
● Testes de Unidade– 12 padrões
– 2 antipadrões
● Testes com Persistência de Dados– 2 padrões
● Testes de Interface de Usuário– 7 padrões
– 3 antipadrões
19
Objetos Dublês
20
Objetos Dublês
21
Objeto Protótipo
22
Padrões de Qualidade
● Testes por Comparação de Algoritmos
● Teste por Probabilidade (TestNG)
● Python-QAssertions:– Verificar Inversibilidade
– Verificar Valores Limites
assertValidation: Min, Max, Range...
23
Antipadrões
● Gancho para os Testes (Test Hook)
● Testes Encadeados (Chained Tests)
24
Testes com Persistência de Dados
● Bancos de Dados– Compartilhados
– Locais
– Em memória
● Dados compartilhados criam dependências entre os testes
25
Dados Estáticos
● Arquivos SQL, YAML, XML etc
26
Geração Dinâmica de Dados
● Django Dynamic Fixture
27
Testes de Interface de Usuário
● Discussão sobre a arquitetura MVC ou semelhante
● Gravadores de Interação
● Desempenho dos testes
28
Camada de Abstração de Funcionalidades
29
Camada de Abstração de Funcionalidades
30
Camada de Abstração de Funcionalidades
31
Técnicas de Desenvolvimento com Testes Automatizados
● Descrição e discussão sobre:– TFD, TAD, TDD e BDD
● Caracaterísticas de cada técnica
● Quando Utilizar
● Métricas => Testabilidade
Parte III
Gerenciamento de Testes Automatizados
33
Métricas
● Descrição e discussão de algumas métricas relacionadas a testes automatizados
● Catálogo de métricas:– Cobertura
– Testabilidade
– Outras
● Como interpretá-las● Quando utilizá-las● Dicas gerais: Goal-Question-Metric
34
Objetivo vs Métrica
35
Conclusões
● Automação aumenta a quantidade de tempo gasto com verificação do sistema e diminui o tempo gasto com depuração e correção de erros
● É fundamental que a qualidade do código dos testes seja a mesma do código de produção
● É importante facilitar a escrita e manutenção dos cenários de testes
36
Conclusões
● Testes Automatizados influenciam na forma que o sistema é modelado
● É possível criar uma linguagem comum entre a teoria de Testes de Software e Metodologias Ágeis através de padrões
● É possível integrar técnicas de Testes de Software em ferramentas e aplicar junto com TDD
37
Trabalhos Futuros
● Continuar o desenvolvimento de novas ferramentas que simplifiquem a automação de testes
● Continuar a documentar padrões● Encontrar padrões em testes de
padrões de projeto e arquiteturais● Padrões de testes para Programação
Funcional● Padrões de testes em Web Services
Top Related