Your SlideShare is downloading. ×
Testes Unitários usando TestNG<br />By Bárbara Cabral<br />
Introdução<br />Testes de Software<br />Ajudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados....
Introdução<br />
Testes Unitários<br />O teste unitário se concentra na verificação da menor unidade do projeto de software. <br />Em siste...
TestNG<br />Ferramenta Open-Source criada para superar as limitações da ferramenta JUnit e prover features adicionais nece...
TestNG<br />Executa métodos individualmente (não precisa executar toda a classe como no JUnit)<br />É possível habilitar/d...
Estruturação dos Testes Unitários<br />TestNG cobre diversas estratégias de testes unitários: <br />Agrupamento por cenári...
Annotations<br />@Test<br />Identifica um método de teste<br />Groups: grupososquais o métodopertence<br />Parameters: par...
Configuração com ‘testng.xml’<br />Arquivo onde são definidas as configurações de execução dos testes:<br />Métodos de tes...
Testng.xml<br /><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" ><br />  <br /><suitename="Suite1" verbose="1" >...
testng.xml<br /><test name=“Testt1"><br />  <groups><br />    <run><br />      <exclude name="brokenTests"  /><br />      ...
DTD testng.xml<br />Link DTD Spec.<br />
Execução de Testes<br />Maior parte do trabalho é corrigiros testes quefalham<br />A maioria dos frameworks exigemque se e...
Report da Execução<br />TestNGpossuiosewguintesrelatórios:<br />JUnitmode<br />Relatórios Default em HTML<br />PluginJUnit...
Testes dirigidos a dados (Data-DrivenTesting)<br />Utilizando os DataProviders (@DataProvider)<br />Define métodos que pod...
Testes dirigidos a dados (Exemplo)<br />	@Test(dataProvider = “good-strings”)<br />publicvoidparseGoodString(String s) {<b...
Integração com outros Frameworks<br />Maven (v1 e v2)<br />Spring Framework<br />Selenium<br />Cucumber<br />DBUnit<br />G...
TestNG vs. JUnit<br />Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-c...
TestNG vs. JUnit<br />Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-c...
TestNG vs. JUnit<br />Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-c...
Junit x TestNG<br />
Links<br />TestNG: http://www.testng.org<br />Junit 4 vsTestNG:<br />http://www.mkyong.com/unittest/junit-4-vs-testng-comp...
Upcoming SlideShare
Loading in...5
×

Testes Unitários usando TestNG

3,993

Published on

Published in: Technology
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,993
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Testes Unitários usando TestNG"

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

×