Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouSophia Peralta de Santarém Alterado mais de 8 anos atrás
1
Teste De Sistemas Web Com JUnit E Suas Extensões
Eduardo Aranha
2
Por Quê Testar Sistemas Web?
Sistemas 24x7 Corretude Performance Escalabilidade Etc.
3
O Que Devemos Testar? Funcionalidade (testes de aceitação) Performance
Segurança Apresentação Muitos outros aspectos
4
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)
5
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
6
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)); }
7
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)
8
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
9
A Extensão JPerf: Exemplo
... Test testCase = new ExampleTestCase("testOneSecondResponse"); Test loadTest = new LoadTest(testCase, maxUsers, iterations, timer); Test timedTest = new TimedTest(loadTest, maxElapsedTime);
10
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)
11
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; } …
12
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"));
13
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()); }
14
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));
15
A Extensão HttpUnit Testes de sistemas Web (servlets, páginas estáticas, JSP, ...) Testes de caixa preta Suporta HTTPS e cookies
16
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: (04/05/2001)
17
A Extensão HttpUnit: Exemplo
try { WebRequest request; WebResponse response; WebConversation conversation = new WebConversation(); request = new GetMethodWebRequest(" ); response = conversation.getResponse( request ); WebForm loginForm = response.getForms()[0]; request = loginForm.getRequest(); request.setParameter( "name", "master" ); } catch (Exception e) { ... }
18
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
19
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)
20
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
21
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); }
22
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>
23
A Extensão JXUnit: SCHEMA TREE
|---testStep* |---fail |---isNull |---ifNull |---testStep* |---isEqual |---ifEqual |---set |---save |---eval |---exception |---trap |---testStep* |---subst |---main |---arg |---absolute
24
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)
25
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)
26
A Extensão JXWeb: Exemplo
<set name="req" value=" <httpGet/> <getLink text=“Lançamentos"/> <save file=“paginaLancamentos.html" name="respText"/> </jxw>
27
A Extensão JXWeb: SCHEMA TREE
|---testStep* |---getForm |---getFormParameter |---getLink |---httpGet |---setFormParameter | [ TODOS OS OUTROS MARCADORES DO JXUNIT]
28
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)
29
Exemplo Ver Arquivo de Exemplo Externo à Apresentação
30
Referências JUnit http://www.junit.org JPerf
Cactus
31
Referências HttpUnit http://httpunit.sourceforge.net/ JXUnit
JXWeb
32
Referências Quick http://jxquick.sourceforge.net/quick3/
Extreme Programming
33
Referências Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.