Académique Documents
Professionnel Documents
Culture Documents
Teste Funcional
Teste Funcional
73
4.1.
Processo de Teste Funcional
O termo processo definido pelo dicionrio Merriam-Webster como um
conjunto de aes ou operaes conduzindo a um fim. Esta definio traduz
bem a idia central de processo adotada por esta pesquisa. Neste contexto, as
aes ou operaes correspondem s atividades e o fim, no sentido de objetivo,
o teste funcional de um sistema.
Ao planejar e elaborar o processo de teste descrito neste captulo, alm dos
trabalhos relacionados (Whittaker, 2000; El-Far, 2001) em captulos anteriores,
algumas questes (Bertolino, 2007) foram consideradas. Tais questes (Tabela
Conceito
Por qu?
Motivo do Teste
Como?
Seleo do Teste
Quanto?
Adequao do Teste
Qual?
Foco do Teste
Onde?
Ambiente de Teste
Quando?
Momento de Teste
(Bertolino, 2007).
A adequao do teste um fator complementar seleo de teste. Quanto
necessrio testar para garantir a observao de um critrio de teste? A anlise de
cobertura e as medidas de confiabilidade so mostras claras deste ponto e
auxiliam na deciso de quando parar a execuo dos testes.
Teste Funcional
74
Teste Funcional
75
Neste
Teste Funcional
76
extenso da arquitetura.
Teste Funcional
77
4.2.
Preliminares
Para testar um sistema preciso saber quais so os requisitos a satisfazer
segundo as perspectivas de seus usurios e seus desenvolvedores. Nesta fase, o
objetivo coletar todas as informaes disponveis sobre o sistema e selecionar
dentre estas as que auxiliaro na sua modelagem para teste e na seleo, execuo
e avaliao de um cenrio de teste.
A coleta de informaes normalmente feita a partir da documentao
disponvel sobre o sistema. Eventualmente, o conhecimento de usurios e de
desenvolvedores tambm pode ser capturado. Quando no h documentao ou
participantes capazes de prover informaes, preciso utilizar tcnicas como a
engenharia reversa para tentar identificar possveis requisitos a partir do prprio
Teste Funcional
78
Esta
equipe de desenvolvimento.
Teste Funcional
79
4.2.2.
Definir Escopo de Avaliao
O propsito desta atividade (Figura 30) definir que partes do sistema sero
testadas e selecionar quais dos requisitos presentes nos documentos de
PUC-Rio - Certificao Digital N 0611931/CA
Esta
Teste Funcional
80
foco do teste, o diagrama de classe (Figura 33) do sistema tambm foi requerido.
Teste Funcional
81
Teste Funcional
82
4.3.
Modelagem do Sistema em Teste
Definido o escopo de teste de um sistema, inicia-se a etapa de sua
modelagem. Neste momento, importante compreender as responsabilidades das
unidades de programao, como elas esto relacionadas e como interagem para
cumprir sua funo ou papel no sistema.
Teste Funcional
83
teste.
4.3.1.
Especificar Estrutura
Teste Funcional
84
representada por um tipo (Type), que pode ser uma unidade de programao
(Program Unit), um tipo primitivo (Primitive Type) ou uma enumerao
(Enumeration). Este modelo ainda captura a relao de generalizao entre
unidades de programao (superunits e subunits) e a definio das
propriedades (Properties) de uma unidade considerando a sua multiplicidade.
Os relacionamentos de associao entre as unidades de programao so
materializados nas propriedades das unidades relacionadas.
Teste Funcional
85
Modelo Estrutural
Account = ($string:number $double:balance Branch:branch Party:owner);
Branch = ($string:number {Account}:account Bank:bank);
Bank = (LegalOrganization);
LegalOrganization = (Organization)($string:cnpj);
Organization = (Party)($string:code);
Party = ($string name);
Person = ($string cpf);
InsufficientFundsExceptionParameters = (AccountException)();
IllegalAmountException = (AccountException)();
AccountException = ($exception)(Account:account);
Teste Funcional
86
4.3.2.
Especificar Comportamentos
O propsito desta atividade descrever o comportamento do sistema a partir
das funcionalidades descritas pelos documentos de sua especificao e por suas
interfaces pblicas. Os diagramas de seqncia UML, as descries de casos de
uso e a API do sistema so exemplos destas especificaes.
Esta atividade (Figura 38) desempenhada pelo testador do sistema
(System Tester), responsvel pela gerao do modelo comportamental, e em
parte pelo interpretador da gramtica (Behavior
Grammar
Parser),
responsvel pela sua converso num modelo orientado a objeto (seo 3.5.2) que
consolidado com o modelo gerado pela atividade anterior de especificao da
estrutura de teste.
Teste Funcional
87
Teste Funcional
88
Modelo Comportamental
Account = ( makeAccount($string:number Branch:branch
Party:owner $double:balance) Account;
credit ($double:amount) $void IllegalAmountException;
debit ($double:amount) $void
IllegalAmountException InsufficientFundsException;
getBalance $void;
getBranch branch;
getNumber $string;
getOwner $string;
setBalance( $double:balance ) $void IllegalAmountException;
setBranch( Branch:branch ) $void;
setNumber( $string:number ) $void;
setOwner( Party:owner ) $void; );
Branch = ( makeBranch ($string:number, Bank:bank) Branch;
getAccount {account}; );
Bank = ( makeBank ($string:name $string:code $string:cnpj) Bank; );
4.4.
Seleo do Cenrio de Teste
Definido o escopo de avaliao e caracterizado o sistema, a prxima etapa
especificar e definir um cenrio de teste. Este cenrio indica que estruturas e
funcionalidades sero avaliadas segundo uma estratgia de teste e contempla as
particularidades do ambiente onde os testes sero executados.
O objetivo desta fase gerar o cenrio no formato de um programa que ser
utilizado para a execuo e avaliao dos testes.
Teste Funcional
89
Esta fase (Figura 41) est dividida em quatro atividades: definir critrio de
seleo de teste; especificar casos de teste; especificar ambiente de teste; gerar
cenrio de teste.
Analisando o domnio de cada funo disponvel na interface pblica do
sistema em teste possvel selecionar um critrio de cobertura. Aps a definio
do critrio, possvel escolher que tcnicas de teste funcional (seo 2.4.1) sero
aplicadas na gerao dos dados de teste. Para cada tcnica, existe um algoritmo
que representa uma estratgia (Gamma et al., 1994) usada para percorrer os
modelos gramaticais que representam a estrutura e os comportamentos do sistema.
Teste Funcional
90
Teste Funcional
91
4.4.1.
Definir Critrio de Seleo de Teste
O propsito desta atividade definir o critrio de cobertura de teste usando
como referncia o escopo de avaliao (seo 4.2.2) definido na fase de
preliminares e as funcionalidades do sistema em teste, sua estrutura e suas formas
de interao identificadas na modelagem do sistema em teste (seo 4.3). Esta
Teste Funcional
92
Case
Grammar
Parser),
responsvel pela sua converso num modelo orientado a objetos (seo 3.5.3).
Teste Funcional
93
Para cada caso de teste definido um objetivo de teste (Test Goal) que
PUC-Rio - Certificao Digital N 0611931/CA
orculo, assim como o objetivo de teste, tambm pode ser descrito como uma
seqncia de comandos, sendo calculado dinamicamente para revelar o resultado
esperado.
Nesta atividade (Figura 45 e Figura 46), o modelo de casos de teste
analisado por um interpretador que o converte num conjunto (Test Suite) de
casos de testes (Test Cases) constitudos por pares de objetivo de teste (Test
Goal) e orculo de teste (Test Oracle).
Teste Funcional
94
Teste Funcional
95
testOracle = InsufficientFundsException;
4.4.3.
Especificar Ambiente de Teste
O propsito desta atividade especificar os parmetros de configurao do
ambiente de teste que sero considerados pelo cenrio de teste. Quando o teste
concebido para execuo numa plataforma especfica, esta atividade tambm
realiza o mapeamento entre os conceitos usados na descrio da estrutura e do
comportamento do sistema e na sua representao nesta plataforma de execuo.
Nos casos citados, a especificao realizada por meio de um modelo de
ambiente de teste.
Este
Teste Funcional
96
num modelo orientado a objeto (seo 3.5.4). Este modelo (Figura 48 e Figura
49) simples e constitudo por uma classe que representa o ambiente de teste
(Test Environment) sendo as suas propriedades e valores armazenados por
uma estrutura de mapa (conjunto de pares de chave-valor).
(Test Scenario).
Modelo de Ambiente
/* Configurao Inicial do Ambiente */
startup = ( aPerson = makePerson ('Silva' '000.000.000-00');
aBank = makeBank ('Banco' '001' '00.000.000/0000-00' );
aBranch = makeBranch ('1000' aBank) );
Teste Funcional
97
4.4.4.
Gerar Cenrio de Teste
O propsito desta atividade gerar um programa de teste que representa o
cenrio de teste do sistema. Esta atividade (Figura 50) desempenhada por um
construtor de programa de teste (Test Builder) auxiliado por interpretadores
de modelos de teste (Test Parsers).
Teste Funcional
98
teste (Environment
Model
valores.
4.5.
Execuo e Avaliao do Cenrio de Teste
Para analisar a correspondncia entre a codificao de um sistema e sua
especificao, preciso exercit-lo com a finalidade de encontrar problemas
funcionais. O objetivo desta fase (Figura 52) executar os casos de teste descritos
num programa de teste construdo na fase de seleo de cenrio (seo 4.4),
observando as falhas manifestadas e identificando os possveis erros no sistema.
Teste Funcional
99
Teste Funcional
100
Os laudos so
Teste Funcional
101
Teste Funcional
102
4.5.1.1.
Executar Caso de Teste
A execuo do cenrio de teste (Figura 55) composta pela execuo
individual de cada caso de teste de forma isolada. Isto significa que o resultado de
um caso de teste no interfere no estado inicial da execuo de outro. O propsito
desta tarefa avaliar uma funcionalidade do sistema de teste para um dado
domnio de entrada (dados de teste) por meio da execuo de um nico caso de
teste (Test Case). O caso de teste equivale semanticamente a um mtodo do
programa de teste que tenta assegurar que um objetivo de teste (Test Goal) seja
equivalente a um orculo de teste (Test Oracle).
O objetivo de teste
Teste Funcional
103
4.5.2.
Gerar Veredicto de Teste
O propsito desta atividade gerar uma sentena que identifica se o critrio
de teste foi ou no satisfeito. Esta atividade (Figura 56) desempenhada por um
juiz de teste (Test Judge). Este juiz (Figura 57) avalia os laudos de teste (Test
Logs) que contm o resultado da execuo de cada caso de teste. A sentena do
juiz (Verdict) proferida com base numa estratgia (Gamma et al., 1994) de
Test
Judgement)
estabelece um veredicto de falha (Fail) quando pelo menos um caso de teste est
Teste Funcional
104