J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.

Slides:



Advertisements
Apresentações semelhantes
Metodologia de testes Nome: Gustavo G. Quintão
Advertisements

Sistemas distribuídos
Classes Abstratas e Interfaces
Fundamentos de Engenharia de SW
Técnicas de Teste de Software
Projeto de Sistemas de Software
Desenvolvimento Guiado por Testes
Walfredo Cirne walfredo.dsc.ufpb.br
Polimorfismo e Classes Abstratas Profa
Programação Concorrente
Introdução ao paradigma de programação: Orientado a Objetos
Test Driven Development
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Aspectos Avançados em Engenharia de Software
TSDD Teste de segurança durante o desenvolvimento.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Classes e objetos P. O. O. Prof. Grace.
Test-Driven Development
Linguagem Técnica II Testes Automatizados Aula 04 Prof
Introdução aos conceitos de Teste de Software
Concorrência em Java Threads em Java.
Introdução a Computação Trabalho Final PUC Minas – São gabriel
Linguagens Orientadas a Objeto
Programação I Aula 2 (Métodos)
Métodos de Construção de Software: Orientação a Objetos
Test Driven Development Nazareno Andrade Baseado no material do prof. Hyggo Almeida.
Utilizando Testes Unitários Gleibson Rodrigo “dartanham” Fontes: antiga apresentação de testes da disciplina de ESS e na curso de testes do PDesigner.
JUnit “Keep the bar green to keep the code clean” JUnit Site.
Um Framework Para Testes
Classes, Objetos, Atributos e Métodos JAVA
Referências: Booch, G. et al. The Unified Modeling Language User Guide
Testes de Unidade Usando JUnit
Professora Lucélia Oliveira
Programação Orientada à Objetos
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Implementação Orientada a Objetos – Aula 03
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Java Kickstart, day 2 Semelhanças com linguagem C.
Polimorfismo.
Introdução a Teste de Software
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
Laboratório de Programação
Automação de Testes de Software
Herança e Arquitetura em camadas
Execução de testes: driver e stub
Exemplo de desenvolvimento com testes (JUNIT - estudo de caso) Alfredo Goldman.
Daniel Cukier – IME - USP 1 Junit 4.0 Daniel Cukier – IME – USP MAC5700.
Clique para editar o estilo do subtítulo mestre POO Utilizando PHP5 Prof. André Rabelo.
Linguagem II Classes Abstratas Interfaces. Davi Pires Revisão Reuso de código Superclasses e subclasses Composição vs. Herança Construtores.
Factory.
1 JUnit. 2 Por que testar? Qualidade: Código testado é mais confiável –Como saber se o recurso funciona sem testar? Coragem para mudar: o programador.
Orientação a Objetos Paradigma. Davi Pires Revisão Dúvidas da aula passada? –Características de Java –Compilador vs. Interpretador.
Engenharia de Software
1 Junit Motivação para o uso André Luís Moreira
Introdução a Orientação a Objetos
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
Java Avançado Luiz Carlos d´Oleron SJCP JUnit.
Módulo II Capítulo 1: Orientação a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin/ Marcia Bissaco Universidade de Mogi das Cruzes
Teste de Software 04: Que parte devo testar? Marcelo d’Amorim
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
ProgramaçãoConcorrente Glêdson Elias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Playframework 2.0. O que veremos hoje Playframework 2.0 Instalação Criação e Execução de uma Aplicação Estrutura de uma Aplicação Exemplos.
Usando JUnit.
Transcrição da apresentação:

J U nit Um Framework Para Testes

Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados  Necessidade de testar cada método separadamente  Centralizar o código de testes  Regras já definidas para apresentação de erros  Possibilidade de automatização

Testes em Software  Revelam erros no código  Garantem que a implementação respeita a especificação  Devem ser automatizados a fim de serem facilmente executados sempre que necessário  Garantem a qualidade do software durante todo o ciclo de vida

Testes Automatizados  Avaliam se um programa funciona como esperado  Exemplo: main()  Validam os requisitos

Testes de Unidade  Testam a aplicação em seus menores componentes, isoladamente  Testam unidades lógicas Métodos Objetos  Maior número de erros detectados  Erros mais fáceis de corrigir  Devem ser executados continuamente

Testes de Integração  Testam como uma coleção de unidades interage entre si ou com o ambiente onde executam  Executados continuamente (caso as unidades em desenvolvimento dependam de outras)

Testes Funcionais  Ponto de vista do usuário  Testam casos de uso  Validam a interface com o usuário, as operações requisitadas, etc.  São menos estáveis do que os outros tipos

JUnit  Framework para facilitar o desenvolvimento e a execução de testes de unidade em programas Java  Modelo de programação para a criação de testes de unidade  Sugerido por Kent Beck

JUnit  API para construir testes junit.framework.*  Aplicações para executar testes TestRunner

JUnit  O framework JUnit pode ser resumido em uma classe pai para todos os casos de teste (chamada TestCase) que fornece ferramentas para rodar testes, gerar relatórios e definir conjuntos de testes

Escrevendo uma classe de teste Assuma uma classe Conta Para testar a classe definimos uma classe ContaTest import test.framework.TestCase; public class ContaTest extends TestCase { public ContaTest(String testCase) { super(testCase); }

Escrevendo uma classe de teste  Para testar o método getSaldo() definimos o método testGetSaldo() na classe ContaTest; public void testGetSaldo() { Conta c = new Conta(1, 100); assertTrue(c.getSaldo() == 100); }  Para cada método da classe Conta é definido um método na classe ContaTest

Principais Asserções  assertEquals(objEsperado, objRecebido);  assertTrue(expBooleana);  assertNull(obj);  assertNotNull(obj)  assertSame(obj1, obj2);  fail(mensagem);

Instalando e Rodando o JUnit   Descompacte o arquivo junit3.8.1.zip.  Baixe a classe Conta.java em  Incluir o arquivo junit.jar no classpath  Crie uma classe ContaTest que será o test case da classe Conta.

Funcionamento  O TestRunner recebe uma subclasse de junit.framework.TestCase e executa o método run(Test) Obtém dados de TestSuite - suite() TestSuite usa Java Reflection para descobrir os métodos de teste

Funcionamento public static Test suite(){ return new TestSuite(ContaTest.class); } public static void main(String[] args){ junit.textui.TestRunner.run(suite()); }

TestSuite  Composição de testes public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ContaTest("testGetSaldo")); suite.addTest(new ContaTest("testCreditar")); return suite; }  Um TestSuite é usado pelo TestRunner para saber quais métodos devem ser executados como testes

TestSuite  Para executar mais de um teste de uma vez e/ou reusar testes de outras classes (testes regressivos) public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ContaTest("testSaldoConta")); suite.addTest(new ContaTest("testCredito")); suite.addTest(Poupanca.suite()); return suite; }

Como funciona  As asserções causam falhas quando os resultados não estiverem corretos test.framework.AssertionFailedError  Cada instância de TestCase será utilizada para executar um dos métodos de teste As alterações que ele fizer ao estado do objeto não afetarão as demais classes

Boas Práticas  Escreva o código de testes antes da implementação. Dessa forma, você terá uma implementação dirigida por contrato  Teste somente métodos que podem estar quebrados (assim, métodos get e set não devem ser testados na maioria dos casos)  Teste sempre que possível

Limitações  Métodos private e variáveis locais  Isolar em métodos private apenas código inquebrável  Transformar métodos private em package- private Redução do encapsulamento Redução da modularização (classes de teste espalhadas)  JUnitX Usa reflection para ter acesso a dados private

Referências

J U nit Um Framework Para Testes