Introdução aos Testes Automatizados



Documentos relacionados
Teste e Depuração de Sistemas Web. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Introdução a Testes Automatizados

Testes Automatizados. Paulo Cheque. 27/01/2009 Verão 2009

Tipos de teste de software

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

Rede de Laboratórios de Produtividade de Software

Fundamentos em Teste de Software. Vinicius V. Pessoni

Desenvolvimento Guiado por Testes

O uso do gestor de conteúdos plone no suporte a processos de software

Questionário. A ferramenta auxilia na alocação de Não (0) x x x. Satisfatório (5) complexidade de um caso de uso? de uso (72) Sim (10)

Introdução ao TDD. Dionatan Moura. #guma10anos Abril de about.me/dionatanmoura

UFG - Instituto de Informática

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB

Desenvolvimento Dirigido por Testes (TDD)

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

Sumário. Prefácio Capítulo 1 O que é qualidade? Capítulo 2 Normas e organismos normativos Capítulo 3 Métricas: visão geral...

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Qualidade de Software. Profa. Cátia dos Reis Machado

Gerenciador de Log. Documento Visão. Projeto Integrador 2015/2. Engenharia de Software. Versão 2.0. Engenharia de Software

Engenharia de Software

ISO/IEC 12207: Gerência de Configuração

Novas Ferramentas de Teste na plataforma Java Jorge Diz Workshop de testes para aplicativos web Slide 1

Engenharia de Software II

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB

Qualidade com Agilidade

SEGURANÇA A E CONTROLE EM SISTEMAS DE INFORMAÇÃO

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Desenvolvimento Web com Framework Demoiselle versão 1.0

Padrão Arquitetura em Camadas

Requisitos Executáveis: O modelo FIT / FitNesse

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Verificação e Validação

Testes Orientação Visão Conceitual em Testes Versão 0.3

a) Teste das funções do sistema com outros sistemas b) Teste de componentes que em conjunto compõem a função do sistema

Projeto de Software Orientado a Objeto

Desenvolvimento Dirigido por Testes (TDD)

Teste de Software. Profa. Cátia dos Reis Machado

Introdução à Linguagem Java

Testes de Software. Por quê testar? 3/28/2011. Andrew Diniz da Costa. Manter alta qualidade. Prevenir e encontrar defeitos

SISTEMA GERENCIADOR DE BANCO DE DADOS

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Especialização em Engenharia de Software com Ênfase em Software Livre ESL2/2008. Projeto Agenda Saúde Requisitos e Modelagem UML

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Laboratório I Aula 2

Documento de Arquitetura

Teste de software. Definição

Manual de Instalação da Ferramenta Selenium para Apoiar o Processo de Teste Freetest

Histórico de Revisão Data Versão Descrição Autor

Ciência da Computação ENGENHARIA DE SOFTWARE. Teste de Software

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Ricardo Roberto de Lima UNIPÊ APS-I. Históricos e Modelagem Orientada a Objetos

Gerenciamento de Redes de Computadores. Pfsense Introdução e Instalação

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

SEGURANÇA E CONTROLE EM SISTEMAS DE INFORMAÇÃO

Processo de Desenvolvimento de Sites

e-stf WebServices Processo Eletrônico Smart Client Manual de Instalação

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Processo de Teste de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

FOUR Soluções. Projeto Integrador Documento Visão. Versão <1.0>

Considerações no Projeto de Sistemas Cliente/Servidor

Testes Automatizados. Cursos de Verão 2007 IME/USP Dairton Bassi & Paulo Cheque

e-stf WebServices Processo Eletrônico Smart Client Documentação

02/10/2012. Padronização de interfaces. Referências

Estratégias para testes: a metáfora da pirâmide alimentar

Guia de Fatores de Qualidade de OO e Java

INF 2125 PROJETO DE SISTEMAS DE SOFTWARE Prof. Carlos J. P. de Lucena

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

QUALIDADE DO SOFTWARE (PRODUTO)

18/04/2006 Micropagamento F2b Web Services Web rev 00

1. Qual das seguintes alternativas não é um tipo de revisão? 2. Qual das alternativas é um atributo da qualidade?

Think Idea S/A. Documento Visão. Versão 1.0

Manual de Integração

Segurança de Aplicações Aula 6

Verificação, Validação e Testes. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

SISTEMAS DISTRIBUIDOS

Minicurso Computação em Nuvem Prática: Openstack

1. Apresentação Objetivos

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

CA Nimsoft Monitor Snap

Java Web/UI. Maven3 Redmine CVS. Áreas de conhecimento: Web o Aplicativos Web o Portal de conteúdo o REST Services Web Site Performance

Instalação MS-Windows com MS-SQL

Termo de Abertura Sistema de Vendas de Pizzas Online (PizzaWeb) - Versão 1.0

Servidor, Proxy e Firewall. Professor Victor Sotero

Feature-Driven Development

1. P03 Dispositivos de Acesso. Configuração Mínima de Softwares para Estações de Trabalho P03.001

A.S.P. Servidores Windows

ISO Aécio Costa

Sistemas Distribuídos RPC

Curso de Aprendizado Industrial Desenvolvedor WEB

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Sistemas Operacionais

Transcrição:

Introdução aos Testes Automatizados Paulo Cheque (paulocheque@agilcoop.org.br) Cursos de Verão 2010 Licença: Creative Commons: Attribution Share Alike 3.0 Unported http://creativecommons.org/licenses/by sa/3.0/

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 7925 2:1998. Software Component Testing. DO 178B:1992. Software Considerations in Airborne Systems and Equipment Certification, Requirements and Technical Concepts for Aviation (RTCA... SC167). IEEE 610.12: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 Unidade/Integração Desempenho Interface Aceitação Persistência de dados Objetos Aspectos Unidade Integração Usuário / Cliente Carga / Estresse Longeividade Segurança Layout / Beleza Usabilidade Acessibilidade... 9

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 Principal teste para verificar correção Teste muito específico Evita desperdício de tempo com depuração 10

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

Testes automatizados sem uso de ferramentas public class MainExample { public static void main(string[] args) { if(!new Double(Math.sqrt( 1)).isNaN()) // Ou throw new RuntimeException("Ops, falhou!"); assert new Double(Math.sqrt( 1)).isNaN() == true; } } 12

xunit Família de ferramentas para testes de unidade: JUnit (Java), TestNG (Java), Nunit (.NET), CSUnit (C#), DUnit (Delphi), VBUnit (Visual Basic)... Ótimo artigo para aprender mais sobre arcabouços xunit e sobre orientação a objetos: http://junit.sourceforge.net/doc/cookstour/cookstour.htm 13

Junit 4.x: Casos de Teste Convenções public void testmetododeteste() {... } Anotações @Test public void metododeteste() {... } Configurações Arquivos XML 14

JUnit 4.x: Verificação asserttrue / assertfalse assertequals assertsame fail Expect Exceptions Mensagens amigáveis Hamcrest: AssertThat 15

JUnit 4.x: Exemplo public class RaizTest { @Test public void raizde4eh2() { assertequals(2, Math.sqrt(4)); } } @Test public void raizdenegativonaoexiste() { } asserttrue(new Double(Math.sqrt( 1)).isNaN()); 16

Exemplo: Folha de Pagamento public class CalculaDoSalarioTest { @Test public void remuneracaodeestagiariotemimpostoreduzido() { SimpleDateFormat formatador = new SimpleDateFormat( dd/mm/yyyy ); Date datainiciodoperiodo = formatador.parse( 01/08/2009 ); Date datafimdoperiodo = formatador.parse( 01/09/2009 ); FolhaDePagamento estagiario = new FolhaDePagamentoEstagiario(536); int salario = estagiario.salario(datainiciodoperiodo, datafimdoperiodo); assertequals(499, salario)); } } @Test public void remuneracaodecontribuinte() { } @Test public void impostodexporcentoparatrabalhadoravulso() { } @Test public void impostodexporcentoparaempregadosegurado() { } 17

Junit 4.x: Resultados Testes ignorados Falhas Erros Sucesso Mensagens de erros Pilha de execução Linha do erro... 18

Relatórios de ferramentas de teste Linguagem API Docs das classes de testes Ferramentas Logs Métricas Screenshots Cobertura, testabilidade... 19

Teste de Integração Em geral: Teste que envolve mais de uma camada ou que trabalha com todas as dependências Persistência Outros sistemas / Web Services Verifica erros da integração entre módulos, componentes e camadas que podem funcionar perfeitamente individualmente 20

Teste de Interface de Usuário Console, GUI, WUI Camada crítica a erros Exposta aos usuários: infinitas combinações de uso Útil também para: Testes de aceitação Testes de usabilidade Testes de layout 21

Testes de Aceitação Teste do Cliente Testa as funcionalidades do ponto de vista do cliente Garantia que o sistema faz o esperado Clientes/Usuários e desenvolvedores podem trabalhar em parceria na escrita dos testes Detalhes de implementação ocultos Linguagem do cliente Ferramentas: Fitnesse, Fit, Selenium... 22

Testes de Desempenho Avaliar tempo de resposta de um módulo específico Profilers ajudam a encontrar gargalos Não avaliam a complexidade computacional Resultados dependem da infra estrutura de hardware: rede, processador, memória... 23

Teste de Carga Simula grandes quantidades de: Usuários, Requisições, Dados... Requisições: Simultâneas ou dentro de um intervalo de tempo Testa: Infra estrutura Hardware Banda de rede Banco de dados e servidores Ferramentas: JMeter... 24

Teste de Estresse Teste de Carga Máxima Identificar quantidade máxima de: Usuários Requisições Dados Encontrar limitações do ambiente Ferramentas: JMeter, Jstress... 25

Teste de Longeividade Teste que verifica o desempenho e a correção de um sistema dentro de um grande período de tempo de execução Encontrar problemas com vazamento de memória Encontrar erros de cache Ferramentas: JMeter 26

Teste de Segurança Útil para aplicações expostas a usuários malintencionados 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

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

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

Algumas Ferramentas Testes de Unidade: CxxTest (C++): http://cxxtest.sourceforge.net CUnit: http://cunit.sourceforge.net JUnit (Java): http://www.junit.org DUnit (Delphi): http://dunit.sourceforge.net VBUnit (Visual Basic): http://www.vbunit.com TestNG (Java): http://testng.org RSpec (Ruby): http://rspec.info/ http://en.wikipedia.org/wiki/list_of_unit_testing_frameworks

+Algumas Ferramentas Mock Objects: SevenMock (Java): http://seven mock.sourceforge.net EasyMock (Java): http://www.easymock.org/ JMock (Java): http://www.jmock.org Rhino.Mocks (.NET): http://www.ayende.com/projects/rhino mocks.aspx SMock (Smalltalk): http://www.macta.f2s.com/thoughts/smock.html Mockpp (C++): http://mockpp.sourceforge.net GoogleMock (C++): http://code.google.com/p/googlemock

+Algumas Ferramentas Testes de Mutação: Jabuti (USP São Carlos): http://jabuti.incubadora.fapesp.br Jester: http://jester.sourceforge.net Heckle: https://rubyforge.org/projects/seattlerb Testes de Desempenho / Carga / Estresse / Longeividade: JMeter: http://jakarta.apache.org/jmeter Outros: JPDFUnit: http://jpdfunit.sourceforge.net

Alguns links http://www.testing.com http://www.opensourcetesting.org http://xunitpatterns.com http://www.mockobjects.com http://java source.net/open source/testing tools http://www.junit.org http://www.agilcoop.org.br

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

Contato http://www.agilcoop.org.br http://ccsl.ime.usp.br paulocheque@agilcoop.org.br Licença: Creative Commons: Attribution Share Alike 3.0 Unported http://creativecommons.org/licenses/by sa/3.0/ 38