Teste De Sistemas Web Com JUnit E Suas Extensões

Slides:



Advertisements
Apresentações semelhantes
Padrão de Projeto Iterator
Advertisements

Sistemas distribuídos
Framework para desenvolvimento web
Sistema para Criação e Testes de Modelos Formais
Modelo Cliente-Servidor
Padrão de Projeto Memento
Projeto de Sistemas de Software
Walfredo Cirne walfredo.dsc.ufpb.br
Wagner Santos C. de Jesus
Prof.: Carlos Hairon R. Gonçalves
WebWork e JSP Keven andrade
Aspectos Avançados em Engenharia de Software
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Linguagem Técnica II Testes Automatizados Aula 04 Prof
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
Desenvolvimento WEB I Camila Nunes
Fundamentos da Engenharia de Software
Capítulo 2 Java Servlets.
Vector To Raster Factory & Strategy Eric Silva Abreu São José dos Campos - 15 de dezembro de 2006.
Linguagens Orientadas a Objeto
Filtros. O que são Filtros Um filtro é um componente Web que reside no servidor Intercepta as requisições e respostas no seu caminho até o servlet e de.
Integração com Banco de Dados
Aplicativos Comerciais para Internet Camada View do MVC Apresentando os resultados de uma Consulta.
A autoria - II.
Chamada Remota de Procedimentos
Utilizando Testes Unitários Gleibson Rodrigo “dartanham” Fontes: antiga apresentação de testes da disciplina de ESS e na curso de testes do PDesigner.
Struts Java avançado – PCC Jobson Ronan
JUnit “Keep the bar green to keep the code clean” JUnit Site.
Um Framework Para Testes
Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Aula 2 – Primeiros Passos com a arquitetura Web Servidor
Adriano S. Castro André Abdalla
Professor: Márcio Amador
Tópicos Especiais J2EE Prof. Cristina Valadares Curso de Ciência da Computação.
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
JSP / Servlets Avançado
The Factory Esclarecendo a arquitetura utilizada no projeto Piloto Autor: Wabber Filho.
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Aula 2 – Primeiros Passos com a arquitetura Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas.
Arquitetura das JSP - Aula 2
Implementação MVC Pedro Antonino.
Aplicações Web com Orientação a Objetos
Tratamento de Exceções
PROGRAMAÇÃO WEB AULA 01 Prof. Gustavo Linhares
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Exemplo de desenvolvimento com testes (JUNIT - estudo de caso) Alfredo Goldman.
Daniel Cukier – IME - USP 1 Junit 4.0 Daniel Cukier – IME – USP MAC5700.
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.
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Programação Distribuída em Java Aula Na aula passada vimos: TomCat –Instalação e configuração –Criação de contexto JSP... uma introdução –Expressões.
Treinamento expresso java web Luiz Carlos d´Oleron.
Java Server Pages Um estudo de caso para aprendizagem Renata França de Pontes.
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS Prof. Cesar Augusto Tacla UTFPR/Campus Curitiba.
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta.
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.
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
O que é? Um framework para facilitar a implementação de uma arquitetura MVC em aplicações web Oferece  Um servlet controlador configurável ( Front Controller.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Visão Geral de Desenvolvimento Web Front End Tecnologias.
Aplicativos para internet Prof. Wolley
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Java TM Platform, Enterprise Edition (Java EE) Projeto de Sistemas de Software.
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:

Teste De Sistemas Web Com JUnit E Suas Extensões Eduardo Aranha

Por Quê Testar Sistemas Web? Sistemas 24x7 Corretude Performance Escalabilidade Etc.

O Que Devemos Testar? Funcionalidade (testes de aceitação) Performance Segurança Apresentação Muitos outros aspectos

Por Quê Utilizar O Framework JUnit? Automação de testes de unidade JUnit e suas extensões são Free e Open Source Utilização no mercado alavancada pela metodologia Extreme Programming Versão atual: 3.7 (21/05/2001)

O Framework JUnit Implementação de classes e métodos de teste Execução dos testes através de modo textual ou com interface gráfica Não dá suporte para parametrização dos dados de teste

O Framework Junit: Exemplo public class MoneyTest extends TestCase {      private Money m12CHF;   .... protected void setUp() {  m12CHF = ... } public void testSimpleAdd() {     Money result = m12CHF.add(m14CHF);      assert(expected.equals(result)); }

A Extensão JPerf Teste de Performance Aplicação do padrão de projeto Decorator Utilização de classes decoradoras em testes JUnit já criados Versão atual: 1.3 (11/05/2001)

A Extensão JPerf Decoradores TimedTest LoadTest ThreadedTest Testa o tempo gasto por um teste LoadTest Simula a execução concorrente de um teste por um determinado número de usuários ThreadedTest Executa o teste em um novo Thread

A Extensão JPerf: Exemplo ... Test testCase = new ExampleTestCase("testOneSecondResponse"); Test loadTest = new LoadTest(testCase, maxUsers, iterations, timer); Test timedTest = new TimedTest(loadTest, maxElapsedTime);

A Extensão Cactus Projeto suportado pelo grupo Apache Teste de unidade de Servlets Testes de caixa branca Simulação do ambiente de execução de Servlets Versão atual: 1.0 (02/05/2001)

A Extensão Cactus: Exemplo public class SampleServlet extends HttpServlet { void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { ... registerUser(req, resp) ... } String registerUser(HttpServletRequest req, HttpServletResponse resp) { String name = theRequest.getParameter("USER_NAME"); HttpSession session = theRequest.getSession(); session.putValue("NAME", name); Cookie cookie = new Cookie("ID", name); theResponse.addCookie(cookie); return name; } …

A Extensão Cactus: Exemplo public class TestSimpleServlet extends ServletTestCase { void beginRegisterUser(ServletTestRequest theRequest) { theRequest.addParameter("USER_NAME", "Vincent"); } void testRegisterUser() { SimpleServlet servlet = new SimpleServlet(); String name = servlet.registerUser(request, response); assertEquals("Vincent", name); assertEquals("Vincent", (String)session.getValue("NAME"));

A Extensão Cactus: Exemplo void endRegisterUser(HttpURLConnection theConnection) { Hashtable cookies = AssertUtils.getCookies(theConnection); Vector list = (Vector) cookies.get("ID"); assert(list.size() == 1); ClientCookie cookie = (ClientCookie) list.elementAt(0); assertEquals("ID", cookie.getName()); assertEquals("Vincent", cookie.getValue()); }

A Extensão Cactus: Exemplo void testDoGet() { SimpleServlet servlet = new SimpleServlet(); servlet.doGet(request, response); } void endDoGet(HttpURLConnection theConnection) { assertEquals( "<html><head/><body><h1>Your name is” + “Vincent</h1></body></html>", AssertUtils.getResponseAsString(theConnection));

A Extensão HttpUnit Testes de sistemas Web (servlets, páginas estáticas, JSP, ...) Testes de caixa preta Suporta HTTPS e cookies

A Extensão HttpUnit Não suporta JavaScript (em construção) Utilização de classes que representam conexões, páginas HTML, formulários, ... Versão atual: 1.2.4 (04/05/2001)

A Extensão HttpUnit: Exemplo try { WebRequest request; WebResponse response; WebConversation conversation = new WebConversation(); request = new GetMethodWebRequest("http://www.x.com/" ); response = conversation.getResponse( request ); WebForm loginForm = response.getForms()[0]; request = loginForm.getRequest(); request.setParameter( "name", "master" ); } catch (Exception e) { ... }

A Extensão JXUnit Testes de unidade assim como o JUnit Separação entre dados e código de teste Não suporta diretamente a parametrização dos dados de teste

A Extensão JXUnit Não suporta testes de performance Integração com JPerf não é direta Integrado com Quick (mapeamento de dados XML para objetos Java) Versão atual: 2.1 (20/05/2001)

A Extensão JXUnit Código de teste Dados de teste Classes que implementam a interface JXTestStep Leitura dinâmica das classes Dados de teste Arquivos XML

A Extensão JXUnit: Exemplo import net.sourceforge.jxunit.*; public class CopiadorTestStep implements JXTestStep { public void eval(JXTestCase testCase) throws Throwable { JXProperties properties=testCase.getProperties(); Object data=properties.get("input"); properties.put("output",data); }

A Extensão JXUnit: Exemplo <set name="input" value=“v1"/> <eval stepClass=“CopiadorTestStep"/> <ifEqual converse=“true” name="output" value=“v1"> <save name="output" file=“output.txt"/> <fail>Dummy Test Failure: myData.xml</fail> </ifEqual> ... </jxu>

A Extensão JXUnit: SCHEMA TREE  |---testStep*      |---fail      |---isNull      |---ifNull      |---testStep*      |---isEqual      |---ifEqual      |---set      |---save      |---eval      |---exception      |---trap      |---testStep*      |---subst      |---main      |---arg       |---absolute

A Extensão JXUnit Execução do JXUnit procura no diretório corrente e nos subdiretórios Dados de teste (.jxu) Arquivo de contexto (.jxuc)

A Extensão JXWeb Integração do HttpUnit e do JXUnit Script de teste escrito em JXWeb (extensão da linguagem JXUnit) Não é necessário programação em Java (em tese) Versão atual: 0.2 (23/05/2001)

A Extensão JXWeb: Exemplo <set name="req" value="http://www.expoimovel.com.br"/> <httpGet/> <getLink text=“Lançamentos"/> <save file=“paginaLancamentos.html" name="respText"/> </jxw>

A Extensão JXWeb: SCHEMA TREE |---testStep*      |---getForm      |---getFormParameter |---getLink |---httpGet      |---setFormParameter      |--- ... [ TODOS OS OUTROS MARCADORES DO JXUNIT]

Suporte Para Teste de Sistemas Web O ideal Utilização exclusiva do JXWeb e/ou Cactus O possível (“Quem não tem cão…”) Utilização do JXWeb e/ou Cactus JXUnit e HttpUnit para os comandos ainda não implementados em JXWeb JXPerf para o teste de performance enquanto não for implementado em JXUnit (ou JXWeb)

Exemplo Ver Arquivo de Exemplo Externo à Apresentação

Referências JUnit http://www.junit.org JPerf http://www.clarkware.com/software/JUnitPerf.html Cactus http://jakarta.apache.org/commons/cactus/

Referências HttpUnit http://httpunit.sourceforge.net/ JXUnit http://jxunit.sourceforge.net/ JXWeb http://sourceforge.net/projects/jxweb/

Referências Quick http://jxquick.sourceforge.net/quick3/ Extreme Programming http://www.extremeprogramming.org

Referências Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, 1995. Addison-Wesley.