Testes e Qualidade de Software

Slides:



Advertisements
Apresentações semelhantes
Behaviour-Driven Development em Ruby
Advertisements

Adaptação dos acetatos originais do livro: Java- An Introduction to Problem Solving & Programming, 4ª Edição Autor: Walter Savitch, ISBN © 2005.
Walfredo Cirne walfredo.dsc.ufpb.br
Linguagem Técnica II Testes Automatizados Aula 04 Prof
JUnit “Keep the bar green to keep the code clean” JUnit Site.
Um Framework Para Testes
Java Kickstart, day 2 Semelhanças com linguagem C.
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Execução de testes: driver e stub
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.
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.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
TDD usual abordagem normal é BOTTOM-UP não é necessário nenhum projeto anterior.
1 / AgileBrazil 2011 Melhorando a Qualidade dos Códigos de Teste Maurício Eduardo
Programação em Java RMI - Remote Method Invocation Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
Modelagem Orientada a Objetos com UML Cursos para a CTI - IME/USP Dairton Bassi, Hugo Corbucci e Mariana Bravo Departamento de Ciência.
Programação em Java Threads Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
Objetos Dublês AgilCoop – Cursos de Verão 2010 Mariana Bravo IME/USP.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Polimorfismo e suas aplicações em C++.
6 – Testes Unitários "Apenas duas coisas são infinitas: o universo e a estupidez humana. E eu não tenho certeza do primeiro.“ - Albert Einstein.
Hello World File>New>Other..>Android>Android Application Project.
(baseado em slides de ex-alunos)
Linguagens de Programação Conceitos e Técnicas
João Pascoal Faria TQS - Teste e Qualidade de Software (Software Testing and Quality) Análise de cobertura de código com.
TQS - Teste e Qualidade de Software (Software Testing and Quality) Introdução a testes unitários automatizados com JUnit.
Singleton Definição: Quando usar? Tipo de padrão? Como? estrutural.
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
POO - Classes Dilvan Moreira.
Projeto de PLP (2006.1) Extensão da Linguagem OO1
Java: Interfaces Alcides Calsavara.
Singleton e Template Method
Programador/a de Informática
TQS - Teste e Qualidade de Software (Software Testing and Quality) Test Driven Devlopment Experiment João Pascoal Faria.
Criação e manipulação de objetos
Introdução à programação orientada por objetos
Edson Susumu Asaga JavaBeans Edson Susumu Asaga
XVIII Escola de Verão IAG/USP Funções e Objetos Marcelo Bianchi
Programação Orientada a Objetos
4 CONCEITOS BÁSICOS EM POO
Programação Orientada a Objetos
Técnicas de Programação
Padrões de Testes Automatizados
MAC Tópicos de POO Secret Partner Pattern / Facet
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
Programação Orientada a Objetos*
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
3.2 Sobrecarga de Métodos (Overloading)
Rosemary Silveira Filgueiras Melo
Programação Orientada a Objetos
Programação Orientada a Objetos
Laboratório I Mateus Raeder.
Usando JUnit.
Rosemary Silveira Filgueiras Melo
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Teste de Software 04: Que parte devo testar?
Leitura do teclado e Interface gráfica
Tipos Primitivos de Dados
Java interface Projeto – Pacote - Class.
Percorrendo coleções com Iterator
Programação de Computadores II
Transcrição da apresentação:

Testes e Qualidade de Software Mock Objects Testes e Qualidade de Software Rui Ferreira Pedro Pinto Dezembro 2006

Sumário Definição Quando usar Detalhes técnicos Exemplo prático Frameworks

Definição Objectos simulados que imitam o comportamento de objectos reais de um modo controlado. Criam-se para fazer testes ao comportamento de outros objectos. Tal como os crash test dummies são usados nos testes de automóveis. [Wikipedia] Mock Objects

Quando usar Quando o objecto real... ...ainda não existe ou pode alterar o seu comportamento Test-Driven-Development ...retornar um resultado não determinístico Hora Actual, Temperatura Actual ...tiver estados difíceis de atingir um erro da rede Mock Objects

Quando usar Quando o objecto real... ...precisasse de incluir informação e métodos exclusivamente para uso nos testes e não para a sua tarefa ...for lento uma base de dados completa que tenha que ser inicializada antes do teste Mock Objects

Detalhes técnicos Permitir que o objecto que o invoca não saiba se está a usar um objecto real ou um mock object. Têm a mesma interface que os objectos que simulam Ambos implementam a mesma interface Mock object estende objecto real Mock Objects

Resultado não determinístico Exemplo prático public class Convert { … public static double getTemperatureInCelcius(City city){ double tempF; Sensor sensor = city.getSensor(); tempF = sensor.getCurrentTemperature(); //Convert Fahreneit to Celsius degrees return (tempF-32.0)*(5.0/9.0); } Classe City não existe Resultado não determinístico Mock Objects

Resultado conhecido (=22.5ºC) Exemplo prático (continuação) public class Convert { … public static double getTemperatureInCelcius(City city){ double tempF; Sensor sensor = city.getSensor(); tempF = sensor.getCurrentTemperature(); return (tempF-32.0)*(5.0/9.0); } public class MockSensor extends Sensor { … public double getCurrentTemperature() { //MOCK return 72.5; } Resultado conhecido (=22.5ºC) Mock Objects

Escrever método para controlar valor de retorno Exemplo prático (continuação) public class Convert { … public static double getTemperatureInCelcius(City city){ double tempF; Sensor sensor = city.getSensor(); tempF = sensor.getCurrentTemperature(); return (tempF-32.0)*(5.0/9.0); } public class MockCity implements City { … private Sensor curSensor; public Sensor getSensor() { //MOCK return curSensor; } public void setSensor(Sensor s){ this.curSensor = s; Escrever método para controlar valor de retorno Mock Objects

Exemplo prático (continuação) Mock Objects public class TestConvert extends TestCase { public void testGetTemperatureInCelcius() { MockCity city = new MockCity(); MockSensor sensor = new MockSensor(); city.setSensor(sensor); assertEquals(22.5, Convert.getTemperatureInCelcius(city)); } Mock Objects

Em suma… Escrever classes mock Estender classe real Implementar interface Implementar todos os seus métodos Reescrever (overwrite) os métodos a simular Criar e executar teste

Frameworks Facilitam e tornam mais rápida a criação dos Mock Objects Não é necessário escrever o código das classes mock Permitem criação a partir de: Interfaces Classes Permitem definir expectativas flexíveis Número de chamadas a métodos Valores de retorno Valores dos parâmetros Lançamento de excepções Mock Objects

Frameworks Integração com jUnit (Java) APIs extensíveis Grande parte das frameworks Valorizam a qualidade dos testes Mock Objects

Frameworks Java C# jMock (http://www.jmock.org) EasyMock (http://www.easymock.org) rMock (http://rmock.sourceforge.net) MockCreator (http://mockcreator.sourceforge.net) MockLib (http://mocklib.sourceforge.net) C# MockLib (http://sourceforge.net/projects/mocklib) Rhino Mocks (http://www.ayende.com/) NMock (http://nmock.org) Mock Objects

Frameworks Ruby Frameworks para outras linguagens Mocha (http://mocha.rubyforge.org) RSpec (http://rspec.rubyforge.org) FlexMock (http://onestepback.org/software/flexmock) Frameworks para outras linguagens C++ Javascript Perl Python ActionScript … Mock Objects 15

Resultado não determinístico Exemplo jMock public class Convert { … public static double getTemperatureInCelcius(City city){ double tempF; Sensor sensor = city.getSensor(); tempF = sensor.getCurrentTemperature(); //Convert Fahreneit to Celsius degrees return (tempF-32.0)*(5.0/9.0); } Classe City não existe Resultado não determinístico Mock Objects

Exemplo jMock (continuação) Mock Objects public class JMockTestConvert extends MockObjectTestCase { public void testGetTemperatureInCelcius() { // set up Mock mockCity = mock(City.class); Mock mockSensor = mock(Sensor.class); // expectations mockCity.expects(once()).method("getSensor"). will(returnValue((Sensor) mockSensor.proxy())); mockSensor.expects(once()).method("getCurrentTemperature"). will(returnValue(72.5)); // execute double result = Convert .getTemperatureInCelcius((City) mockCity.proxy()); // test assertEquals(22.5, result); } Mock Objects

Questões ? Mock Objects