SlideShare uma empresa Scribd logo
Testes Unitários usando TestNGBy Bárbara Cabral
IntroduçãoTestes de SoftwareAjudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados.Reduzem o nível de risco* de um sistema como um todoRisco: um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidadeContribuem para o cumprimento de itens contratuais ou requisitos legais acordados com o clienteComo? Encontrando e corrigindo defeitos ANTES do sistema ser implantado em ambiente operacional.
Introdução
Testes UnitáriosO 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
TestNGFerramenta 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)
TestNGExecuta 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 XMLConté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 EclipseReportsJUnitmodeDefault HTML reportsJUnitReport HTML plug-in
Estruturação dos Testes UnitáriosTestNG 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@TestIdentifica um método de testeGroups: grupososquais o métodopertenceParameters: parâmetrosqueserãopassadosparasosmétodos de teste, comodeclarado no testng.xmlDependsOnGroups: lista de gruposque o métododependeTimeout: duração máxima de execução do teste antes que ele seja considerado uma falha@ConfigurationIdentifica um métodoparaconfigurar testesMétodos de configuraçãopodem ser agrupados e terdependênciasbeforeTestMethod/afterTestMethod  (JUnit: setup/tearDown)beforeTestClass/afterTestClass  (JUnit: No equivalent)beforeSuite/afterSuite  (JUnit: No equivalent)beforeTest/afterTest (Junit: No equivalent)@ExpectedExceptionsIndicaque o métodotestadolançaumaoumaisexceções. É possívelchecar as exceçõeslançadas@DataProviderProvêparâmetrosparamétodos de teste@FactoryCriaseuspró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 pacotesQuais 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 paraleloParâmetrosModo 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 packageClasses 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.xmlLink DTD Spec.
Execução de TestesMaior parte do trabalho é corrigiros testes quefalhamA maioria dos frameworks exigemque se executemtodosTestNGcria um arquivo testng-failed.xmlVantagem: é possível re-executarapenasos testes quefalharam
Report da ExecuçãoTestNGpossuiosewguintesrelatórios:JUnitmodeRelatórios Default em HTMLPluginJUnitReport HTMLTestNG’sowntesting
Testes dirigidos a dados (Data-DrivenTesting)Utilizando os DataProviders (@DataProvider)Define métodos que podem ser provedores de dados a outros métodosPermite 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 FrameworksMaven (v1 e v2)Spring FrameworkSeleniumCucumberDBUnitGlassfishUnifiedTest Framework (TestNGBased)http://wiki.java.net/bin/view/Projects/GlassFishQualityDBUnitEmma TestCoverageOutros...
TestNG vs. JUnitFonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
TestNG vs. JUnitFonte: 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. JUnitFonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
Junit x TestNG
LinksTestNG: http://www.testng.orgJunit 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

APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
Tchelinux
 
Testes de Integração
Testes de IntegraçãoTestes de Integração
Testes de Integração
André Faria Gomes
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytest
viniciusban
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
Elmano Cavalcanti
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
leopp
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
Antonio Oliveira
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101
QA Hannah
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
Abhishek Yadav
 
Test plan
Test planTest plan
Test plan
Akhila Bhaskar
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
Sunghyouk Bae
 
Load Testing Best Practices
Load Testing Best PracticesLoad Testing Best Practices
Load Testing Best Practices
Apica
 
testng
testngtestng
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
Carlos Henrique Martins da Silva
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
Aline Ferreira
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드
SangIn Choung
 
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
Opennaru, inc.
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
Ludimila Monjardim Casagrande
 
Test in Rest. API testing with the help of Rest Assured.
Test in Rest. API testing with the help of  Rest Assured.Test in Rest. API testing with the help of  Rest Assured.
Test in Rest. API testing with the help of Rest Assured.
Artem Korchevyi
 
Selenium with java
Selenium with javaSelenium with java
Selenium with java
Gousalya Ramachandran
 

Mais procurados (20)

APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Testes de Integração
Testes de IntegraçãoTestes de Integração
Testes de Integração
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytest
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Software Testing 101
Software Testing 101Software Testing 101
Software Testing 101
 
TestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKETestNG Session presented in Xebia XKE
TestNG Session presented in Xebia XKE
 
Test plan
Test planTest plan
Test plan
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
Load Testing Best Practices
Load Testing Best PracticesLoad Testing Best Practices
Load Testing Best Practices
 
testng
testngtestng
testng
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Apresentacao Testes de Unidade
Apresentacao Testes de UnidadeApresentacao Testes de Unidade
Apresentacao Testes de Unidade
 
SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드SI 화면테스트(단위) 가이드
SI 화면테스트(단위) 가이드
 
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
가상화 환경에서 배포 방법과 컨테이너 환경에서 CICD 차이점
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
Test in Rest. API testing with the help of Rest Assured.
Test in Rest. API testing with the help of  Rest Assured.Test in Rest. API testing with the help of  Rest Assured.
Test in Rest. API testing with the help of Rest Assured.
 
Selenium with java
Selenium with javaSelenium with java
Selenium with java
 

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
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
Denis L Presciliano
 
Java 12
Java 12Java 12
Junit 4.0
Junit 4.0Junit 4.0
Junit 4.0
elliando dias
 
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 testes
Sandro Giacomozzi
 
JUnit
JUnitJUnit
Será que testar é simples?
Será que testar é simples?Será que testar é simples?
Será que testar é simples?
Paulo Luiz Fachini
 
Framwroks De Testes
Framwroks De  TestesFramwroks De  Testes
Framwroks De Testes
Diego Pacheco
 
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
DevInPF
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
Joã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 PHPUnit
Diego Tremper
 
J unit xp
J unit xpJ unit xp
J unit xp
Emir Calife
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
Bárbara Cabral da Conceição, CTFL
 
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
Heider Lopes
 
Fases testes
Fases testesFases testes
Fases testes
Silas Gonçalves
 
Junit
JunitJunit
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
Everton 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 Software
Cloves 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? - LadyTalks
Diana 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
 
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
 
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
 

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 cloud
Bárbara Cabral da Conceição, CTFL
 
Implementando indicadores com google apps script
Implementando indicadores com google apps scriptImplementando indicadores com google apps script
Implementando indicadores com google apps script
Bárbara Cabral da Conceição, CTFL
 
Saindo do zero com DevOps
Saindo do zero com DevOpsSaindo do zero com DevOps
Saindo do zero com DevOps
Bárbara Cabral da Conceição, CTFL
 
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
Bárbara Cabral da Conceição, CTFL
 
Khomp testes complexos!
Khomp   testes complexos!Khomp   testes complexos!
Khomp testes complexos!
Bá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
 
[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
Bárbara Cabral da Conceição, CTFL
 
[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
Bárbara Cabral da Conceição, CTFL
 
O que é influência afinal?
O que é influência afinal?O que é influência afinal?
O que é influência afinal?
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
 
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
Bárbara Cabral da Conceição, CTFL
 
Carreira de QA
Carreira de QA Carreira de QA
Data driven quality - tdc2016
Data driven quality - tdc2016Data driven quality - tdc2016
Data driven quality - tdc2016
Bárbara Cabral da Conceição, CTFL
 
Agile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a DadosAgile Trends: Qualidade orientada a Dados
Agile Trends: Qualidade orientada a Dados
Bárbara Cabral da Conceição, CTFL
 
Lean software testing
Lean software testing Lean software testing
Lean software testing
Bárbara Cabral da Conceição, CTFL
 
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?
Bárbara Cabral da Conceição, CTFL
 
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
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
 
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
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 TestNGBy Bárbara Cabral
  • 2. IntroduçãoTestes de SoftwareAjudam a medir a qualidade do software baseando-se nos defeitos(bugs) encontrados.Reduzem o nível de risco* de um sistema como um todoRisco: um fator que pode resultar em futuras consequências negativas; usualmente expressado como impacto e probabilidadeContribuem para o cumprimento de itens contratuais ou requisitos legais acordados com o clienteComo? Encontrando e corrigindo defeitos ANTES do sistema ser implantado em ambiente operacional.
  • 4. Testes UnitáriosO 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. TestNGFerramenta 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. TestNGExecuta 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 XMLConté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 EclipseReportsJUnitmodeDefault HTML reportsJUnitReport HTML plug-in
  • 7. Estruturação dos Testes UnitáriosTestNG 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@TestIdentifica um método de testeGroups: grupososquais o métodopertenceParameters: parâmetrosqueserãopassadosparasosmétodos de teste, comodeclarado no testng.xmlDependsOnGroups: lista de gruposque o métododependeTimeout: duração máxima de execução do teste antes que ele seja considerado uma falha@ConfigurationIdentifica um métodoparaconfigurar testesMétodos de configuraçãopodem ser agrupados e terdependênciasbeforeTestMethod/afterTestMethod (JUnit: setup/tearDown)beforeTestClass/afterTestClass (JUnit: No equivalent)beforeSuite/afterSuite (JUnit: No equivalent)beforeTest/afterTest (Junit: No equivalent)@ExpectedExceptionsIndicaque o métodotestadolançaumaoumaisexceções. É possívelchecar as exceçõeslançadas@DataProviderProvêparâmetrosparamétodos de teste@FactoryCriaseuspró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 pacotesQuais 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 paraleloParâmetrosModo 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 packageClasses 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”
  • 13. Execução de TestesMaior parte do trabalho é corrigiros testes quefalhamA maioria dos frameworks exigemque se executemtodosTestNGcria um arquivo testng-failed.xmlVantagem: é possível re-executarapenasos testes quefalharam
  • 14. Report da ExecuçãoTestNGpossuiosewguintesrelatórios:JUnitmodeRelatórios Default em HTMLPluginJUnitReport HTMLTestNG’sowntesting
  • 15. Testes dirigidos a dados (Data-DrivenTesting)Utilizando os DataProviders (@DataProvider)Define métodos que podem ser provedores de dados a outros métodosPermite 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 FrameworksMaven (v1 e v2)Spring FrameworkSeleniumCucumberDBUnitGlassfishUnifiedTest Framework (TestNGBased)http://wiki.java.net/bin/view/Projects/GlassFishQualityDBUnitEmma TestCoverageOutros...
  • 18. TestNG vs. JUnitFonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 19. TestNG vs. JUnitFonte: 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. JUnitFonte: http://lijinjoseji.wordpress.com/2008/02/29/testng-56-and-junit-44-which-framework-you-will-choose-for-unit-testing/
  • 22. LinksTestNG: http://www.testng.orgJunit 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