Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
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:
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
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
Test JUnit4 Prof. Edson Belém
Aula
02
JUnit4
www.cotiinformatica.com.br 4
Criando o Caso de Teste:
Test JUnit4 Prof. Edson Belém
Aula
02
JUnit4
www.cotiinformatica.com.br 5
Executando: (Run As > JUnit Test)
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
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); } }
Test JUnit4 Prof. Edson Belém
Aula
02
JUnit4
www.cotiinformatica.com.br 8
Executando:
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;
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();
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:
Test JUnit4 Prof. Edson Belém
Aula
02
JUnit4
www.cotiinformatica.com.br 12