A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Teste De Sistemas Web Com JUnit E Suas Extensões

Apresentações semelhantes


Apresentação em tema: "Teste De Sistemas Web Com JUnit E Suas Extensões"— Transcrição da apresentação:

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.


Carregar ppt "Teste De Sistemas Web Com JUnit E Suas Extensões"

Apresentações semelhantes


Anúncios Google