J820

Testes de interface
Web com

HttpUnit

Helder da Rocha (helder@acm.org)

argonavis.com.br
O que é HttpUnit
API Java para comunicação com servidores HTTP
Permite que programas construam e enviem requisições,
e depois recebam e processem respostas
Cria parâmetros de formulários, cria cookies, segue links,
interpreta HTML (tabelas, links, etc.) e realiza outras
tarefas normalmente feitas por browsers

Não é uma ferramenta de testes
argonavis.com.br

É só um cliente HTTP. Pode ser usado com JUnit para
realizar testes em aplicações Web

Testes HttpUnit não são testes de unidade
São testes de interface (funcionais) ou testes de
integração (dependem do servidor)
Não testa JavaScript (use JsUnit: jsunit.sourceforge.net)

2
Como instalar e usar
Onde encontrar
http://httpunit.sourceforge.net

Acrescente Tidy.jar e httpunit.jar no classpath da
aplicação testada
Tidy.jar: monta uma árvore DOM do HTML recebido na
resposta (permite também interpretar página como XML)
httpunit.jar: classes que implementam o cliente HTTP

argonavis.com.br

Importe com.meterware.httpunit.* no TestCase
Operação básica
WebConversation wc = new WebConversation();
WebRequest request =
new GetMethodWebRequest("http://xyz.com/t.html");
WebResponse response = wc.getResponse(request);
String html = response.getText();

3
Principais classes da API do HttpUnit

argonavis.com.br

com.meterware.httpunit.WebConversation

Representa uma sessão de cliente Web (usa cookies e
permite lidar com requisições e respostas HTTP)
com.meterware.httpunit.WebRequest
Representa uma requisição. Permite setar parâmetros
com.meterware.httpunit.WebResponse
Representa uma resposta. A partir deste objeto pode-se
obter objetos WebLink, WebTable e WebForm
com.meterware.httpunit.WebLink
Possui métodos para extrair dados de links de hipertexto
com.meterware.httpunit.WebTable
Possui métodos para navegar na estrutura de tabelas
com.meterware.httpunit.WebForm
Possui métodos para analisar a estrutura de formulários

4
WebConversation, WebRequest, WebResponse
WebRequest pode ser criado de várias formas. Primeiro é preciso
obter uma página. Para isto a melhor solução é usar
GetMethodWebRequest
WebConversation wc = new WebConversation();
WebRequest request =
new GetMethodWebRequest("http://xyz.com/t.html");
WebResponse response = wc.getResponse(request);

argonavis.com.br

Se não for preciso usar o objeto request (para, por exemplo,
acrescentar parâmetros), pode-se utilizar forma mais compacta
WebConversation wc = new WebConversation();
WebResponse response =
wc.getResponse("http://xyz.com/t.html");

Tendo-se uma página pode-se iniciar novas requisições através
de métodos de WebLink e WebForm
5
Testes com HttpUnit
Para usar HttpUnit, importe o pacote com.meterware.httpunit
no TestCase e use asserções normalmente no código
Vários métodos que permitem navegar no HTML retornado apóes
uma requisição podem ser usados para extrair dados testáveis da
resposta para uso nas asserções.
getText() de WebResponse retorna a página inteira. Pode-se fazer
asserções verificando a presença de determinados substrings com
String.indexOf():

argonavis.com.br

assertTrue(resp.getText().indexOf("texto esperado"));

getColumnCount(), getRowCount(), getTableCell() e outros
métodos de WebTable permitem testar tabelas
Métodos de WebForm permitem verificar a existência de objetos de
formulário como botões, conteúdo de caixas de texto, etc.
WebRequest permite ler cookies criados
WebLink permite descobrir a presença de links na página

6
Simulação de cliques em links
Uma vez obtida uma página, pode-se selecionar os
links que ela contém e clicá-los para obter uma
segunda resposta a ser testada

argonavis.com.br

Links podem ser selecionados através do seu conteúdo
através de response.getLinkWith()
Se webConversation.getResponse() receber código 404
uma exceção HttpNotFoundException será provocada
WebConversation wc = new WebConversation();
WebResponse response = wc.getResponse("http://xyz.com/t.html");
WebLink link = response.getLinkWith("resumo");
WebRequest clickResumo = link.getRequest();
try {
WebResponse respResumo = wc.getResponse(clickResumo);
} catch (HttpNotFoundException e) {
fail("Link quebrado! " + e);
}

7
Parâmetros de uma requisição HTTP
Parâmetros são pares nome=valor gerados pelo cliente em links
e formulários. São concatenados em strings separados por &:
nome=Jo%E3o+Grand%E3o&id=agente007&acesso=3

Parâmetros podem ser passados na requisição de duas formas
Se o método HTTP for GET, os parâmetros são passados em uma
única linha no query string, que estende a URL após um "?"
GET /servlet/Teste?id=agente007&acesso=3 HTTP/1.0

argonavis.com.br

Se o método HTTP for POST, os parâmetros são passados como um
stream no corpo na mensagem (o cabeçalho Content-length,
presente em requisições POST informa o tamanho
POST /servlet/Teste HTTP/1.0
Content-length: 21
Content-type: x-www-form-urlencoded
id=agente007&acesso=3

8
Envio de requisições com parâmetros
Parâmetros HTTP podem ser acrescentados em
qualquer requisição através do HTTPUnit
Podem ser incluídos em um acesso via HttpUnit usando
o método setParameter() de WebRequest

argonavis.com.br

Para testar o resultado de uma requisição que recebeu
parâmetro, pode-se usar getText() de WebResponse
para obter o HTML
WebConversation wc = new WebConversation();
WebRequest request =
new GetMethodWebRequest("http://xyz.com/t.html");
request.setParameter("nome", "fulano");
request.setParametro("senha", "F932*xw");
WebResponse response = wc.getResponse(request);
String html = response.getText();
assertFalse(html.indexOf("Acesso Negado"));

9
Formulários
Há vários métodos para manipular formulários. Pode-se
Detectar a presença de objetos de formulários e seu conteúdo
Verificar métodos usados, nome do formulários e outros atributos
Simular o envio clicando no botão submit e obter a resposta

No exemplo abaixo, a página retornada após o envio do
formulário deve conter um campo de texto preenchido com o
valor do parâmetro definido na requisição

argonavis.com.br

WebConversation wc = new WebConversation();
WebResponse response = wc.getResponse("http://xyz.com/t.html");
WebForm form = response.getFormWithID("cadastro");
assertEquals("POST", form.getMethod().toUpperCase());
String campoNome = form.getParameterValue("nome");
assertNotNull(campoNome); // se for null, campo não existe
form.setParameter("nome", "Fulano");
WebRequest request = form.getRequest("botaoEnviar");
WebResponse response = wc.getResponse(request);
assertEquals("Fulano", form.getParameterValue("nome");

10
Testes de tabelas
Há vários métodos para navegar nas células de tabelas

argonavis.com.br

Use métodos das classes WebTable e TableCell
WebConversation wc = new WebConversation();
WebResponse response = wc.getResponse("http://xyz.com/t.html");
WebTable[] tables = response.getTables();
assertNotNull(tables);
assertEquals(tables.length, 1); // só há uma tabela
WebTable table = tables[0];
int rows = table.getRowCount();
boolean keyDefined = false;
for (int i = 0; i < rows; i++) {
String key
= table.getCellAsText(i, 0); // col 1
String value = table.getCellAsText(i, 1); // col 2
if (key.equals("USER")) {
keyDefined = true;
assertEquals("JABBERWOCK", value);
}
}
if (!keyDefined) {
fail("No key named USER was found!");
}

11
Configuração de proxy
Para realizar testes em um Web site remoto quando as
máquinas de desenvolvimento estiverem atrás de uma
firewall é preciso seter algumas propriedades
proxySet=true
proxyHost=nomeDoHostOuIP
proxyPort=portaDoProxy

Podem ser passadas em linha de comando (usando
"-D"), através do Ant (<jvmargs>) ou pelo código:
argonavis.com.br

System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost","200.9.2.1");
System.getProperties().put("proxyPort", "3831");

12
Exercícios
1. Escreva testes para testar a aplicação Web fornecida

argonavis.com.br

A aplicação recebe parâmetros e grava os dados no
contexto. No final retorna uma página HTML
Rode a aplicação passando parâmetros diferentes e
analise os resultados. Escreva testes com o HttpUnit
que capturem todas as situações possíveis (tabelas, links
e objetos de formulário esperados)

13
Exercícios com aplicações Web
Para compilar aplicações Web é preciso importar os
arquivos da Servlet API
Pode-se usar o JBoss ou o Tomcat

Para usar o JBoss altere os arquivos
build.properties

argonavis.com.br

server.home=c:/jboss-3.2.1/server/default
servlet.jar=${server.home}/lib/javax.servlet.jar
deploy.dir=${server.home}/deploy

No build.xml, é preciso carregar
build.properties
Use

Arquivo necessário
apenas na fase de
compilação

<property file="build.properties" />

14
Fontes
[1] Richard

Hightower e Nicholas Lesiecki. Java Tools for
eXtreme Programming. Wiley, 2002.
Burke & Brian Coyner. Java eXtreme Programming
Cookbook. O'Reilly, 2003

argonavis.com.br

[2] Eric

15
Curso J820
Produtividade e Qualidade em Java:
Ferramentas e Metodologias
Revisão 1.1

© 2002, 2003, Helder da Rocha
(helder@acm.org)

argonavis.com.br

Mais conteúdo relacionado

PDF
Http Servlet
PDF
Ajax como comecar
PDF
Cactus - Testes em J2EE com Jakarta Cactus
DOCX
Testes de carga com j meter
PDF
Introdução À Automação de Testes com Selenium
PDF
Web 2.0 e AJAX - Parte 2 / 3
PPT
Te servelts
ODP
Http Servlet
Ajax como comecar
Cactus - Testes em J2EE com Jakarta Cactus
Testes de carga com j meter
Introdução À Automação de Testes com Selenium
Web 2.0 e AJAX - Parte 2 / 3
Te servelts

Mais procurados (8)

PPTX
Framework de testes cecom
PDF
Java Web 2 - Ferramentas e configuração
PDF
Java Web 4 - Servlets e JSP 2
PPTX
Aplicações web parte 2
ODP
servlet-introducao
PDF
Play Framework - FLISOL
PDF
Java web 6 JSP Expression Language Taglib parte 2
PDF
Java Web 3 - Servlets e JSP 1
Framework de testes cecom
Java Web 2 - Ferramentas e configuração
Java Web 4 - Servlets e JSP 2
Aplicações web parte 2
servlet-introducao
Play Framework - FLISOL
Java web 6 JSP Expression Language Taglib parte 2
Java Web 3 - Servlets e JSP 1
Anúncio

Destaque (9)

PDF
Entrada e Saída
PDF
Fundamentos de JDBC
PDF
Coleções Propriedade, Resources e Strings
PDF
Funcamentos de Programação Concorrente
PDF
Classes internas
PPT
Um Esforço Combinado Na Padronização
PDF
Como construir aplicações gráficas e applets
PDF
Funmentos de Objetos Remotos
PPTX
Teste de Software
Entrada e Saída
Fundamentos de JDBC
Coleções Propriedade, Resources e Strings
Funcamentos de Programação Concorrente
Classes internas
Um Esforço Combinado Na Padronização
Como construir aplicações gráficas e applets
Funmentos de Objetos Remotos
Teste de Software
Anúncio

Semelhante a Httpunit - Teste de interface Web com HttpUnit (20)

PDF
PDF
Curso de Servlets
ODP
servlet-requisicoes
PDF
Testes em Aplicações Web com Cactus
PDF
02 - Fundamentos de Servlets
PDF
Curso de WebServlets (Java EE 7)
PDF
Java Web - MVC básico com JSP e Servlets
PDF
Testando a integração com APIs - RSonRails/11
PDF
Servlet jsp tomcat 8
PPT
introdução a ajax
PPT
ASP.NET AJAX
ODP
Servlets e JSP
PPT
o que é ajax
PPT
Ajax (Asynchronous Javascript And Xml)
PDF
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
PPTX
Desenvolvimento de sistemas web com php Frameworks - Aula 1
PPTX
Web services
PDF
Aula 01 web server controls
PPT
API Apontador
PPT
Jdbc e hibernate
Curso de Servlets
servlet-requisicoes
Testes em Aplicações Web com Cactus
02 - Fundamentos de Servlets
Curso de WebServlets (Java EE 7)
Java Web - MVC básico com JSP e Servlets
Testando a integração com APIs - RSonRails/11
Servlet jsp tomcat 8
introdução a ajax
ASP.NET AJAX
Servlets e JSP
o que é ajax
Ajax (Asynchronous Javascript And Xml)
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
Desenvolvimento de sistemas web com php Frameworks - Aula 1
Web services
Aula 01 web server controls
API Apontador
Jdbc e hibernate

Mais de Denis L Presciliano (20)

PDF
Testes de Unidade com JUnit
PDF
Erros, exceções e asserções
PDF
Interfaces e Porlimosfismo
PDF
Reuso com Herança e Composição
PDF
Gerenciamento de projetos com o Apache Ant
PDF
Pacotes e Encapsulamento
PDF
Como criar classes e objetos
PDF
Tipos, literais, operadoes e controle de fluxo
PDF
Como usar a documentação da API Java 2
PDF
Configuração do ambiente JEdit + Ant
PDF
Programação Orientada a objetos em Java
PDF
Introdução a tecnologia Java
PDF
Fundamentos de Sockets
PDF
J530 15 workshop
PDF
J530 14 xdoclet
PDF
Autenticação e Controle de Acesso
PDF
J530 12 transactions
PDF
J530 11 relationships
PDF
J530 10 mdb
PDF
Testes de Unidade com JUnit
Erros, exceções e asserções
Interfaces e Porlimosfismo
Reuso com Herança e Composição
Gerenciamento de projetos com o Apache Ant
Pacotes e Encapsulamento
Como criar classes e objetos
Tipos, literais, operadoes e controle de fluxo
Como usar a documentação da API Java 2
Configuração do ambiente JEdit + Ant
Programação Orientada a objetos em Java
Introdução a tecnologia Java
Fundamentos de Sockets
J530 15 workshop
J530 14 xdoclet
Autenticação e Controle de Acesso
J530 12 transactions
J530 11 relationships
J530 10 mdb

Último (12)

PPTX
Analise Estatica de Compiladores para criar uma nova LP
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Jira Software projetos completos com scrum
PPTX
Tipos de servidor em redes de computador.pptx
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Utilizando code blockes por andre backes
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
Analise Estatica de Compiladores para criar uma nova LP
Processos no SAP Extended Warehouse Management, EWM100 Col26
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Jira Software projetos completos com scrum
Tipos de servidor em redes de computador.pptx
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Conceitos básicos de Redes Neurais Artificiais
Utilizando code blockes por andre backes
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão

Httpunit - Teste de interface Web com HttpUnit

  • 1. J820 Testes de interface Web com HttpUnit Helder da Rocha (helder@acm.org) argonavis.com.br
  • 2. O que é HttpUnit API Java para comunicação com servidores HTTP Permite que programas construam e enviem requisições, e depois recebam e processem respostas Cria parâmetros de formulários, cria cookies, segue links, interpreta HTML (tabelas, links, etc.) e realiza outras tarefas normalmente feitas por browsers Não é uma ferramenta de testes argonavis.com.br É só um cliente HTTP. Pode ser usado com JUnit para realizar testes em aplicações Web Testes HttpUnit não são testes de unidade São testes de interface (funcionais) ou testes de integração (dependem do servidor) Não testa JavaScript (use JsUnit: jsunit.sourceforge.net) 2
  • 3. Como instalar e usar Onde encontrar http://httpunit.sourceforge.net Acrescente Tidy.jar e httpunit.jar no classpath da aplicação testada Tidy.jar: monta uma árvore DOM do HTML recebido na resposta (permite também interpretar página como XML) httpunit.jar: classes que implementam o cliente HTTP argonavis.com.br Importe com.meterware.httpunit.* no TestCase Operação básica WebConversation wc = new WebConversation(); WebRequest request = new GetMethodWebRequest("http://xyz.com/t.html"); WebResponse response = wc.getResponse(request); String html = response.getText(); 3
  • 4. Principais classes da API do HttpUnit argonavis.com.br com.meterware.httpunit.WebConversation Representa uma sessão de cliente Web (usa cookies e permite lidar com requisições e respostas HTTP) com.meterware.httpunit.WebRequest Representa uma requisição. Permite setar parâmetros com.meterware.httpunit.WebResponse Representa uma resposta. A partir deste objeto pode-se obter objetos WebLink, WebTable e WebForm com.meterware.httpunit.WebLink Possui métodos para extrair dados de links de hipertexto com.meterware.httpunit.WebTable Possui métodos para navegar na estrutura de tabelas com.meterware.httpunit.WebForm Possui métodos para analisar a estrutura de formulários 4
  • 5. WebConversation, WebRequest, WebResponse WebRequest pode ser criado de várias formas. Primeiro é preciso obter uma página. Para isto a melhor solução é usar GetMethodWebRequest WebConversation wc = new WebConversation(); WebRequest request = new GetMethodWebRequest("http://xyz.com/t.html"); WebResponse response = wc.getResponse(request); argonavis.com.br Se não for preciso usar o objeto request (para, por exemplo, acrescentar parâmetros), pode-se utilizar forma mais compacta WebConversation wc = new WebConversation(); WebResponse response = wc.getResponse("http://xyz.com/t.html"); Tendo-se uma página pode-se iniciar novas requisições através de métodos de WebLink e WebForm 5
  • 6. Testes com HttpUnit Para usar HttpUnit, importe o pacote com.meterware.httpunit no TestCase e use asserções normalmente no código Vários métodos que permitem navegar no HTML retornado apóes uma requisição podem ser usados para extrair dados testáveis da resposta para uso nas asserções. getText() de WebResponse retorna a página inteira. Pode-se fazer asserções verificando a presença de determinados substrings com String.indexOf(): argonavis.com.br assertTrue(resp.getText().indexOf("texto esperado")); getColumnCount(), getRowCount(), getTableCell() e outros métodos de WebTable permitem testar tabelas Métodos de WebForm permitem verificar a existência de objetos de formulário como botões, conteúdo de caixas de texto, etc. WebRequest permite ler cookies criados WebLink permite descobrir a presença de links na página 6
  • 7. Simulação de cliques em links Uma vez obtida uma página, pode-se selecionar os links que ela contém e clicá-los para obter uma segunda resposta a ser testada argonavis.com.br Links podem ser selecionados através do seu conteúdo através de response.getLinkWith() Se webConversation.getResponse() receber código 404 uma exceção HttpNotFoundException será provocada WebConversation wc = new WebConversation(); WebResponse response = wc.getResponse("http://xyz.com/t.html"); WebLink link = response.getLinkWith("resumo"); WebRequest clickResumo = link.getRequest(); try { WebResponse respResumo = wc.getResponse(clickResumo); } catch (HttpNotFoundException e) { fail("Link quebrado! " + e); } 7
  • 8. Parâmetros de uma requisição HTTP Parâmetros são pares nome=valor gerados pelo cliente em links e formulários. São concatenados em strings separados por &: nome=Jo%E3o+Grand%E3o&id=agente007&acesso=3 Parâmetros podem ser passados na requisição de duas formas Se o método HTTP for GET, os parâmetros são passados em uma única linha no query string, que estende a URL após um "?" GET /servlet/Teste?id=agente007&acesso=3 HTTP/1.0 argonavis.com.br Se o método HTTP for POST, os parâmetros são passados como um stream no corpo na mensagem (o cabeçalho Content-length, presente em requisições POST informa o tamanho POST /servlet/Teste HTTP/1.0 Content-length: 21 Content-type: x-www-form-urlencoded id=agente007&acesso=3 8
  • 9. Envio de requisições com parâmetros Parâmetros HTTP podem ser acrescentados em qualquer requisição através do HTTPUnit Podem ser incluídos em um acesso via HttpUnit usando o método setParameter() de WebRequest argonavis.com.br Para testar o resultado de uma requisição que recebeu parâmetro, pode-se usar getText() de WebResponse para obter o HTML WebConversation wc = new WebConversation(); WebRequest request = new GetMethodWebRequest("http://xyz.com/t.html"); request.setParameter("nome", "fulano"); request.setParametro("senha", "F932*xw"); WebResponse response = wc.getResponse(request); String html = response.getText(); assertFalse(html.indexOf("Acesso Negado")); 9
  • 10. Formulários Há vários métodos para manipular formulários. Pode-se Detectar a presença de objetos de formulários e seu conteúdo Verificar métodos usados, nome do formulários e outros atributos Simular o envio clicando no botão submit e obter a resposta No exemplo abaixo, a página retornada após o envio do formulário deve conter um campo de texto preenchido com o valor do parâmetro definido na requisição argonavis.com.br WebConversation wc = new WebConversation(); WebResponse response = wc.getResponse("http://xyz.com/t.html"); WebForm form = response.getFormWithID("cadastro"); assertEquals("POST", form.getMethod().toUpperCase()); String campoNome = form.getParameterValue("nome"); assertNotNull(campoNome); // se for null, campo não existe form.setParameter("nome", "Fulano"); WebRequest request = form.getRequest("botaoEnviar"); WebResponse response = wc.getResponse(request); assertEquals("Fulano", form.getParameterValue("nome"); 10
  • 11. Testes de tabelas Há vários métodos para navegar nas células de tabelas argonavis.com.br Use métodos das classes WebTable e TableCell WebConversation wc = new WebConversation(); WebResponse response = wc.getResponse("http://xyz.com/t.html"); WebTable[] tables = response.getTables(); assertNotNull(tables); assertEquals(tables.length, 1); // só há uma tabela WebTable table = tables[0]; int rows = table.getRowCount(); boolean keyDefined = false; for (int i = 0; i < rows; i++) { String key = table.getCellAsText(i, 0); // col 1 String value = table.getCellAsText(i, 1); // col 2 if (key.equals("USER")) { keyDefined = true; assertEquals("JABBERWOCK", value); } } if (!keyDefined) { fail("No key named USER was found!"); } 11
  • 12. Configuração de proxy Para realizar testes em um Web site remoto quando as máquinas de desenvolvimento estiverem atrás de uma firewall é preciso seter algumas propriedades proxySet=true proxyHost=nomeDoHostOuIP proxyPort=portaDoProxy Podem ser passadas em linha de comando (usando "-D"), através do Ant (<jvmargs>) ou pelo código: argonavis.com.br System.getProperties().put("proxySet", "true"); System.getProperties().put("proxyHost","200.9.2.1"); System.getProperties().put("proxyPort", "3831"); 12
  • 13. Exercícios 1. Escreva testes para testar a aplicação Web fornecida argonavis.com.br A aplicação recebe parâmetros e grava os dados no contexto. No final retorna uma página HTML Rode a aplicação passando parâmetros diferentes e analise os resultados. Escreva testes com o HttpUnit que capturem todas as situações possíveis (tabelas, links e objetos de formulário esperados) 13
  • 14. Exercícios com aplicações Web Para compilar aplicações Web é preciso importar os arquivos da Servlet API Pode-se usar o JBoss ou o Tomcat Para usar o JBoss altere os arquivos build.properties argonavis.com.br server.home=c:/jboss-3.2.1/server/default servlet.jar=${server.home}/lib/javax.servlet.jar deploy.dir=${server.home}/deploy No build.xml, é preciso carregar build.properties Use Arquivo necessário apenas na fase de compilação <property file="build.properties" /> 14
  • 15. Fontes [1] Richard Hightower e Nicholas Lesiecki. Java Tools for eXtreme Programming. Wiley, 2002. Burke & Brian Coyner. Java eXtreme Programming Cookbook. O'Reilly, 2003 argonavis.com.br [2] Eric 15
  • 16. Curso J820 Produtividade e Qualidade em Java: Ferramentas e Metodologias Revisão 1.1 © 2002, 2003, Helder da Rocha (helder@acm.org) argonavis.com.br