SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentElias Nogueira
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practicesnickokiss
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
Software development best practices & coding guidelines
Software development best practices & coding guidelinesSoftware development best practices & coding guidelines
Software development best practices & coding guidelinesAnkur Goyal
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration TestingDavid Berliner
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first stepsRenato Primavera
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | EdurekaEdureka!
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testingAdam Stephensen
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Fernando Palma
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.David Gómez García
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaFrederico Augusto Do Carmo Moreira
 
Collections - Lists, Sets
Collections - Lists, Sets Collections - Lists, Sets
Collections - Lists, Sets Hitesh-Java
 

Mais procurados (20)

TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Junit
JunitJunit
Junit
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
Unit testing best practices
Unit testing best practicesUnit testing best practices
Unit testing best practices
 
Unit testing with JUnit
Unit testing with JUnitUnit testing with JUnit
Unit testing with JUnit
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Software development best practices & coding guidelines
Software development best practices & coding guidelinesSoftware development best practices & coding guidelines
Software development best practices & coding guidelines
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
 
Junit
JunitJunit
Junit
 
Introduction to JUnit
Introduction to JUnitIntroduction to JUnit
Introduction to JUnit
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
What is JUnit? | Edureka
What is JUnit? | EdurekaWhat is JUnit? | Edureka
What is JUnit? | Edureka
 
An introduction to unit testing
An introduction to unit testingAn introduction to unit testing
An introduction to unit testing
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
 
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetivaPirâmide de testes mobile, dividindo seus testes de maneira efetiva
Pirâmide de testes mobile, dividindo seus testes de maneira efetiva
 
Collections - Lists, Sets
Collections - Lists, Sets Collections - Lists, Sets
Collections - Lists, Sets
 

Semelhante a Testes Unitários usando TestNG

Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Stanley Araújo
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testesSandro Giacomozzi
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksDiana Ungaro Arnos
 

Semelhante a Testes Unitários usando TestNG (20)

Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
Aplicação de Testes Caixa Branca / Preta. Métodos dos caminhos básicos ou cri...
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Java 12
Java 12Java 12
Java 12
 
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Pensando em java univali turbinando seus testes
Pensando em java univali   turbinando seus testesPensando em java univali   turbinando seus testes
Pensando em java univali turbinando seus testes
 
JUnit
JUnitJUnit
JUnit
 
Será que testar é simples?
Será que testar é simples?Será que testar é simples?
Será que testar é simples?
 
Framwroks De Testes
Framwroks De  TestesFramwroks De  Testes
Framwroks De Testes
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
J unit xp
J unit xpJ unit xp
J unit xp
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Fases testes
Fases testesFases testes
Fases testes
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalks
 
Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1Ctai Teste De Software Aula 1
Ctai Teste De Software Aula 1
 

Mais de Bárbara Cabral da Conceição, CTFL

[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloudBárbara Cabral da Conceição, CTFL
 
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Bárbara Cabral da Conceição, CTFL
 
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Bárbara Cabral da Conceição, CTFL
 
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Bárbara Cabral da Conceição, CTFL
 

Mais de Bárbara Cabral da Conceição, CTFL (20)

[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud[TheBugConference] Testes automatizados de aplicativos na google cloud
[TheBugConference] Testes automatizados de aplicativos na google cloud
 
Implementando indicadores com google apps script
Implementando indicadores com google apps scriptImplementando indicadores com google apps script
Implementando indicadores com google apps script
 
Saindo do zero com DevOps
Saindo do zero com DevOpsSaindo do zero com DevOps
Saindo do zero com DevOps
 
Testes de ui com docker DevFest2018 - GDG Floripa
Testes de ui com docker DevFest2018 - GDG FloripaTestes de ui com docker DevFest2018 - GDG Floripa
Testes de ui com docker DevFest2018 - GDG Floripa
 
Khomp testes complexos!
Khomp   testes complexos!Khomp   testes complexos!
Khomp testes complexos!
 
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
Agile trends 2018 - Usando Especificação por Exemplos para melhorar a eficáci...
 
[Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js [Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js
 
[Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs [Node js] frameworks de testes end to-end baseados em nodejs
[Node js] frameworks de testes end to-end baseados em nodejs
 
O que é influência afinal?
O que é influência afinal?O que é influência afinal?
O que é influência afinal?
 
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
Introdução à Metodologias de Desenvolvimento Orientadas à Testes com Exemplos...
 
O que Continuous delivery significa para QA
O que Continuous delivery significa para QAO que Continuous delivery significa para QA
O que Continuous delivery significa para QA
 
Carreira de QA
Carreira de QA Carreira de QA
Carreira de QA
 
Data driven quality - tdc2016
Data driven quality - tdc2016Data driven quality - tdc2016
Data driven quality - tdc2016
 
Agile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a DadosAgile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a Dados
 
Lean software testing
Lean software testing Lean software testing
Lean software testing
 
Overview de QA
Overview de QA Overview de QA
Overview de QA
 
UX testing - Onde podemos contribnuir?
UX testing - Onde podemos contribnuir?UX testing - Onde podemos contribnuir?
UX testing - Onde podemos contribnuir?
 
Avaliação da Qualidade da Informação em empresa de TI
Avaliação da Qualidade da Informação em empresa de TIAvaliação da Qualidade da Informação em empresa de TI
Avaliação da Qualidade da Informação em empresa de TI
 
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
Data Quality Through Model Quality: A Quality Model for Measuring and Improvi...
 
Problemas de Qualidade da Informação e Abordagens Atuais
Problemas de Qualidade da Informação e Abordagens AtuaisProblemas de Qualidade da Informação e Abordagens Atuais
Problemas de Qualidade da Informação e Abordagens Atuais
 

Testes Unitários usando TestNG

  • 1. Testes Unitários usando TestNG By Bárbara Cabral
  • 2. 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.
  • 4. 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
  • 5. 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)
  • 6. 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
  • 7. 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.
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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”
  • 12. DTD testng.xml Link DTD Spec.
  • 13. 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
  • 14. Report da Execução TestNGpossuiosewguintesrelatórios: JUnitmode Relatórios Default em HTML PluginJUnitReport HTML TestNG’sowntesting
  • 15. 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
  • 16. 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” }; } }
  • 17. 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...
  • 18. TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 19. 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/
  • 20. TestNG vs. JUnit Fonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 22. 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