Padrões de Testes Automatizadoscheque/paulocheque-defesamestrado2011.pdf · 2 Objetivos Parte I:...

Post on 16-Oct-2020

5 views 0 download

Transcript of Padrões de Testes Automatizadoscheque/paulocheque-defesamestrado2011.pdf · 2 Objetivos Parte I:...

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