SlideShare une entreprise Scribd logo
1  sur  17
Testes
ArtigoEngenhariade Software - Introduçãoa Teste de Software
Ao longodeste artigo,iremosdiscutirosprincipaisconceitosrelacionadosàsatividadesde
teste,asprincipaistécnicase critériosde teste que podemserutilizadospara verificaçãoou
validaçãode umproduto.
24
Gostei (45) (5)
Esse artigo fazparte da revistaEngenhariade Software ediçãoespecial.Cliqueaqui paraler
todosos artigosdestaedição
Verificação,Validaçãoe Teste
Introduçãoa Teste de Software
Teste de software é o processode execuçãode umprodutopara determinarse ele atingiu
suas especificaçõese funcionoucorretamente noambiente paraoqual foi projetado.Oseu
objetivoé revelarfalhasemumproduto,paraque as causasdessasfalhas sejamidentificadas
e possamsercorrigidaspelaequipe de desenvolvimentoantesdaentregafinal.Porconta
dessacaracterística dasatividadesde teste,dizemosque suanaturezaé “destrutiva”,e não
“construtiva”,poisvisaaoaumentoda confiançade um produtoatravésda exposiçãode seus
problemas,porémantesde suaentregaaousuáriofinal.
O conceitode teste de software pode sercompreendidoatravésde umavisãointuitivaou
mesmode uma maneiraformal.Existematualmente váriasdefiniçõesparaesse conceito.De
uma formasimples,testarumsoftware significaverificaratravésde umaexecuçãocontrolada
se o seucomportamentocorre de acordo com o especificado.Oobjetivoprincipal destatarefa
é revelaronúmeromáximode falhasdispondodomínimo de esforço,ouseja,mostraraos
que desenvolvemse osresultadosestãoounãode acordo com os padrõesestabelecidos.
Ao longodeste artigo,iremosdiscutirosprincipaisconceitosrelacionadosàsatividadesde
teste,asprincipaistécnicase critérios de teste que podemserutilizadosparaverificaçãoou
validaçãode umproduto,assimcomo exemplospráticosdaaplicaçãode cada tipode técnica
ou critériode teste.
ConceitosbásicosassociadosaTeste de Software
Antesde iniciarmosumadiscussãosobre teste de softwareprecisamosesclareceralguns
conceitosrelacionadosaessaatividade.Inicialmente,precisamosconheceradiferençaentre
Defeitos,Errose Falhas.Asdefiniçõesque iremosusaraqui seguematerminologiapadrão
para Engenhariade Software doIEEE – Institute of Electrical andElectronicsEngineers –(IEEE
610, 1990).
• Defeitoé umatoinconsistentecometidoporumindivíduoaotentarentenderuma
determinadainformação,resolverumproblemaouutilizarummétodoouumaferramenta.
Por exemplo,umainstruçãooucomandoincorreto.
• Erro é umamanifestaçãoconcretade um defeitonumartefatode software.Diferençaentre
o valorobtidoe o valor esperado,ouseja,qualquerestadointermediárioincorretoou
resultadoinesperadonaexecução de umprogramaconstitui umerro.
• Falhaé o comportamentooperacional dosoftware diferentedoesperadopelousuário.Uma
falhapode tersidocausada por diversoserrose algunserrospodemnuncacausar uma falha.
A Figura1 expressaadiferençaentre essesconceitos.Defeitosfazemparte douniversofísico
(a aplicaçãopropriamente dita) e sãocausadosporpessoas,porexemplo,atravésdomal uso
de uma tecnologia.Defeitospodemocasionaramanifestaçãode errosemumproduto,ou
seja,a construçãode umsoftware de formadiferente aoque foi especificado(universode
informação).Porfim,oserrosgeramfalhas,que são comportamentosinesperadosemum
software que afetamdiretamente ousuáriofinal daaplicação(universodousuário) e pode
inviabilizarautilizaçãode umsoftware.
Figura1. Defeitox errox falha
Dessaforma,ressaltamosque teste de software revelasimplesmentefalhasemumproduto.
Apósa execuçãodostestesé necessáriaaexecuçãode umprocessode depuraçãopara a
identificaçãoe correçãodos defeitosque originaramessafalha,ouseja,Depurarnãoé Testar!
A atividade de teste é compostaporalgunselementosessenciaisque auxiliamnaformalização
destaatividade.Esseselementossãoosseguintes:
• Casode Teste:descreve umacondiçãoparticularasertestadae é compostoporvaloresde
entrada,restriçõesparaa sua execuçãoe um resultadooucomportamentoesperado(CRAIGe
JASKIEL,2002).
• Procedimentode Teste:é umadescriçãodospassosnecessáriosparaexecutarumcaso(ou
um grupode casos) de teste (CRAIGe JASKIEL,2002).
• Critériode Teste:serve paraselecionare avaliarcasosde teste de formaa aumentaras
possibilidadesde provocarfalhasou,quandoissonãoocorre,estabelecerumnível elevadode
confiançana correção doproduto(ROCHA et al.,2001). Os critériosde teste podemser
utilizadoscomo:
o Critériode CoberturadosTestes:permitemaidentificaçãode partesdoprograma que
devemserexecutadasparagarantira qualidade dosoftware e indicarquandoomesmofoi
suficientementetestado(RAPPSe WEYUKER,1982). Ouseja,determinaropercentual de
elementosnecessáriosporumcritériode teste que foramexecutadospeloconjuntode casos
de teste.
o Critériode Adequaçãode Casosde Teste:Quando,apartir de um conjuntode casos de teste
T qualquer,ele é utilizadoparaverificarse Tsatisfazosrequisitosde teste estabelecidospelo
critério.Ouseja,este critérioavaliase oscasosde teste definidossãosuficientesounãopara
avaliaçãode um produtoou umafunção(ROCHA et al.,2001).
o Critériode Geraçãode Casosde Teste:quandoo critérioé utilizadoparagerarum conjunto
de casos de teste T adequadopara um produtooufunção,ou seja,este critériodefine as
regras e diretrizesparageração dos casosde teste de umprodutoque estejade acordocom o
critériode adequaçãodefinidoanteriormente (ROCHA etal.,2001).
Definidososelementosbásicosassociadosaostestesde software,iremosaseguirdiscutira
origemdosdefeitosemumsoftware.
Defeitosnodesenvolvimentode software
No processode desenvolvimentode software,todososdefeitossãohumanose,apesardouso
dos melhoresmétodosde desenvolvimento,ferramentasouprofissionais,permanecem
presentesnosprodutos,oque tornaa atividade de teste fundamentaldurante o
desenvolvimentode umsoftware.Jávimosque estaatividadecorresponde aoúltimorecurso
para avaliaçãodo produtoantesda sua entregaaousuáriofinal.
O tamanhodo projetoa serdesenvolvidoe aquantidade de pessoasenvolvidasnoprocesso
são doispossíveisfatoresque aumentamacomplexidade dessatarefa,e consequentemente
aumentama probabilidade de defeitos.Assim, aocorrênciade falhasé inevitável.Maso que
significadizerque umprogramafalhou?Basicamentesignificaque ofuncionamentodo
programa nãoestá de acordo com o esperadopelousuário.Porexemplo,quandoumusuário
da linhade produçãoefetuaconsultasnosistemadasquaissóa gerênciadeveriateracesso.
Esse tipode falhapode seroriginadopordiversosmotivos:
• A especificaçãopode estarerradaouincompleta;
• A especificaçãopode conterrequisitosimpossíveisde seremimplementadosdevidoa
limitaçõesde hardware ousoftware;
• A base de dadospode estarorganizadade forma que não sejapermitidodistinguirostipos
de usuário;
• Pode serque hajaum defeitonoalgoritmode controle dosusuários.
Os defeitosnormalmente sãointroduzidosnatransformaçãode informaçõesentre as
diferentesfasesdociclode desenvolvimentode umsoftware.Vamosseguirumexemplo
simplesde ciclode vidade desenvolvimentode software:osrequisitosexpressospelocliente
são relatadostextualmente emumdocumentode especificaçãode requisitos.Esse
documentoé entãotransformadoemcasosde uso, que por suavezfoi o artefatode entrada
para o projetodosoftware e definiçãode suaarquiteturautilizandodiagramasde classesda
UML. Em seguida,essesmodelosde projetosforamusadosparaa construção dosoftware em
uma linguagemque nãosegue oparadigmaorientadoaobjetos.Observe que durante esse
períodouma série de transformaçõesfoi realizadaaté chegarmosaoprodutofinal.Nessemeio
tempo,defeitospodemtersidoinseridos.A Figura2 expressaexatamenteametáfora
discutidanesse parágrafo.
Figura2. DiferentesInterpretaçõesaolongodociclode desenvolvimentode umsoftware
(Uma versãosimilarpode serobtidaemhttp://www.projectcartoon.com/cartoon/611)
Essa série de transformaçõesresultounanecessidade de realizartestesemdiferentesníveis,
visandoavaliarosoftware emdiferentesperspectivasde acordocomo produtogeradoem
cada fase do ciclode vidade desenvolvimentode umsoftware.Esse seráofocoda seção
seguinte.
Níveisde teste de software
O planejamentodostestesdeveocorreremdiferentesníveise emparaleloao
desenvolvimentodosoftware (Figura3).BuscandoinformaçãonoLivro“Qualidade de
Software – Teoriae Prática” (ROCHA et al.,2001), definimosque osprincipaisníveisde teste
de software são:
• Teste de Unidade:tambémconhecidocomotestesunitários.Temporobjetivoexplorara
menorunidade doprojeto,procurandoprovocarfalhasocasionadaspordefeitosde lógicae de
implementaçãoemcadamódulo,separadamente.Ouniversoalvodesse tipode teste sãoos
métodosdosobjetosoumesmopequenostrechosde código.
• Teste de Integração:visaprovocarfalhasassociadasàs interfacesentre osmódulosquando
essessãointegradosparaconstruira estruturado software que foi estabelecidanafase de
projeto.
• Teste de Sistema:avaliaosoftware embuscade falhaspor meiodautilizaçãodomesmo,
como se fosse umusuáriofinal.Dessamaneira,ostestessãoexecutadosnosmesmos
ambientes,comasmesmascondiçõese comos mesmosdadosde entradaque um usuário
utilizarianoseudia-a-diade manipulaçãodosoftware.Verificase oprodutosatisfazseus
requisitos.
• Teste de Aceitação:sãorealizadosgeralmente porumrestritogrupode usuáriosfinaisdo
sistema.Essessimulamoperaçõesde rotinadosistemade modo averificarse seu
comportamentoestáde acordocom o solicitado.
• Teste de Regressão:Teste de regressãonãocorresponde aumnível de teste,masé uma
estratégiaimportante parareduçãode “efeitoscolaterais”.Consisteemse aplicar,acada nova
versãodo software oua cada ciclo,todosos testesque jáforamaplicadosnasversõesou
ciclosde teste anterioresdosistema.Pode seraplicadoemqualquernível de teste.
Dessaforma,seguindoaFigura3, o planejamentoe projetodostestesdevemocorrerde cima
para baixo,ouseja:
1. Inicialmenteé planejadooteste de aceitaçãoa partirdo documentode requisitos;
2. Apósissoé planejadooteste de sistemaapartirdo projetode altonível do software;
3. Em seguidaocorre oplanejamentodostestesde integraçãoapartiro projetodetalhado;
4. E por fim,oplanejamentodostestesapartirda codificação.
Já a execuçãoocorre no sentidoinverso.
Conhecidososdiferentesníveisde teste,apartirda próximaseçãodescreveremosas
principaistécnicasde teste de software existentesque podemosaplicarnosdiferentesníveis
abordados.
Figura3. ModeloV descrevendooparalelismoentreasatividadesde desenvolvimentoe teste
de software (CRAIGe JASKIEL,2002)
Técnicasde teste de software
Atualmente existemmuitasmaneirasde se testarumsoftware.Mesmoassim, existemas
técnicasque sempre forammuitoutilizadasemsistemasdesenvolvidossobre linguagens
estruturadasque aindahoje têmgrande valiaparaos sistemasorientadosaobjeto.Apesarde
os paradigmasde desenvolvimentoseremdiferentes,oobjetivoprincipal destastécnicas
continuaa ser o mesmo:encontrarfalhasnosoftware.
As técnicasde teste sãoclassificadasde acordocoma origemdasinformaçõesutilizadaspara
estabeleceros requisitosde teste.Elascontemplamdiferentesperspectivasdosoftware e
impõe-se anecessidadede se estabelecerumaestratégiade teste que contemple as
vantagense os aspectoscomplementaresdessastécnicas.Astécnicasexistentessão:técnica
funcional e estrutural.
A seguirconheceremosumpoucomaissobre cada técnica,masiremosenfatizaralguns
critériosespecíficosparaatécnicafuncional.
TécnicaEstrutural (ou teste caixa-branca)
Técnicade teste que avaliaocomportamentointernodo componentede software (Figura4).
Essa técnicatrabalhadiretamente sobre ocódigofonte docomponente de software para
avaliaraspectostaiscomo: teste de condição,teste de fluxode dados,teste de ciclose teste
de caminhoslógicos(PRESSMAN,2005)
Figura4. Técnicade Teste Estrutural.
Os aspectosavaliadosnestatécnicade teste dependerãodacomplexidadee datecnologiaque
determinaremaconstruçãodocomponente de software,cabendo,portanto,avaliaçãode
outrosaspectosalémdoscitadosanteriormente.Otestadortemacessoao códigofonte da
aplicaçãoe pode construircódigosparaefetuara ligaçãode bibliotecase componentes.
Este tipode teste é desenvolvidoanalisando-seocódigofonte e elaborando-se casosde teste
que cubram todasas possibilidadesdocomponentede software.Dessamaneira,todasas
variaçõesoriginadasporestruturasde condiçõessãotestadas.A Listagem1 apresentaum
códigofonte,extraídode (BARBOSA etal.,2000) que descreve umprogramade exemploque
deve validarumidentificadordigitadocomoparâmetro,e aFigura5 apresentaografo de
programa extraídoa partirdesse código,tambémextraídode (BARBOSA etal.,2000). A partir
do grafodeve serescolhidoalgumcritériobaseadoemalgumalgoritmode buscaemgrafo
(exemplo:visitartodososnós,arcos ou caminhos) parageração doscasos de teste estruturais
para o programa (PFLEEGER, 2004).
Listagem1. Códigofonte doprogramaidentifier.c(BARBOSAetal.,2000)
/* 01 */ {
/* 01 */ char achar;
/* 01 */ int length,valid_id;
/* 01 */ length= 0;
/* 01 */ printf ("Digite umpossível identificadorn");
/* 01 */ printf ("seguidopor:");
/* 01 */ achar = fgetc(stdin);
/* 01 */ valid_id= valid_starter(achar);
/* 01 */ if (valid_id)
/* 02 */ length= 1;
/* 03 */ achar = fgetc(stdin);
/* 04 */ while (achar!= 'n')
/* 05 */ {
/* 05 */ if (!(valid_follower(achar)))
/* 06 */ valid_id=0;
/* 07 */ length++;
/* 07 */ achar = fgetc(stdin);
/* 07 */ }
/* 08 */ if (valid_id&&(length>= 1) && (length< 6) )
/* 09 */ printf ("Validon");
/* 10 */ else
/* 10 */ printf ("Invalidon");
/* 11 */ }
Figura5. Grafo de Programa(Identifier.c) (BARBOSA etal.,2000).
Um exemplobempráticodestatécnicade teste é ouso da ferramentalivre JUnitpara
desenvolvimento de casosde teste paraavaliarclassesoumétodosdesenvolvidosna
linguagemJava.A técnicade teste de Estrutural é recomendadapara osníveisde Teste da
Unidade e Teste da Integração,cujaresponsabilidadeprincipal ficaacargo dos
desenvolvedoresdo software,que sãoprofissionaisque conhecembemocódigo-fonte
desenvolvidoe dessaformaconseguemplanejaroscasosde teste commaiorfacilidade.Dessa
forma,podemosauxiliarnareduçãodosproblemasexistentesnaspequenasfunçõesou
unidadesque compõemumsoftware.
Teste Funcional (outeste caixa-preta)
Técnicade teste emque o componente de softwareasertestadoé abordado comose fosse
uma caixa-preta,ouseja,nãose consideraocomportamentointernodomesmo(Figura6).
Dados de entradasão fornecidos,oteste é executadoe oresultadoobtidoé comparadoaum
resultadoesperadopreviamenteconhecido.Haverásucessonoteste se oresultadoobtidofor
igual ao resultadoesperado.Ocomponente de software asertestadopode serum método,
uma funçãointerna,umprograma,um componente,umconjuntode programase/ou
componentesoumesmoumafuncionalidade.A técnicade teste funcional é aplicável atodos
os níveisde teste (PRESSMAN,2005).
Figura6. Técnicade Teste Funcional.
Um conjuntode critériosde teste pode seraplicadoaostestesfuncionais.A seguir
conheceremosalgunsdeles.
Particionamentoemclassesde equivalência
Esse critériodivide odomíniode entradade umprograma emclassesde equivalência,apartir
das quaisoscasos de teste sãoderivados.Ele temporobjetivominimizaronúmerode casos
de teste,selecionandoapenasumcasode teste de cada classe,poisemprincípiotodosos
elementosde umaclasse devemse comportarde maneiraequivalente.Eventualmente,pode-
se tambémconsiderarodomíniode saída para a definiçãodasclassesde equivalência(ROCHA
et al.,2001).
Uma classe de equivalênciarepresentaumconjuntode estadosválidose inválidosparauma
condiçãode entrada.Tipicamente umacondiçãode entradapode serum valornumérico
específico,umafaixade valores,umconjuntode valoresrelacionados,ouumacondiçãológica.
As seguintesdiretrizespodemseraplicadas:
• Se uma condiçãode entradaespecificaumafaixade valoresourequerumvalorespecífico,
uma classe de equivalênciaválida(dentrodolimite) e duasinválidas(acimae abaixodos
limites) sãodefinidas.
• Se uma condiçãode entradaespecificaummembrode umconjuntooué lógica,umaclasse
de equivalênciaválidae umainválidasãodefinidas.
Devemosseguirtaispassosparageraçãodos testesusandoeste critério:
1. Identificarclassesde equivalência(é umprocessoheurístico)
o condiçãode entrada
o válidase inválidas
2. Definiroscasos de teste
o enumeram-se asclassesde equivalência
o casos de teste para as classesválidas
o casos de teste para as classesinválidas
Em (BARBOSA etal.,2000) é apresentadoaaplicaçãodo critériode particionamentopor
equivalênciaparaoprograma identifier.c.Iremosapresentá-locomoexemplodousodeste
critériode teste.Relembrando,oprogramadeve determinarse umidentificadoré válidoou
não.
“Um identificadorválidodevecomeçarcomuma letrae conter apenasletrasoudígitos.Além
disso,deve ternomínimo1 caractere e no máximo6 caracteresde comprimento.Exemplo:
“abc12” (válido),“cont*1”(inválido),“1soma”(inválido) e “a123456” (inválido).”
O primeiropassoé a identificaçãodasclassesde equivalência.IssoestádescritonaTabela1.
Condiçõesde Entrada
Classes
Classes
Tamanhot doidentificador
(1) 1 ??t???6
(2) t > 6
Primeirocaractere c é uma letra
(3) Sim
(4) Não
Só contémcaracteresválidos
(5) Sim
(6) Não
Tabela1. Classesde Equivalênciadoprogramaidentifier.c.
A partirdisso,conseguimosespecificarquaisserãoos casos de teste necessários.Paraser
válido,umidentificadordeve atenderàscondições(1),(3) e (5), logoé necessárioumcaso de
teste válidoque cubratodasessascondições.Alemdisso,seránecessárioumcasode teste
para cada classe inválida:(2), (4) e (6). Assim, oconjuntomínimoé compostoporquatro casos
de teste,sendoumadas opções:
T0 = {(a1,Válido),(2B3,Inválido),(Z-12,Inválido),(A1b2C3d,Inválido)}.
Análise dovalorlimite
Por razõesnão completamente identificadas,umgrande númerode errostende aocorrernos
limitesdodomíniode entradainvésde no“centro”.Esse critériode teste exploraoslimites
dos valoresde cadaclasse de equivalênciaparaprepararos casos de teste (Pressman,2005).
Se uma condiçãode entrada especifica umafaixade valoreslimitadaemae b,casos de teste
devemserprojetadoscomvaloresae b e imediatamente acimae abaixode ae b. Exemplo:
Intervalo={1..10}; Casosde Teste à {1, 10, 0,11}.
Comoexemplo,extraídode (BARBOSA etal.,2000), iremos consideraraseguinte situação:
"...o cálculodo descontopordependenteé feitodaseguinteforma:aentradaé a idade do
dependente que deveestarrestritaaointervalo[0..24].Paradependentesaté 12anos
(inclusive) odescontoé de 15%.Entre 13 e 18 (inclusive) odescontoé de 12%.Dos 19 aos 21
(inclusive) odescontoé de 5%e dos22 aos24 de 3%..."
Aplicandooteste de valorlimite convencional serãoobtidoscasosde teste semelhantesa
este:{-1,0,12,13,18,19,21,22,24,25}.
Grafo de causa-efeito
Esse critériode teste verificaoefeitocombinadode dadosde entrada.Ascausas(condiçõesde
entrada) e os efeitos(ações)sãoidentificadose combinadosemumgrafoa partirdo qual é
montadauma tabelade decisão,e a partir desta,sãoderivadosos casosde teste e as saídas
(ROCHA etal., 2001).
Esse critérioé baseadoemquatro passos,que exemplificaremosutilizandooexemplo,
tambémextraídode (BARBOSA etal.,2000):
“Em um programa de compras pelaInternet,acobrançaou não do frete é definidaseguindo
tal regra:Se o valorda compra formaior que R$ 60,00 e foramcompradosmenosque 3
produtos,ofrete é gratuito.Caso contrário,o frete deverásercobrado.”
1. Para cada módulo,Causas(condiçõesde entrada) e efeitos(açõesrealizadasàs diferentes
condiçõesde entrada) sãorelacionados,atribuindo-se umidentificadorparacada um.
• Causa:valorda compra > 60 e #produtos< 3
• Efeito:frete grátis
2. Em seguida,umgrafode causa-efeito(árvorede decisão) é desenhado(Figura7).
Figura7. Árvore de Decisão – Grafo de Causa-Efeito.
1. Neste ponto,transforma-se ografonumatabelade decisão(Tabela2).
Causa
Valorda compra
> 60
> 60
<= 60
#Produtos
< 3
>= 3
--
Efeito
Cobrar frete
V
V
Frete grátis
V
Tabela2. Tabelade decisão parao programa de compra pelaInternet.
2. As regras da tabelade decisãosão,então,convertidasemcasosde teste.
Para a elaboraçãodos casosde teste,devemosseguirtodasasregras extraídasda tabela.Esse
critériodeve sercombinadocomosdoisoutrosjá apresentadosneste artigoparaa criação de
casos de teste válidos(extraídosdasregras) e inválidos(valoresforasdafaixadefinida).Os
casos de teste definidosaseguirrefletemsomenteasregrasextraídasda tabelade decisão.
Fica comoexercíciopensarnoscasos de teste inválidosparaeste problema.
• Casosde Teste (valor,qtdprodutos,resultadoesperado) ={(61,2,“frete grátis”);
(61,3,“cobrar frete”);(60, qualquerquantidade,“cobrarfrete”)}
Outras técnicas
Outras técnicasde teste podeme devemserutilizadasde acordocomnecessidadesde
negócioourestriçõestecnológicas.Destacam-se asseguintestécnicas:testede desempenho,
teste de usabilidade,testede carga,teste de stress,teste de confiabilidadee teste de
recuperação.Algunsautoreschegamadefinirumatécnicade teste caixacinza,que seriaum
mescladodousodas técnicasde caixa pretae caixabranca, mas,como toda execuçãode
trabalhorelacionadoàatividade de teste utilizarásimultaneamentemaisde umatécnicade
teste,é recomendávelque se fixemosconceitosprimáriosde cadatécnica.
Conclusões
O teste de software é umadas atividadesmaiscustosasdoprocessode desenvolvimentode
software,poispode envolverumaquantidade significativadosrecursosde umprojeto.Origor
e o custoassociadoa esta atividade dependemprincipalmente dacriticalidade daaplicaçãoa
serdesenvolvida.Diferentescategoriasde aplicaçõesrequeremumapreocupação
diferenciadacomas atividadesde teste.
Um ponto bastante importante paraa viabilizaçãodaaplicaçãode teste de software é a
utilizaçãode umainfraestruturaadequada.Realizartestesnãoconsiste simplesmentena
geração e execuçãode casos de teste,masenvolvemtambémquestõesde planejamento,
gerenciamentoe análise de resultados.Apoioferramental paraqualqueratividadedoprocesso
de teste é importante comomecanismoparareduçãode esforçoassociadoà tarefaem
questão,sejaelaplanejamento,projetoouexecuçãodostestes.Apóstersuaestratégiade
teste definida, tente buscarporferramentasque se encaixemnasuaestratégia.Issopode
reduzirsignificantemente oesforçode tal tarefa.
Alémdisso,é importante ressaltarque diferentestiposde aplicaçõespossuemdiferentes
técnicasde teste a seremaplicadas,ou seja,testarumaaplicaçãowebenvolve passos
diferenciadosemcomparaçãoaostestesde umsistemaembarcado.Cadatipode aplicação
possui característicasespecificasque devemserconsideradasnomomentodarealizaçãodos
testes.Oconjuntode técnicasapresentadoneste artigocobre diversascaracterísticascomuns
a muitascategoriasde software,masnão é completo.
Para finalizar,podemosdestacaroutrospontosimportantesrelacionadosàsatividadesde
teste que podemosabordarempróximosartigos,tais comoprocessode teste de software,
planejamentoe controle dostestese teste de software paracategoriasespecíficasde
software,comoaplicaçõesweb.Até apróxima!
Agradecimentos
AgradecemosaosprofessoresJosé CarlosMaldonadoe EllenBarbosapor teremgentilmente
autorizadoa publicaçãodeste material,cujosexemplosutilizadosestãofundamentadosem
seustrabalhos.
Referências
• BARBOSA,E.;MALDONADO,J.C.;VINCENZI,A.M.R.;DELAMARO,M.E; SOUZA,S.R.S.e JINO,
M.. “Introduçãoao Teste de Software.XIV SimpósioBrasileirode Engenhariade Software”,
2000.
• CRAIG,R.D.,JASKIEL,S. P.,“SystematicSoftware Testing”,ArtechHouse Publishers,Boston,
2002.
• IEEE Standard610-1990: IEEE StandardGlossaryof Software EngineeringTerminology, IEEE
Press.
• PFLEEGER, S. L.,“Engenhariade Software:Teoriae Prática”,Prentice Hall- Cap.08, 2004.
• PRESSMAN,R.S., “Software Engineering:A Practitioner’sApproach”,McGraw-Hill,6thed,
NovaYork, NY,2005.
• RAPPS,S.,WEYUKER, E.J.,“Data Flow analysistechniquesfortestdataselection”,In:
International Conference onSoftware Engineering,p.272-278, Tokio,Sep.1982.
• ROCHA,A.R. C., MALDONADO,J.C., WEBER, K. C.et al.,“Qualidade de software –Teoriae
prática”,Prentice Hall,SãoPaulo,2001.
AriloClaudioDiasNeto
É Doutor emEngenhariade Sistemase ComputaçãoformadopelaUniversidade Federal doRio
de Janeiro(COPPE).Possui 6anosde experiênciaemanálisee desenvolvimentode software.É
aindaeditortécnicodaRevistaSQL Magazine,ge [...]
O que você achou deste post? Gostei (45) (5)
+ Mais conteúdosobre Engenhariade software
Todosos comentarios(5)
Meus comentarios
DéboraSoares
Excelente artigo.Me ajudoubastante.Obrigada!
[há +1 ano] - Responder
Caroline ThompsonDe MelloBrito
Muito bomseuartigo,os conceitosestãomuitobemdefinidose corretos!!Me ajudoumuito
com o meuTCC, muitoobrigado!!
[há +1 mês] - Responder
Jose RenatoDa SilvaAlves
Prezado,
O conceitode erroe defeitoestãoinvertidos. Erroé um resultadodaação humanae defeitoé
a manifestaçãodoerro.
[há +1 ano] - Responder
AriloCláudioDiasNeto
José Renato,permita-mediscordarde você.
EssesconceitosestãodefinidosnopadrãoIEEE-610, Glossáriode TermosemEngenhariade
Software (http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=159342).
O que você chamou de Erro, na verdade é ENGANO(mistake eminglês),que consiste naação
humanaque provoca umdefeito.
O defeitoé umadeficiênciamecânicaoualgorítmicaexistente emalgumartefatodoprojeto
que se for ativadalevao sistemaauma falha.Um erro é um estadodo programacomo
consequênciadodefeito,ouseja,praonde ele me levouapósafalhaocasionadapelo
existênciadodefeito.
Reforçandoa origemdosconceitos,você pode encontrá-losnolivroIntroduçãoaoTeste de
Software,dosprofessoresMárcioDelamaro,José Maldonadoe MárioJino.
Att's
Arilo
[há +1 ano] - Responder
EliasBatistaFerreira
Gostei doArtigo.
Parece não existirumconsensosobre essasdefinições.NoSylabbusadefiniçãodiferenciaum
pouco:http://www.bstqb.org.br/uploads/docs/syllabus_ctfl_2011br.pdf.
[há +1 mês] - Responder
Conhece aassinaturaMVP?
Publicidade
Mais posts
Leiamaisem: ArtigoEngenhariade Software - IntroduçãoaTeste de Software
http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de-
software/8035#ixzz3iWHJlKe9

Contenu connexe

Tendances

Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareCamilo Almendra
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtareFernando Palma
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Luiz Ladeira
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosCristiano Caetano
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSLuiz Ladeira
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Fernando Palma
 
Testes de software
Testes de softwareTestes de software
Testes de softwareteste
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareCamilo Ribeiro
 

Tendances (20)

Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtare
 
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
Artigo - OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE D...
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Revisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticosRevisao inspecao artefatos testes estaticos
Revisao inspecao artefatos testes estaticos
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOSOS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
OS FUNDAMENTOS DE TESTE DE SOFTWARE E SUA IMPORTÂNCIA NA QUALIDADE DE PROJETOS
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Qualidade e Teste de Software
Qualidade e Teste de SoftwareQualidade e Teste de Software
Qualidade e Teste de Software
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 

Similaire à Testes de Software: Níveis e Técnicas

Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de softwareFelipe Bugov
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxALEXANDRELISBADASILV
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAlexandreLisboadaSil
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptxAnaKlyssia1
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfMichaelArrais1
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POAAline Zanin
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
 

Similaire à Testes de Software: Níveis e Técnicas (20)

Eng de testes
Eng de testesEng de testes
Eng de testes
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Aula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptxAula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptx
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptx
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptx
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Teste de Software - Introdução
Teste de Software - IntroduçãoTeste de Software - Introdução
Teste de Software - Introdução
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 

Testes de Software: Níveis e Técnicas

  • 1. Testes ArtigoEngenhariade Software - Introduçãoa Teste de Software Ao longodeste artigo,iremosdiscutirosprincipaisconceitosrelacionadosàsatividadesde teste,asprincipaistécnicase critériosde teste que podemserutilizadospara verificaçãoou validaçãode umproduto. 24 Gostei (45) (5) Esse artigo fazparte da revistaEngenhariade Software ediçãoespecial.Cliqueaqui paraler todosos artigosdestaedição Verificação,Validaçãoe Teste Introduçãoa Teste de Software Teste de software é o processode execuçãode umprodutopara determinarse ele atingiu suas especificaçõese funcionoucorretamente noambiente paraoqual foi projetado.Oseu objetivoé revelarfalhasemumproduto,paraque as causasdessasfalhas sejamidentificadas e possamsercorrigidaspelaequipe de desenvolvimentoantesdaentregafinal.Porconta dessacaracterística dasatividadesde teste,dizemosque suanaturezaé “destrutiva”,e não “construtiva”,poisvisaaoaumentoda confiançade um produtoatravésda exposiçãode seus problemas,porémantesde suaentregaaousuáriofinal. O conceitode teste de software pode sercompreendidoatravésde umavisãointuitivaou mesmode uma maneiraformal.Existematualmente váriasdefiniçõesparaesse conceito.De uma formasimples,testarumsoftware significaverificaratravésde umaexecuçãocontrolada se o seucomportamentocorre de acordo com o especificado.Oobjetivoprincipal destatarefa é revelaronúmeromáximode falhasdispondodomínimo de esforço,ouseja,mostraraos que desenvolvemse osresultadosestãoounãode acordo com os padrõesestabelecidos. Ao longodeste artigo,iremosdiscutirosprincipaisconceitosrelacionadosàsatividadesde teste,asprincipaistécnicase critérios de teste que podemserutilizadosparaverificaçãoou
  • 2. validaçãode umproduto,assimcomo exemplospráticosdaaplicaçãode cada tipode técnica ou critériode teste. ConceitosbásicosassociadosaTeste de Software Antesde iniciarmosumadiscussãosobre teste de softwareprecisamosesclareceralguns conceitosrelacionadosaessaatividade.Inicialmente,precisamosconheceradiferençaentre Defeitos,Errose Falhas.Asdefiniçõesque iremosusaraqui seguematerminologiapadrão para Engenhariade Software doIEEE – Institute of Electrical andElectronicsEngineers –(IEEE 610, 1990). • Defeitoé umatoinconsistentecometidoporumindivíduoaotentarentenderuma determinadainformação,resolverumproblemaouutilizarummétodoouumaferramenta. Por exemplo,umainstruçãooucomandoincorreto. • Erro é umamanifestaçãoconcretade um defeitonumartefatode software.Diferençaentre o valorobtidoe o valor esperado,ouseja,qualquerestadointermediárioincorretoou resultadoinesperadonaexecução de umprogramaconstitui umerro. • Falhaé o comportamentooperacional dosoftware diferentedoesperadopelousuário.Uma falhapode tersidocausada por diversoserrose algunserrospodemnuncacausar uma falha. A Figura1 expressaadiferençaentre essesconceitos.Defeitosfazemparte douniversofísico (a aplicaçãopropriamente dita) e sãocausadosporpessoas,porexemplo,atravésdomal uso de uma tecnologia.Defeitospodemocasionaramanifestaçãode errosemumproduto,ou seja,a construçãode umsoftware de formadiferente aoque foi especificado(universode informação).Porfim,oserrosgeramfalhas,que são comportamentosinesperadosemum software que afetamdiretamente ousuáriofinal daaplicação(universodousuário) e pode inviabilizarautilizaçãode umsoftware. Figura1. Defeitox errox falha Dessaforma,ressaltamosque teste de software revelasimplesmentefalhasemumproduto. Apósa execuçãodostestesé necessáriaaexecuçãode umprocessode depuraçãopara a identificaçãoe correçãodos defeitosque originaramessafalha,ouseja,Depurarnãoé Testar!
  • 3. A atividade de teste é compostaporalgunselementosessenciaisque auxiliamnaformalização destaatividade.Esseselementossãoosseguintes: • Casode Teste:descreve umacondiçãoparticularasertestadae é compostoporvaloresde entrada,restriçõesparaa sua execuçãoe um resultadooucomportamentoesperado(CRAIGe JASKIEL,2002). • Procedimentode Teste:é umadescriçãodospassosnecessáriosparaexecutarumcaso(ou um grupode casos) de teste (CRAIGe JASKIEL,2002). • Critériode Teste:serve paraselecionare avaliarcasosde teste de formaa aumentaras possibilidadesde provocarfalhasou,quandoissonãoocorre,estabelecerumnível elevadode confiançana correção doproduto(ROCHA et al.,2001). Os critériosde teste podemser utilizadoscomo: o Critériode CoberturadosTestes:permitemaidentificaçãode partesdoprograma que devemserexecutadasparagarantira qualidade dosoftware e indicarquandoomesmofoi suficientementetestado(RAPPSe WEYUKER,1982). Ouseja,determinaropercentual de elementosnecessáriosporumcritériode teste que foramexecutadospeloconjuntode casos de teste. o Critériode Adequaçãode Casosde Teste:Quando,apartir de um conjuntode casos de teste T qualquer,ele é utilizadoparaverificarse Tsatisfazosrequisitosde teste estabelecidospelo critério.Ouseja,este critérioavaliase oscasosde teste definidossãosuficientesounãopara avaliaçãode um produtoou umafunção(ROCHA et al.,2001). o Critériode Geraçãode Casosde Teste:quandoo critérioé utilizadoparagerarum conjunto de casos de teste T adequadopara um produtooufunção,ou seja,este critériodefine as regras e diretrizesparageração dos casosde teste de umprodutoque estejade acordocom o critériode adequaçãodefinidoanteriormente (ROCHA etal.,2001). Definidososelementosbásicosassociadosaostestesde software,iremosaseguirdiscutira origemdosdefeitosemumsoftware. Defeitosnodesenvolvimentode software No processode desenvolvimentode software,todososdefeitossãohumanose,apesardouso dos melhoresmétodosde desenvolvimento,ferramentasouprofissionais,permanecem presentesnosprodutos,oque tornaa atividade de teste fundamentaldurante o
  • 4. desenvolvimentode umsoftware.Jávimosque estaatividadecorresponde aoúltimorecurso para avaliaçãodo produtoantesda sua entregaaousuáriofinal. O tamanhodo projetoa serdesenvolvidoe aquantidade de pessoasenvolvidasnoprocesso são doispossíveisfatoresque aumentamacomplexidade dessatarefa,e consequentemente aumentama probabilidade de defeitos.Assim, aocorrênciade falhasé inevitável.Maso que significadizerque umprogramafalhou?Basicamentesignificaque ofuncionamentodo programa nãoestá de acordo com o esperadopelousuário.Porexemplo,quandoumusuário da linhade produçãoefetuaconsultasnosistemadasquaissóa gerênciadeveriateracesso. Esse tipode falhapode seroriginadopordiversosmotivos: • A especificaçãopode estarerradaouincompleta; • A especificaçãopode conterrequisitosimpossíveisde seremimplementadosdevidoa limitaçõesde hardware ousoftware; • A base de dadospode estarorganizadade forma que não sejapermitidodistinguirostipos de usuário; • Pode serque hajaum defeitonoalgoritmode controle dosusuários. Os defeitosnormalmente sãointroduzidosnatransformaçãode informaçõesentre as diferentesfasesdociclode desenvolvimentode umsoftware.Vamosseguirumexemplo simplesde ciclode vidade desenvolvimentode software:osrequisitosexpressospelocliente são relatadostextualmente emumdocumentode especificaçãode requisitos.Esse documentoé entãotransformadoemcasosde uso, que por suavezfoi o artefatode entrada para o projetodosoftware e definiçãode suaarquiteturautilizandodiagramasde classesda UML. Em seguida,essesmodelosde projetosforamusadosparaa construção dosoftware em uma linguagemque nãosegue oparadigmaorientadoaobjetos.Observe que durante esse períodouma série de transformaçõesfoi realizadaaté chegarmosaoprodutofinal.Nessemeio tempo,defeitospodemtersidoinseridos.A Figura2 expressaexatamenteametáfora discutidanesse parágrafo. Figura2. DiferentesInterpretaçõesaolongodociclode desenvolvimentode umsoftware (Uma versãosimilarpode serobtidaemhttp://www.projectcartoon.com/cartoon/611)
  • 5. Essa série de transformaçõesresultounanecessidade de realizartestesemdiferentesníveis, visandoavaliarosoftware emdiferentesperspectivasde acordocomo produtogeradoem cada fase do ciclode vidade desenvolvimentode umsoftware.Esse seráofocoda seção seguinte. Níveisde teste de software O planejamentodostestesdeveocorreremdiferentesníveise emparaleloao desenvolvimentodosoftware (Figura3).BuscandoinformaçãonoLivro“Qualidade de Software – Teoriae Prática” (ROCHA et al.,2001), definimosque osprincipaisníveisde teste de software são: • Teste de Unidade:tambémconhecidocomotestesunitários.Temporobjetivoexplorara menorunidade doprojeto,procurandoprovocarfalhasocasionadaspordefeitosde lógicae de implementaçãoemcadamódulo,separadamente.Ouniversoalvodesse tipode teste sãoos métodosdosobjetosoumesmopequenostrechosde código. • Teste de Integração:visaprovocarfalhasassociadasàs interfacesentre osmódulosquando essessãointegradosparaconstruira estruturado software que foi estabelecidanafase de projeto. • Teste de Sistema:avaliaosoftware embuscade falhaspor meiodautilizaçãodomesmo, como se fosse umusuáriofinal.Dessamaneira,ostestessãoexecutadosnosmesmos ambientes,comasmesmascondiçõese comos mesmosdadosde entradaque um usuário utilizarianoseudia-a-diade manipulaçãodosoftware.Verificase oprodutosatisfazseus requisitos. • Teste de Aceitação:sãorealizadosgeralmente porumrestritogrupode usuáriosfinaisdo sistema.Essessimulamoperaçõesde rotinadosistemade modo averificarse seu comportamentoestáde acordocom o solicitado. • Teste de Regressão:Teste de regressãonãocorresponde aumnível de teste,masé uma estratégiaimportante parareduçãode “efeitoscolaterais”.Consisteemse aplicar,acada nova versãodo software oua cada ciclo,todosos testesque jáforamaplicadosnasversõesou ciclosde teste anterioresdosistema.Pode seraplicadoemqualquernível de teste. Dessaforma,seguindoaFigura3, o planejamentoe projetodostestesdevemocorrerde cima para baixo,ouseja: 1. Inicialmenteé planejadooteste de aceitaçãoa partirdo documentode requisitos;
  • 6. 2. Apósissoé planejadooteste de sistemaapartirdo projetode altonível do software; 3. Em seguidaocorre oplanejamentodostestesde integraçãoapartiro projetodetalhado; 4. E por fim,oplanejamentodostestesapartirda codificação. Já a execuçãoocorre no sentidoinverso. Conhecidososdiferentesníveisde teste,apartirda próximaseçãodescreveremosas principaistécnicasde teste de software existentesque podemosaplicarnosdiferentesníveis abordados. Figura3. ModeloV descrevendooparalelismoentreasatividadesde desenvolvimentoe teste de software (CRAIGe JASKIEL,2002) Técnicasde teste de software Atualmente existemmuitasmaneirasde se testarumsoftware.Mesmoassim, existemas técnicasque sempre forammuitoutilizadasemsistemasdesenvolvidossobre linguagens estruturadasque aindahoje têmgrande valiaparaos sistemasorientadosaobjeto.Apesarde os paradigmasde desenvolvimentoseremdiferentes,oobjetivoprincipal destastécnicas continuaa ser o mesmo:encontrarfalhasnosoftware. As técnicasde teste sãoclassificadasde acordocoma origemdasinformaçõesutilizadaspara estabeleceros requisitosde teste.Elascontemplamdiferentesperspectivasdosoftware e impõe-se anecessidadede se estabelecerumaestratégiade teste que contemple as vantagense os aspectoscomplementaresdessastécnicas.Astécnicasexistentessão:técnica funcional e estrutural. A seguirconheceremosumpoucomaissobre cada técnica,masiremosenfatizaralguns critériosespecíficosparaatécnicafuncional. TécnicaEstrutural (ou teste caixa-branca)
  • 7. Técnicade teste que avaliaocomportamentointernodo componentede software (Figura4). Essa técnicatrabalhadiretamente sobre ocódigofonte docomponente de software para avaliaraspectostaiscomo: teste de condição,teste de fluxode dados,teste de ciclose teste de caminhoslógicos(PRESSMAN,2005) Figura4. Técnicade Teste Estrutural. Os aspectosavaliadosnestatécnicade teste dependerãodacomplexidadee datecnologiaque determinaremaconstruçãodocomponente de software,cabendo,portanto,avaliaçãode outrosaspectosalémdoscitadosanteriormente.Otestadortemacessoao códigofonte da aplicaçãoe pode construircódigosparaefetuara ligaçãode bibliotecase componentes. Este tipode teste é desenvolvidoanalisando-seocódigofonte e elaborando-se casosde teste que cubram todasas possibilidadesdocomponentede software.Dessamaneira,todasas variaçõesoriginadasporestruturasde condiçõessãotestadas.A Listagem1 apresentaum códigofonte,extraídode (BARBOSA etal.,2000) que descreve umprogramade exemploque deve validarumidentificadordigitadocomoparâmetro,e aFigura5 apresentaografo de programa extraídoa partirdesse código,tambémextraídode (BARBOSA etal.,2000). A partir do grafodeve serescolhidoalgumcritériobaseadoemalgumalgoritmode buscaemgrafo (exemplo:visitartodososnós,arcos ou caminhos) parageração doscasos de teste estruturais para o programa (PFLEEGER, 2004). Listagem1. Códigofonte doprogramaidentifier.c(BARBOSAetal.,2000) /* 01 */ { /* 01 */ char achar; /* 01 */ int length,valid_id; /* 01 */ length= 0; /* 01 */ printf ("Digite umpossível identificadorn"); /* 01 */ printf ("seguidopor:"); /* 01 */ achar = fgetc(stdin); /* 01 */ valid_id= valid_starter(achar); /* 01 */ if (valid_id) /* 02 */ length= 1;
  • 8. /* 03 */ achar = fgetc(stdin); /* 04 */ while (achar!= 'n') /* 05 */ { /* 05 */ if (!(valid_follower(achar))) /* 06 */ valid_id=0; /* 07 */ length++; /* 07 */ achar = fgetc(stdin); /* 07 */ } /* 08 */ if (valid_id&&(length>= 1) && (length< 6) ) /* 09 */ printf ("Validon"); /* 10 */ else /* 10 */ printf ("Invalidon"); /* 11 */ } Figura5. Grafo de Programa(Identifier.c) (BARBOSA etal.,2000). Um exemplobempráticodestatécnicade teste é ouso da ferramentalivre JUnitpara desenvolvimento de casosde teste paraavaliarclassesoumétodosdesenvolvidosna linguagemJava.A técnicade teste de Estrutural é recomendadapara osníveisde Teste da Unidade e Teste da Integração,cujaresponsabilidadeprincipal ficaacargo dos desenvolvedoresdo software,que sãoprofissionaisque conhecembemocódigo-fonte desenvolvidoe dessaformaconseguemplanejaroscasosde teste commaiorfacilidade.Dessa forma,podemosauxiliarnareduçãodosproblemasexistentesnaspequenasfunçõesou unidadesque compõemumsoftware. Teste Funcional (outeste caixa-preta) Técnicade teste emque o componente de softwareasertestadoé abordado comose fosse uma caixa-preta,ouseja,nãose consideraocomportamentointernodomesmo(Figura6). Dados de entradasão fornecidos,oteste é executadoe oresultadoobtidoé comparadoaum resultadoesperadopreviamenteconhecido.Haverásucessonoteste se oresultadoobtidofor igual ao resultadoesperado.Ocomponente de software asertestadopode serum método, uma funçãointerna,umprograma,um componente,umconjuntode programase/ou componentesoumesmoumafuncionalidade.A técnicade teste funcional é aplicável atodos os níveisde teste (PRESSMAN,2005).
  • 9. Figura6. Técnicade Teste Funcional. Um conjuntode critériosde teste pode seraplicadoaostestesfuncionais.A seguir conheceremosalgunsdeles. Particionamentoemclassesde equivalência Esse critériodivide odomíniode entradade umprograma emclassesde equivalência,apartir das quaisoscasos de teste sãoderivados.Ele temporobjetivominimizaronúmerode casos de teste,selecionandoapenasumcasode teste de cada classe,poisemprincípiotodosos elementosde umaclasse devemse comportarde maneiraequivalente.Eventualmente,pode- se tambémconsiderarodomíniode saída para a definiçãodasclassesde equivalência(ROCHA et al.,2001). Uma classe de equivalênciarepresentaumconjuntode estadosválidose inválidosparauma condiçãode entrada.Tipicamente umacondiçãode entradapode serum valornumérico específico,umafaixade valores,umconjuntode valoresrelacionados,ouumacondiçãológica. As seguintesdiretrizespodemseraplicadas: • Se uma condiçãode entradaespecificaumafaixade valoresourequerumvalorespecífico, uma classe de equivalênciaválida(dentrodolimite) e duasinválidas(acimae abaixodos limites) sãodefinidas. • Se uma condiçãode entradaespecificaummembrode umconjuntooué lógica,umaclasse de equivalênciaválidae umainválidasãodefinidas. Devemosseguirtaispassosparageraçãodos testesusandoeste critério: 1. Identificarclassesde equivalência(é umprocessoheurístico) o condiçãode entrada o válidase inválidas
  • 10. 2. Definiroscasos de teste o enumeram-se asclassesde equivalência o casos de teste para as classesválidas o casos de teste para as classesinválidas Em (BARBOSA etal.,2000) é apresentadoaaplicaçãodo critériode particionamentopor equivalênciaparaoprograma identifier.c.Iremosapresentá-locomoexemplodousodeste critériode teste.Relembrando,oprogramadeve determinarse umidentificadoré válidoou não. “Um identificadorválidodevecomeçarcomuma letrae conter apenasletrasoudígitos.Além disso,deve ternomínimo1 caractere e no máximo6 caracteresde comprimento.Exemplo: “abc12” (válido),“cont*1”(inválido),“1soma”(inválido) e “a123456” (inválido).” O primeiropassoé a identificaçãodasclassesde equivalência.IssoestádescritonaTabela1. Condiçõesde Entrada Classes Classes Tamanhot doidentificador (1) 1 ??t???6 (2) t > 6 Primeirocaractere c é uma letra (3) Sim (4) Não Só contémcaracteresválidos (5) Sim (6) Não Tabela1. Classesde Equivalênciadoprogramaidentifier.c.
  • 11. A partirdisso,conseguimosespecificarquaisserãoos casos de teste necessários.Paraser válido,umidentificadordeve atenderàscondições(1),(3) e (5), logoé necessárioumcaso de teste válidoque cubratodasessascondições.Alemdisso,seránecessárioumcasode teste para cada classe inválida:(2), (4) e (6). Assim, oconjuntomínimoé compostoporquatro casos de teste,sendoumadas opções: T0 = {(a1,Válido),(2B3,Inválido),(Z-12,Inválido),(A1b2C3d,Inválido)}. Análise dovalorlimite Por razõesnão completamente identificadas,umgrande númerode errostende aocorrernos limitesdodomíniode entradainvésde no“centro”.Esse critériode teste exploraoslimites dos valoresde cadaclasse de equivalênciaparaprepararos casos de teste (Pressman,2005). Se uma condiçãode entrada especifica umafaixade valoreslimitadaemae b,casos de teste devemserprojetadoscomvaloresae b e imediatamente acimae abaixode ae b. Exemplo: Intervalo={1..10}; Casosde Teste à {1, 10, 0,11}. Comoexemplo,extraídode (BARBOSA etal.,2000), iremos consideraraseguinte situação: "...o cálculodo descontopordependenteé feitodaseguinteforma:aentradaé a idade do dependente que deveestarrestritaaointervalo[0..24].Paradependentesaté 12anos (inclusive) odescontoé de 15%.Entre 13 e 18 (inclusive) odescontoé de 12%.Dos 19 aos 21 (inclusive) odescontoé de 5%e dos22 aos24 de 3%..." Aplicandooteste de valorlimite convencional serãoobtidoscasosde teste semelhantesa este:{-1,0,12,13,18,19,21,22,24,25}. Grafo de causa-efeito Esse critériode teste verificaoefeitocombinadode dadosde entrada.Ascausas(condiçõesde entrada) e os efeitos(ações)sãoidentificadose combinadosemumgrafoa partirdo qual é montadauma tabelade decisão,e a partir desta,sãoderivadosos casosde teste e as saídas (ROCHA etal., 2001). Esse critérioé baseadoemquatro passos,que exemplificaremosutilizandooexemplo, tambémextraídode (BARBOSA etal.,2000):
  • 12. “Em um programa de compras pelaInternet,acobrançaou não do frete é definidaseguindo tal regra:Se o valorda compra formaior que R$ 60,00 e foramcompradosmenosque 3 produtos,ofrete é gratuito.Caso contrário,o frete deverásercobrado.” 1. Para cada módulo,Causas(condiçõesde entrada) e efeitos(açõesrealizadasàs diferentes condiçõesde entrada) sãorelacionados,atribuindo-se umidentificadorparacada um. • Causa:valorda compra > 60 e #produtos< 3 • Efeito:frete grátis 2. Em seguida,umgrafode causa-efeito(árvorede decisão) é desenhado(Figura7). Figura7. Árvore de Decisão – Grafo de Causa-Efeito. 1. Neste ponto,transforma-se ografonumatabelade decisão(Tabela2). Causa Valorda compra > 60 > 60 <= 60 #Produtos < 3 >= 3 -- Efeito Cobrar frete V V
  • 13. Frete grátis V Tabela2. Tabelade decisão parao programa de compra pelaInternet. 2. As regras da tabelade decisãosão,então,convertidasemcasosde teste. Para a elaboraçãodos casosde teste,devemosseguirtodasasregras extraídasda tabela.Esse critériodeve sercombinadocomosdoisoutrosjá apresentadosneste artigoparaa criação de casos de teste válidos(extraídosdasregras) e inválidos(valoresforasdafaixadefinida).Os casos de teste definidosaseguirrefletemsomenteasregrasextraídasda tabelade decisão. Fica comoexercíciopensarnoscasos de teste inválidosparaeste problema. • Casosde Teste (valor,qtdprodutos,resultadoesperado) ={(61,2,“frete grátis”); (61,3,“cobrar frete”);(60, qualquerquantidade,“cobrarfrete”)} Outras técnicas Outras técnicasde teste podeme devemserutilizadasde acordocomnecessidadesde negócioourestriçõestecnológicas.Destacam-se asseguintestécnicas:testede desempenho, teste de usabilidade,testede carga,teste de stress,teste de confiabilidadee teste de recuperação.Algunsautoreschegamadefinirumatécnicade teste caixacinza,que seriaum mescladodousodas técnicasde caixa pretae caixabranca, mas,como toda execuçãode trabalhorelacionadoàatividade de teste utilizarásimultaneamentemaisde umatécnicade teste,é recomendávelque se fixemosconceitosprimáriosde cadatécnica. Conclusões O teste de software é umadas atividadesmaiscustosasdoprocessode desenvolvimentode software,poispode envolverumaquantidade significativadosrecursosde umprojeto.Origor e o custoassociadoa esta atividade dependemprincipalmente dacriticalidade daaplicaçãoa serdesenvolvida.Diferentescategoriasde aplicaçõesrequeremumapreocupação diferenciadacomas atividadesde teste. Um ponto bastante importante paraa viabilizaçãodaaplicaçãode teste de software é a utilizaçãode umainfraestruturaadequada.Realizartestesnãoconsiste simplesmentena geração e execuçãode casos de teste,masenvolvemtambémquestõesde planejamento, gerenciamentoe análise de resultados.Apoioferramental paraqualqueratividadedoprocesso de teste é importante comomecanismoparareduçãode esforçoassociadoà tarefaem questão,sejaelaplanejamento,projetoouexecuçãodostestes.Apóstersuaestratégiade
  • 14. teste definida, tente buscarporferramentasque se encaixemnasuaestratégia.Issopode reduzirsignificantemente oesforçode tal tarefa. Alémdisso,é importante ressaltarque diferentestiposde aplicaçõespossuemdiferentes técnicasde teste a seremaplicadas,ou seja,testarumaaplicaçãowebenvolve passos diferenciadosemcomparaçãoaostestesde umsistemaembarcado.Cadatipode aplicação possui característicasespecificasque devemserconsideradasnomomentodarealizaçãodos testes.Oconjuntode técnicasapresentadoneste artigocobre diversascaracterísticascomuns a muitascategoriasde software,masnão é completo. Para finalizar,podemosdestacaroutrospontosimportantesrelacionadosàsatividadesde teste que podemosabordarempróximosartigos,tais comoprocessode teste de software, planejamentoe controle dostestese teste de software paracategoriasespecíficasde software,comoaplicaçõesweb.Até apróxima! Agradecimentos AgradecemosaosprofessoresJosé CarlosMaldonadoe EllenBarbosapor teremgentilmente autorizadoa publicaçãodeste material,cujosexemplosutilizadosestãofundamentadosem seustrabalhos. Referências • BARBOSA,E.;MALDONADO,J.C.;VINCENZI,A.M.R.;DELAMARO,M.E; SOUZA,S.R.S.e JINO, M.. “Introduçãoao Teste de Software.XIV SimpósioBrasileirode Engenhariade Software”, 2000. • CRAIG,R.D.,JASKIEL,S. P.,“SystematicSoftware Testing”,ArtechHouse Publishers,Boston, 2002. • IEEE Standard610-1990: IEEE StandardGlossaryof Software EngineeringTerminology, IEEE Press. • PFLEEGER, S. L.,“Engenhariade Software:Teoriae Prática”,Prentice Hall- Cap.08, 2004. • PRESSMAN,R.S., “Software Engineering:A Practitioner’sApproach”,McGraw-Hill,6thed, NovaYork, NY,2005.
  • 15. • RAPPS,S.,WEYUKER, E.J.,“Data Flow analysistechniquesfortestdataselection”,In: International Conference onSoftware Engineering,p.272-278, Tokio,Sep.1982. • ROCHA,A.R. C., MALDONADO,J.C., WEBER, K. C.et al.,“Qualidade de software –Teoriae prática”,Prentice Hall,SãoPaulo,2001. AriloClaudioDiasNeto É Doutor emEngenhariade Sistemase ComputaçãoformadopelaUniversidade Federal doRio de Janeiro(COPPE).Possui 6anosde experiênciaemanálisee desenvolvimentode software.É aindaeditortécnicodaRevistaSQL Magazine,ge [...] O que você achou deste post? Gostei (45) (5) + Mais conteúdosobre Engenhariade software Todosos comentarios(5) Meus comentarios DéboraSoares Excelente artigo.Me ajudoubastante.Obrigada! [há +1 ano] - Responder Caroline ThompsonDe MelloBrito Muito bomseuartigo,os conceitosestãomuitobemdefinidose corretos!!Me ajudoumuito com o meuTCC, muitoobrigado!! [há +1 mês] - Responder Jose RenatoDa SilvaAlves Prezado,
  • 16. O conceitode erroe defeitoestãoinvertidos. Erroé um resultadodaação humanae defeitoé a manifestaçãodoerro. [há +1 ano] - Responder AriloCláudioDiasNeto José Renato,permita-mediscordarde você. EssesconceitosestãodefinidosnopadrãoIEEE-610, Glossáriode TermosemEngenhariade Software (http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=159342). O que você chamou de Erro, na verdade é ENGANO(mistake eminglês),que consiste naação humanaque provoca umdefeito. O defeitoé umadeficiênciamecânicaoualgorítmicaexistente emalgumartefatodoprojeto que se for ativadalevao sistemaauma falha.Um erro é um estadodo programacomo consequênciadodefeito,ouseja,praonde ele me levouapósafalhaocasionadapelo existênciadodefeito. Reforçandoa origemdosconceitos,você pode encontrá-losnolivroIntroduçãoaoTeste de Software,dosprofessoresMárcioDelamaro,José Maldonadoe MárioJino. Att's Arilo [há +1 ano] - Responder EliasBatistaFerreira Gostei doArtigo. Parece não existirumconsensosobre essasdefinições.NoSylabbusadefiniçãodiferenciaum pouco:http://www.bstqb.org.br/uploads/docs/syllabus_ctfl_2011br.pdf. [há +1 mês] - Responder Conhece aassinaturaMVP? Publicidade
  • 17. Mais posts Leiamaisem: ArtigoEngenhariade Software - IntroduçãoaTeste de Software http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-teste-de- software/8035#ixzz3iWHJlKe9