TestedeSo)ware CentrodeInformá-caUniversidadeFederaldePernambuco SistemasdeInformação ViniciusCardosoGarcia
[email protected] SlidesoriginaiselaboradosporIanSommerville
Oautorpermiteousoeamodificaçãodosslidesparafinsdidá-cos
Mo.vação ●
●
●
Ocorrência de falhas humanas no processo de desenvolvimento de software é considerável Processo de testes é indispensável na garantia de qualidade de software Custos associados às falhas de software justificam um processo de testes cuidadoso e bem planejado
Falha,FaltaeErro ●
Falha • Incapacidade do software de realizar a função requisitada (aspecto externo) • Exemplo • Terminação anormal, restrição temporal violada
Falha,FaltaeErro ●
Falta • Causa de uma falha • Exemplo • Código incorreto ou faltando
Falha,FaltaeErro ●
Erro • Estado intermediário (instabilidade) • Provém de uma falta • Pode resultar em falha, se propagado até a saída
Falha,FaltaeErro
Falta
Erro
Falha
Conceitos fundamentais - Validação vs. Verificação
• Validação – aval av alia iaçã ção o dura du rant nte, e, ou ao f inal in al do cicl ci clo o de desenvolvimento de software para determinar se satisfaz aos requisitos especificados.
• Verificação – avaliação para determinar se os produtos de uma dada fase do ciclo de desenvolvimento satisfaz as condições impostas no inicio daquela.
Conceitos Fundamentais » Debugging vs. Testing [Amman, 2008] – Debugging: The process of finding a fault given a failure .
Debugging is figuring out what's causing a problem you do know about .
– Testing: Evaluating software by observing its execution .
Testing is trying to find problems you don't know about .
Conceitos Fundamentais - Análise Estática – Nãoéfeitaemcódgoexecutavel. – Verificacontraaespecificaçãoque Verificacontraaespecificaçãoquedefineaestrutu defineaestruturadoartefato. radoartefato.Ex.:Inspeções Ex.:Inspeções.. –
60%dosdefeitospodemseren dosdefeitospodemserencontradosco contradoscomanáliseestá-ca. manáliseestá-ca.
– Nãoverificacomportamentosd Nãoverificacomportamentosdinâmicos. inâmicos. – GilbandGraham subs.tuemtestesunitáriosporins testesunitáriosporinspeção[Sommerville,2 peção[Sommerville,2005]. 005].
Conceitos fundamentais - Análise Dinâmica • Feito em código executável. • Dada um valor de entrada, checa se a saída é a esperada. •
Can be used to show the presence of bugs, but never to show their absence .[Meyer, 2008]
Néveis Névei s de de Teste Teste[Amman, 2008] – Teste Unitário
•
Avalia o software com relação a implementação.
– Teste de Modulo
•
Avalia o software com respeito a detalhes do design. – Teste de Integração
•
Avalia o software com respeito ao design de subsistemas.
– Teste de Sistemas
•
Avalia o software com respeito ao design da arquitetura. – Teste de Aceitação • Avalia o software com respeito a seus requisitos. – Alpha/Betha testing • Commercial Off-The-Shelf .
V-Model » V-Model – Asa-vidadesdevemserrealizad Asa-vidadesdevemserrealizadasemparaleloc asemparalelocomasa-vidades omasa-vidadesde de desenvolvimento.
– Mostracomoasa-vidadesd Mostracomoasa-vidadesdeteste(verificação eteste(verificaçãoevalidação)podem evalidação)podemser ser integradasdentrodecadafase integradasdentrodecadafasedociclodevid dociclodevida.. a..
Teste e ciclo de vida – Nas"dark ages , teste era considerado uma fase do desenvolvimento que era realizada após a implementação. – O Rational Unified Process (RUP) lista teste como uma disciplina que é ativa em todas as fases de desenvolvimento [Kruchten 03]. – A maioria dos processos de desenvolvimento incluem atividades de teste em todas as fases do ciclo de desenvolvimento.
Adapt ed f r ro m:
[ ht t tp / : / / w ww w w w jo . jot .f m / issue s / issue _2 00 7 _05 / c co lumn1 / ] ]
Papéis e Artefatos • TestPlan • TestCase • TestSuite • TestResults • TestEnvironment Configura-on • TestScript Adapted from: [http://rup.hops-fp6.org/pro [http://rup.hops-fp6.org/process/workflow/test/o cess/workflow/test/ov_tst_art.htm] v_tst_art.htm]
Noçãodeconfiabilidade ●
●
Algumas faltas escaparão escaparão inevitavelmente inevitavelmente • Tanto dos testes • Quanto da depuração Falta pode ser mais ou menos perturbadora • Dependendo do que se trate e em qual freqüência irá surgir para o usuário final
Noçãodeconfiabilidade ●
●
Assim, precisamos precisamos de uma referência referência para decidir • Quando liberar ou não sistema para uso Confiabilidade de software • É uma estimativa probabilística • Mede a freqüência com que um software irá executar sem falha • Em dado ambiente • E por determinado por determinado período de tempo
●
Assim, entradas para testes devem devem se aproximar do ambiente do usuário final
DadoseCasosdeTeste ●
●
Dados de Teste • Entradas selecionadas para testar o software Casos de Teste • Dados de teste, bem como saídas esperadas de acordo com a especificação (Veredicto) • Cenários específicos de execução
Eficáciadetestes ●
●
●
A atividade de teste é o processo de executar um programa com a intenção de descobrir um erro Um bom caso de teste é aquele que apresenta uma elevada probabilidade de revelar um erro ainda não descoberto Um teste bem sucedido é aquele que revela um erro ainda não descoberto
Oprocessodeteste • Testedecomponentes – Testedecomponentesindividuaisdeprograma; – Geralmenteéderesponsabilidadedodesenvolvedordo componente(excetoalgumasparasistemascrí-cos); – Ostestessãoderivadosdaexperiênciadodesenvolvedor.
• Testedesistema – Testedegruposdecomponentesintegradosparacriarum
sistemaouumsubsistema; – Aresposabilidadeédeumaequipeindependentedeteste; – Ostestessãobaseadosemumaespecificaçãodesistema.
Fasesdeteste
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Metasdoprocessodeteste • Testedevalidação – U-lizadoparademonstraraodesenvolvedoreaocliente dosistemaqueosoLwareatendeaosseusrequisitos. – Umtestebemsucedidomostraqueosistemaopera conformepretendido.
• Testededefeitos – U-lizadoparadescobrirfaltasoudefeitosnosoLwarenos locaisemqueocomportamentonãoestácorretoounão estáemconformidadecomasuaespecificação; – Umtestebemsucedidoéaquelequefazosistema executarincorretamentee,assim,exporumdefeitono sistema. – Ostestesmostramapresençaenãoaausênciade defeitos
Oprocessodetestesdeso)ware
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Polí.casdeteste • Somentetestesexaus-vospodemmostrarque umprogramaestálivrededefeitos.Contudo, testesexaus-vossãoimpossíveis. • Aspolí-casdetestedefinemaabordag Aspolí-casdetestedefinemaabordagemaser emaser usadanaseleçãodetestesdesistema: – Todasasfunçõesacessadaspormeiodemenus devemsertestadas; – Ascombinaçõesdefunçõesacessadaspormeiodos mesmosmenusdevemsertestadas; – Ondeasentradasdeusuáriosãofornecidas,todasas funçõesdevemsertestadascomentradascorretase incorretas.
Testedesistema • Envolveaintegraçãodedoisoumais componentesparacriarumsistemaou subsistema. • Podeenvolverotestedeumincrementoparaser entregueaocliente. • Duasfases: – Testedeintegração –aequipedetestetemacesso aocódigofontedosistemaeosistemaétestadoà medidaqueoscomponentessãointegrados. – Testedereleases –aequipedetestetestaos –aequipedetestetestaosistema istema completoaserentreguecomoumacaixapreta.
Testedeintegração • Envolveaconstruçãodeumsistemaapar-rdeseus componteseotestedosistemaresultantedos problemasocorridosnasinteraçõesentre componentes. • Integraçãotopdown – Desenvolveroesqueletodosistemaepreenchêlocom componentes.
• Integraçãoboomup – Integrarcomponentesdeinfraestruturae,emseguida, adicionarcomponentesfuncionais.
• Parasimplificaralocalizaçãodeerros,ossistemas devemserintegradosincrementalmente.
Testedeintegraçãoincremental
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testedereleases • Éoprocessodetestedeumreleasede sistemaqueserádistribuídoaosclientes. • Ametaprimáriaéaumentaraconfiançado fornecedordequeosistemaatendeaosseus requisitos. • Testedereleasesé,geralmente,umteste caixapretaoufuncional – Ébaseadosomentenaespecificaçãodesistema; – Ostestadoresnãotêmconhecimentoda implementaçãodosistema.
Testecaixa-preta
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Diretrizesdeteste • Diretrizessãorecomendaçõesparaaequipede testeparaauxiliálosaescolherostestesque revelarãodefeitosnosistema – Escolherentradasqueforcemosistemaagerartodas asmensagensdeerro; – Projetarentradasquecausemoverflowdosbuffers; – Repe-ramesmaentradaousériedeentradasvárias vezes; – Forçarageraçãodesaídasinválidas; – Forçarresultadosdecálculoaseremmuitograndes oumuitopequenos.
Cenáriodeteste
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testesdesistema
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Casosdeuso • Casosdeusopodemserumabasepara derivarostestesdeumsistema.Elesajudama iden-ficarasoperaçõesaseremtestadasea projetaroscasosdetestenecessários.
• Apar-rdeumdiagramadeseqüência associado,asentradasesaídasaserem criadasparaostestespodemseriden-ficadas.
Diagramadeseqüênciadecoleta dedadosmeteorológicos
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testededesempenho • Partedotestedereleasespodeenvolverteste depropriedadesemergentesdeumsistema, taiscomodesempenhoeconfiabilidade. • Testesdedesempenhoenvolve,geralmente,o planejamentodeumasériedetestesondea cargaéconstantementeaumentadaatéqueo desempenhodosistemasetorneinaceitável. – TransaçõesemBD – Terminais
Testedeestresse • Sãoexercíciosdosistemaalémdesuacarga
máximadeprojeto.Oestressedeumsistema causa,freqüentemente,osurgimentode defeitos. Oestressedesistematestaocomportamentode omportamentode • Oestressedesistematestaoc falha,poisossistemasnãodevemfalhar catastroficamente.Otestedeestr catastroficamente.Otestedeestresseverifica esseverifica umaperdainaceitáveldeserviçooudedados. • Otestedeestresseépar-cular Otestedeestresseépar-cularmenterelevante menterelevante parasistemasdistribuídosquepodemexibir degradaçãoseveraquandoumaredesetorna sobrecarregada.
Testedeestresse • Exemplos – Poucamemóriaouáreaemdisco,altacompe-ção porrecursoscompar-lhados(ex:váriosacessos/ transaçõesnoBDourede)
– Exemplo:podesedesejarsaberseumsistemade transaçõesbancáriassuportaumacargademais de100transaçõesporsegundoouseumsistema operacionalpodemanipularmaisde200 terminaisremotos
Tiposdeteste • Testedesegurançaecontroledeacesso – Verificasetodososmecanismosdeproteçãode acessoestãofuncionandosa-sfatoriamente
• Testedeintegridadededados – Verificaacorretudedosmétodosdeacessoàbase dedadoseagaran-adasinformações armazenadas
Tiposdeteste • Testedeconfiguraçãoouportabilidade – Verificaofuncionamentoadequadodosistema emdiferentesconfiguraçõesdehardware/ soLware
– Oquetestar • • • •
Compa-bilidadedosoLware/hardware Configuraçãodoservidor TiposdeconexõescomaInternet Compa-bilidadecomobrowser
Tiposdeteste • Testedeinstalaçãoedesinstalação – Verificaacorretainstalaçãoedesinstalaçãodo sistemaparadiferentesplataformasdehardware/ soLwareeopçõesdeinstalação
– Oquetestar • Compa-bilidadedohardwareesoLware • Funcionalidadedoinstalador/desinstaladorsob múl-plasopções/condiçõesdeinstalação • GUIdoprogramainstalador/desinstalador
Tiposdeteste • Testededocumentação – Verificaseadocumentaçãocorrespondeàinformação corretaeapropriada.
• Testedeciclodenegócios – Garantequeosistemafuncionaadequadamente duranteumciclodea-vidadesrela-vasaonegócio `
•
Testedecomponentes • Testedecomponenteouunitárioéoprocesso detestedecomponentesindividuaisisolados. • Éumprocessodetestededefeitos.
• Oscomponentespodemser: – Funçõesindividuaisoumétodosdeumobjeto; – Classesdeobjetocomváriosatributosemétodos; – Componentescompostoscominterfacesdefinidas usadasparaacessarsuafuncionalidade.
Testedeclassedeobjeto • Aabrangênciadotestecompletodeuma classeenvolve – Testedetodasasoperaçõesassociadascomum objeto; – Atribuireinterrogartodososatributosdeobjeto; – Exercíciodoobjetoemtodososestadospossíveis.
• Aherançatornamaisdiciloprojetodetestes declassedeobjetoquandoasinformaçõesa seremtestadasnãosãolocalizadas.
Interfacedeobjetodaestação meteorológica
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testedaestaçãometeorológica • Necessidadededefinircasosdetesteparao relatarClima,calibrar,testar,iniciar, desa.var.
• Usandoummodelodeestado,iden-ficaras seqüênciasdetransiçõesdeestadoaserem testadaseasseqüênciasdeeventosque causamessastransições. • Porexemplo: – Aguardando>Calibrando>Testando> Transmi-ndo>Aguardando
Testedeinterfaces • Osobje-vossãodetectardefeitosdevidoa errosdeinterfaceousuposiçõesinválidas sobreinterfaces.
• Épar-cularmenteimportanteparao desenvolvimentoorientadoaobjetosquando osobjetossãodefinidospelassuasinterfaces.
Testedeinterfaces
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Tiposdeinterfaces • Interfacesdeparâmetros – Osdadossãopassadosdeumprocedimentoparaoutro. • Interfacesdememóriacompar-lhada – Umblocodememóriaécompar-lhadoentre procedimentosoufunções.
• Interfacesdeprocedimentos – Umsubsistemaenglobaumconjuntodeprocedimentos paraseremchamadosporoutrossubsistemas.
• Interfacesdepassagemdemensagem – Ossubsistemassolicitamserviçosdeoutrossubsistemas.
Errosdeinterface • Mauusodeinterface – Umcomponentechamadorchamaumoutro componenteefazmauusodesuainterface,por exemplo,parâmetrosemordemerrada.
• Mauentendimentodeinterface – Umcomponentechamadorconsiderasuposições sobreocomportamentodocomponentechamado queestãoincorretas.
• Errosde-ming – Oscomponenteschamadoechamadoroperamem velocidadesdiferentes,einformaçõesdesatualizadas sãoacessadas.
Diretrizesdetestedeinterfaces • Projetartestesdetalmodoqueosparâmetros • • • •
paraumprocedimentochamadoestejamnos limitesextremosdesuasfaixas. Testarsempreosparâmetrosdeponteirocom ponteirosnulos. Projetartestesquecausemafalhado componente. Usartestedeestresseems Usartestedeestresseemsistemasdepassag istemasdepassagem em demensagem. Emsistemasdememóriacompar-lhada,variara ordemnaqualoscomponentessãoa-vados.
Projetodecasosdeteste • Envolveoprojetodecasosdeteste(entradas esaídas)usadosparatestarosistema. • Ametadoprojetodecasosdetesteécriarum conjuntodetestesquesejameficazesem validaçãoetestededefeitos. • Abordagensdeprojeto: – Testebaseadoemrequisitos; – Testedepar-ções; – Testeestrutural.
Testebaseadoemrequisitos • Umprincípiogeraldeengenhariade requisitoséqueosrequisitosdevemser testáveis.
• Otestebaseadoemrequisitoséumatécnica detestedevalidaçãoondevocêconsidera cadarequisitoederivaumconjuntodetestes paraesserequisito.
RequisitosdoLIBSYS
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
TestesdoLIBSYS
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testedepar.ções • Dadosdeentradaeresultadosdesaídacaem freqüentementeemclassesdiferentes,onde todososmembrosdeumaclassesão relacionados. • Cadaumadessasclasseséumapar.çãode equivalênciaoudomíniosondeoprogramase comportademaneiraequivalenteparacada membrodaclasse. • Casosdetestedevemserescolhidosapar-r decadapar-ção.
Par.cionamentodeequivalência
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Par.çõesdeequivalência
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testeestrutural • Algumasvezeschamadodetestecaixa branca. • Éaderivaçãodecasosdetestedeacordocom aestruturadoprograma.Oconhecimentodo programaéusadoparaiden-ficarcasosde testeadicionais. • Oobje-voéexercitartodasasdeclaraçõesdo programa(nãotodasascombinaçõesde caminhos).
Testeestrutural
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Testedecaminho • Oobje-vodotestedecaminhoéassegurar queoconjuntodecasosdetesteétalque cadacaminhopeloprogramaéexecutado pelomenosumavez. • Opontodepar-dadotestedecaminhoéum fluxogramadeprogramaquemostraosnós querepresentamasdecisõesdoprogramae arcosquerepresentamofluxodecontrole. • Declaraçõescomcondiçõessão,portanto,nós nofluxograma.
Fluxogramadaro.nadebusca
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Caminhosindependentes • • • • •
1,2,3,4,5,6,7,8,9,10,14 1,2,3,4,5,14 1,2,3,4,5,6,7,11,12,5,… 1,2,3,4,6,7,2,11,13,5,… Casosdetestedevemserderivadosdetal modoquetodososcaminhossejam executados. • Umanalisadordinâmicodeprogramapode serusadoparaverificarseoscaminhosforam executados.
Complexidadeciclomá.ca(McCabe
• Medidadonúmerodecaminhos independentesemumprograma • Nãodependedotamanhodocódigo,masdos ramosnaestruturadecontrole • Émedidapore–n+2,ondeeéaquan-dade dearestasdografodecontroleenéa quan-dadedenósdografo • Númeromínimodecasosdetesteéigualà complexidadeciclomá-ca
Complexidadeciclomá.ca CFG1
CFG2
CFG3
V(g)= 1 – 2 + 2 = 1
V(g)= 5 – 6 + 2 = 1 IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
V(g)= 8 – 6 + 2 = 4
Complexidadeciclomá.ca • Baixaamoderada(abaixode20)indicaum programasimples • Alta(acimade20)indicaumprograma complexo • Muitaalta(acimade50)caracterizaum programamuitodicildetestar
Complexidadeciclomá.ca • Sinaldeestruturadecontroledefluxo complicada • Nãocapturaoutrosaspectosdadificuldade lógicaquepodemlevaradificuldadesnoteste • Poucasevidênciasdequeéumaferramenta deprevisãodeesforçodetestemaisconfiável doquelinhasdecódigo
Automaçãodeteste • Testeéumafasedispendiosadoprocesso.Os workbenchesdetestefornecem workbenchesdetestefornecemumavariedade umavariedade deferramentasparareduzirotemponecessário eoscustostotaisdeteste. • SistemastaiscomooJUnitapóiamaexecução automá-cadetestes. • Amaioriadosworkbenchesdetestesãosistemas abertosporqueasnecessidadesdetestesão específicasdaorganização. • Elessão,algumasvezes,diceisdeintegrarcom workbenchesdeprojetoeanálisefechados.
Umworkbenchdetestes
IanSommerville,EngenhariadeSoLware,8ª.edição.Capítulo23
Leiturasrecomendadas • SOMMERVIE,I.EngenhariadeSoLware.9ª. Ed.SãoPaulo:PearsonEduca-on,2011 – Capítulo23