You are on page 1of 24

Teste  de  Unidade  

Centro  de  Informá-ca  -­‐  Universidade  Federal  de  Pernambuco   Sistemas  de  Informação   Vinicius  Cardoso  Garcia   vcg@cin.ufpe.br     Slides  originais  elaborados  por  Alexandre  Vasconcelos  
O  autor  permite  o  uso  e  a  modificação  dos  slides  para  fins  didá-cos  

[if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE  

2  

 classes)   •  Obje-vo:     –  Testar  comportamento  (especificação)  e  estrutura   interna  (lógica  e  fluxo  de  dados)   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   3   .Teste  de  unidade   •  Inves-gar  a  qualidade  de  componentes   individuais  (ex:  métodos.

Estratégia  para  Teste  de  unidade   Driver Módulo a ser testado •  Driver  de  teste  –   programa  que  executa   o  módulo  a  ser   testado  usando  os   Interface dados  do  caso  de   Estrutura de dados local Condições limite teste  e  verifica  o   Caminhos independentes Caminhos de tratamento de erros veredicto   Casos de teste –  Este  será  o  propósito   de  uso  do  JUnit   Resultados [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   4   .

)   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   5   ...Teste  de  Caixa  Preta   •  Casos  de  teste  são  gerados  usando  somente  a   especificação   •  Vantagens:   –  Procedimento  de  teste  não  é  influenciado  pela   implementação   –  Resultados  dos  testes  podem  ser  avaliados  por   pessoas  sem  conhecimento  da  linguagem  de   programação   –  Robusto  em  relação  a  mudanças  na  implementação   (Abordagem  XP.

Teste  de  Caixa  Preta   •  Deve-­‐se  analisar  a  relação  entre  a  pré  e  a  pós-­‐ condição   •  Tentar  cobrir  todas  as  combinações  lógicas   existentes  entre  essas  partes   •  Dada  a  relação  pré  =>  pós.  tem-­‐se   –  pré=true  =>  pós=true   –  pré=false  =>  exceção   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   6   .

Seleção  de  Dados  de  Teste   •  Há  várias  técnicas  para  seleção  de  dados  de   teste   {   –  Par-cionamento   –  Fronteiras   –  Pares  ortogonais   –  Etc.   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   7   .

Par:cionamento   Determinando  par-ções   Selecionando   representantes   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   8   .

Fronteiras   •  Estais-cas  indicam  que  há  uma  maior   susce-bilidade  a  erros  nas  fronteiras  de   par-ções  (limites  dos  -pos)   •  Tanto  em  dados  válidos  quanto  inválidos   –  Assim.  para  x  >  0.  não  bastaria  usar  qualquer  x  >  0   (par-cionamento)   –  Mas  sim  x  =  1  (válido  no  limite)  e  x  =  0  (inválido  no   limite)   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   9   .

Fronteiras   •  A  técnica  da  seleção  de  dados  pelas  fronteiras   é  muito  indicada  para  inves-gar  bom   funcionamento  de   –  Arrays   –  Vetores   –  Algoritmos  de  busca/ordenação   –  Etc.   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   10   .

Teste  de  Caixa  Branca   •  Casos  de  teste  são  gerados  a  par-r  da   implementação   •  Não  se  pode  avaliar  o  grau  de  cobertura  de   uma  funcionalidade  pelo  teste  de  caixa  preta   •  A  idéia  é  gerar  dados  de  teste  que  permitam   exercitar  algum  critério  em  relação  ao  código   (cobertura)   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   11   .

n m 2 3 bloco seqüencial if-then-else seleção case while 3 repeat-until repetição 12   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   ...Grafo  de  fluxo  de  controle   nó = bloco de comandos seqüenciais aresta ou ramo = transferência de controle 1 1 2 3 4 2 3 1 1 1 2 .

0.   1 y<0 2 3 5 p≠0 6 7 y<0 9 [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   y≥0 4 8 y≥0 10 13   .            end.   10.      read  x.                end.   2.  y.   5.Grafo  de  fluxo  de  controle:   Exemplo   Cálculo  de  xy   1.      while  p  ≠  0  do   7.      if  y  <  0   3.        then  z  :=  1  /  z.          then  p  :=  0  -­‐  y   4.          else  p  :=  y.      begin                  z  :=  z  *  x.    write  z.      z  :=  1.  p  :=  p  -­‐  1.      if  y  <  0     9.   8.   6.

Critérios  de  cobertura   •  Tipos   –  Cobertura  de  instruções   –  Cobertura  de  decisões   –  Cobertura  de  condições   –  Cobertura  de  caminhos   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   14   .

10} ∀x.2.5.8. 0) {1.9.10} ∀x.4.3.6.2.Cobertura  de  instruções   1 y<0 2 3 5 p≠0 6 7 y<0 9 10 [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   15   y≥0 4 Critério: cada instrução deve ser executada pelo menos 1 vez nós predicados dados (4.5. y < 0 (4. -1) {1.6.7. y = 0 8 y≥0 .6. 8.

3.4. 1 2 x ímpar x par 3 Satisfaz o critério de cobertura de instruções.2. Write y. 5 4 x≥0 6 [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   16   .Cobertura  de  instruções   read x. mas note que o ramo 2->4 não é exercitado nós {1.2.5} {1.6} predicados x par negativo x par positivo dados -2 2 x<0 y:= x. y:= 0.4.3.

(6.6). (8. (6. Geralmente satisfaz cobertura de instruções desde que toda instrução esteja no mesmo caminho da cobertura de decisão.6). (4. (8. (5. y≥0 4 ramos {(1.2). 10)} [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   17   .2). (7. 0) (6.10)} {(1.6) predicados dados ∀x.8). (5. y < 0 ∀x.7). (9. (6.3).8).5).6).9).4). y = 0 (4. (7. -1) (4. (2.7). (2. (3.5).Cobertura  de  decisões   1 y<0 2 3 5 p≠0 6 7 y<0 9 10 8 y≥0 Critério: cada expressão lógica em estruturas de controle é avaliada pelo menos uma vez para verdadeiro e falso (cada ramo deve ser percorrido pelo menos 1 vez).

y:= 0.2).(3.5)} predicados x par negativo x par positivo dados -2 3 x par 3 x<0 5 4 {(1. 1 2 x ímpar nós {(1.6)} x≥0 6 write y.2)(2.4).(4.(4.3).4).(2.Cobertura  de  decisões   read x. [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   18   .

4)} {(1.  em  a.4)} dados a=5 a = -5 [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   19   c 2 1 ¬c 3 4 O  Critério  é  sa-sfeito  mas  a  condição   a<=200  não  é  testada  para  valores  >200   .            then  m  :=  1   3.            else  m  :=  3   4.      if  a  >=  0  and  a  <=  200   2.3)..     ramos {(1.2).         Dep.Cobertura  de  decisões   c 1.. (2. (3.

           else  m  :=  3   4. 2).1A). (3.3).      if  a  >=  0  and  a  <=  200   2..4)} {(1.         Dep.   ramos {(1.            then  m  :=  1   3.1A). (1A.4)} {(1.Cobertura  de  decisões/condições   c 1.. (3.3). (1A. (2.  em  a.4)} dados a=5 a = 500 a = -5 1 a≥0 1A a<0 a > 200 3 4 a ≤ 200 2 Critério: cada condição em uma decisão assume pelo menos uma vez todos os possíveis resultados 20   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   .

Teste  de  Abstrações  de  Dados   •  Testar  os  métodos  de  maneira  conjugada   •  Testes  devem  explorar  propriedades   esperadas  para  a  composição  de  métodos   •  Seqüências  de  testes  devem  ser  originadas   tanto  pelo  teste  de  caixa  preta  quanto  o  de   caixa  branca   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   21   .

 seqüências  como:   –  consultar(x)  -­‐>  inserir(x)  -­‐>  remover(x)   –  inserir(x)  -­‐>  inserir(x)   –  inserir(x)  -­‐>  consultar(x)   –  remover(x)  -­‐>  consultar(x)   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   22   .   remover.   •  Então.Exemplo   •  Suponha  uma  classe  com  métodos  inserir.  etc.  consultar.

Automação  de  Testes  Integrada   •  Testar  é  essencial  como  referencial  de   qualidade   •  Falhas  humanas  são  comuns   •  Realizar  todos  os  testes.  é  imprescindível   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   23   .  associados  a   artefatos  modificados.

 B.  Program  Development  in  Java     –  Capítulo  10   •  SOMMERVILLE.Bibliografia   •  Liskov.  9ª.  Engenharia  de  SoNware.  I.   Ed.  São  Paulo:  Pearson  Educa-on.  2011   –  Capítulo  23   [if977]  Engenharia  de  SoNware  -­‐  SI  -­‐  CIn  -­‐  UFPE   24   .  et  al.