SlideShare una empresa de Scribd logo
1 de 22
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

Más contenido relacionado

La actualidad más candente

What is-smoke-testing ?
What is-smoke-testing ?What is-smoke-testing ?
What is-smoke-testing ?Ajit Waje
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
 
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...Diogo Rocha Ferreira de Menezes
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Walmyr Lima e Silva Filho
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseRegis Magalhães
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
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
 
Ordenação de pares e ímpares
Ordenação de pares e ímparesOrdenação de pares e ímpares
Ordenação de pares e ímparesDiego Lusa
 

La actualidad más candente (20)

What is-smoke-testing ?
What is-smoke-testing ?What is-smoke-testing ?
What is-smoke-testing ?
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
DESENVOLVIMENTO DE PROJETO PARA IMPLANTAÇÃO DO CMMI NIVEL DOIS DE MATURIDADE ...
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Python unit testing
Python unit testingPython unit testing
Python unit testing
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
 
TestNG
TestNGTestNG
TestNG
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
XPath Injection
XPath InjectionXPath Injection
XPath Injection
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
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
 
Ordenação de pares e ímpares
Ordenação de pares e ímparesOrdenação de pares e ímpares
Ordenação de pares e ímpares
 

Similar 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
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 
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
 

Similar 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
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 
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
 
Junit
JunitJunit
Junit
 
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
 

Más 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
 

Más 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