Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução A Teste de Software
Introdução A Teste de Software
54
V E R I F I C A O, VA L I D A O E TE S T E
R E Q U I S I TO S
Figura 1. Defeito x erro x falha (Uma verso similar pode ser obtida em http://www.projectcartoon.com/cartoon/611)
Defeitos no desenvolvimento
de software
No processo de desenvolvimento de
software, todos os defeitos so humanos
e, apesar do uso dos melhores mtodos
de desenvolvimento, ferramentas ou
55
56
V E R I F I C A O, VA L I D A O E TE S T E
Tcnica Estrutural
(ou teste caixa-branca)
Tcnica de teste que avalia o comportamento interno do componente de
software (Figura 4). Essa tcnica trabalha
diretamente sobre o cdigo fonte do componente de software para avaliar aspectos tais como: teste de condio, teste de
fluxo de dados, teste de ciclos e teste de
caminhos lgicos (PRESSMAN, 2005).
Os aspectos avaliados nesta tcnica
de teste dependero da complexidade
e da tecnologia que determinarem a
construo do componente de software,
cabendo, portanto, avaliao de outros
aspectos alm dos citados anteriormente.
O testador tem acesso ao cdigo fonte
da aplicao e pode construir cdigos
para efetuar a ligao de bibliotecas e
componentes.
Este tipo de teste desenvolvido analisando-se o cdigo fonte e elaborando-se
casos de teste que cubram todas as possibilidades do componente de software.
Dessa maneira, todas as variaes origi-
REQ
nadas por estruturas de condies
soU I S I TO S
testadas. A Listagem 1 apresenta um
cdigo fonte, extrado de (BARBOSA et
al., 2000) que descreve um programa de
exemplo que deve validar um identificador digitado como parmetro, e a Figura
5 apresenta o grafo de programa extrado
Figura 4. Tcnica de Teste Estrutural.
a partir desse cdigo, tambm extrado
de (BARBOSA et al., 2000). A partir do
grafo deve ser escolhido algum critrio
baseado em algum algoritmo de busca
em grafo (exemplo: visitar todos os ns,
arcos ou caminhos) para gerao dos casos de teste estruturais para o programa
(PFLEEGER, 2004).
Um exemplo bem prtico desta tcnica
de teste o uso da ferramenta livre JUnit
para desenvolvimento de casos de teste
para avaliar classes ou mtodos desenvolvidos na linguagem Java. A tcnica de
teste de Estrutural recomendada para
os nveis de Teste da Unidade e Teste da
Integrao, cuja responsabilidade principal fica a cargo dos desenvolvedores
do software, que so profissionais que
conhecem bem o cdigo-fonte desenvolvido e dessa forma conseguem planejar
os casos de teste com maior facilidade.
Dessa forma, podemos auxiliar na reduo dos problemas existentes nas pequenas funes ou unidades que compem
Figura 5. Grafo de Programa (Identifier.c)
(BARBOSA et al., 2000).
um software.
Teste Funcional (ou teste caixa-preta)
Tcnica de teste em que o componente
de software a ser testado abordado
como se fosse uma caixa-preta, ou seja,
no se considera o comportamento interno do mesmo (Figura 6). Dados de entrada
so fornecidos, o teste executado e o
resultado obtido comparado a um re-
01
01
01
01
01
01
01
01
01
02
03
04
05
05
06
07
07
07
08
09
10
10
11
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
{
char achar;
int
length, valid_id;
length = 0;
printf (Digite um possvel identificador\n);
printf (seguido por <ENTER>: );
achar = fgetc (stdin);
valid_id = valid_starter (achar);
if (valid_id)
length = 1;
achar = fgetc (stdin);
while (achar != \n)
{
if (!(valid_follower (achar)))
valid_id = 0;
length++;
achar = fgetc (stdin);
}
if (valid_id && (length >= 1) && (length < 6) )
printf (Valido\n);
else
printf (Invalido\n);
}
57
Particionamento em classes de
equivalncia
Devemos seguir tais passos para gerao dos testes usando este critrio:
1. Identificar classes de equivalncia (
um processo heurstico)
kcondio de entrada
kvlidas e invlidas
2. Definir os casos de teste
k enumeram-se as classes de equivalncia
kcasos de teste para as classes vlidas
kcasos de teste para as classes invlidas
Em (BARBOSA et al., 2000) apresentado a aplicao do critrio de particionamento por equivalncia para o programa
<3
#produtos
>80
Fret e Grtis
> =3
Valor comp ra
< =80
Figura 7. rvore de Deciso Grafo de Causa-Efeito.
Condies de Entrada
Classes
Classes
Tamanho t do identificador
(1) 1 )t)6
(2) t > 6
(3) Sim
(4) No
(5) Sim
(6) No
Valor da compra
> 60
> 60
<= 60
#Produtos
<3
>= 3
--
Causa
Efeito
Frete grtis
58
Cobrar frete
V E R I F I C A O, VA L I D A O E TE S T E
Grafo de causa-efeito
Esse critrio de teste verifica o efeito
combinado de dados de entrada. As
causas (condies de entrada) e os efeitos
(aes) so identificados e combinados
em um grafo a partir do qual montada
uma tabela de deciso, e a partir desta,
so derivados os casos de teste e as sadas
(ROCHA et al., 2001).
Esse critrio baseado em quatro passos, que exemplificaremos utilizando o
exemplo, tambm extrado de (BARBOSA
et al., 2000):
Em um programa de compras pela
Internet, a cobrana ou no do frete
definida seguindo tal regra: Se o valor
da compra for maior que R$ 60,00 e foram comprados menos que 3 produtos,
o frete gratuito. Caso contrrio, o frete
dever ser cobrado.
R EgrQ U I Sgerenciamento
I TO S
resultado esperado) = {(61,2,frete
e anlise de resultados.
tis); (61,3,cobrar frete); (60, qualquer
Apoio ferramental para qualquer ativiquantidade,cobrar frete)}.
dade do processo de teste importante
como mecanismo para reduo de esforo
associado tarefa em questo, seja ela
Outras tcnicas
planejamento, projeto ou execuo dos
Outras tcnicas de teste podem e devem
testes. Aps ter sua estratgia de teste
ser utilizadas de acordo com necessidades
definida, tente buscar por ferramentas
de negcio ou restries tecnolgicas.
que se encaixem na sua estratgia. Isso
Destacam-se as seguintes tcnicas: teste de
pode reduzir significantemente o esforo
desempenho, teste de usabilidade, teste de
de tal tarefa.
carga, teste de stress, teste de confiabilidaAlm disso, importante ressaltar que
de e teste de recuperao. Alguns autores
diferentes tipos de aplicaes possuem
chegam a definir uma tcnica de teste
diferentes tcnicas de teste a serem
caixa cinza, que seria um mesclado do uso
aplicadas, ou seja, testar uma aplicao
das tcnicas de caixa preta e caixa branca,
web envolve passos diferenciados em
mas, como toda execuo de trabalho
comparao aos testes de um sistema
relacionado atividade de teste utilizar
embarcado. Cada tipo de aplicao possui
simultaneamente mais de uma tcnica
caractersticas especificas que devem ser
de teste, recomendvel que se fixem os
consideradas no momento da realizao
conceitos primrios de cada tcnica.
dos testes. O conjunto de tcnicas apresentado neste artigo cobre diversas caracConcluses
tersticas comuns a muitas categorias de
O teste de software uma das atividades
software, mas no completo.
mais custosas do processo de desenvolPara finalizar, podemos destacar ouvimento de software, pois pode envolver
tros pontos importantes relacionados s
uma quantidade significativa dos recursos
atividades de teste que podemos abordar
de um projeto. O rigor e o custo associado
em prximos artigos, tais como processo
a esta atividade dependem principalmente
de teste de software, planejamento e conda criticalidade da aplicao a ser desenvoltrole dos testes e teste de software para
vida. Diferentes categorias de aplicaes
categorias especficas de software, como
requerem uma preocupao diferenciada
aplicaes web. At a prxima!
com as atividades de teste.
Um ponto bastante importante para
a viabilizao da aplicao de teste de
Agradecimentos
software a utilizao de uma infraAgradecemos aos professores Jos Carlos
estrutura adequada. Realizar testes
Maldonado e Ellen Barbosa por terem
no consiste simplesmente na gerao
gentilmente autorizado a publicao deste
e execuo de casos de teste, mas envolmaterial, cujos exemplos utilizados esto
vem tambm questes de planejamento,
fundamentados em seus trabalhos.
Referncias
BARBOSA, E.; MALDONADO, J.C.; VINCENZI, A.M.R.; DELAMARO, M.E; SOUZA, S.R.S. e JINO, M..
Introduo ao Teste de Software. XIV Simpsio Brasileiro de Engenharia de Software, 2000.
CRAIG, R.D., JASKIEL, S. P., Systematic Software Testing, Artech House Publishers, Boston, 2002.
IEEE Standard 610-1990: IEEE Standard Glossary of Software Engineering Terminology, IEEE Press.
PFLEEGER, S. L., Engenharia de Software: Teoria e Prtica, Prentice Hall- Cap. 08, 2004.
PRESSMAN, R. S.,Software Engineering: A Practitioners Approach, McGraw-Hill, 6th ed, Nova York,
NY, 2005.
RAPPS, S., WEYUKER, E.J., Data Flow analysis techniques for test data selection, In: International
Conference on Software Engineering, p. 272-278, Tokio, Sep. 1982.
ROCHA, A. R. C., MALDONADO, J. C., WEBER, K. C. et al., Qualidade de software Teoria e prtica,
Prentice Hall, So Paulo, 2001.
59