SlideShare uma empresa Scribd logo
1 de 29
Unit Testing
Robson Agapito Correa
robson.correa@gft.com
Welcome to The
GFT Side
Robson Agapito
2
QA Specialist
QA por opção e Agilista por prazer
@robsonagapito
http://www.slideshare.net/robsonagapito
https://br.linkedin.com/in/robsonagapito
https://github.com/robsonagapito
https://about.me/robsonagapito
https://medium.com/@robsonagapito
What the F.?!?!?
3
Como chamar?
4
Unitário, Unidade,
Componente ou
Unit?
Como chamar?
5
Unitário, Unidade,
Componente ou
Unit?
Pirâmide de Testes
6
Mais demorado e
Maior esforço
Maior ROI
System Testing
Integration Testing
Unit Testing
Rápido
Lento
Pirâmide de Testes
7
Mais demorado e
Maior esforço
Maior ROI
System Testing
Integration Testing
Rápido
Lento
Unit Testing
Teste de Unidade
O teste de unidade (também
conhecido como teste de
componente ou módulo) se
concentra em componentes que
são testáveis separadamente
Testes de Unidade
8
 Tem como foco as menores unidades de uma aplicação.
 Identificar defeitos em algorítimos incorretos, estruturas de dados
incorretas e/ou simples erros de programação.
 Pode ser desenvolvido enquanto o código da aplicação é criada
 Normalmente o desenvolvedor é o responsável pelos testes de
componente.
Unit Testing
9
Testes de Unidade pode testar
uma funcionalidade?
Iceberg de Testes
10
http://claysnow.co.uk/the-testing-iceberg/
http://twixar.me/ZnpT
Objetivo
11
 Reduzir o risco;
 Verificar os comportamentos funcional e não funcional do
componente ao projetado e especificado;
 Construir a confiança na qualidade do componente;
 Encontrar defeitos no componente;
 Evitar que os defeitos espalhem para níveis mais altos de
teste;
 Garantir a regressão dos testes
O que devemos testar?
12
 Em uma classe:
• Atributos
• Métodos
 Integridade dos dados
 Condições de contorno e Limites
 Tratamentos de Erros
 Todos os caminhos possíveis pelo qual se é possível passar (linhas
de código)
Testar o Simples!
13
 Quanto menor for um método mais fácil de se realizar o teste.
 A partir do momento que se necessita um número muito grande
de testes para se testar um método já é um sinal de que é preciso
refatorar o mesmo.
 Quanto menor a
unidade, mais fácil
se torna de criar um
teste, e
identificar/corrigir
um Bug.
Testar o Simples!
14
 Pensar nos testes antes do
desenvolvimento
 Usar a técnica de TDD (Test Driven
Development).
 Ser informal nesta fase do
desenvolvimento de software, faz
com que bugs possam passar e tenha
um custo maior na correção se
identificados nas fases de Integração
e Sistema.
Técnicas de Testes de Unidade
15
Caixa Branca / Estrutura
Cobertura de código
16
 Níveis de Cobertura:
• Cobertura de comandos: todo comando executado.
• Cobertura de desvio (decisão): todo desvio (decisão) tomado em cada
direção, verdadeiro ou falso.
• Cobertura de condição: toda combinação de condições verdadeiras e
falsas avaliadas (isto é, tabela verdade inteira).
• Cobertura de decisão de multicondição (case): somente aquelas
combinações de condição que podem influenciar a decisão.
• Cobertura de Laço: todos os caminhos de laço executados zero, uma, e
múltiplas (idealmente, máximo) vezes.
A cobertura de comandos implica na cobertura de desvio (decisão).
Cobertura de código – Exemplo 01
17
public class Absoluto {
public int retornaValorAbsoluto(int valor){
int res = 0;
if (valor < 0) {
res = -valor;
}
System.out.println(res);
return res;
}
}
Considere o seguinte código, no qual é lido um número
inteiro e realizada a impressão do seu valor absoluto.
Informar
o valor
(valor
< 0)
res = -valor
Impressão
do resultado
(res)
absoluto
Cobertura de código – Exemplo 01
18
public class Absoluto {
public int retornaValorAbsoluto(int valor){
int res = 0;
if (valor < 0) {
res = -valor;
}
System.out.println(res);
return res;
}
}
Informar
o valor
(valor
< 0)
res = -valor
Impressão
do resultado
(res)
absoluto
Para esse código, quais valores de testes para “valor”
precisamos para 100% de cobertura de comandos?
Basta apenas 1 teste com
valor < 0
Cobertura de código – Exemplo 01
19
Com o teste anterior (valor < 0), não conseguimos 100% de
cobertura de desvio.
Informar
o valor
(valor
< 0)
res = -valor
Impressão
do resultado
(res)
absoluto
Não é
coberto
Cobertura de código – Exemplo 01
20
Informar
o valor
(valor
< 0)
res = -valor
Impressão
do resultado
(res)
absoluto
Quais valores de teste para “valor” precisamos para 100%
de cobertura de desvios?
Precisamos de 2 testes
valor < 0 e valor >= 0
Atenção!
21
 Testes Caixa Preta podem deixar 75% ou mais dos comandos sem
um cobertura.
 Existem muitas ferramentas de apoio para identificar qual a
cobertura de testes, além de bibliotecas que ajudam a criar testes
automaticamente.
 Lacunas na cobertura de código
podem levar a ter que realizar
mais testes em outras fases como
Integração e Sistema o que faz
com que tenhamos um feedback
mais lento, além de poder deixar
passar algum Bug estrutural.
TDD – Testing Driven Development
22
Testing
CodeRefactor
23
Pair Programming
24
Coding Dojo – Que a força esteja com você!
Vamos praticar!!!
25
Ferramentas e Bibliotecas
26
Classe de Conta Corrente
27
1) Ter uma conta corrente que realize
um deposito ou um saque de um
determinado valor atualizando
automaticamente o saldo. Este valor de
deposito ou saque não pode ser
negativo.
2) Somente pode ser depositado valores
iguais ou menores que 10 reais. Mas
temos uma situação onde 80% dos
clientes possuem saldo maior que 1000
reais no final do mês.
Referências
28
 Curso de Formação em Testes de Software – Iterasys
 BSTQB / ISTQB – Syllabus
 Projeto exemplo no github: https://github.com/robsonagapito/unit-testing-java
Unit Testing
Robson Agapito Correa
robson.correa@gft.com
Welcome to The
GFT Side

Mais conteúdo relacionado

Mais procurados

Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
Paulo César M Jeveaux
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
slides_teltools
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
Christian Cunha
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
guest23778e
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
Bernardo Fontes
 

Mais procurados (20)

Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
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
 
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
 
JUnit Sample
JUnit SampleJUnit Sample
JUnit Sample
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Test link
Test linkTest link
Test link
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de códigoSeu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
Seu app a prova de gambiarras (ou não) - Ferramentas de validaSPção de código
 
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva 3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 
Convenia - BPO Under the Hood
Convenia - BPO Under the HoodConvenia - BPO Under the Hood
Convenia - BPO Under the Hood
 
TDD com Python
TDD com PythonTDD com Python
TDD com Python
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?Testando Aplicações Django: Quando, Como e Onde?
Testando Aplicações Django: Quando, Como e Onde?
 

Semelhante a Unit Testing

Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
Thiago Ghisi
 

Semelhante a Unit Testing (20)

Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
Aula12 T EES UFS Testes de SW
Aula12  T EES  UFS  Testes de SWAula12  T EES  UFS  Testes de SW
Aula12 T EES UFS Testes de SW
 
Aula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SWAula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SW
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Fases testes
Fases testesFases testes
Fases testes
 
Modulo 2
Modulo 2Modulo 2
Modulo 2
 
Testes de Software - Módulo 2
Testes de Software - Módulo 2Testes de Software - Módulo 2
Testes de Software - Módulo 2
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
1° Madrugada de Testes
1° Madrugada de Testes1° Madrugada de Testes
1° Madrugada de Testes
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Introdução ao design de teste de software
Introdução ao design de teste de softwareIntrodução ao design de teste de software
Introdução ao design de teste de software
 
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
 

Mais de Robson Agapito Correa

Palestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de SoftwarePalestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de Software
Robson Agapito Correa
 

Mais de Robson Agapito Correa (17)

ChatGPT e Testes de Software
ChatGPT e Testes de SoftwareChatGPT e Testes de Software
ChatGPT e Testes de Software
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
 
A aventura de um Agile Tester em uma empresa Waterfall Portuguesa
A aventura de um Agile Tester em uma empresa Waterfall PortuguesaA aventura de um Agile Tester em uma empresa Waterfall Portuguesa
A aventura de um Agile Tester em uma empresa Waterfall Portuguesa
 
Python com qualidade - testes funcionais com Python e Selenium Webdriver
Python com qualidade - testes funcionais com Python e Selenium WebdriverPython com qualidade - testes funcionais com Python e Selenium Webdriver
Python com qualidade - testes funcionais com Python e Selenium Webdriver
 
Qual arquitetura de automação escolher: monolítica ou distribuída?
Qual arquitetura de automação escolher: monolítica ou distribuída?Qual arquitetura de automação escolher: monolítica ou distribuída?
Qual arquitetura de automação escolher: monolítica ou distribuída?
 
MindMaps ajudando planejar meus testes no mundo Agile
MindMaps ajudando planejar meus testes no mundo AgileMindMaps ajudando planejar meus testes no mundo Agile
MindMaps ajudando planejar meus testes no mundo Agile
 
Utilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous DeliveryUtilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous Delivery
 
Automação de testes funcionais com Python e Mechanize
Automação de testes funcionais com Python e MechanizeAutomação de testes funcionais com Python e Mechanize
Automação de testes funcionais com Python e Mechanize
 
Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.
 
Ruby Conf Brasil 2015
Ruby Conf Brasil 2015Ruby Conf Brasil 2015
Ruby Conf Brasil 2015
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
 
QAs podem realizar testes de APIs? DEVEM!!!
QAs podem realizar testes de APIs? DEVEM!!!QAs podem realizar testes de APIs? DEVEM!!!
QAs podem realizar testes de APIs? DEVEM!!!
 
Continuous Integration, Automated Builds e Continuous Deploy, desenvolvimento...
Continuous Integration, Automated Builds e Continuous Deploy, desenvolvimento...Continuous Integration, Automated Builds e Continuous Deploy, desenvolvimento...
Continuous Integration, Automated Builds e Continuous Deploy, desenvolvimento...
 
Palestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de SoftwarePalestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de Software
 
Palestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de SoftwarePalestra FIAP - 11/09/2014 - Testes de Software
Palestra FIAP - 11/09/2014 - Testes de Software
 
Evento Locaweb Curitiba - Utilizando Rspec com Selenium Webdriver para reali...
Evento Locaweb Curitiba - Utilizando Rspec com Selenium Webdriver  para reali...Evento Locaweb Curitiba - Utilizando Rspec com Selenium Webdriver  para reali...
Evento Locaweb Curitiba - Utilizando Rspec com Selenium Webdriver para reali...
 
TDC 2012 - Processo de Teste e Qualidade de Software
TDC 2012 - Processo de Teste e Qualidade de SoftwareTDC 2012 - Processo de Teste e Qualidade de Software
TDC 2012 - Processo de Teste e Qualidade de Software
 

Último

Último (9)

ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor Sucroenergético
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 

Unit Testing

  • 1. Unit Testing Robson Agapito Correa robson.correa@gft.com Welcome to The GFT Side
  • 2. Robson Agapito 2 QA Specialist QA por opção e Agilista por prazer @robsonagapito http://www.slideshare.net/robsonagapito https://br.linkedin.com/in/robsonagapito https://github.com/robsonagapito https://about.me/robsonagapito https://medium.com/@robsonagapito
  • 6. Pirâmide de Testes 6 Mais demorado e Maior esforço Maior ROI System Testing Integration Testing Unit Testing Rápido Lento
  • 7. Pirâmide de Testes 7 Mais demorado e Maior esforço Maior ROI System Testing Integration Testing Rápido Lento Unit Testing Teste de Unidade O teste de unidade (também conhecido como teste de componente ou módulo) se concentra em componentes que são testáveis separadamente
  • 8. Testes de Unidade 8  Tem como foco as menores unidades de uma aplicação.  Identificar defeitos em algorítimos incorretos, estruturas de dados incorretas e/ou simples erros de programação.  Pode ser desenvolvido enquanto o código da aplicação é criada  Normalmente o desenvolvedor é o responsável pelos testes de componente.
  • 9. Unit Testing 9 Testes de Unidade pode testar uma funcionalidade?
  • 11. Objetivo 11  Reduzir o risco;  Verificar os comportamentos funcional e não funcional do componente ao projetado e especificado;  Construir a confiança na qualidade do componente;  Encontrar defeitos no componente;  Evitar que os defeitos espalhem para níveis mais altos de teste;  Garantir a regressão dos testes
  • 12. O que devemos testar? 12  Em uma classe: • Atributos • Métodos  Integridade dos dados  Condições de contorno e Limites  Tratamentos de Erros  Todos os caminhos possíveis pelo qual se é possível passar (linhas de código)
  • 13. Testar o Simples! 13  Quanto menor for um método mais fácil de se realizar o teste.  A partir do momento que se necessita um número muito grande de testes para se testar um método já é um sinal de que é preciso refatorar o mesmo.  Quanto menor a unidade, mais fácil se torna de criar um teste, e identificar/corrigir um Bug.
  • 14. Testar o Simples! 14  Pensar nos testes antes do desenvolvimento  Usar a técnica de TDD (Test Driven Development).  Ser informal nesta fase do desenvolvimento de software, faz com que bugs possam passar e tenha um custo maior na correção se identificados nas fases de Integração e Sistema.
  • 15. Técnicas de Testes de Unidade 15 Caixa Branca / Estrutura
  • 16. Cobertura de código 16  Níveis de Cobertura: • Cobertura de comandos: todo comando executado. • Cobertura de desvio (decisão): todo desvio (decisão) tomado em cada direção, verdadeiro ou falso. • Cobertura de condição: toda combinação de condições verdadeiras e falsas avaliadas (isto é, tabela verdade inteira). • Cobertura de decisão de multicondição (case): somente aquelas combinações de condição que podem influenciar a decisão. • Cobertura de Laço: todos os caminhos de laço executados zero, uma, e múltiplas (idealmente, máximo) vezes. A cobertura de comandos implica na cobertura de desvio (decisão).
  • 17. Cobertura de código – Exemplo 01 17 public class Absoluto { public int retornaValorAbsoluto(int valor){ int res = 0; if (valor < 0) { res = -valor; } System.out.println(res); return res; } } Considere o seguinte código, no qual é lido um número inteiro e realizada a impressão do seu valor absoluto. Informar o valor (valor < 0) res = -valor Impressão do resultado (res) absoluto
  • 18. Cobertura de código – Exemplo 01 18 public class Absoluto { public int retornaValorAbsoluto(int valor){ int res = 0; if (valor < 0) { res = -valor; } System.out.println(res); return res; } } Informar o valor (valor < 0) res = -valor Impressão do resultado (res) absoluto Para esse código, quais valores de testes para “valor” precisamos para 100% de cobertura de comandos? Basta apenas 1 teste com valor < 0
  • 19. Cobertura de código – Exemplo 01 19 Com o teste anterior (valor < 0), não conseguimos 100% de cobertura de desvio. Informar o valor (valor < 0) res = -valor Impressão do resultado (res) absoluto Não é coberto
  • 20. Cobertura de código – Exemplo 01 20 Informar o valor (valor < 0) res = -valor Impressão do resultado (res) absoluto Quais valores de teste para “valor” precisamos para 100% de cobertura de desvios? Precisamos de 2 testes valor < 0 e valor >= 0
  • 21. Atenção! 21  Testes Caixa Preta podem deixar 75% ou mais dos comandos sem um cobertura.  Existem muitas ferramentas de apoio para identificar qual a cobertura de testes, além de bibliotecas que ajudam a criar testes automaticamente.  Lacunas na cobertura de código podem levar a ter que realizar mais testes em outras fases como Integração e Sistema o que faz com que tenhamos um feedback mais lento, além de poder deixar passar algum Bug estrutural.
  • 22. TDD – Testing Driven Development 22 Testing CodeRefactor
  • 24. 24 Coding Dojo – Que a força esteja com você!
  • 27. Classe de Conta Corrente 27 1) Ter uma conta corrente que realize um deposito ou um saque de um determinado valor atualizando automaticamente o saldo. Este valor de deposito ou saque não pode ser negativo. 2) Somente pode ser depositado valores iguais ou menores que 10 reais. Mas temos uma situação onde 80% dos clientes possuem saldo maior que 1000 reais no final do mês.
  • 28. Referências 28  Curso de Formação em Testes de Software – Iterasys  BSTQB / ISTQB – Syllabus  Projeto exemplo no github: https://github.com/robsonagapito/unit-testing-java
  • 29. Unit Testing Robson Agapito Correa robson.correa@gft.com Welcome to The GFT Side