SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
JUnit
   Selenium


     Cauê Guerra
Cecilia Fernandes
  Mauricio Aniche
Mauricio De Diana
Por quê testar?

Prejuízos de aproximadamente $59.5 bilhões na economia dos
EUA (Fonte: NIST/2002)
Teste Manual

 Difícil

 Demorado e cansativo

 Executado poucas vezes

 Cobre poucos casos

 Sem documentação
Testes automatizados

   Testes rodam rápido

   Cobre muitos casos

   Segurança na manutenção

   Ajuda na documentação


“Inspecionar para prevenir defeitos é bom; Inspecionar para
encontrar defeitos é desperdício” - Shigeo Shingo
Princípios Básicos

  Código dos testes deve ser simples
  Testes podem conter erros
  Devem fazer parte da manutenção
  Não devem exigir intervenção humana
Teste unitário

Menor unidade possível

Independente

Teste de regressão

Documentação

Design
Histórico
Criadores: Kent Beck e Erich Gamma

SUnit x JUnit x xUnit
JUnit 3
import junit.framework.*;

public class MultiplicationTest extends TestCase {
  public void testMultiplication() {
    assertEquals("Multiplication", 6, 3 * 2);
  }
}
JUnit 4
import org.junit.*;

public class MultiplicationTest {
  @Test
  public void multiplication() {
    Assert.assertEquals("Multiplication", 6, 3 * 2);
  }
}
JUnit 3 x JUnit 4
import junit.framework.*;                              JUnit 3
public class MultiplicationTest extends TestCase {
  public void testMultiplication() {
    assertEquals("Multiplication", 6, 3 * 2);
  }
}


import org.junit.*;                                    JUnit 4
public class MultiplicationTest {
  @Test
  public void multiplication() {
    Assert.assertEquals("Multiplication", 6, 3 * 2);
  }
}
JUnit 3 x JUnit 4

JUnit 3                  JUnit 4
public void testX()      @Test

public void setUp()      @Before
public void tearDown()   @After

assertEquals()           Assert.assertEquals()
Assertions

assertEquals

assertTrue / assertFalse

assertSame / assertNotSame

assertNull / assertNotNull

assertArrayEquals
Mais testes...

O que importa pro seu
usuário?



a) Seu backend fantástico!
b) O framework de ponta que sua equipe usa!
c) Que você usa Scrum com XP no desenvolvimento
d) A validação em JavaScript que não deixa salvar datas
inválidas...
Selenium HQ
               by OpenQA (and Thoughtworks?)


 Testes de Aceitação

 Testa a interface:

    Redirecionamentos
    Alteração de dados
    em tabelas
    Validações JS
    AJAX
    ...
Selenium HQ
public class MyTest extends TestCase {

private Selenium selenium;
  @Test
  public void selecionarSaoPauloAutoCheckEhCapital() {
     selenium.open("/projeto/pagina.jsp");
     String[] options = selenium.getSelectOptions("formulario");
     selenium.select("formulario", options[0]);
     selenium.fireEvent("cidade", "blur");
     Assert.assertTrue(selenium
        .getEval("selenium.page().findElement(ehCapital).checked"));
  }

}
Chato?
Selenium DSL
public class MyTest {

private Browser browser;
  @Test
  public void selecionarSaoPauloAutoCheckEhCapital() {
     Page page = browser.open("/projeto/pagina.jsp");
     Form form = page.form("formulario")
     form.select("cidade").choose(0).blur();
     Assert.assertTrue(form.isChecked("ehCapital"));
}
Simplicidade!

      Dá pra ser mais fácil?




                           E portável?
Selenium IDE
Selenium IDE

Permite gravarmos uma
sequencia de passos
Fácil uso
Não é preciso conhecer a
sintaxe do Selenium

Dificil manutencao
Só roda no Firefox (plugin)
Selenium IDE




não é bonito, mas é fácil
Célebre citação...

"The idea of "unit tests" appeals to me only rarely, when I’m
feeling my way in a totally unknown environment and need
feedback about what works and what doesn’t. Otherwise, lots
of time is wasted on activities that I simply never need to
perform or even think about. Nothing needs to be "mocked
up"." Donald Knuth
Citações

“Whenever you are tempted to type something into a print
statement or a debugger expression, write it as a test instead.”
Martin Fowler.

“Qualquer funcionalidade que não possui testes automatizados
simplesmente não existe.” Kent Beck.

"Program testing can be used to show the presence of bugs,
but never to show their absence." Edsger W. Dijkstra
Testes...
  Servem como documentação;

  Ajudam você a detectar quebras após qualquer
  implementação;

  Testes unitários, junto com alguma ferramenta de cobertura
  de testes, aumentam a qualidade;

  Aumentam a eficiência da sua equipe;

  Aumentam a segurança da equipe em refatorar.
Dúvidas?

Más contenido relacionado

La actualidad más candente

Test driven development
Test driven developmentTest driven development
Test driven developmentclauvane1708
 
Mineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosMineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosRodrigo Rocha
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitRobinson Castilho
 
O que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágilO que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágilSamanta Cicilia
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Luís Cobucci
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelManoel Pimentel Medeiros
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Robson Bittencourt
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...GessdaSilvaMachado
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnitLeonardo Soares
 

La actualidad más candente (20)

Test driven development
Test driven developmentTest driven development
Test driven development
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
Testando como um profissional
Testando como um profissionalTestando como um profissional
Testando como um profissional
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Mineração de Repositórios de Defeitos
Mineração de Repositórios de DefeitosMineração de Repositórios de Defeitos
Mineração de Repositórios de Defeitos
 
Debugging node
Debugging nodeDebugging node
Debugging node
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 
O que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágilO que faz (ou não) um tester no mundo ágil
O que faz (ou não) um tester no mundo ágil
 
Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011Testes de unidade e TDD SoLiSC 2011
Testes de unidade e TDD SoLiSC 2011
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
 
Junit
JunitJunit
Junit
 
JUnit
JUnitJUnit
JUnit
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...
 
Introdução a testes unitários com jUnit
Introdução a testes unitários com jUnitIntrodução a testes unitários com jUnit
Introdução a testes unitários com jUnit
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
JUnit
JUnitJUnit
JUnit
 

Destacado

New To Social Media How To Contribute To Any Social Media Community
New To Social Media How To Contribute To Any Social Media CommunityNew To Social Media How To Contribute To Any Social Media Community
New To Social Media How To Contribute To Any Social Media CommunityDeAnna Troupe
 
Managed services smb nation june 2011
Managed services   smb nation june 2011Managed services   smb nation june 2011
Managed services smb nation june 2011Alistair Forbes
 
Profilering - Psychologie en Parktijk - Business experience 2013 - Coster & ...
Profilering - Psychologie en Parktijk - Business experience 2013  - Coster & ...Profilering - Psychologie en Parktijk - Business experience 2013  - Coster & ...
Profilering - Psychologie en Parktijk - Business experience 2013 - Coster & ...Mischa Coster
 
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...Mischa Coster
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009Caue Guerra
 
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 20092009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009Caue Guerra
 
KNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteKNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteMischa Coster
 
How Small Business Owner Can Benefit From A Coach
How Small Business Owner Can Benefit From A CoachHow Small Business Owner Can Benefit From A Coach
How Small Business Owner Can Benefit From A CoachDeAnna Troupe
 
Linkedin congres 2014 #lic2014 Coster & vd Blom
Linkedin congres 2014 #lic2014 Coster & vd BlomLinkedin congres 2014 #lic2014 Coster & vd Blom
Linkedin congres 2014 #lic2014 Coster & vd BlomMischa Coster
 
Model Horse Intro Slideshow
Model Horse Intro SlideshowModel Horse Intro Slideshow
Model Horse Intro Slideshowguest61f11
 
Cross Platform Game Development with Rails
Cross Platform Game Development with RailsCross Platform Game Development with Rails
Cross Platform Game Development with RailsCaue Guerra
 

Destacado (17)

New To Social Media How To Contribute To Any Social Media Community
New To Social Media How To Contribute To Any Social Media CommunityNew To Social Media How To Contribute To Any Social Media Community
New To Social Media How To Contribute To Any Social Media Community
 
Managed services smb nation june 2011
Managed services   smb nation june 2011Managed services   smb nation june 2011
Managed services smb nation june 2011
 
BDD com Rails
BDD com RailsBDD com Rails
BDD com Rails
 
Profilering - Psychologie en Parktijk - Business experience 2013 - Coster & ...
Profilering - Psychologie en Parktijk - Business experience 2013  - Coster & ...Profilering - Psychologie en Parktijk - Business experience 2013  - Coster & ...
Profilering - Psychologie en Parktijk - Business experience 2013 - Coster & ...
 
Easyplrlove
EasyplrloveEasyplrlove
Easyplrlove
 
e-business
e-businesse-business
e-business
 
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...
Persuasion, Contagion and Ethics in Social Media - EU Counsil - Club of Venic...
 
wrd&txt hacking
wrd&txt hackingwrd&txt hacking
wrd&txt hacking
 
Copia De My Family
Copia De My FamilyCopia De My Family
Copia De My Family
 
2013 and gfi max
2013 and gfi max2013 and gfi max
2013 and gfi max
 
Rails - EXATEC2009
Rails - EXATEC2009Rails - EXATEC2009
Rails - EXATEC2009
 
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 20092009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
2009, o ano do Ruby on Rails no Brasil - CaelumDay 2009
 
KNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnoteKNSB verenigingsdag 2012 endnote
KNSB verenigingsdag 2012 endnote
 
How Small Business Owner Can Benefit From A Coach
How Small Business Owner Can Benefit From A CoachHow Small Business Owner Can Benefit From A Coach
How Small Business Owner Can Benefit From A Coach
 
Linkedin congres 2014 #lic2014 Coster & vd Blom
Linkedin congres 2014 #lic2014 Coster & vd BlomLinkedin congres 2014 #lic2014 Coster & vd Blom
Linkedin congres 2014 #lic2014 Coster & vd Blom
 
Model Horse Intro Slideshow
Model Horse Intro SlideshowModel Horse Intro Slideshow
Model Horse Intro Slideshow
 
Cross Platform Game Development with Rails
Cross Platform Game Development with RailsCross Platform Game Development with Rails
Cross Platform Game Development with Rails
 

Similar a JUnit - Selenium

Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDDDextra
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
PHP Experience 2016 - [Palestra] Pirâmide de Testes
PHP Experience 2016 - [Palestra] Pirâmide de TestesPHP Experience 2016 - [Palestra] Pirâmide de Testes
PHP Experience 2016 - [Palestra] Pirâmide de TestesiMasters
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)Renato Groff
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de UnidadeAline Ferreira
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitelliando dias
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidiMasters
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidEduardo Carrara de Araujo
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesDiana Ungaro Arnos
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilBruno Eustáquio
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentRodrigo Alves Vieira
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 

Similar a JUnit - Selenium (20)

Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
J unit xp
J unit xpJ unit xp
J unit xp
 
PHP Experience 2016 - [Palestra] Pirâmide de Testes
PHP Experience 2016 - [Palestra] Pirâmide de TestesPHP Experience 2016 - [Palestra] Pirâmide de Testes
PHP Experience 2016 - [Palestra] Pirâmide de Testes
 
TDD (Test-Driven Development)
TDD (Test-Driven Development)TDD (Test-Driven Development)
TDD (Test-Driven Development)
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
Introdução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnitIntrodução a testes unitários automatizados com JUnit e NUnit
Introdução a testes unitários automatizados com JUnit e NUnit
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.netTest-Driven Development (TDD) utilizando o framework xUnit.net
Test-Driven Development (TDD) utilizando o framework xUnit.net
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
J unit
J unitJ unit
J unit
 
Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
TDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software ÁgilTDD - Pós Graduação em Engenharia de Software Ágil
TDD - Pós Graduação em Engenharia de Software Ágil
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 

JUnit - Selenium

  • 1. JUnit Selenium Cauê Guerra Cecilia Fernandes Mauricio Aniche Mauricio De Diana
  • 2.
  • 3. Por quê testar? Prejuízos de aproximadamente $59.5 bilhões na economia dos EUA (Fonte: NIST/2002)
  • 4. Teste Manual Difícil Demorado e cansativo Executado poucas vezes Cobre poucos casos Sem documentação
  • 5. Testes automatizados Testes rodam rápido Cobre muitos casos Segurança na manutenção Ajuda na documentação “Inspecionar para prevenir defeitos é bom; Inspecionar para encontrar defeitos é desperdício” - Shigeo Shingo
  • 6. Princípios Básicos Código dos testes deve ser simples Testes podem conter erros Devem fazer parte da manutenção Não devem exigir intervenção humana
  • 7. Teste unitário Menor unidade possível Independente Teste de regressão Documentação Design
  • 8. Histórico Criadores: Kent Beck e Erich Gamma SUnit x JUnit x xUnit
  • 9. JUnit 3 import junit.framework.*; public class MultiplicationTest extends TestCase { public void testMultiplication() { assertEquals("Multiplication", 6, 3 * 2); } }
  • 10. JUnit 4 import org.junit.*; public class MultiplicationTest { @Test public void multiplication() { Assert.assertEquals("Multiplication", 6, 3 * 2); } }
  • 11. JUnit 3 x JUnit 4 import junit.framework.*; JUnit 3 public class MultiplicationTest extends TestCase { public void testMultiplication() { assertEquals("Multiplication", 6, 3 * 2); } } import org.junit.*; JUnit 4 public class MultiplicationTest { @Test public void multiplication() { Assert.assertEquals("Multiplication", 6, 3 * 2); } }
  • 12. JUnit 3 x JUnit 4 JUnit 3 JUnit 4 public void testX() @Test public void setUp() @Before public void tearDown() @After assertEquals() Assert.assertEquals()
  • 13. Assertions assertEquals assertTrue / assertFalse assertSame / assertNotSame assertNull / assertNotNull assertArrayEquals
  • 14. Mais testes... O que importa pro seu usuário? a) Seu backend fantástico! b) O framework de ponta que sua equipe usa! c) Que você usa Scrum com XP no desenvolvimento d) A validação em JavaScript que não deixa salvar datas inválidas...
  • 15. Selenium HQ by OpenQA (and Thoughtworks?) Testes de Aceitação Testa a interface: Redirecionamentos Alteração de dados em tabelas Validações JS AJAX ...
  • 16. Selenium HQ public class MyTest extends TestCase { private Selenium selenium; @Test public void selecionarSaoPauloAutoCheckEhCapital() { selenium.open("/projeto/pagina.jsp"); String[] options = selenium.getSelectOptions("formulario"); selenium.select("formulario", options[0]); selenium.fireEvent("cidade", "blur"); Assert.assertTrue(selenium .getEval("selenium.page().findElement(ehCapital).checked")); } }
  • 18. Selenium DSL public class MyTest { private Browser browser; @Test public void selecionarSaoPauloAutoCheckEhCapital() { Page page = browser.open("/projeto/pagina.jsp"); Form form = page.form("formulario") form.select("cidade").choose(0).blur(); Assert.assertTrue(form.isChecked("ehCapital")); }
  • 19. Simplicidade! Dá pra ser mais fácil? E portável?
  • 21. Selenium IDE Permite gravarmos uma sequencia de passos Fácil uso Não é preciso conhecer a sintaxe do Selenium Dificil manutencao Só roda no Firefox (plugin)
  • 22. Selenium IDE não é bonito, mas é fácil
  • 23. Célebre citação... "The idea of "unit tests" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about. Nothing needs to be "mocked up"." Donald Knuth
  • 24. Citações “Whenever you are tempted to type something into a print statement or a debugger expression, write it as a test instead.” Martin Fowler. “Qualquer funcionalidade que não possui testes automatizados simplesmente não existe.” Kent Beck. "Program testing can be used to show the presence of bugs, but never to show their absence." Edsger W. Dijkstra
  • 25. Testes... Servem como documentação; Ajudam você a detectar quebras após qualquer implementação; Testes unitários, junto com alguma ferramenta de cobertura de testes, aumentam a qualidade; Aumentam a eficiência da sua equipe; Aumentam a segurança da equipe em refatorar.