Introdução aos Testes Automatizados – Parte II Paulo Cheque 09/02/2009 Verão 2009.

Slides:



Advertisements
Apresentações semelhantes
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
Advertisements

Rafael C. Marques Orientador - André Moraes TCC 11/09/12 SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS.
Prof. Paulo Barreto O hardware são as partes concretas de uma máquina, como o gabinete, o teclado, o mouse, a impressora, o disco.
TESTE-PLAN: FERRAMENTA DE APOIO AO PLANEJAMENTO E CONTROLE DAS ATIVIDADES DO PROCESSO DE TESTES Orientadora: Fabiane Barreto Vavassori Benitti, Dra CAMILA.
Desenvolvimento Dirigido por Testes (TDD) Cursos de Verão Mariana Bravo.
Introdução a Testes Automatizados AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Desenvolvimento de Software de Qualidade através de Testes Automatizados Fabio Kon e Paulo Cheque Departamento de Ciência de Computação IME/USP 9/2/2009.
Testes Automatizados Paulo Cheque 27/01/2009 Verão 2009.
Framework de replicação de dados com criptografia simétrica utilizando notificações para Android. Acadêmico - Fernando Klock Orientador – Dalton Solano.
Testes Automatizados Cursos de Verão 2007 – IME/USP Dairton Bassi & Paulo Cheque.
Tecnologias para Internet Thyago Maia Tavares de Farias Aula 19.
Máquinas Virtuais Professoras: Márcia Jani / Kathia.
Introdução a Testes Automatizados Cursos de Verão 2008 – IME/USP Paulo Cheque.
Análise Desenvolvimento/Testes Entrega Suporte. Nome da atividade Análise de Negócio Fase Análise Finalidade Esta atividade tem por finalidade analisar.
OpenSolaris Rafael Vanoni OpenSolaris Kernel Group
FRAMEWORK PARA GERENCIAMENTO E DISPONIBILIZAÇÃO DE INFORMAÇÕES MULTIMÍDIA GEOLOCALIZADAS NA PLATAFORMA ANDROID Acadêmico: David Tiago Conceição Orientador:
Diego Armando Gusava Mobile Command Orientador: Mauro Marcelo Mattos.
Ferramenta de apoio aos testes baseados em requisitos Acadêmico: Leandro da Cunha Orientador: Everaldo Artur Grahl.
Test Driven Development (TDD) Carlos Morais Desenvolvimento Dirigido por Testes.
Testes de Unidade Paulo Cheque 10/02/2009 Verão 2009.
Benchmark O que é? O que são? Como vivem?. Propósito geral Testar e validar a eficácia e performance de um hardware de computador via software. Gerar.
MÓDULOS DE REGISTRO DE ABASTECIMENTO DE VEÍCULOS INTEGRADOS PARA ÓRGÃOS PÚBLICOS Gabriel Vieira Orientador: Prof. Jacques Robert Heckmann.
Objetos Dublês AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Testes de Unidade Curso de Verão IME/USP Hugo Corbucci
Análise comparativa de produtividade entre Groovy e Java, aplicado no desenvolvimento web Vandir Fernando Rezende Orientado por Marcel Hugo.
Projeto Multimídia. Tema Animação Linear; Animação Não-Linear; Narrativa Linear; Narrativa Multimídia; HQ – Interativa; Games – Jogo Eletrônico; Interface.
FERRAMENTA PARA GERENCIAMENTO DE ARTEFATOS EM PROJETO DE MELHORIA NO PROCESSO DE TESTES. UNIVERSIDADE REGIONAL DE BLUMENAU CURSO DE SISTEMAS DE INFORMAÇÃO.
Desenvolvimento Dirigido por Testes (TDD)
Emissão de Nota Fiscal – Nota Substitutiva de Cupom Fiscal
Análise & Projeto – Especificação de Processos
Márcio Soussa Estrutura de Dados Márcio Soussa
(baseado em slides de ex-alunos)
UML – Diagramas de componentes
TQS - Teste e Qualidade de Software (Software Testing and Quality) Teste Envolvendo Acesso a Bases de Dados João Pascoal.
Sistema Automatizado de Hospedagem de Sites
VIDA FUNCIONAL VISÃO GERAL Olá!
AT 11 - Implantação do Monitoramento Eletrônico e Gestão de Ativos – MeGA na Operação Salem Gomes Leite.
GRÁFICOS DE CONTROLE.
Ambiente para desenvolvimento de sistemas baseado no conceito MBUIDE
Testes e Qualidade de Software
UML – Diagramas de Componentes e Modelação da Arquitectura Física
Workshop Agile tdd - Test Driven development
Arquitetura de Computadores
PIT – PROGRAMA INTERNO DE TREINAMENTO 2015
Engenharia de Software II
INTRODUÇÃO À COMPUTAÇÃO PARALELA
Timeout para o Datasul 12 Nov/2017.
Extensão para visualização temporal de dados no TerraView
Apresentação Conceitual
Desenvolvimento de Software de Qualidade através de Testes Automatizados 09/02/2009 Verão h.
Engenharia de Software Analise de Riscos
Programação.
Uma arquitetura reflexiva Copyleft by Ana Paula Mota
Laboratório de Lógica Configurável T8LLC
Programação Orientada a Objetos*
Prof. Esp. Marcelo Mendes
Prof. Alberto Martins Júnior
Trabalho de Conclusão de Curso I
guia chamados webservice PARA SOLICITANTES
Carla Santos OLIVEIRA1; Sílvio Sampaio ALBUQUERQUE2
Estágio supervisionado na CECAE
Prof. Fábio Rafael Segundo
Teste de Software 04: Que parte devo testar?
MONITORAMENTO E MOVIMENTAÇÃO LOGÍSTICA
Laboratório de Lógica Configurável T8LLC
Modelagem de Sistemas
Leonardo M G Gallardo Trilha: DevTest
Constantes, Variáveis e Memória
O mundo além do processamento de jogos.
RESULUÇÃO DOS EXERCÍCIOS E
Transcrição da apresentação:

Introdução aos Testes Automatizados – Parte II Paulo Cheque 09/02/2009 Verão 2009

Sobre ● Linguagem ● Tipos de Testes ● Introdução aos Arcabouços de Teste

Muitas comunidades Linguajar distinto: –Comunidades Ágeis –Comunidades Formais –Comunidade de QA –Ferramentas –Clientes

Padrões ● - BS :1998. Software Component Testing. ● - DO-178B:1992. Software Considerations in Airborne Systems and Equipment ● Certification, Requirements and Technical Concepts for Aviation (RTCA SC167). ● - IEEE :1990. Standard Glossary of Software Engineering Terminology. ● - IEEE 829:1998. Standard for Software Test Documentation. ● - IEEE 1008:1993. Standard for Software Unit Testing. ● - IEEE 1012:1986. Standard for Verification and Validation Plans ●...

Jargões Defeito/Engano/Erro/Falha Verificação Validação Inspeção Depuração...

Termos Caixa-Preta/Branca/Cinza/Vidro/Transparente Teste Funcional Teste Estrutural Teste Casos de Teste Bateria de Testes

Siglas SUT/AUT: System/Application Under Test TFD/POUT: Test-First Development / Plain Old Unit Test TAD: Test-After Development TDD: Test-Driven Development / Design BDD/EDD/STDD: Behaviour/Example/Story Test Driven Development TDDD: Test-Driven Design Databases

Dublês ● Dummy: Objeto utilizado apenas para permitir a criação/execução do teste ● Fake: Objeto leve que contém uma implementação falsa ● Stub: Objeto contendo informações que serão utilizadas pelos testes ● Mock: Objeto que possui uma interface apropriada e que contém informações e comportamentos que serão utilizados pelos testes ● Spy: Objeto que captura chamadas indiretas

Tipos de Testes Automatizados ● Unidade ● Integração ● Aceitação ● Interface ● Fumaça ● Sanidade ● Mutação ●... ● Desempenho ● Carga ● Estresse ● Longevidade ● Segurança ● Instalação ●...

Teste de Unidade ● Unidade: Classe/Módulo ou Método/Função ● Unidade ou “mini-integração” ● Teste do código fonte com foco na funcionalidade ● Teste básico e muito importante ● Teste sólido ● Evita depuração

Teste de Integração ● Em geral: Teste que envolve mais de uma camada ● Verifica erros da relação entre módulos, componentes e camadas, que podem funcionar perfeitamente individualmente

Aceitação ● Testa as funcionalidades a partir do ponto de vista do cliente ● Garantia pro cliente que o software faz o que deve e faz corretamente ● Clientes e Desenvolvedores podem trabalhar em parceria para a escrita dos testes ● Detalhes de implementação ocultos ● Linguagem do cliente

Teste de Interface ● Interface de Usuário ● Console ● GUI ● WUI ● => Teste de Aceitação ● => Teste de Usabilidade ● => Teste de Layout

Teste Fumaça ● Testes Rápidos, Superficiais e Abrangentes ● Realizados após a instalação do software ● Exemplo: ● Acesse uma página Web e verifique que não apareceu o texto “404”

Teste de Sanidade ● Um Teste Fumaça ● Apropriado para buscar erros absurdos em algoritmos ● Utilizar técnicas relacionadas ao algoritmo para identificar possíveis falhas ● Teoremas ● Propriedades matemáticas

Teste de Mutação ● Teste dos Testes ● “Testes podem mostrar a presença de erros, não a sua ausência” - Dijkstra ● Infinitas possibilidades de erros? ● Programador competente ● Mutante: SUT com pequenas alterações ● Executar os testes sob os Mutantes ● Análise dos Resultados: Mutantes e Testes

Teste de Desempenho ● Avaliar o tempo de resposta de um módulo específico ● Profilers ajudam a encontrar gargalos ● Baterias de testes podem ser utilizados como profilers ● Obs: Não avalia a complexidade computacional

Teste de Carga ● Simula muitos usuários e muitas requisições ● Simultâneas ou dentro de um intervalo de tempo ● Testa ● Infra-Estrutura ● Hardware ● Banda de rede ● Banco de dados e Servidores

Teste de Estresse ● Teste de Carga Máxima ● Identificar quantidade máxima: ● De usuários ● De requisições ● De dados ● Limitações do ambiente

Teste de Longevidade ● Teste que verifica a performance e correção do sistema dentro de um grande período de tempo ● Encontrar problemas com vazamento de memória ● Encontrar erros de cache ● Não atualização

Outros tipos... ● Teste de: ● Instalação: Verifica se todos os componentes se interconectaram e se não houve incompatibilidades com o hardware ● Recuperação: Reação adequada após erros ● Configuração: Configurações diferentes e ambientes distintos (portabilidade) ●... ● Versões Alfa / Beta

Teste de Segurança ● Útil para aplicações expostas a usuários mal- intencionados ● Web, Caixas eletrônicos... ● Testa: ● Falhas de permissão na interface ● Falhas no modelo (SQLInjection...) ● Bugs nos produtos de servidores ● Fragilidade de ataques DoS (Teste de estresse)

Informações Pertinentes ● Máquina: CPU, Memória, HD, Swap... ● SO: Nome/Distribuição, Versão, Kernel, Locale... ● Servidores: Nome-Versão, Arquivos Pertinentes ● Tomcat 5.5, Jboss 4.0.4, (/etc/init.d/jboss) ● Bancos de Dados: Nome-Versão, Máquinas, Schema ● Rede: IP, Firewall, Portas, DNS... ● Dependências: Nome-Versão ● JDK 1.5.0_06, Ruby 1.8 ● Produto: Nome, Versão, data instalação, logs

Os Primeiros Testes de Unidade Main Arcabouços x-Unit –Casos de Teste –Verificações –Exceções –Resultados –Relatórios

Main public class MainExample { public static void main(String[] args) { if(!new Double(Math.sqrt(-1)).isNaN()) throw new RuntimeException("Ops, falhou!"); // Ou assert new Double(Math.sqrt(-1)).isNaN() == true; }

x-Unit ● Artigo:

Casos de Teste ● Convenções public void testMetodoDeTeste() {... } ● public void testMetodoDeTeste() {... } ● Configurações ● xml...

Verificação ● AssertTrue / AssertFalse ● AssertEquals ● AssertSame ● Fail ● Expected Exceptions ● Mensagens amigáveis ● Hamcrest: Matchers + AssertThat

Demonstrações ● C ● Java ● Scala ● Groovy

Set Up e Tear Down ● Os casos de testes devem ser independentes: ● Uns dos outros ● Do número de vezes que é executado ● De fatores externos ● Set Up: Prepara o ambiente para a execução do teste ● Tear Down: Limpa o ambiente para próximos testes

Resultados ● Skip ● Fail ● Error ● Success

Relatórios ● Linguagem ● API-Docs ● Ferramentas ● StackTrace ● Logs ● Screenshots ● Métricas

Algumas Ferramentas ● Testes de Unidade: ● CxxTest (C++): ● CUnit: ● JUnit (Java): ● DUnit (Delphi): ● VBUnit (Visual Basic): ● TestNG (Java): ● RSpec (Ruby): ●

+Algumas Ferramentas ● Mock Objects: ● SevenMock (Java): ● EasyMock (Java): ● JMock (Java): ● Rhino.Mocks (.NET): ● SMock (Smalltalk): ● Mockpp (C++): ● GoogleMock (C++):

+Algumas Ferramentas ● Testes de Interface Gráfica Desktop: ● Fest: ● Jemmy: ● Marathon: ● Testes de Interface Web: ● Selenium: ● Watir: ● Testes de Aceitação: ● Fit:

+Algumas Ferramentas ● Testes de Mutação: ● Jabuti (USP São Carlos): ● Jester: ● Heckle: ● Testes de Desempenho / Estresse: ● JMeter: ● Outros: ● JPDFUnit:

Alguns links

Alguns Livros Gerard Meszaros, “xUnit Test Patterns, Refactoring Test Code”, Addison-Wesley, 2007 Robert V. Binder, “Testing Object-Oriented Systems”, Addison-Wesley Professional, 1999 L. Crispin, T. House, “Testing Extreme Programming”, Addison-Wesley, 2005 R. Mugridge, W. Cunningham, “Fit for Developing Software”, Prentice Hall, 2006 M. Delamaro, J. Maldonado, M. Jino, “Introdução ao Teste de Software”, Campus, 2007

39 Contato ● ● ●