test junit4 aula 02 prof. edson belém · É dividido em 2 tipos principais: • teste de unidade;...

12
Test JUnit4 Prof. Edson Belém Aula 02 JUnit4 www.cotiinformatica.com.br 1 Teste de Caixa Branca: O analista tem acesso ao código fonte, conhece a estrutura interna do produto sendo analisado e possibilita que sejam escolhidas partes específicas de um componente para serem avaliadas. Esse tipo de teste, também conhecido como teste estrutural, é projetado em função da estrutura do componente e permite uma averiguação mais precisa do comportamento dessa estrutura. Perceba que o acesso ao código facilita o isolamento de uma função ou ação, o que ajuda na análise comportamental das mesmas. É dividido em 2 tipos principais: Teste de Unidade; Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar a menor parte testável do sistema (unidade), geralmente um método. Idealmente, o teste unitário é independente de outros testes, validando assim cada parte ou funcionalidade individualmente. Os testes unitários tem como benefício: Garantir que problemas serão descobertos cedo, ainda durante o processo de desenvolvimento, devendo ser atualizados conforme novas funcionalidades se tornarem necessárias. Facilitar a manutenção de código, especialmente a refatoração, porque indica se a unidade ainda está funcional após as alterações e aponta erros, caso existam. Simplificar a integração de módulos, visto que minimiza erros de unidade. Servir como documentação, dando detalhes da funcionalidade e implementação da unidade. Requisito: É necessário criar uma classe Java que realize as seguintes operações referentes a Alunos:

Upload: others

Post on 01-Jan-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 1

Teste de Caixa Branca: O analista tem acesso ao código fonte, conhece a estrutura interna do produto sendo analisado e possibilita que sejam escolhidas partes específicas de um componente para serem avaliadas. Esse tipo de teste, também conhecido como teste estrutural, é projetado em função da estrutura do componente e permite uma averiguação mais precisa do comportamento dessa estrutura. Perceba que o acesso ao código facilita o isolamento de uma função ou ação, o que ajuda na análise comportamental das mesmas. É dividido em 2 tipos principais:

• Teste de Unidade; • Teste de Integração

Teste de Unidade: O teste unitário tem por objetivo testar a menor parte testável do sistema (unidade), geralmente um método. Idealmente, o teste unitário é independente de outros testes, validando assim cada parte ou funcionalidade individualmente. Os testes unitários tem como benefício:

• Garantir que problemas serão descobertos cedo, ainda durante o processo de desenvolvimento, devendo ser atualizados conforme novas funcionalidades se tornarem necessárias.

• Facilitar a manutenção de código, especialmente a refatoração, porque indica se a unidade ainda está funcional após as alterações e aponta erros, caso existam.

• Simplificar a integração de módulos, visto que minimiza erros de

unidade.

• Servir como documentação, dando detalhes da funcionalidade e implementação da unidade.

Requisito: É necessário criar uma classe Java que realize as seguintes operações

referentes a Alunos:

Page 2: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 2

o Calcular a media de um aluno Programa deverá receber 2 notas (valores decimais entre

0 e 10) e retornar a media do aluno (valor decimal)

o Calcular a Situação do aluno Programa deverá receber uma media (valor decimal entre

0 e 10) e retornar o seguinte resultado:

Se a media for maior ou igual a 7, retorne “Aprovado”

Se a media for inferior a 7 e maior ou igual a 5, retorne “Recuperação”

Se a media for inferior a 5, retorne “Reprovado”.

Passo 1) Criar as funções baseado nos requisitos: Tarefa do Programador

Page 3: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 3

package control;

public class ControleAluno { //função para calcular a media do aluno public double calcularMedia(double nota1, double nota2){ return (nota1 + nota2) / 2; } //função para calcular a situação do aluno public String calcularSituacao(double media){ if(media >= 7){ return "Aprovado"; } else if(media >= 5){ return "Recuperação"; } else{ return "Reprovado"; } } }

CST01 – Controle de Alunos Alvo do teste: ControleAluno.java Função Dados de

Entrada Resultado: Avaliação:

calcularMedia Nota1: 8.0 Nota2: 10.0

Media: 9.0

calcularMedia Nota1: -1.0 Nota2: -1.0

Erro: Notas Inválidas

calcularMedia Nota1: 11.0 Nota2: 11.0

Erro: Notas Inválidas

calcularSituacao Media: 10 Aprovado calcularSituacao Media: 7.0 Aprovado calcularSituacao Media: 6.9 Recuperação calcularSituacao Media: 5.0 Recuperação calcularSituacao Media: 4.9 Reprovado calcularSituacao Media: 0.0 Reprovado calcularSituacao Media: -1 Erro: Media

Invalida

calcularSituacao Media: 11 Erro: Media Inválida

Page 4: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 4

Criando o Caso de Teste:

Page 5: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 5

Executando: (Run As > JUnit Test)

Page 6: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 6

Falha no teste:

Programando os testes: package tests; import static org.junit.Assert.*; import control.ControleAluno; import org.junit.Test;

public class ControleAlunoTest { @Test public void testCalcularMedia() { ControleAluno c = new ControleAluno(); //objeto.. double nota1 = 10.0; //entrada double nota2 = 8.0; //entrada double media = 9.0; //entrada assertTrue(c.calcularMedia(nota1, nota2) == media); } @Test public void testCalcularSituacaoAprovado() { ControleAluno c = new ControleAluno(); double media1 = 7.0; //entrada double media2 = 10.0; //entrada

Page 7: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 7

String situacao = "Aprovado"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } @Test public void testCalcularSituacaoRecuperacao() { ControleAluno c = new ControleAluno(); double media1 = 6.9; //entrada double media2 = 5.0; //entrada String situacao = "Recuperação"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } @Test public void testCalcularSituacaoReprovado() { ControleAluno c = new ControleAluno(); double media1 = 4.9; //entrada double media2 = 0.0; //entrada String situacao = "Reprovado"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } }

Page 8: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 8

Executando:

Page 9: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 9

Criando na classe ControleAluno validações para testar notas e medias invalidas: package control;

public class ControleAluno { //função para calcular a media do aluno public double calcularMedia(double nota1, double nota2){ if(nota1 < 0 || nota1 > 10 ||

nota2 < 0 || nota2 > 10){ throw new IllegalArgumentException

("Notas invalidas."); //exceção.. } return (nota1 + nota2) / 2; } //função para calcular a situação do aluno public String calcularSituacao(double media){ if(media < 0 || media > 10){ //validação.. throw new IllegalArgumentException

("Media invalida."); //exceção.. } if(media >= 7){ return "Aprovado"; } else if(media >= 5){ return "Recuperação"; } else{ return "Reprovado"; } } }

Realizando os testes baseados nas exceções: package tests; import static org.junit.Assert.assertTrue; import org.junit.Test; import control.ControleAluno;

Page 10: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 10

public class ControleAlunoTest { @Test public void testCalcularMedia() { ControleAluno c = new ControleAluno(); //objeto.. double nota1 = 10.0; //entrada double nota2 = 8.0; //entrada double media = 9.0; //entrada assertTrue(c.calcularMedia(nota1, nota2) == media); } @Test public void testCalcularSituacaoAprovado() { ControleAluno c = new ControleAluno(); double media1 = 7.0; //entrada double media2 = 10.0; //entrada String situacao = "Aprovado"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } @Test public void testCalcularSituacaoRecuperacao() { ControleAluno c = new ControleAluno(); double media1 = 6.9; //entrada double media2 = 5.0; //entrada String situacao = "Recuperação"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } @Test public void testCalcularSituacaoReprovado() { ControleAluno c = new ControleAluno(); double media1 = 4.9; //entrada double media2 = 0.0; //entrada String situacao = "Reprovado"; //entrada assertTrue(c.calcularSituacao(media1) == situacao); assertTrue(c.calcularSituacao(media2) == situacao); } @Test(expected = IllegalArgumentException.class) public void testNotasInvalidas() { ControleAluno c = new ControleAluno();

Page 11: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 11

c.calcularMedia(-1.0, -1.0); //notas invalidas c.calcularMedia(11.0, 11.0); //notas invalidas } @Test(expected = IllegalArgumentException.class) public void testMediaInvalida() { ControleAluno c = new ControleAluno(); c.calcularSituacao(-1.0); //notas invalidas c.calcularSituacao(11.0); //notas invalidas } } Executando:

Page 12: Test JUnit4 Aula 02 Prof. Edson Belém · É dividido em 2 tipos principais: • Teste de Unidade; • Teste de Integração Teste de Unidade: O teste unitário tem por objetivo testar

Test JUnit4 Prof. Edson Belém

Aula

02

JUnit4

www.cotiinformatica.com.br 12