Você está na página 1de 47

Introduo ao

Teste de Software

Ricardo A. Ramos

[Baseado na apresentao do LABS ICMC-USP -> http://www.labes.icmc.usp.br]

Organizao
Introduo
 Teste de Software

Terminologia e Conceitos Bsicos


 Tcnicas e Critrios de Teste
 Automatizao da Atividade de Teste
 Estudos Empricos


Perspectivas

Introduo ao Teste de Software

Introduo


Qualidade de Software
Conformidade com requisitos funcionais
e de desempenho, padres de desenvolvimento
documentados e caractersticas
implcitas esperadas de todo software
profissionalmente desenvolvido.




Corretitude
Confiabilidade
Testabilidade

Introduo ao Teste de Software

Introduo


Garantia de Qualidade de Software




Conjunto de atividades tcnicas aplicadas


durante todo o processo de desenvolvimento

Objetivo
 Garantir

que tanto o processo de desenvolvimento


quanto o produto de software atinjam os nveis de
qualidade especificados

VV&T Verificao, Validao e Teste

Introduo ao Teste de Software

Introduo


Validao: Assegurar que o produto final corresponda


aos requisitos do usurio
Estamos construindo o produto certo?

Verificao: Assegurar consistncia, completitude e


corretitude do produto em cada fase e entre fases
consecutivas do ciclo de vida do software
Estamos construindo corretamente o produto?

Teste: Examina o comportamento do produto por meio


de sua execuo

Introduo ao Teste de Software

Terminologia


Defeito

Erro

Falha

Defeito: deficincia mecnica ou algortmica


que, se ativada, pode levar a uma falha
 Erro: item de informao ou estado de
execuo inconsistente
 Falha: evento notvel em que o sistema
viola suas especificaes


Introduo ao Teste de Software

Defeitos no Processo de
Desenvolvimento
A maior parte de origem humana
 So gerados na comunicao e na
transformao de informaes
 Continuam presentes nos diversos produtos de
software produzidos e liberados (10 defeitos a
cada 1000 linhas de cdigo)
 A maioria encontra-se em partes do cdigo
raramente executadas


Introduo ao Teste de Software

Defeitos no Processo de
Desenvolvimento


Principal causa: traduo incorreta de


informaes
Quanto antes a presena do defeito for
revelada, menor o custo de correo do
defeito e maior a probabilidade de corrigi-lo
corretamente
Soluo: introduzir atividades de VV&T ao
longo de todo o ciclo de desenvolvimento

Introduo ao Teste de Software

Teste e Depurao


Teste
Processo de executacao de um programa com
o objetivo de revelar a presena de erros.
Contribuem para aumentar a confiana de que o
software desempenha as funes especificadas.

Depurao
Conseqncia no previsvel do teste.
Aps revelada a presena do erro, este
deve ser encontrado e corrigido.

Introduo ao Teste de Software

Teste de Software


Fundamental em todos os ramos de


engenharia
 Software:

produto da Engenharia de Software

Atividade essencial para ascenso ao nvel 3


do Modelo CMM/SEI

Atividade relevante para avaliao da


caracterstica funcionalidade
(ISO 9126,14598-5)

Introduo ao Teste de Software

10

Teste de Software
Objetivo: revelar a presena de erros
D

Inexistncia de erro:



Software de alta qualidade?


Conjunto de casos de teste T de baixa qualidade?

Introduo ao Teste de Software

11

Teste de Software


Defeitos e erros no revelados


 Falhas

se manifestam durante a utilizao


pelos usurios
 Erros devem ser corrigidos durante a
manuteno


Alto custo

Introduo ao Teste de Software

12

Teste de Software


Falhas graves




Qualidade e confiabilidade suspeitas


Modificao do projeto
Novos testes

Erros de fcil correo






Funes aparentemente funcionam bem


Qualidade e confiabilidade aceitveis
Testes inadequados para revelar a presena de
erros graves


Novos testes

Introduo ao Teste de Software

13

Teste de Software


Limitaes


No existe um algoritmo de teste de propsito


geral para provar a corretitude de um programa
Em geral, indecidvel se dois caminhos de um
mesmo programa ou de diferentes programas
computam a mesma funo
indecidvel se existe um dado de entrada que
leve execuo de um dado caminho de um
programa; isto , indecidvel se um dado
caminho executvel ou no

Introduo ao Teste de Software

14

Teste de Software
Configurao
de Software

Resultados
de Teste

Atividades de
Teste

Configurao
de Teste

Avaliao

Erros
Depurao

Dados
da Taxa
de Erros
Resultados
Esperados

Introduo ao Teste de Software

Modelo de
Confiabilidade

Confiabilidade
Prevista

Correes

15

Teste de Software


Fases de Teste


Teste de Unidade


Teste de Integrao


Identificar erros de lgica e de implementao


em cada mdulo do software, separadamente
Identificar erros associados s interfaces entre os
mdulos do software

Teste de Sistema


Verificar se as funes esto de acordo com a


especificao e se todos os elementos do sistema
combinam-se adequadamente

Introduo ao Teste de Software

16

Teste de Software


Etapas do Teste





Planejamento
Projeto de casos de teste
Execuo do programa com os casos de teste
Anlise de resultados

Introduo ao Teste de Software

17

Teste de Software


Caso de teste


Especificao de uma entrada para o programa e


a correspondente sada esperada


Entrada: conjunto de dados necessrios para uma


execuo do programa
Sada esperada: resultado de uma execuo do
programa


Orculo

Um bom caso de teste tem alta probabilidade de


revelar um erro ainda no descoberto

Introduo ao Teste de Software

18

Teste de Software


Projeto de casos de teste




O projeto de casos de teste pode ser to difcil


quanto o projeto do prprio produto a ser testado
Poucos programadores/analistas gostam de teste
e, menos ainda, do projeto de casos de teste
O projeto de casos de teste um dos melhores
mecanismos para a preveno de defeitos
O projeto de casos de teste to eficaz em
identificar erros quanto a execuo dos casos de
teste projetados

Introduo ao Teste de Software

19

Teste de Software


Maneira sistemtica e planejada para


conduzir os testes
 Tcnicas

e Critrios de Teste

Conjunto de Casos de Teste T


 Caractersticas



desejveis

Deve ser finito


Custo de aplicao deve ser razovel

Introduo ao Teste de Software

20

Tcnicas e Critrios de Teste




Critrio de Teste C


Objetivo


Obter, de maneira sistemtica, um conjunto T de


casos de teste que seja efetivo quanto meta principal
de teste (revelar a presena de erros no programa)

Propriedades
i) incluir todos os desvios de fluxo de execuo
ii) incluir pelo menos um uso de todo resultado
computacional
iii) T mnimo e finito

Introduo ao Teste de Software

21

Tcnicas e Critrios de Teste




Critrio de Seleo de Casos de Teste


 Procedimento

para escolher casos de teste


para o teste de P

Critrio de Adequao
 Predicado

para avaliar T no teste de P


 T C-adequado todo elemento requerido
por C exercitado por pelo menos por
um t, t T

Introduo ao Teste de Software

22

Tcnicas e Critrios de Teste




Tcnica Funcional
 Requisitos


Critrio Particionamento em Classes de Equivalncia

Tcnica Estrutural
 Estrutura


funcionais do software

interna do programa

Critrios Baseados em Fluxo de Dados

Tcnica Baseada em Erros


 Erros

mais freqentes cometidos durante o


processo de desenvolvimento de software


Critrio Anlise de Mutantes

Introduo ao Teste de Software

23

Automatizao da Atividade de Teste




Ferramentas de Teste
Para a aplicao efetiva de um critrio de teste faz-se
necessrio o uso de ferramentas automatizadas que
apiem a aplicao desse critrio.


Contribuem para reduzir as falhas produzidas pela


interveno humana



Aumento da qualidade e produtividade da atividade de


teste
Aumento da confiabilidade do software

Facilitam a conduo de estudos comparativos


entre critrios

Introduo ao Teste de Software

24

Automatizao da Atividade de Teste




Critrios Estruturais: Fluxo de Dados


 Asset,

Proteste programas em Pascal


 xSuds programas em C, C++ e Cobol
 Poke-Tool programas em C, Cobol e Fortran


Critrios Baseados em Mutao


 Mothra

programas em Fortran
 Proteum programas em C (unidade)
 Proteum/IM programas em C (integrao)
 Proteum/RS especificaes

Introduo ao Teste de Software

25

Automatizao da Atividade de Teste




xSuds (Software Understanding &


Diagnosis System)
xAtac: teste
 xSlice: depurao
 xVue: manuteno
 xProf: melhoria de performance
 xDiff: comparao de cdigo


Estado da Arte X Estado da Prtica


Introduo ao Teste de Software

26

Tcnica Funcional (Caixa Preta)


Baseia-se na especificao do software
para derivar os requisitos de teste
 Aborda o software de um ponto de vista
macroscpico
 Envolve dois passos principais:


Identificar as funes que o software deve realizar


(especificao dos requisitos)
Criar casos de teste capazes de checar se essas
funes esto sendo executadas corretamente

Introduo ao Teste de Software

27

Tcnica Funcional


Problema


Dificuldade em quantificar a atividade de teste:


no se pode garantir que partes essenciais ou
crticas do software foram executadas
Dificuldade de automatizao

Critrios da Tcnica Funcional






Particionamento em Classes de Equivalncia


Anlise do Valor Limite
Grafo de Causa-Efeito

Introduo ao Teste de Software

28

Tcnica Funcional: Exemplo




Particionamento em Classes de
Equivalncia
 Divide

o domnio de entrada do programa em


classes de dados (classes de equivalncias)


Os dados de teste so derivados a partir das classes


de equivalncia

Introduo ao Teste de Software

29

Tcnica Funcional: Exemplo




Passos
 Identificar



Condies de entrada
Classes vlidas e invlidas

 Definir




classes de equivalncia

os casos de teste

Enumeram-se as classes de equivalncia


Casos de teste para as classes vlidas
Casos de teste para as classes invlidas

Introduo ao Teste de Software

30

Tcnica Funcional: Exemplo




Especificao do programa Identifier

O programa deve determinar se um identificador vlido ou no


em Silly Pascal (uma variante do Pascal). Um identificador
vlido deve comear com uma letra e conter apenas letras ou
dgitos. Alm disso, deve ter no mnimo um caractere e no
mximo seis caracteres de comprimento.

Exemplo
abc12 (vlido);
cont*1 (invlido);

Introduo ao Teste de Software

1soma (invlido);
a123456 (invlido)

31

Tcnica Funcional: Exemplo




Classes de equivalncia

Condies de Entrada
Tamanho t do identificador
Primeiro caractere c uma letra
S contm caracteres vlidos


Classes Vlidas Classes Invlidas


1t6

t>6

(1)

(2)

Sim

No

(3)

(4)

Sim

No

(5)

(6)

Exemplo de Conjunto de Casos de Teste




T0 = {(a1,Vlido), (2B3, Invlido), (Z-12, Invlido), (A1b2C3d, Invlido)}


(1, 3, 5)
(4)
(6)
(2)

Introduo ao Teste de Software

32

Tcnica Funcional: Anlise de valorvalor-limite




Observaes da prtica profissional mostram que


grande parte dos erros ocorre nas fronteiras do
domnio de entrada
Completa a tcnica de classes de equivalncia
Casos de teste so selecionados nas bordas da
classe.
Tambm deriva casos de testes para a sada.

Introduo ao Teste de Software

33

Tcnica Funcional: Anlise de valorvalor-limite







Se os limites da condio de entrada forem a e b, projetar


c.t. para os valores imediatamente acima e abaixo de a e b.
Se uma condio de entrada especifica vrios valores ,
projetar casos de teste para os valores imediatamente
acima e abaixo do valor mnimo e do valor mximo.
Aplicar as mesmas diretrizes para os valores de sada.
Se as estruturas de dados internas do programa tm limites
especificados, projeto um caso de teste para exercitar a
estrutura de dados no seu limite.

Introduo ao Teste de Software

34

Tcnica Funcional: Exemplo




Classes de equivalncia

Condies de Entrada
Tamanho t do identificador
Primeiro caractere c uma letra
S contm caracteres vlidos


Classes Vlidas Classes Invlidas


t =1, 6

t =0, 7

(1)

(2)

--

--

--

--

Exemplo de Conjunto de Casos de Teste




T0 = { (a, Vlido), (Abcdef, Vlido), ( , Invlido), (abcdefg, Invlido}


(1)
(1)
(2)
(2)

Introduo ao Teste de Software

35

Tcnica Estrutural (Caixa Branca)


Baseada no conhecimento da estrutura
interna (implementao) do programa
 Teste dos detalhes procedimentais
 A maioria dos critrios dessa tcnica utiliza
uma representao de programa
conhecida como grafo de programa ou
grafo de fluxo de controle


Introduo ao Teste de Software

36

Tcnica Estrutural


Grafo de Programa


Ns: blocos indivisveis


 No

existe desvio para o meio do bloco


 Uma vez que o primeiro comando do bloco
executado, os demais comandos so
executados seqencialmente


Arestas ou Arcos: representam o fluxo de


controle entre os ns

Introduo ao Teste de Software

37

Identifier.c (funo main)


/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*

01
01
01
01
01
01
01
01
02
03
04
05
05
06
07
07
07
08
09
10
10
11

*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/

01
02

char achar;
int
length, valid_id;
length = 0;
03
printf (Identificador: );
achar = fgetc (stdin);
valid_id = valid_s(achar);
04
if (valid_id)
length = 1;
05
achar = fgetc (stdin);
while (achar != '\n')
{
06 09
if (!(valid_f(achar)))
valid_id = 0;
length++;
07
achar = fgetc (stdin);
}
if (valid_id && (length >= 1) && (length < 6) )
printf (Valido\n);
else
printf (Invalido\n);

08
10
11

Introduo ao Teste de Software

38

Tcnica Estrutural
Grafo de Programa


Detalhes considerados




n
arco
caminho



Grafo de Programa do identifier


Gerado pela View-Graph
Introduo ao Teste de Software

simples (2,3,4,5,6,7)
completo
(1,2,3,4,5,6,7,4,8,9,11)

fluxo de controle

39

Tcnica Baseada em Erros


Os requisitos de teste so derivados a partir
dos erros mais freqentes cometidos
durante o processo de desenvolvimento do
software
 Critrios da Tcnica Baseada em Erros


 Semeadura

de Erros
 Teste de Mutao



Anlise de Mutantes (unidade)


Mutao de Interface (integrao)

Introduo ao Teste de Software

40

Teste de Mutao


Hiptese do Programador Competente


Programadores experientes escrevem programas
corretos ou muito prximos do correto.

Efeito de Acoplamento
Casos de teste capazes de revelar erros simples so
to sensveis que, implicitamente, tambm so
capazes de revelar erros mais complexos.

Introduo ao Teste de Software

41

Anlise de Mutantes


Passos da Anlise de Mutantes


1- Gerao de Mutantes

Para modelar os desvios sintticos mais comuns,


operadores de mutao so aplicados a um programa,
transformando-o em programas similares: mutantes.
P1
P
Programa
em Teste

Introduo ao Teste de Software

Operadores
de Mutao

P2

P3

P4
Pn
Mutantes

42

Anlise de Mutantes


Seleo dos operadores de mutao


 Abrangente


Capaz de modelar a maior parte dos erros

 Pequena


cardinalidade

Problemas de custo
 Quanto maior o nmero de operadores
utilizados, maior o nmero de mutantes gerados

Introduo ao Teste de Software

43

Anlise de Mutantes


Exemplo de Mutantes
Mutante Gerado pelo Operador OLAN
if (valid_id * (length >= 1) && (length < 6) )
printf ("Valido\n");
else
printf ("Invalido\n");

Mutante Gerado pelo Operador ORRN


if (valid_id && (length >= 1) && (length <= 6) )
printf ("Valido\n");
else
printf ("Invalido\n");

Introduo ao Teste de Software

44

Anlise de Mutantes


Passos da Anlise de Mutantes


2 - Execuo do Programa


Execuo do programa com os casos de teste

3 - Execuo dos Mutantes




Execuo dos mutantes com os casos de teste


 Mutante morto
 Mutante vivo

4 - Anlise dos Mutantes Vivos





Mutante equivalente
Incluso de novos casos de teste

Escore de mutao:
Introduo ao Teste de Software

ms(P,T) =

DM(P,T)
M(P) - EM(P)
45

Concluses


A atividade de teste fundamental no


processo de desenvolvimento de software
 Qualidade

do produto

Alto custo da atividade de teste


 Desenvolvimento e aplicao de tcnicas e
critrios de teste
 Desenvolvimento e utilizao de
ferramentas de teste
 Estudos tericos e empricos para
comparar os diversos critrios


Introduo ao Teste de Software

46

Perspectivas










Estratgias de Teste
Teste de Integrao
Teste Orientado a Objeto
Teste de Especificao
Teste de Sistemas Reativos
Ambiente Integrado para Teste, Depurao e
Manuteno de Software
Teste de programas orientados a aspectos
Teste com o apoio de orientao a aspectos

Introduo ao Teste de Software

47

Você também pode gostar