• Save
Testes Unitários usando TestNG
Upcoming SlideShare
Loading in...5
×
 

Testes Unitários usando TestNG

on

  • 4,333 views

 

Statistics

Views

Total Views
4,333
Views on SlideShare
4,328
Embed Views
5

Actions

Likes
2
Downloads
1
Comments
2

4 Embeds 5

http://www.slideshare.net 2
http://www.health.medicbd.com 1
http://www.linkedin.com 1
https://duckduckgo.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Testes Unitários usando TestNG Testes Unitários usando TestNG Presentation Transcript

  • Testes Unitários usando TestNG
    By Bárbara Cabral
  • Introdução
    Testes de Software
    Ajudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados.
    Reduzem o nível de risco* de um sistema como um todo
    Risco: um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidade
    Contribuem para o cumprimento de itens contratuais ou requisitos legais acordados com o cliente
    Como?
    Encontrando e corrigindo defeitos ANTES do sistema ser implantado em ambiente operacional.
  • Introdução
  • Testes Unitários
    O teste unitário se concentra na verificação da menor unidade do projeto de software.
    Em sistemas construídos com uso de linguagens orientadas a objetos, como Java , essa unidade pode ser identificada como um método, uma classe ou mesmo um objeto.
    A partir de cada uma dessas unidades pode ser definido um conjunto de dados de entrada e saída.
    Entrada: parâmetros
    Saída: valor de retorno, exceções ou o estado do objeto.
    Ferramentas de Teste Unitário simulam dados de entrada e verificam se os dados de saída/retorno refletem realmente o comportamento esperado
  • TestNG
    Ferramenta Open-Source criada para superar as limitações da ferramenta JUnit e prover features adicionais necessárias para testar a última geração de aplicações Java.
    (by Cedric Beust)
  • TestNG
    Executa métodos individualmente (não precisa executar toda a classe como no JUnit)
    É possível habilitar/desabilitar métodos
    Configuração flexível, com o uso de XML
    Contém conversor de métodos de JUnit para TestNG (JUnitConverter)
    Obs: ocorrem alguns erros quando converte métodos de teste com exceção. Até 2008 o Testng não convertia os testes de exceção e Junit para TestNG.
    Plugin para Eclipse
    Reports
    JUnitmode
    Default HTML reports
    JUnitReport HTML plug-in
  • Estruturação dos Testes Unitários
    TestNG cobre diversas estratégias de testes unitários:
    Agrupamento por cenário, para quem usa casos de uso.
    Agrupamento por feature, para quem usa FDD, p.ex.
    Agrupamento por requisitos, no caso de uma metodologia tradicional como o RUP.
    Agrupamento por caso de teste ou por roteiro de testes.
    Além disso, ele permite todas ao mesmo tempo se for utilizado o conceito de grupos.
  • Annotations
    @Test
    Identifica um método de teste
    Groups: grupososquais o métodopertence
    Parameters: parâmetrosqueserãopassadosparasosmétodos de teste, comodeclarado no testng.xml
    DependsOnGroups: lista de gruposque o métododepende
    Timeout: duração máxima de execução do teste antes que ele seja considerado uma falha
    @Configuration
    Identifica um métodoparaconfigurar testes
    Métodos de configuraçãopodem ser agrupados e terdependências
    beforeTestMethod/afterTestMethod (JUnit: setup/tearDown)
    beforeTestClass/afterTestClass (JUnit: No equivalent)
    beforeSuite/afterSuite (JUnit: No equivalent)
    beforeTest/afterTest (Junit: No equivalent)
    @ExpectedExceptions
    Indicaque o métodotestadolançaumaoumaisexceções. É possívelchecar as exceçõeslançadas
    @DataProvider
    Provêparâmetrosparamétodos de teste
    @Factory
    Criaseusprópriosobjtos de test em tempo de execução
  • Configuração com ‘testng.xml’
    Arquivo onde são definidas as configurações de execução dos testes:
    Métodos de testes, classes e pacotes
    Quais grupos devem ser executados (include-groups)
    Quais grupos devem ser excluídos (exclude-groups)
    Define grupos adicionais (grupos de grupos)
    Se os testes deve, ser executados em paralelo
    Parâmetros
    Modo JUnit
  • Testng.xml
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
      
    <suitename="Suite1" verbose="1" >
      
       <testname="Regression1">
         <classes>
           <classname="test.sample.ParameterSample"/>
            <classname="test.sample.ParameterTest"/>
         </classes>
       </test>
    <testname="Nopackage" >
          <classes>
            <classname="NoPackageTest" />
         </classes>
       </test>
     
    </suite>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
     
    <suitename="Suite1" verbose="1" >
       <testname="Regression1"   >
          <packages>
           <package name="test.sample" />
        </packages>
      </test>
    </suite>
    Executa todas as classes da package
    Classes de teste em pacotes diferentes.
    Quando o arquivo testng.xml está no mesmo pacote, só precisa colocar o nome de classe
  • testng.xml
    <test name=“Testt1">
      <groups>
        <run>
          <exclude name="brokenTests"  />
          <include name="checkinTests"  />
        </run>
      </groups>
      
      <classes>
        <class name="test.IndividualMethodsTest">
          <methods>
            <include name="testMethod" />
          </methods>
        </class>
      </classes>
    </test>
    publicclass Test1 {
      @Test(groups = { "functest", "checkintest" })
      publicvoid testMethod1() {
      }
     
      @Test(groups = {"checkintest"} )
      publicvoid testMethod2() {
      }
     
      @Test(groups = { "functest" })
      publicvoid testMethod3() {
      }
    }
    Vantagem:
    - Possibilidade de separar grupos de teste como: testes baseados em dados,
    testes de segurança, testes funcionais, etc...
    - Possibilidade de criar um grupo para cada funcionalidade.Exemplo: “channel-grid”, “channel-medicao”, “channel-iea”
  • DTD testng.xml
    Link DTD Spec.
  • Execução de Testes
    Maior parte do trabalho é corrigiros testes quefalham
    A maioria dos frameworks exigemque se executemtodos
    TestNGcria um arquivo testng-failed.xml
    Vantagem: é possível re-executarapenasos testes quefalharam
  • Report da Execução
    TestNGpossuiosewguintesrelatórios:
    JUnitmode
    Relatórios Default em HTML
    PluginJUnitReport HTML
    TestNG’sowntesting
  • Testes dirigidos a dados (Data-DrivenTesting)
    Utilizando os DataProviders (@DataProvider)
    Define métodos que podem ser provedores de dados a outros métodos
    Permite separar os dados da lógica
    Dados podemvir de objetos java, arquivostexto, banco de dados, etc…
    Podem ser definidosconjuntos de dados para testes positivos e para testes negativos
  • Testes dirigidos a dados (Exemplo)
    @Test(dataProvider = “good-strings”)
    publicvoidparseGoodString(String s) {
    newParser().parse(s);
    }
    @DataProvider(name = “good-strings")
    publicObject[][] createGoodStrings() {
    returnnewObject[][] {
    newObject[] { “2 * 2” },
    newObject[] { “3 + 2” };
    }
    }
  • Integração com outros Frameworks
    Maven (v1 e v2)
    Spring Framework
    Selenium
    Cucumber
    DBUnit
    GlassfishUnifiedTest Framework (TestNGBased)
    http://wiki.java.net/bin/view/Projects/GlassFishQuality
    DBUnit
    Emma TestCoverage
    Outros...
  • TestNG vs. JUnit
    Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • TestNG vs. JUnit
    Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
    Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • TestNG vs. JUnit
    Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • Junit x TestNG
  • Links
    TestNG: http://www.testng.org
    Junit 4 vsTestNG:
    http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/
    http://www.ibm.com/developerworks/java/library/j-cq08296/
    http://www.artima.com/forums/flat.jsp?forum=276&thread=175064