Home

Automação de Testes Baseados em Cenários com UML e

image

Contents

1. Y Tabela 6 1 Matriz de cobertura de caracter sticas dos casos de teste Analisando a matriz de cobertura de caracter sticas poss vel concluir que todas as features de modela o de teste tipos de erros e n veis de cobertura s o testados com sucesso em pelo menos um caso de teste tal como era pretendido ainda vis vel que em duas situa es n o produzido o resultado desejado ambas na funcionalidade an lise de cobertura A primeira no caso de teste Observer acontece devido limita o da biblioteca Tracing Utilitites que n o deteta convenientemente a execu o de m todos externos Dada a exist ncia de mensagens deste tipo no exemplo Observer estas mensagens s o erradamente assinaladas como n o executadas Em rela o segunda falha que acontece num dos diagramas definidos no caso de teste Spreadsheet 64 Valida o Engine esta deve se forma utilizada para modelar exce es cuja codifica o n o permite detetar em que mensagem exata foi lan ada a exce o sendo apenas detetada no final 6 2 Experimenta o num projeto existente Para uma mais robusta valida o da implementa o das novas funcionalidades recorreu se a um projeto j existente documentado e implementado para nele serem executadas as novas funci onalidades de execu o do c digo de teste e apresenta o de resultados no pr prio modelo UML O objetivo era encontrar discrep ncias entre a especifica o e im
2. E Pacote n vel 2 5 Pacote n vel N J Classe de teste 1 Cen rio de teste 1 Lpp Diagrama de Sequ ncia Cen rio de teste 2 i PF Diagrama de Sequ ncia Classe de teste 2 Cen rio de teste 3 PF Diagrama de Sequ ncia E Cen rio de teste 4 Ff Diagrama de Sequ ncia Cen rio de teste 5 PF Diagrama de Sequ ncia Figura 5 3 Estrutura de pastas de um modelo exemplificativo correto Caso a estrutura de pastas do modelo comportamental n o siga as regras previamente definidas como por exemplo acontece em 5 4 onde apenas est o presentes 2 n veis de pastas apresentada a mensagem de erro ilustrada em 5 5 e interrompida a gera o ou execu o do modelo State hm Ray ty E Model 3 ED Nivel a E N vel 2 PF Diagrama de Sequ ncia Figura 5 4 Estrutura de pastas de um modelo exemplificativo n o correto 49 Utiliza o da ferramenta TestGenerator ERROR Project structure badly formed Must have at least one folder for each package test and method Figura 5 5 Mensagem de erro alertando m forma o do modelo 5 4 Invoca o do gerador e executor de testes Nesta sec o descrito o processo de invoca o do gerador e executor de testes do FEUP SBT 2 0 Inicialmente apresentado como poss vel ao utilizador escolher um fragmento do modelo para testar e posteriormente s o apresentadas os quatro modos de opera o analisando as diferen as entre si 5
3. if amount lt balance Pd eee if log true ii else l4 Excerto de C digo B 7 Codifica o dos fragmentos combinados do exemplo ATM isolados Para os anteriores fragmentos codificados em intera es internas e nos restantes fragmentos combinados s o codificados de forma semelhante s chamadas recorrendo a estruturas do Tracin gUtilities id nticas j analisada Call Por cada fragmento combinado suportado existe uma estrutura que deve ser utilizada para o codificar Esta rela o encontra se expressa na tabela B 1 onde em cada linha apresentado um fragmento combinado suportado pelo FEUP SBT 2 0 o construtor da estrutura que lhe corresponde e uma sum ria descri o desse construtor 89 Interpreta o do c digo de teste gerado Fragmento Combinads Construtor da Estrutura Descri o diagramObjectID representa o Alternativa CombAlt int identificador do fragmento no Enter alt diagramObjectID prise Architect e args as mensagens GaliNods args que ocorrer o para cada alternativa diagramObject ID representa o Opcional Combopt iat identificador do fragmento no En on diagramobjecst TD terprise Architect e args o con CallNode aves junto de mensagens cuja execu o depender de uma condi o diagramOb ject ID representa o iden Entrela ado CombInter int tificador do fragmento no Enterprise inter diagramObject ID Call Architect e args o conjunto de
4. n o forem executadas Edi o das notas de mensagens ou fragmentos combinados Para al m da edi o da cor das mensagens com erro explicado nos par grafos anteriores ainda adicionado s Notas Notes de cada uma dessas mensagens o resumo do erro respetivo sem preju zo de notas introduzidas diretamente pelo utilizador O resumo do erro efetuado retirando todo o tra o de execu o que inclu do no resultado da execu o mantendo se apenas o cabe alho que sucintamente indica o erro ocorrido No exemplo ATM com erro a mensagem de retorno pintada a vermelho em 5 12 teria inclu da nas suas notas o erro respetivo tal como ilustrado em 5 15 A edi o das notas acompanha a colora o das notas no que toca tamb m aos casos especiais de exce es UnexpectedCallException e fragmentos combinados Alt Colora o dos par metros de teste Esta op o s acontece caso o diagrama de sequ ncia contenha um bloco de Par metros Pa rameters tratando se assim de um cen rio de teste parametrizado onde poss vel verificar o comportamento do mesmo cen rio para diferentes combina es de valores de par metros casos 57 Utiliza o da ferramenta Execution result expected Errolnjetado gt but was FAIL Figura 5 15 Edi o das notas da mensagem com erro do exemplo ATM de teste Como poss vel verificar na base da figura 5 7 encontram se definidos 2 casos de teste que ser o executados sep
5. o de utilizar sempre a localiza o definida sem voltar a questionar o utilizador Assim sendo caso esta op o esteja desativada cada vez que invocada a gera o ou execu o dos testes aberta uma janela para sele o manual da localiza o do c digo fonte cuja primeira localiza o a definida no menu 5 3 Cria o de um modelo test vel Com o objetivo de aumentar a robustez dos modelos UML exigido ao utilizador inserir os diagramas de sequ ncia numa estrutura de pacotes estipulada Esta estrutura necess ria para a 47 Utiliza o da ferramenta a Preferences bo x Select default path of source code C Users mariofalcao Desktop ob Use always default folder defined above Path of JUnit jar file C junit4 10 junit 4 10 jar Path of AspectJrt jar file C aspectj1 6Nib aspectit 1 6 12 jar Location of traceutils jar file C Users mariofalcao Desktop traceutils jar Location of javaagent jar file C aspectj1 6 ib aspectiweaver jar Figura 5 2 Menu de Configura o cria o de um modelo test vel de f cil compreens o e exige um m nimo de 3 camadas de paco tes dentro do pacote principal Dynamic View inserido automaticamente pelo Enterprise Architect aquando da cria o de um modelo comportamental Estas 3 pastas simbolizam respetivamente o pacote package a classe e o m todo de teste sendo que para representar o pacote de testes pode ser utilizado um n mero qualquer
6. possibilidade do resultado ser apresentado tanto no StandardOutput em caso de execu o sem erros como no StandardError em caso de erros haveria a possibilidade de ocorr ncia de um impasse deadlock que foi resolvida recorrendo utiliza o de handlers AutoResetEvent impondo uma execu o n o concorrente Os comandos utilizados para compilar e executar o c digo de teste s o respetivamente o javaceo java sendo efetuados de forma absolutamente transparente para o utilizador Exem plos de instru es para compila o e execu o do c digo de teste est o presentes em 4 2 e 4 3 not ria a indica o das bibliotecas imprescind veis para o correto funcionamento do add in Tracing Utilities JUnit e AspectJ javac cp mainPath lt path gt junit lt version gt jar lt path gt aspectjrt 1 6 12 jar lt path gt traceutils jar mainPath package java Excerto de C digo 4 4 Exemplo de comando de compila o utilizado pelo FEUP SBT 2 0 javac cp mainPath lt path gt junit lt version gt jar lt path gt aspectjrt 1 6 12 jar lt path gt traceutils jar javaagent lt path gt aspectjweaver jar org junit runner JUnitCore packageName testName Excerto de C digo 4 4 Exemplo de comando de execu o utilizado pelo FEUP SBT 2 0 40 Conce o e implementa o gt TestGeneratorExceptionError Class Fields combinedFragmentID ex
7. 4 3 4 Feedback de sucesso insucesso dos testes no Enterprise Architect Com os poss veis erros detetados na execu o do c digo de teste registados na rvore de n s ProjectHierarchyNode o add in encontra se pronto para analisar a estrutura e editar o modelo em fun o dessa an lise Estas edi es s o realizadas percorrendo a rvore e editando cada peda o desta de acordo com o seu resultado de execu o 41 Conce o e implementa o Estere tipos Uma das formas de edi o do modelo UML a atribui o de estere tipos aos pacotes do modelo facilitando ao utilizador perceber que parte do modelo foi testada e qual o resultado dessa execu o utilizado o atributo Stereot ypeEx de cada pacote Package que aloca separado por v rgulas todos os estere tipos do pacote em causa Os estere tipos definidos pelo add in n o comprometem os anteriores definidos pelo utilizador adicionando simplesmente a estes a etiqueta em fun o do resultado da execu o e removendo a apenas na altura de limpar o modelo para uma nova execu o S o utilizadas quatro etiquetas por conven o que ser o associadas a um dado pacote Falhou Failed Passou Passed N o Testado NotTested e Incompleto Incomplete A primeira etapa neste processo de edi o percorrer todos os n s do tipo Classe ou seja todas as classes e editar o estere tipos dos seus n s filhos m todos de teste como Passed ou Failed se esse m todo f
8. direita encontra se a mesma mensagem da imagem esquerda percorrida at baixo Explorador de Projetos com os estere tipos dos pacotes editados pelo FEUP SBT DO og ie a BO Mee age ee e T ake ww agen EO E E ast as Galea qa Mensagem pintada de vermelho assinalando erro de execu o Colora o do modelo aquando de UnexpectedCallException Colora o do modelo caso todas as alternativas de um fragmento combinado Alt n o forem executadas 2 a Edi o das notas da mensagem com erro do exemplo ATM xi 6 8 16 17 17 21 22 23 28 29 30 31 37 41 44 47 48 49 49 50 51 53 54 55 39 56 56 af a 58 LISTA DE FIGURAS 5 16 Bloco de par metros pintado conforme resultado da execu o 5 17 Exemplo ATM com inje o de erros ap s execu o analisando cobertura 5 18 Classes e m todos de teste analisados em fun o da sele o do utilizador 6 1 6 2 6 3 6 4 6 5 Al A 2 A3 A4 AS A 6 A A 8 A 9 Diagrama de sequ ncia do caso de teste Observer 2 004 Diagrama de classes do projeto FileDiff 2 ee Diagrama de sequ ncia vers o 1 original do projeto FileDiff Diagrama de sequ ncia vers o 2 test vel do projeto FileDiff j colorido de acordo com os resultados da execu o 2 2 ee ee Diagrama de sequ ncia vers o 3 corrigida do projeto FileDiff j colorido
9. es de menu como mostra a figura 5 6 onde a vermelho aparecem as mesmas assinaladas S o estas Executar os Testes Execute Tests Executar os Testes Analisando Cobertura Execute Tests Checking Coverage Gerar JUnit a partir dos Diagramas de Sequ ncia Generate JUnit from 50 Utiliza o da ferramenta Sequence Diagrams e por ltimo o Analisador de UML UML Checker A quinta op o o Menu de Configura o que j foi abordado previamente na Sec o 5 2 Project Browser Bees w Aa t i Model 5 Dynamic View 5 Pacote n vel 1 E Pacote nivel 2 5 0 core nivel n 3 ED Classe1 Add In gt Test Generator gt Execute Tests i peel Properties 5 iim Classe2 Package Control gt a J M todo a E M todo a E M todd Linked Document Ctrl Alt D Logical View Execute Tests Checking Coverage Generate JUnit from Sequence Diagrams UML Checker tear Preferences Documentation Cade Ennineerina bl Figura 5 6 Menu para escolha da funcionalidade pretendida Das quatro funcionalidades poss vel agrupar as tr s primeiras num grupo de gera o e exe cu o de testes sendo a quarta UML Checker mais de controlo Nesta ltima funcionalidade n o existiu interven o no mbito desta disserta o pelo que n o ser analisada t o detalhadamente quanto as restantes No entanto o seu funcionamento explicado em FPY12 O UML Checker permite ao utilizado
10. fun o assertEquals para verificar os valores de retorno As intera es externas s o tamb m analisadas sendo apenas apresentada uma no c digo em 2 1 como exemplo atendendo s limi ta es de espa o Nestas situa es criada uma rvore de execu o onde s o estruturadas as chamadas que est o previstas ocorrer para no fim esta ser confrontada com a rvore de execu o resultante da pr pria execu o do c digo Em rela o ao segundo cen rio utilizada uma classe auxiliar Console criada para lidar com a interface de utilizador sendo utilizada novamente a 10 Ur n An lise do prot tipo existente fun o assertEquals para confirmar valores de retorno package and import declarations ommitted public class SpreadsheetTest extends InteracTestCase 3 public void testSpreadsheetAPI double xVal char op double cVal double yVal String yExpr Spreadsheet s new Spreadsheet s Cell x s addCell x Cell y s addCell y x setValue xVal ObjHandler lt CellRef gt r new ObjHandler lt CellRef gt ObjHandler lt Const gt c new ObjHandler lt Const gt ObjHandler lt BinOp gt f new ObjHandler lt BinOp gt Trace expect new Call Cell setFormula y yExpr null new CallStub Parser null parse args s yExpr f new CombPar new CombStrict new Call Spreadsheet getCellByName s x x new Constr CellRef r x new Constr Const c cVal
11. gt compile ready agg ipraries O empty methods Check model Traces execution iterate Tests of methods amp constructors Test generator Add in for EA Tracing VE ST RU Utilities Diagrams Hses AspectJ o O Test results Figura 4 1 Abordagem do FEUP SBT 2 0 processo Este diagrama encontra se ilustrado na figura 4 2 sendo de seguida apresentada uma breve descri o de todas as etapas nele inseridas Assinalados a cor garrida est o os dois compo nentes que comp em o FEUP SBT 2 0 o add in TestGenerator para o Enterprise Architect e a biblioteca Java para an lise do tra ado e cobertura TracingUtilities O processo inicia se atrav s da constru o por parte do utilizador do modelo UML mais especificamente os diagramas de sequ ncia bem como a aplica o a testar etapa 1 A etapa 2 tamb m da responsabilidade do utilizador e passa por mandar executar o plug in FEUP SBT 2 0 que depois interpreta o modelo UML desenhado etapa 3 De seguida o plug in gera o c digo de teste JUnit e instala a biblioteca auxiliar Tracing Utilities etapa 4 e posteriormente executa o Test Runner do JUnit etapa 5 Este Test Runner executa o c digo de teste JUnit etapa 6 que por sua vez invoca a aplica o a testar etapa 7 utilizando a biblioteca TracingUtilities etapa 8 para fazer o tra ado da aplica o a testar etapa 9 Na fase final o Test Runner JUnit gera os resultados etapa 10 que
12. o f Testes JUnit Resultados Testes JUnit do diagrama Resultados Es executa apresen executa Feedback inicial com apresentados dos pelo tados pela dos pelo o resultado e Ea no modelo O 7 utilizador ferramenta utilizador O da execu o Gera o 7 7 f Sim O N o N o Sim Sim O de stubs Vers o UML UML 1 x UML 1 x UML 2 x 0 UML 2 x suportada f a Disponivel r a N o dis Dispon vel WEB Prot tipo i Disponibilidade para experi pon vel O sem custos O offline O interno i menta o O Especificados Cen rios Cen rios separada parame parame Dados Separados do mente do Separados do trizados e trizados e de teste diagrama O diagrama O diagrama O f dados de teste dados de teste codificados separados separados hardcoded Java SmallTalk Linguagens Java potencial Java Java Java Alvo o para v rias outras O Captura das Captura Captura Captura i z Captura em intera es intera es N o O recorrendo recorrendo f listagens internas internas a AOP O a AOP O Inttps feupload fe up pt get 116y7nv72cBgeo0o 69 Valida o p 7 Verifica auto Verifica auto Verifica o i 7 dasi Verifica Verifica o maticamente maticamente as in automati manual pelo 0 atendendo atendendo tera es a camente utilizador O conformidade conformidade
13. o com sucesso desta opera o 1 Aceder as Propriedades do Sistema no separador Avan adas clicando em Iniciar Executar ou atrav s das teclas de atalho Windows R e introduzindo systempropertiesadvanced 2 Clicar em Vari veis de ambiente no canto inferior direito da janela 3 Dentro da caixa Vari veis do sistema clicar em Novo a Como Nome da vari vel utilizar JAVA HOM Ea b Em Valor da vari vel colocar a localiza o da instala o do Java JDK Por exemplo C Program Files Java jdk1 7 0_07 c Clicar em Ok 4 Verificar se j existe uma chave com o nome CLASSPATH Se n o existir cri la da forma explicada no ponto 3 a Se sim fazer duplo clique sobre ela para abrir o seu menu de edi o a Acrescentar os seguintes caminhos ao Valor da vari vel F JAVA_HOME 3 1lib SJAVA_HOME lib tools jar S JAVA_HOME S lib dt jar JAVA_HOME S lib htmlconverter jar SJAVA HOMESNjreNlib SJAVA_HOME jre lib rt jar b Clicar em Ok 5 Novamente na caixa Vari veis do sistema fazer duplo clique na chave Path a Acrescentar o seguinte texto ao Valor da vari vel SJAVA HOMES Nhbin b Clicar em Ok 6 Clicar em Ok na janela Vari veis de ambiente e Propriedades do sistema Por forma a constatar a correta instala o do Java JDK escrever o comando javac version na linha de c
14. o do FileDiff Ilustrado em 6 3 encontra se esta primeira vers o do diagrama de sequ ncia No entanto esta n o se encontrava num estado test vel originando imediatamente erros de com pila o Entre outras especificidades este diagrama conta com instru es em pseudo c digo como por exemplo a ltima mensagem do diagrama number of lines added modified deleted and unchanged n o podendo assim ser compilado o c digo gerado a partir do mesmo A etapa que se seguiu foi adaptar a vers o 1 original do diagrama de sequ ncia para uma vers o 2 considerada test vel isto compil vel e execut vel De seguida s o apresentadas as altera es efetuadas neste processo encontrando se o seu resultado ilustrado em 6 4 Foi assim alterada a intera o com o utilizador passando se a recorrer s keywords start e display para respetivamente iniciar o processo e receber informa o A utiliza o da op o da mensagem Assign To que n o suportada pelo FEUP SBT 2 0 foi substitu da pela cria o de inst ncias para cada objeto O uso da op o Condition do bloco Sequence Expression das op es da mensagem foi tamb m alterado utilizando se ao inv s fragmentos combinados opt Todas as vari veis utilizadas no caso de teste como as op es ou o nome dos ficheiros a comparar foram 65 Valida o Returns a new ArrayList because deletions in ArrayList s are inefficient readFileToAmayList filename
15. 1 Gerador e executor de testes TestGenerator 4 2 2 Biblioteca para an lise do tra ado de execu o Tracing Utilities 4 3 Concretiza o das principais funcionalidades 4 3 1 Constru o do m dulo de configuragdes 2 4 3 2 Representa o em mem ria da estrutura do modelo 4 3 3 Execu o dos testes a partir do Enterprise Architect 4 3 4 Feedback de sucesso insucesso dos testes no Enterprise Architect 4 3 5 Informa o de cobertura dos testes 0 Utiliza o da ferramenta 5 1 Instala o sso ee 52 Configura o ance e Se Mad a el a O A ee 5 3 Cria o de um modelo test vel 2 2 0 02 000 5 4 Invoca o do gerador e executor de testes 5 4 1 Sele o de excerto do modelo atestar 5 4 2 Sele o do modo de opera o 004 5 5 Interpreta o de resultados de execu o 1X W N e m 19 19 19 20 22 23 27 2 28 29 32 35 35 36 38 41 43 CONTE DO 6 Valida o 6 1 Casos de teste e an lise de cobertura de caracter sticas 6 2 Experimenta o num projeto existente ooo 6 3 An lise comparativa em rela o ao estado da arte e vers o anterior 6 4 Limita es detetadas l clccccccccll ee 7 Conclus es 7 1 Resultados alcan ados 2 ee 7 2 Trabalho futuro o eao o oae e e i a a E ee A Tutorial de instala
16. API do mecanismo de folhas de c lculo 16 Figura 2 4 An lise do prot tipo existente display 2 0 Diagrama de sequ ncia UML para teste da Interface do mecanismo de folhas de c l 1S Pac h Hie after 0 655 seconds v Stem E Runs 5 5 O Eros 1 O fadures O fu spreadsheettest SpreadsheetTe Gh testSpreadsheetAPLO 0 203 Gil testSpreadsheetAPLt 0 000 p Gil testSpreadsheetAPl_2 0 000 Gh testSpreadsheetAPI 3 0 000 hl testSpreadsheetCL 0 374 5 Failure Trace 48 java lang RuntimeException traceu E at traceutils Trace endExpected Tra at traceutils Trace ajcSprivMethodt E a traceutils TracesTraceCalis ajcSa Sat E at crroarichostonnine Call netValie e O D SpreadsheetTest java BinOpjava 2 Pes 2 blic class BinOp extends Formula 4 private char op private Formula lhs rhs 7 public BinOpichar op Formula lhs Formula ri E this op op this lhs lhs this rhs rhs E 1357 public double eval throws CircularReferenc 15 case return lhns eval rhs eval 16 case return lhs eval rhs eval 7 case return lhs eval rhs eval case return lhs eval rhs eval 19 default return 0 0 2 2 k 23 gt public String toString we m Figura 2 5 Execu o e verifica o dos testes gerados 17 An lise do prot tipo existente 18 Cap tulo 3 An lise do estado da arte Neste cap
17. Assemblagem Re gasm exe 3 Adicionar a chave respetiva no Editor de Registos regedit 4 Confirmar que o Enterprise Architect deteta a presen a do add in 5 2 Configura o Na presente sec o apresentado o m dulo de configura es do FEUP SBT 2 0 que com posto por um conjunto de informa es necess rias para o funcionamento pleno do add in e infor ma es adicionais para facilitar a utiliza o do mesmo De seguida demonstrado como podem ser definidas todas as op es no menu de configura o O menu de configura o pode ser invocado atrav s das op es de menu do add in Tal como apresentado em 5 1 basta clicar com o bot o direito do rato numa qualquer pasta do Explorador de Projeto Project Browser clicando em Add In seguido de Test Generator e por ltimo Pre ferences Este menu pode ser automaticamente aberto caso seja detetado que alguma informa o necess ria n o est ainda definida Apresentado numa nica janela o menu de configura o encontra se dividido em 2 camadas de configura o Configura es Gerais General Preferences e Configura es do Projeto Atual Current Project Preferences Tal como o t tulo sugere as Configura es Gerais s o respons veis 46 Utiliza o da ferramenta Project Browser acima ts a amp Lol i Paape Casket x Execute Tests Checking Coverage Generate JUnit from Sequence Diagrams Rename Model UML Checker E Ne
18. adicionado s notas Notes desse elemento o resultado simplificado isto sem tra agem do erro Uma vez mais esta edi o n o compromete anteriores notas inseridas pelo utilizador No final de cada altera o refresca se o elemento em quest o colocando em execu o as altera es efetuadas Edi o dos par metros de teste Em cada cen rio de teste que se conclua que foi executado verificando se este consta na lista de cen rio de teste a executar definida quando o utilizador invoca o add in verificado se o cen rio cont m par metros de teste verificando se o atributo parametersBlockID de cada n tipo M todo da rvore est atribu do 42 Conce o e implementa o Os cen rios onde se verifique a exist ncia de par metros de teste s o confrontados com o re sultado da sua execu o Caso este n o tenha produzido erros todos os casos de teste s o pintados de verde Se existirem erros analisado o atributo Test Index de cada estrutura representativa de um erro e pintado de vermelho o caso de teste a que corresponde 4 3 5 Informa o de cobertura dos testes O algoritmo idealizado para a implementa o desta funcionalidade adicional acompanha a implementa o do modo de execu o b sica isto colocada a informa o necess ria no resul tado da execu o Posteriormente este resultado interpretado pelo add in que de seguida atua em fun o dessa an lise Em rela o inter
19. at org junitrunners Suite runChild Suite java 24 at org junit runners ParentRunner 3 run_aroundBody0 ParentRunner java 231 dike comm 410 at org junitrunners ParentRunner 3 run ParentRunner java 231 at org junitrunners ParentRunner 1 schedule aroundBody0 ParentRunner java 60 Time 0 081 at org junit runners ParentRunner 1 schedule ParentRunner java 60 There was 1 failure at org junitrunners ParentRunner runChildren Rabi ideia java 229 m 1 testATM_O ATM ATMTest at org junit runners ParentRunner runChildren ParentRunner java junit framework ComparisonFailure DiagramMessagelD 10 expected lt fErrolnjetado gt but was lt FAIL gt at org junit runners ParentRunner access 000_aroundBody48 ParentRunner java 50 at junit framework Assert assertEquals_aroundBody16 Assert java 85 at org junitrunners ParentRunner access 000 ParentRunner java 50 at junit framework Assert assertEquals Assert java 80 at org junitrunners ParentRunnerS2 evaluate aroundBodyO ParentRunner java 222 at traceutils InteracTestCase assertEquals InteracTestCase java 203 at org junitrunners ParentRunnerS2 evaluate ParentRunner java at ATM ATMTesttestATM aroundBodyO ATMTest java 25 at org junitrunners ParentRunner run aroundBody30 ParentRunner java 300 at ATMATMTesttestATM ATMTestjava 13 at org junit runners ParentRunner run ParentRunner java 296 at ATM ATMTesttestATM_0_aroundBody2 ATMTest java 30 La at org junitrunner JUnitCore run aroundBo
20. check the correct evolution of development In this report it s initially presented an analysis of the prototype FEUP SBT 1 0 and the state of the art on the theme automated testing based on UML sequence diagrams Later is described the conception and implementation of the solution and the usage manual of FEUP SBT 2 0 Finally is presented the validation process applied to the features implemented iii iv Agradecimentos Este trabalho de disserta o culmina um longo percurso o Mestrado Integrado em Engenharia Inform tica e Computa o no qual devo v rios agradecimentos Em primeiro lugar ao meu orientador Prof Jo o Carlos Pascoal de Faria pela total disponi bilidade e pelo incans vel entusiasmo dispensados durante os ltimos meses na orienta o deste trabalho o meu muito obrigado Agrade o Iris principal respons vel pelo ponto de viragem vital nesta caminhada pela con fian a e serenidade que todos os dias me transmite Aos meus pais cujo orgulho neste trajeto sempre se manteve inabal vel agrade o a estabili dade e carinho que sempre me ofereceram Agrade o minha fam lia pilar indispens vel pelo apoio e orgulho inesgot veis Aos meus colegas pela honra que me deram em juntos ultrapassarmos os in meros desafios com que nos deparamos agrade o a amizade Aos professores com quem tive o privil gio de interagir ao longo do meu percurso acad mico agrade o os incont veis ensinamentos e o
21. de acordo com os resultados da execug4o 2 2 a Registo da biblioteca TestGenerator dll 2 0 2 2 2 0000 Meio de acesso ao Editor de Registos 20 0000 00004 Adi o de uma nova chave no Editor de Registos 04 Estrutura de pastas no final do Passo4 0000000000 0 Estrutura de pastas no final do Passo5 0 00000 Edi o do valor de uma chave no Editor de Registos 0 Valor padr o da chave TestGenerator 0 20 20 0000004 Acesso ao Gestor de Add Ins do Enterprise Architect 0 Verifica o da instala o com sucesso do add in 1 2 0000 A 10 Verifica o da instala o com sucesso do Pacote de Desenvolvimento Java JDK B 1 B 2 B 3 B 4 B 5 B 6 Construtor de Account no exemplo ATM 0 2 00004 Exemplo de mensagem com retorno no exemplo ATM Exemplo de intera es internas no exemplo ATM 0 2 Fragmentos combinados do exemplo ATM isolados Exemplo de intera o com o utilizador 2 ee ee Modela o de uma exce o em UML ccccccclc 00 0008 xii 86 87 88 89 94 95 Lista de Tabelas 21 3 1 4 1 4 2 4 3 6 1 6 2 B 1 Funcionalidades suportadas pelo prot tipo 2 20004 Tabela comparativa das abordagem com o FEUP SBT 1 0 Codifica o das intera es com aplica o cliente no FEUP SBT 1 0 e FE
22. de ocorr ncia Esta a forma gen rica para a cria o de cen rios parametrizados public void testATM double balance double amount boolean log String date String type throws Exception public void testATM 0 throws Exception testATM 100 150 true 01 01 01 NoMoney public void testATM_1 throws Exception testATM 100 50 false 01 01 90 Money Excerto de C digo B 2 Estrutura dos m todos de teste do exemplo ATM B 2 Teste de API Definida a estrutura da classe de teste segue se uma descri o mais pormenorizada da codifi ca o de mensagens e fragmentos combinados do modelo em c digo de teste As mensagens nas quais n o existe intera es externas restringindo se assim s mensagens dirigidas diretamente de e para o Ator definido no diagrama de sequ ncia s o codificadas de uma forma simples Se n o existir retorno a mensagem codificada diretamente Por exemplo no construtor da figura B 1 codificado diretamente pelo construtor presente no excerto de c digo B 3 a Account I Figura B 1 Construtor de Account no exemplo ATM 86 Interpreta o do c digo de teste gerado i Account a new Account balance Excerto de C digo B 3 Construtor de Account no exemplo ATM Caso uma mensagem apenas de intera o externa possua mensagem de retorno como o caso do exemplo da figura B 2 esta codificada com recurso ao m todo J
23. de teste 5 i PF Diagrama de Sequ ncia Figura 5 18 Classes e m todos de teste analisados em fun o da sele o do utilizador Project Browser Project Browser 60 Project Browser a ar Pacote n vel 1 a Pacote nivel 2 y Ga Pacote nivel N Oo lasse de teste a C Cen rio de teste 1 BP Diagrama de Sequ ncia 6 Cilfenkie detested PF Diagrama de Sequ ncia gt DEE esa since anions de _ es Diagrama de Eus leE PF Diagrama de Sequ ncia Bi Dynamic View Go Pacote n vel 1 3 Pacote n vel 2 amp E Pacote nivel N 5 gt Please deteste ISAT see Diagrama de Aa BP Diagrama de Sequ ncia o lascas PF Diagrama de Sequ ncia C i PF Diagrama de Sequ ncia Oo BP Diagrama de Sequ ncia 5 E Dynamic View E Pacote n vel 1 E Pacote n vel 2 ao Pacote nivel N E C Classe de teste 1 a E Cen rio de teste1 PF Diagrama de Sequ ncia 5 oO Cen rio de teste 2 i PF Diagrama de Sequ ncia 3 O Glesse de teste 2 E Cen rio de teste 3 ragrama de Sequ ncia E Cen rio de teste 5 PF Diagrama de Sequ ncia Cap tulo 6 Valida o Neste cap tulo apresentado o processo de valida o a que foi sujeita a implementa o descrita anteriormente S o apresentados os casos de teste utilizados ao longo do trabalho e a an lise de cobertura de funcionalidades para cada um deles ainda demonstrada a e
24. efetuado com sucesso id ntica presente em A 1 C N gt C NWINDOUSNMicrosoft NETNFramevorkNu2 6 56727 Regfsm exe C EAA nerator dl1l codebase Microsoft R gt NET Framework Assembly Registration Utility 2 0 50727 Copyright lt C gt Microsoft Corporation 1998 2004 All rights reserved Types registered successfully Hd Figura A 1 Registo da biblioteca TestGenerator dll Passo 3 obtendo uma resposta ddins TestGe 5426 Seguidamente necess rio que o Enterprise Architect reconhe a a presen a do add in FEUP SBT 2 0 Para tal deve ser colocada uma nova entrada no registo utilizando o Editar de Registos Win12 poss vel aceder ao Editor de Registos clicando em Iniciar Executar ou atrav s das teclas de atalho Windows R e introduzindo regedit conforme est expresso em A 2 Escreva o nome de um programa pasta documento ou recurso da Internet e o Windows abri lo Abrir regedit w WB Esta tarefa ser criada com privil gios administrativos x Cancelar Procurar Figura A 2 Meio de acesso ao Editor de Registos Passo 4 Aberto o Editor de Registos deve ser localizado o caminho apresentado na Instru o A 3 Deve ser criada dentro da localiza o referida uma chave com o nome ainda n o exista A figura presente em A 3 demonstra o processo de adi EAAddins caso esta o de uma nova chave Para validar as opera es referidas nes
25. f rmulas seguem a sintaxe y x op cVal por exemplo y x 2 tendo posteriormente de ser convertidas de texto para uma representa o em rvore na mem ria Este processo orquestrado pelo analisador Parser que ainda n o est implementado mas que j pode fazer parte do processo de teste sendo este o principal objetivo da utiliza o de stubs Para tirar partido das funcionalidades do UML 2 x utilizado um fragmento combinado que permite de forma r pida e concisa definir diferentes tra ados autorizados na execu o do di agrama S o utilizados dois fragmentos combinados par abreviatura de paralelo parallel atendendo a que o processamento do lado esquerdo hs e do lado direito rhs das express es pode ser realizado paralelamente que na defini o do UML n o significa que ocorram ao mesmo tempo antes que possam ocorrer por qualquer ordem OMG11 tanto na fase de atribui o de uma f rmula a uma c lula como na posterior verifica o do seu valor J em rela o ao diagrama de sequ ncia presente na figura 2 4 este representa como um uti lizador pode interagir com mecanismo de folhas de c lculo atrav s da interface por linha de co mandos definida apresentando ainda como se espera que a classe encarregue de lidar com as intera es do utilizador SpreadSheetCLI interaja por si s com os restantes elementos da aplica o No diagrama podemos verificar que em termos de intera es ex
26. internas definida O definida O Desenho dos Desenho de diagramas Desenho de f Desenho dos f Defini o diagramas gera o e diagramas diagramas E Interface de da SMC no Rational E execu o o no Together e gera o Utilizador no Eclipse Rose dos testes e UI da dos testes i UD en a Modeling Website para an lise dos aplica o n o atrav s dos j Framework execu o resultados dispon vel menus do EA f dos testes diretamente no EA O Verifica Verifica Verifica o NE Ea consist ncia consist ncia da Con 7 a N o N o N o e comple e comple sist ncia tude dos tude dos do Modelo modelos modelos An lise de E 7 N o N o O N o O N o O Sim O Cobertura Tabela 6 2 Tabela comparativa das abordagem com o FEUP SBT 1 0 Desta nova an lise comparativa entre as v rias abordagens estudadas e as duas vers es da ferramenta FEUP SBT poss vel verificar que os pontos fortes do FEUP SBT 2 0 em rela o s restantes a abordagem utilizada e feedback e consequentemente a usabilidade da interface para o utilizador que possibilita um processo de teste e an lise dos resultados na mesma ferramenta sem necessidade de a es extra Para al m disso a nova funcionalidade de an lise de cobertura um aditivo bastante til experi ncia de teste que n o se encontra presente nas outras abordagens Em rela o aos pontos fracos a limita o da linguag
27. janela do m dulo de configura es e especificidades do mesmo Iera o 10 19 11 2012 a 23 11 2012 Corrigir v rios erros encontrados ap s teste mais profundo Verificar possibilidade de desenvolvimento nova funcionalidade An lise de cobertura Iera o 11 26 11 2012 a 30 11 2012 Implementar funcionalidade de An lise de Cobertura em casos simples Iera o 12 03 12 2012 a 07 12 2012 Adaptar a solu o implementada para An lise de Cobertura para casos mais comple XOS Iera o 13 10 12 2012 a 14 12 2012 Alterar a funcionalidade An lise de Cobertura isolada para incluir erros de execu o Montagem de exemplo para cobertura dos v rios aspetos a testar Exemplo ATM Iera o 14 17 12 2012 a 21 12 2012 Corrigir erros e validar o exemplo ATM Iera o 15 02 01 2013 a 21 01 2013 Validar num sistema real existente Elaborar Relat rio Final e Resumos Itera o 16 22 01 2013 a 15 02 2013 Elaborar Artigo Cient fico e Website para disponibiliza o do FEUP SBT 2 0 98 Refer ncias Alh99 API12 Asp12 Bec02 Bia06 Ecl12 FLO2 Foc12 FPY12 Fral2a Fral2b Sinan Si Alhir Understanding the unified modeling language uml Methods and To ols 1999 URL http www methodsandtools com archive archive php id 76 JUnit API Testcase junit api 2012 Dispon vel em http junit sourceforge net junit3 8 1 java
28. msg msg Codifica o assertEquals DiagramMessageID 20 FEUP SBT 2 0 RetID 30 msgl msg2 Tabela 4 1 Codifica o das intera es com aplica o cliente no FEUP SBT 1 0 e FEUP SBT 2 0 38 Conce o e implementa o Relativamente s intera es internas codificadas atrav s de estruturas definidas na biblioteca Tracing Utilities estas foram reformuladas para receber juntamente com todos os anteriores argu mentos o identificador do elemento respetivo no modelo Por exemplo conforme apresentado na tabela 4 2 para uma chamada b sica o primeiro e o pen ltimo argumentos passaram a representar os identificadores de elementos Por ltimo e a exemplo do anterior a codifica o das intera es com o utilizador passou a incluir o identificador da mensagem respetivo tal como presente na tabela 4 3 Uma vez mais as diferen as na codifica o entre vers es s o colocadas a negrito s o1 ConoeteSubject Concrete Observer Modelo UML i l update s newPrice Codifica o new Call ConcreteObserver ol FEUP SBT 1 0 update new Object s newPrice null Codifica o new Call 7 ConcreteObserver ol update FEUP SBT 2 0 new Object s newPrice 10 null Tabela 4 2 Codifica o das intera es internas no FEUP SBT 1 0 e FEUP SBT 2 0 i U Modelo UML TE i enter x 1 Codifica o n Console enter x 1 F
29. new Constr BinOp f args op r c y setFormula yExpr Trace finalCheck internal interact checking omitted in other cases assertEquals yVal y getValue public void testSpreadsheetAPI_O testSpreadsheetAPI 1 0 2 0 3 0 x 2 3 similar methods ommitted for other test data public void testSpreadsheetCLI code for checking internal interactions omitted Console start SpreadsheetCLI class null Console enter x 1 Console enter x 1 assertEquals 2 0 Console check Console enter Console stop Excerto de C digo 2 1 Amostra de c digo de teste gerado para o mecanismo de folhas de c lculo 11 An lise do prot tipo existente E Ciclo iterativo de implementa o e teste dos m todos Na fase atual os m todos das classes Java est o definidos e prontos a ser implementados para validarem os testes gerados Entra se agora no ciclo iterativo de implementa o de m todos execu o dos testes e posterior refabrica o ou corre o dos m todos conforme os resultados dos testes A figura 2 5 demonstra o resultado da execu o de um teste que ainda cont m um erro que necessita de ser corrigido para todos os testes passarem 2 3 Funcionalidades suportadas Nesta sec o s o analisadas um conjunto de funcionalidades para verifica o se estas s o su portadas nos diagramas de sequ ncia UML e na implementa o Java A tabela 2 1 apresenta para cada fun
30. numUnchanged int printDetails Sring ap TestFilet od TestiFile2 ve O 110 0 M bon ap TesQFiel a Test2File2 oa 1 0 1 1 Abbln aalnD bbin Figura 6 5 Diagrama de sequ ncia vers o 3 corrigida do projeto FileDiff j colorido de acordo com os resultados da execu o 73 Valida o 74 Cap tulo 7 Conclus es No trabalho de disserta o foi evolu do o prot tipo experimental FEUP SBT 1 0 para uma ver s o 2 0 que cont m uma s rie de novas funcionalidades de onde se destacam as funcionalidades de execu o direta dos cen rios de teste e visualiza o de resultados na ferramenta de modela o Enterprise Architect Numa primeira fase foi efetuado um estudo aprofundado da vers o inicial do prot tipo para a dete o de falhas ou limita es e uma revis o bibliogr fica sobre o tema automa o de testes baseados em diagramas de sequ ncia UML Seguidamente s o apresentados os resultados alcan ados pelo trabalho de disserta o con frontando os mesmos com os objetivos estipulados ainda registado o trabalho futuro que poder ter fun o de guia para evoluir a ferramenta FEUP SBT para novas e mais poderosas vers es 7 1 Resultados alcan ados A funcionalidade principal a desenvolver que permite executar o c digo de teste gerado de forma transparente e verificar os resultados da execu o diretamente no ambiente de modela o foi implementada c
31. o Modelo para Plataforma Espec fica Platform Specific Model Teste Baseado em Cen rios Scenario Based Testing Pacote de Desenvolvimento de Software Software Development Kit Sequ ncia de Chamadas a M todos Sequence of Methods Calls Desenvolvimento Dirigido por Testes Test Driven Development Unified Modeling Language eXtensible Markup Language XV Cap tulo 1 Introdu o No presente cap tulo introduzido o trabalho de disserta o registando a motiva o para o seu desenvolvimento e listando os objetivos que se pretendiam cumprir Por fim apresentada a estrutura deste documento 1 1 Motiva o UML Unified Modeling Language uma linguagem de modela o para visualiza o espe cifica o constru o e documenta o de artefactos de sistemas de software Alh99 Idealizada a partir da necessidade de unifica o de diferentes m todos de an lise e desenho orientado por objetos que foram sendo propostos nas d cadas de 80 e 90 tornou se padr o do cons rcio OMG Object Management Group em 1997 FS99 Desde ent o tem se tornado numa linguagem de modela o cada vez mais utilizada a n vel acad mico e industrial sendo constantemente evolu da No entanto e atendendo s suas caracter sticas cr se que a utiliza o de UML possa ser ainda mais potenciada em rela o ao que acontece atualmente A utiliza o dos modelos UML apenas para documenta o de sistemas de software a construir ou
32. o que seria previsto Foram implementados 2 aspetos na biblioteca TracingUtilities um 34 Conce o e implementa o para o controlo da execu o e um auxiliar para simula o de intera o com o utilizador O pri meiro aspeto TraceCalls faz uso dos wildcards para intercetar a execu o de qualquer m todo com qualquer nome e retorno e um qualquer n mero de par metros definido atrav s do join point execution x Esta aspeto interceta ainda a execu o de m todos n o implementados definidos como stub no modelo fazendo os retornar o valor esperado especifi cado O segundo aspeto utilizado para intercetar as intera es do utilizador atrav s dos m todos java util Scanner nextLine ejava io PrintStream println paraos m todos enter e display respetivamente da classe Console 4 3 Concretizacao das principais funcionalidades Seguidamente s o apresentados os aspetos t cnicos mais importantes da implementa o das principais funcionalidades do FEUP SBT 2 0 Entre elas est o a constru o do m dulo de confi gura es representa o em mem ria da estrutura do modelo a execu o e o respetivo feedback dos testes no Enterprise Architect e finalmente a informa o da cobertura dos testes 4 3 1 Constru o do m dulo de configura es O m dulo de configura es tem como meio de persist ncia de dados um ficheiro XML deno minado TGconfig xml1 que alojado no diret rio onde se e
33. refactoring ao mesmo aumentando a sua robustez e manutenibilidade No desenvolvimento dos objetivos propostos foi utilizada uma abordagem iterativa onde se manalmente era validada a implementa o dos requisitos anteriores e definidos os seguintes Esta metodologia revelou se bastante til para verificar a correta evolu o do desenvolvimento Neste documento apresentado inicialmente uma an lise do prot tipo FEUP SBT 1 0 e do estado da arte sobre o tema automa o de testes baseados em diagramas de sequ ncia UML Posteriormente descrita a conce o e implementa o da solu o e o manual de utiliza o da ver s o 2 0 do FEUP SBT Por fim apresentado o processo de valida o aplicado nas funcionalidades implementadas li Abstract UML Unified Modeling Language is a language for modeling artifacts of software systems whose usage has been increasing both in academic and industrial projects However it has become a common practice to use UML models for documentation only This passive usage entails several drawbacks First the time consumption involved in this process has not associated a proportional benefit The UML models also may not accurately express the respective software system Being the software in a continuous evolution the documentation easily gets in disagreement with the code To overcome the problems arising from the usage of UML for documentation only several te chniques have been developed in rece
34. s o lidos pelo plug in etapa 11 utilizando os para colorir o modelo UML etapa 12 Ap s esta etapa o modelo apresenta as edi es respetivas para nele serem analisados os resultados da execu o pelo utilizador 4 2 Estrutura dos componentes da ferramenta O FEUP SBT 2 0 composto por dois componentes que sendo independentes entre si foram ambos constru dos para funcionar de forma colaborante Ambos os componentes j existiam na vers o 1 0 do FEUP SBT no entanto sofreram modifica es no desenvolvimento das novas fun cionalidades O FEUP SBT assim composto pelo gerador e executor de testes TestGenerator e pela biblioteca de an lise do tra ado de execu o TracingUtilities Nesta sec o ambos se r o apresentados abordando as suas arquiteturas e os detalhes mais relevantes Um dos objetivos 28 Conce o e implementa o Aplica o a Testar 7 Invoca 9 Faz tra ado jj 2 Manda Executar Teste JUnit T 6 Executa Test Runner JUnit 4 10 Gers Figura 4 2 Diagrama de comunica o representativo do funcionamento geral do prot tipo FEUP SBT 2 0 desta disserta o passava por realizar um processo de refabrica o refactoring aos componentes do prot tipo FEUP SBT 1 0 sobretudo ao n vel da manutenibilidade e robustez Encontrando se a biblioteca Tracing Utilities com uma arquitetura bem estruturada o principal foco das altera es residiu no add in TestGene
35. tes de executar propriamente o c digo de teste e por fim s o introduzidos os resultados esperados dos m todos utilizados em Java para depois serem comparados Posteriormente a ferramenta SCENTOR gera os drivers de teste em Java que podem ser compilados e executados diretamente a partir da ferramenta interagindo com o servidor Enterprise JavaBeans EJB Jav12 nesse pro cesso Tratando se de uma ferramenta que utiliza uma abordagem diferente da do prot tipo FEUP SBT 1 0 vocacionada para aplica es de e business a sua compara o torna se dif cil Desde 22 An lise do estado da arte Load Into SCENTOR Extract Sequence Diagrams Export from Rational Rose Specify Setup And Teardown Specify Inputs And Expected Results UML Model Java Test XML Test Drivers Specifications Compile Test Drivers Run Tests Figura 3 3 Abordagem em que se insere o SCENTOR WM07 logo a ferramenta j n o se encontra dispon vel impedindo o seu teste direto N o h qualquer informa o sobre a vers o de UML suportada nem sobre a verifica o de consist ncia modelos desenhados 3 5 An lise comparativa Analisadas individualmente cada uma das abordagens descobertas que se relacionam com o prot tipo FEUP SBT 1 0 agora apresentada uma tabela com os pontos considerados mais rele vantes de compara o de cada uma das delas com o FEUP SBT 1 0
36. testes gerados 2 2 a Vis o geral da abordagem MDA para gera o de testes JSWO7 Processo detalhado da abordagem MDA para gera o de testes JSW07 Abordagem em que se insere o SCENTOR WMO7 Abordagem do FEUP SBT 2 0 2 0 0 0 0 00 0000 2 eee eee Diagrama de comunica o representativo do funcionamento geral do prot tipo FEUP SBT 20 ua a gs oe sara E BE ee we RR E we ee a a Modelo de Objetos do Enterprise Architect 2 2 0 0 Diagrama de classes do add in TestGenerator excluindo opera es Estrutura ProjectHierarchyNode com os seus atributos Estrutura TestGeneratorExceptionError com os seus atributos Diagrama de Classes da biblioteca Tracing Utilities omitindo opera es Meio de acesso ao Menu de Configura o lcccccccc a Menu de Configura o cccccccll ee Estrutura de pastas de um modelo exemplificativo correto Estrutura de pastas de um modelo exemplificativo n o correto Mensagem de erro alertando m forma o do modelo Menu para escolha da funcionalidade pretendida Exemplo ATM Diagrama de sequ ncia exemplificativo de um levantamento mo net rio num sistema banc rio cccccccccccl ee Mensagem apresentando erros de compilaga o 0 Mensagem ap s execu o sem erros ooo Mensagem ap s execu o com erros Na imagem
37. todos s o criados sem conte do prontos a ser implementados pelo engenheiro de software De seguida o prot tipo FEUP SBT 1 0 atrav s dos menus do Enterprise Architect gera os testes unit rios JUnit a partir dos diagramas de sequ ncia UML previamente modelados neste ponto que o prot tipo interv m de forma direta A gera o de c digo e teste comp e o passo 2 na abordagem proposta O c digo de teste gerado n o verifica apenas as intera es externas verificando tamb m se todas as intera es internas ocorrem como especificado Para tal foi implementada e disponibili zada a biblioteca Java para an lise do tra ado de execu o denominada Tracing Utilities que mais frente ser apresentada em detalhe Passo 4 Execu o dos testes com m todos por implementar De acordo com as normas estipuladas pela metodologia Desenvolvimento Dirigido por Testes TDD os testes devem ser executados e confirmado que os mesmos falham Bec02 desde que estejam prontos a executar E precisamente nestas circunst ncias em que o processo se encontra neste momento representado pelo ponto 3 na abordagem An lise do prot tipo existente Passo 5 Implementa o dos m todos A etapa seguinte ponto 4 da abordagem proposta passa pelo engenheiro de software imple mentar os m todos automaticamente gerados no ponto 1 para que os testes que falharam na etapa anterior possam agora ser superados com sucesso O Desenvolvimento Diri
38. 4 1 Sele o de excerto do modelo a testar Ap s a cria o de um modelo bem definido e consequentemente test vel este encontra se pronto para ser operado pelo FEUP SBT 2 0 Mas tal como afirmado anteriormente permitido ao utilizador escolher que excerto do modelo deve ser considerado Esta sele o realizada em fun o da pasta selecionada no ato de invoca o do add in Assim sendo se o FEUP SBT 2 0 for invocado a partir das pastas base Model ou Dynamic View todo o modelo ser executado No entanto se for selecionada uma pasta de um determinado pacote apenas as classes e respetivos m todos de teste desse pacote ser o executadas sendo ignoradas todas as restantes O mesmo acontece quando selecionada uma pasta representando uma classe de teste executando nesse caso apenas essa classe com todos os seus m todos de teste Pode ainda ser selecionado um m todo apenas a testar sendo os restantes m todos da mesma classe de teste ignorados Na figura 5 18 encontram se alguns exemplos de poss veis sele es efetuadas pelo utilizador e o que essas sele es representariam em termos de classes e m todos de teste analisados Encontram se assinalados na imagem a azul a sele o do utilizador enquanto que a verde escuro as classes analisadas e finalmente a verde claro os cen rios analisados 5 4 2 Sele o do modo de opera o Existem quatro funcionalidades que podem ser invocadas pelo utilizador e acedidas atrav s das op
39. Captura recor intera es o N o O i es internas listagens rendo a AOP internas Verifica auto Verifica o Verifica o maticamente Verifica auto das intera es manual pelo 0 atendendo conformidade definida 24 An lise do estado da arte Desenho de Desenho de Desenho dos Defini o da diagramas diagramas no f diagramas e Interface de SMC no Eclipse no Rational a Together UI gera o dos Utilizador UI o Modeling Rose Website da aplica o _ testes atrav s dos ee Framework para execu o n o dispon vel menus do EA dos testes Verifica con Verifica o da Na a 7 2 7 sist ncia e Consist ncia N o O N o O N o O completude do Modelo dos modelos O Tabela 3 1 Tabela comparativa das abordagem com o FEUP SBT 1 0 Desta an lise comparativa que resume o trabalho de investiga o efetuado para verifica o do estado da arte sobre o tema gera o autom tica de testes unit rios a partir de diagramas de sequ ncia UML foi poss vel verificar que as abordagens que mais se relacionam com o prot tipo FEUP SBT 1 0 s o o SeDiTeC e a abordagem baseada na Arquitetura Dirigida por Modelos Por se tratarem de abordagens bastante distintas t m pontos fortes e fracos distintos n o sendo evidente que uma sobressaia em rela o outra Em rela o compara o direta com o prot tipo FEUP SBT 1 0 a linguagem alv
40. EUP SBT 1 0 Codifica o Console enter 150 x 1 FEUP SBT 2 0 Tabela 4 3 Codifica o das intera es com o utilizador no FEUP SBT 1 0 e FEUP SBT 2 0 39 Conce o e implementa o As altera es nas codifica es apresentadas anteriormente exigiram altera es nas estruturas respetivas na biblioteca Tracing Utilities que as acompanhassem Estas estruturas passaram agora a armazenar os identificadores de elementos correspondentes no modelo UML Mapeado c digo de teste gerado e o modelo UML o passo seguinte passou por aquando da dete o de um erro incluir na sua mensagem o identificador do elemento do modelo que lhe cor respondia Encontrando se j recolhidos todos os identificadores este processo foi praticamente trivial Compila o e Execu o do C digo de Teste Para efetuar a compila o e execu o do c digo de teste gerado foi desenvolvido um m todo executor de comandos ExecuteCommand object command out string result que executa um comando passado por argumento command devolvendo verdadeiro ou falso caso o comando tenha sido executado ou n o respetivamente e ainda uma string contendo o resultado da execu o result A fun o ExecuteCommand utiliza a classe Process do pacote System Diagnostics que pertence NET Framework Fral2b para iniciar um processo do sistema local executando atrav s deste o comando pretendido e recolhendo o seu resultado Atendendo
41. FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Automa o de Testes Baseados em Cen rios com UML e Programa o Orientada a Aspetos M rio Jorge Ventura de Castro PORTO FEU FACULDADE DE ENGENHARIA UNIVERSIDADE DO PORTO Mestrado Integrado em Engenharia Inform tica e Computa o Orientador Jo o Carlos Pascoal de Faria Janeiro de 2013 Automa o de Testes Baseados em Cen rios com UML e Programa o Orientada a Aspetos M rio Jorge Ventura de Castro Mestrado Integrado em Engenharia Inform tica e Computa o Aprovado em provas p blicas pelo J ri Presidente Nuno Hon rio Rodrigues Flores Arguente Fernando Brito e Abreu Vogal Jo o Carlos Pascoal de Faria Janeiro de 2013 Resumo UML Unified Modeling Language uma linguagem de modela o de artefactos de sistemas de software que tem vindo cada vez mais a ser utilizada tanto a n vel acad mico como industrial No entanto tornou se pr tica frequente a utiliza o dos modelos UML apenas para documenta o Esta utiliza o passiva acarreta v rios inconvenientes desde logo o consumo de tempo implicado neste processo n o ter associado um benef cio proporcional Os modelos UML podem tamb m n o expressar com exatid o o respetivo sistema de software e estando este em cont nua evolu o facilmente a documenta o fica em desacordo com o c digo Para combater os problemas que adv m da utiliza o de UML apenas para documenta o t
42. Generator criada no passo anterior Em A 6 est demonstrado o processo de edi o do valor da chave Predefini o H Predefini o REG SZ Modificar Modificar dados bin rios Eliminar Mudar o Nome Figura A 6 Edi o do valor de uma chave no Editor de Registos Passo 7 Com a janela de edi o do valor padr o da chave TestGenerator aberta agora necess rio editar o seu valor com a seguinte sequ ncia lt ProjectName gt lt ClassName gt neste caso TestGe nerator TestGenerator conforme ilustrado em A 7 Editar cadeia js Nome do valor Predefini o Dados do valor TestGenerator TestGeneratorl Figura A 7 Valor padr o da chave TestGenerator Passo 8 Se todos os passos anteriores forem conclu dos com sucesso nesta altura o add in deve estar corretamente instalado no sistema bastando apenas confirmar que o programa Enterprise Architect o detetou efetivamente e ativar o seu carregamento no in cio da execu o do programa Para efetuar estas opera es deve ser executado o Enterprise Architect acedendo posteriormente ao menu Add Ins e de seguida Manage Add Ins conforme apresentado em A 8 Na janela de Gest o de Add Ins deve ser confirmada a presen a do add in com o nome Test Generator e o seu Status a Enable isto de que se encontra no estado ativado Para que o estado 80 Tutorial de instala o e configura o Add Ins Settings Window He
43. M para PSM UML Model Horizontal Transformation Sequence Diagram UML to xUnit xUni Model Platform Independent Model Vertical Vertical Transformation Transformation xUnit to JUnit xUnitto SUnit Test Case Test Case Platform Specific Model Figura 3 1 Vis o geral da abordagem MDA para gera o de testes JSW07 Este processo tem envolvidas uma s rie de aplica es todas integrantes do ambiente de de senvolvimento de software IDE Eclipse Ecl12 O diagrama de sequ ncia tem de ser convertido numa sequ ncia de chamadas a m todos SMC manualmente que depois introduzida na Eclipse Modeling Framework Fral2a uma extens o para Eclipse De seguida o SMC convertido em xUnit utilizando outra extens o para Eclipse o TefKat Tef12 tratando se de um mecanismo de transforma o de modelos baseado na Eclipse Modeling Framework atrav s da defini o de regras rules Finalmente o modelo de teste xUnit convertido em c digo de teste JUnit ou SUnit atrav s de nova extens o para o Eclipse MOFScript MOF 12 uma ferramenta para transforma o de modelo para texto Por fim a execu o dos testes unit rios gerados fica ao encargo do utiliza dor Todo este processo est detalhado na figura 3 2 com todos os artefactos gerados ao longo do processo A grande vantagem desta abordagem j estando dispon vel para JUnit e SUnit poder ser po tenciada para v rias outras lingu
44. S o utilizados como identi ficadores um sinal positivo verde e um sinal negativo vermelho para serem melhor percet veis os pontos fortes e fracos respetivamente de cada uma das abordagens Abordagem SeDiTeC SCENTOR FEUP SBT 1 0 MDA E f Enterprise Integra o Together Eclipse Rational Rose Architect 23 An lise do estado da arte Transforma em Q codificados hardcoded O Abordagem Executa direta q modelo de teste Gera drivers da Automa o mente diagramas Gera JUnit a e depois em de teste de Testes de sequ ncia Ne c digo de teste Compara o do oo Testes JUnit Resultados Testes JUnit diagrama inicial Feedback executados apresentados executados pelo com o resultado a r pelo utilizador pela ferramenta utilizador O da execu o Gera o 7 a Sim N o O N o Sim O de stubs Vers o UML UML 1 x UML 1 x UML 2 x suportada EA N o dis Dispon vel Ra Disponibilidade WEB offline O Prot tipo interno pon vel O sem custos O Especificados Cen rios separadamente i Separados do Separados do parametrizados Dados de teste do diagrama diagrama diagrama e dados de teste separados Linguagens Alvo Java Java SmallTalk potencial para internas maticamente utilizador O Java Java v rias outras Captura das Captura intera Captura em a
45. String ArayList lt String gt ArrayLists sre needed because of the DifferenceCalculator class stri mentAndBlankLines source AmsyList lt String gt ArsyList lt String gt additions intil null deletions inti null differenceDetails List lt Delta lt T gt gt null listf AmayList lt T gt list2 AmayList lt T gt modifications int null operations Operationl ADDED MODIFIED computeDifferenceDetsils void DELETED computeEditDistanceMatrix void UNCHANGED DifferenceCslculstor list ArrayList lt T gt list2 AmayList lt T gt getDifferenceDetails List lt Delta lt T gt gt getNumAdditions int getNumDeletions int getNumModifications int getNumUnchanged int newValue T oldVslue T operation Operation Delta oldVslue T newValue T operstion Operation getNewValue T getOldValue T getOperation Operation Figura 6 2 Diagrama de classes do projeto FileDiff parametrizadas no bloco Parameters De notar que o projeto j continha ficheiros de entrada de exemplo para teste manual que foram registados neste bloco de par metros para automa o desses testes O c digo gerado a partir desta vers o 2 do diagrama de sequ ncia foi compilado e executado analisando cobertura e o resultado encontra se expresso no modelo em 6 4 apresentado atrav s da colora o das mensagens Foi desta forma poss vel detetar que ainda existiam inconsi
46. UP SBT DOE eai p o wee Ge gra ea eye Race E ee Ode eG ee aes Codifica o das intera es internas no FEUP SBT 1 0 e FEUP SBT 2 0 Codifica o das intera es com o utilizador no FEUP SBT 1 0 e FEUP SBT 2 0 Matriz de cobertura de caracter sticas dos casos de teste ccccc Tabela comparativa das abordagem com o FEUP SBT 1 0 Correspond ncia entre fragmentos combinados e respetivas estruturas do Tracin DUTOS ea fo ser pens o eh a ee Se a ad Ew ee ee ba nd a xiii LISTA DE TABELAS xiv Abreviaturas e S mbolos AOP API DLL EA EAP FEUP IDE JAR MBT MDA MDD MIEIC OMG PIM PDIS PSM SBT SDK SMC TDD UML XML Programa o Orientada a Aspetos Aspect Oriented Programming Interface de Programa o de Aplica es Application Programming Interface Bibliotecas de V nculo Din mico Dynamic Link Library Enterprise Architect Projeto do Enterprise Architect Enterprise Architect Project Faculdade de Engenharia da Universidade do Porto Ambiente Integrado para Desenvolvimento de Software Integrated Develop ment Environment Java ARchive Teste Baseado em Modelos Model Based Testing Arquitetura Dirigida por Modelos Model Driven Architecture Desenvolvimento Dirigido a Modelos Model Driven Development Mestrado Integrado em Engenharia Inform tica e Computa o Object Management Group Modelo Independente de Plataforma Platform Independent Model Prepara o para a Disserta
47. Unit assertEquals demonstrado no excerto de c digo B 4 Este m todo assertEquals foi redefinido e conta com 4 par metros O primeiro tem o formato DiagramMessageID lt id gt onde lt id gt deve ser substitu do pelo identificador da mensagem no diagrama de sequ ncia De forma semelhante o segundo par metro tem o formato Ret ID lt id gt onde lt id gt o identificador da mensagem de retorno O terceiro par metro cont m o valor da mensagem de retorno que ser comparado com o valor resultante da mensagem que introduzida no quarto par metro withdraw amount Figura B 2 Exemplo de mensagem com retorno no exemplo ATM assertEquals DiagramMessageID 101 RetID 351 FAIL a withdraw amount Excerto de C digo B 4 Exemplo de mensagem com retorno no exemplo ATM B 3 An lise das intera es internas Para ser poss vel conferir a correta execu o das mensagens internas definidas no modelo necess rio codificar essas mesmas intera es recorrendo a estruturas definidas na biblioteca Tracing Utilities que de seguida s o expostas B 3 1 Chamadas A estrutura elementar para codificar uma mensagem a estrutura Call onde poss vel definir atrav s dos seus argumentos todos os par metros de uma chamada como vis vel no ex certo de c digo B 5 Os argumentos messageID e returnMessageID representam os identificadores da mensagem origem e mensagem de retorn
48. a localizado o pacote na rvore de n s ProjectHierarchy Node e armazenada uma lista de todos os cen rios de teste nele contidos 4 3 3 Execu o dos testes a partir do Enterprise Architect O primeiro problema a solucionar no desenvolvimento da funcionalidade de execu o au tom tica dos testes foi elaborar um mapeamento robusto entre os elementos dos diagramas de sequ ncia UML mensagens e fragmentos combinados e o c digo gerado pelo add in Como todos os elementos que comp e um modelo UML do Enterprise Architect t m um identificador nico este tornou se o elo de liga o entre modelo e c digo de teste Os identificadores n o se encontram expl citos diretamente atrav s do Enterprise Architect sendo alcan ados atrav s das fun es da sua API Sendo reconhecidos pelo add in tr s tipos de intera es com a API com o utilizador e in ternas a codifica o pronta para execu o de cada um dos tipos foi alterada de forma diferente embora seguindo o mesmo m todo de inclus o do identificador do respetivo elemento no modelo UML Nas intera es com a API que s o modeladas atrav s do m todo JUnit assertEquals este foi reformulado para receber adicionalmente os identificadores das mensagens origem e de retorno como vis vel na tabela 4 1 com as altera es no c digo da vers o 2 0 em rela o 1 0 aparecendo a negrito Modelo UML Codifica o e a Te Es RUPP SETA assertEquals
49. a o O primeiro resultado que o utilizador pode receber do FEUP SBT 2 0 acontece caso a compi la o do c digo de teste gerado tenha produzido erros nesse caso apresentada uma mensagem contendo a descri o dos erros detetados pelo compilador bem como o pacote em que se inserem para mais facilmente ser detetada a localiza o do erro No exemplo ATM foi propositadamente injetado um erro e em 5 8 apresentada a mensagem de erro respetiva Ap s confirmar esta mensagem clicando em OK o FEUP SBT 2 0 termina o seu funcionamento aguardando que o utilizador corrija os erros detetados e o volte a executar Compilation with ERRORS Packages ATM ERROR CAATMATMATMTestjava 13 error cannot find symbol Account a new Account Errolnjetado symbol variable Errolnjetado location class ATMTest 1 error Figura 5 8 Mensagem apresentando erros de compila o Mensagem com resultado de execucao Caso n o ocorram erros na compila o o FEUP SBT 2 0 ir executar os testes anteriormente gerados No fim deste processo ser apresentado ao utilizador uma mensagem com o resultado completo da execu o quer este contenha erros ou n o Ilustrado em 5 9 encontra se a mensa gem com o resultado da execu o do exemplo ATM no seu estado original Para demonstrar o comportamento numa situa o com erros de execu o foi injetado um erro na palavra de retorno FAIL substituindo a por ErroInjetado A mensa
50. ada ordem que mais frente ser explicada Com esta decis o pretendeu se for ar o utilizador a definir convenien temente no modelo comportamental os respetivos pacotes classes e m todos de teste correspon dentes no c digo de teste JUnit e assim evitar que inadvertidamente sejam introduzidos erros no modelo Acredita se que o tempo investido na constru o de um modelo robusto recompensado pelo tempo que se poderia perder ao gerar e executar c digo de teste a partir de um modelo com problemas o que muitas vezes se podia tornar uma tarefa rdua e demorada de resolver A defini o de uma estrutura bem elaborada permitiu ainda desenvolver a funcionalidade na qual poss vel ao utilizador definir o pacote classe ou m todo de teste que pretende executar ao inv s de ser executado sempre o modelo completo podendo assim poupar tempo e focar a execu o apenas no excerto do modelo que em cada situa o mais lhe convier Apesar da exist ncia da API do Enterprise Architect que possibilita a recolha de informa o sobre o modelo e a sua estrutura a forma de estrutura o desta informa o bem como o seu acesso tornaria o processo de edi o do modelo mais complexo e consequentemente mais sujeito a fa lhas Por esse motivo para facilitar a implementa o das novas funcionalidades e minimizar o 36 Conce o e implementa o a j zy ProjectHierarchyNode x Class 7 Fields children List lt ProjectHierarchyNod
51. ado anteriormente em 5 7 B 1 Estrutura o da s classe s de teste O primeiro passo a seguir criar uma classe de teste Java Para tal deve ser criado um ficheiro com extens o java importar todas as classes da biblioteca Tracing Utilities atrav s da instru o da linha 1 em B 1 e criar uma classe que estende InteracTestCase como vis vel na linha 3 import traceutils 3 public class ATMTest extends InteracTestCase Excerto de C digo B 1 Defini es de importa es e classes estendidas Na classe definida s o implementados todos os m todos que representam cada um dos cen rios de teste desejados No exemplo ATM apenas existe modelado um cen rio de teste pelo que o c digo de teste respetivo apenas contar com um m todo com o mesmo nome desse cen rio precedido de test caso o nome assim n o comece Na linha 1 de B 2 encontra se o cabe alho do m todo de teste testATM que conta como par metros do m todo os mesmos par metros 85 Interpreta o do c digo de teste gerado definidos no bloco Parameters no modelo UML Por cada linha desse bloco ou seja por cada caso de teste criado um novo m todo na classe de teste que simplesmente invoca o seu m todo origem com os par metros indicados Como no exemplo ATM estavam 2 casos de teste definidos nas linhas 5 e 9 de B 2 encontram se os 2 m todos auxiliares respetivos com o mesmo nome do m todo origem mais o seu ndice
52. agens uma vez que as transforma es verticais de modelo para c digo s o lineares variando apenas as especifica es de linguagem Esta ferramenta est tam b m dispon vel sem custos pronta a ser utilizada Por m existem algumas contrariedades Desde logo os dados sendo especificados separadamente do diagrama de sequ ncia s o posteriormente codificados diretamente no c digo de teste JUnit ou SUnit o que obriga o utilizador efetuar as transforma es modelo para texto sempre que pretender alterar os dados de teste Tamb m n o s o suportadas as funcionalidades da vers o 2 x de UML nem a gera o de stubs Por ltimo as intera es internas s o capturadas numa lista com o tra ado de execu o da aplica o no entanto estas t m de ser manualmente testadas pelo utilizador 21 An lise do estado da arte Model to Text Transformation Model to Model Transformation Specifications Specifications vertical H H transformation rules Test Data source metamodel data Code Header E horizontal transformation rules xUnit BA Meta model n SMC Meta model source metamodel target metamodel Tefkat Model lo Model Transformation Tool MOFScript Model to Text Transformation I Tool i i 1 a source model test case Ei Figura 3 2 Processo detalhado da abordagem MDA para gera o de testes JSW07 Instance of gt Instance of se s
53. agramas de sequ ncia UML apresentada por Falk Fraikin e Thomas Leonhardt na 17th IEEE International Conference on Automated Software Engineering ASE 2002 com o documento SeDiTeC Testing Based on Sequence Diagrams FLO2 No referido documento apresentada uma abor dagem para teste automatizado a aplica es orientadas a objetos e a ferramenta SeDiTeC que aplica esses conceitos para aplica es Java A motiva o para o desenvolvimento desta ferra menta assemelha se motiva o para o desenvolvimento do FEUP SBT 1 0 isto fomentar nos 19 An lise do estado da arte engenheiros de software uma utiliza o ativa dos modelos UML oferecendo solu es que lhes permitam beneficiar com o tempo despendido no desenho dos modelos O SeDiTeC utiliza diagramas de sequ ncia UML que s o complementados por dados de teste como especifica o de teste que posteriormente pode ser integrada no processo de desen volvimento desde o seu in cio No entanto o SeDiTeC n o suporta o desenho destes diagramas integrando se com a ferramenta Together Control Center Foc12 para a realiza o desta tarefa O SeDiTeC liga se ferramenta Together atrav s da sua API podendo executar diretamente den tro da ferramenta diagramas de sequ ncia individuais ou ent o caso seja mais que um diagrama export los em formato XML que posteriormente podem ser carregados para o SeDiTeC Poste riormente o SeDiTeC permite ao utilizador com
54. ags so 2003 05 s5014 html Microsoft Microsoft devices and services 2012 Dispon vel em http www microsoft com en us default aspx acedido a ltima vez em 18 de De zembro de 2012 MOFScript Mofscript 2012 Dispon vel em http www eclipse org gmt mofscript acedido a ltima vez em 22 de Julho de 2012 Stephen J Mellor Kendall Scott Axel Uhl e Dirk Weise Model driven architecture In 8th International Conference on Object Oriented Information Systems OOIS 02 2002 Microsoft Developer Network Assembly registration tool regasm exe 2012 Disponivel em http msdn microsoft com pt pt library tzat5yw6 v vs 80 aspx acedido a ltima vez em 18 de Dezembro de 2012 MSDN Microsoft Developer Network Windows forms 2013 Disponivelem http msdn microsoft com en us library dd30h2yb aspx acedido a l tima vez em 7 de Janeiro de 2013 OMG OMG Unified Modeling Language OMG UML Superstructure Version 2 4 1 Agosto 2011 Oracle Java se standard edition 2013 Dispon vel em http www oracle com technetwork java javase overview index html acedido a l tima vez em 7 de Janeiro de 2013 John D Poole Model driven architecture Vision standards and emerging techno logies In 15th European Conference on Object Oriented Programming ECOOP 2001 2001 100 Ros12 Spal0 Sys12 Tef12 ULO7 Winl2 WMO07 ZHM97 REFERENCIAS Rational Rose Ibm software rational ro
55. ame String parent ActuslCsll null ret Object null targetObject Object whatToTrace String null ai ion Throwable null appThread Thread null hasinput boolean true inputQueue LinkedBlockingQueve lt String gt null mainMethodArgs Object null o rand java util Random new java util R amp doublePrecision double 1E 5 ionHandler new Mh tion unknown Unknown Unknown getSing LinkedBloingQueue lt String gt null started boolean false fiat ined Gir CE ERRA TE TE singlelnstance Unknown nusingleinstanos Figura 4 7 Diagrama de Classes da biblioteca Tracing Utilities omitindo opera es 44 Cap tulo 5 Utiliza o da ferramenta Apresenta se neste cap tulo uma descri o detalhada da utiliza o do prot tipo FEUP SBT 2 0 S o indicadas todas as etapas necess rias para se proceder instala o de todos os compo nentes necess rios e respetivas configura es Seguidamente descrito o processo de cria o de um modelo considerado test vel pela ferramenta e s o analisados e comparados os seus diferen tes modos de funcionamento Por ltimo demonstra se os meios utilizados para apresentar os resultados de execu o ao utilizador 5 1 Instala o Para se proceder instala o do add in FEUP SBT 2 0 que se encontra dispon vel para des carregar no endere o https feupload fe up pt get 116y7nv72cBqge00 necess rio ter previamente i
56. aradamente Ap s a execu o do c digo de teste gerado cada linha do bloco referido ser pintada de vermelho ou verde conforme a sua execu o tenha produzido ou n o erros respetivamente No exemplo ATM com erro como vis vel em 5 16 o primeiro cen rio encontra se a vermelho porque falhou dado que interagia com o trecho de c digo onde foi injetado o erro ao passo que por n o interagir com essa parte o segundo cen rio foi executado sem qualquer erro e portanto encontra se pintado de verde Parameters balance double amount double log boolean date String type String 100 150 tue 01 01 01 NoM oney 100 50 false 01 01 90 Money Figura 5 16 Bloco de par metros pintado conforme resultado da execu o Colora o do diagrama de acordo com a an lise de cobertura Se o utilizador selecionar o modo de opera o Executar Testes Analisando Cobertura to das as edi es ao modelo descritas anteriormente nesta sec o s o igualmente aplicadas Para al m destas efetuada uma colora o a verde de todas as mensagens que o add in tenha con clu do que de facto foram executadas As mensagens que n o foram executadas mant m se na cor pr definida preto e as mensagens que cont m erros s o pintadas de vermelho tal como anteriormente Na figura 5 17 apresentado o estado final do modelo UML do exemplo ATM com inje o de erros ap s ser selecionado e executado o modo de
57. asse de Call e tem por objetivo lidar com as chamadas que envolvam m todos ainda n o implementados denominados m todos stub ActualCall uma classe auxiliar que permite definir uma chamada executada intercetada atrav s de aspetos A modela o das chamadas intercetadas atrav s desta classe permitem uma compara o com as chamadas esperadas mais simples CombOperator uma classe abstrata representando os v rios fragmentos combinados su portados pela ferramenta dos quais superclasse Um fragmento combinado usado para agru par conjuntos de mensagens e para mostrar o fluxo condicional num diagrama de sequ ncia A exemplo da classe Call tamb m foram adicionados os identificadores de elemento no Enterprise Architect para implementa o das novas funcionalidades CombOpt CombAlt e CombLoop s o subclasses de CombOperator e representam cada uma um fragmento combinado para defini o de condi es de ocorr ncia de mensagens CombOpt re presenta o fragmento opt contendo uma sequ ncia de mensagens que dependendo de uma certa condi o poder o ou n o ocorrer J CombAlt representa o fragmento alt que se assemelha ao operador opt criando no entanto um conjunto de alternativas cada uma contendo um conjunto de mensagens e uma condi o que a valide sendo apenas uma alternativa executada A classe Com bLoop representa um ciclo onde um conjunto de mensagens ser o executadas um determinado n mero de vezes E poss ve
58. binar diagramas de sequ ncia definir diferentes conjuntos de dados de teste e executar os pr prios testes A execu o dos testes gera um novo diagrama de sequ ncia chamado diagrama de sequ ncia observado que automaticamente com parado com o diagrama de sequ ncia original verificando a exist ncia de poss veis erros Em certas situa es esta verifica o exige a colabora o do utilizador caso o diagrama de sequ ncia observado possua alguns detalhes adicionais que possam n o ter sido definidos pelo utilizador no diagrama original n o podendo ser considerados partida erros dado que o utilizador n o tem por obriga o apresentar todos os detalhes de implementa o nos seus modelos comportamentais O SeDiTeC possibilita ainda a defini o de stubs permitindo envolver nos testes m todos ainda n o implementados e s o tamb m verificadas automaticamente as intera es internas ana lisando o tra o de execu o No entanto existem algumas limita es desde logo por j n o se encontrar dispon vel Nem todos os diagramas de sequ ncia podem ser testados n o sendo su portadas as funcionalidades do UML 2 x e existindo uma lista de requisitos que um diagrama de sequ ncia tem de cumprir para ser considerado test vel 3 3 Abordagem utilizando Arquitetura Dirigida por Modelos MDA A Z Javed PA Strooper e G N Watson apresentaram uma alternativa diferente no 2nd In ternational Workshop on Automation of Softwa
59. ce balance amount realizada de forma semelhante descrita anteriormente Tem como nicas diferen as por n o ter mensagem de retorno o identificador da mesma com o valor 10 e o objeto de retorno a null Como n o cont m mensagens encaixadas n o conta com o ltimo argumento nestedCalls l a Account withdraw amount setBalance balance amount Figura B 3 Exemplo de intera es internas no exemplo ATM i new Call 6 AIM Account a withdraw new Object amount 9 OK new Call 8 AIM Account a setBalance new Object balance amount 10 null Excerto de C digo B 6 Exemplo de intera es internas no exemplo ATM Valor utilizado em casos de n o aplicabilidade 88 x Interpreta o do c digo de teste gerado B 3 2 Fragmentos combinados Os fragmentos combinados j discutidos anteriormente s o codificados distintamente entre si Por exemplo os fragmentos combinados presentes no exemplo ATM alt e opt quando interagem diretamente com o utilizador s o codificados atrav s de blocos de instru es do Java if else if else Analisando isoladamente os fragmentos combinados do exemplo ATM ilustrados em B 4 a sua codifica o seria semelhante presente no excerto de c digo B 7 tratando se das codifica es mais simples de realizar amount lt balance Figura B 4 Fragmentos combinados do exemplo ATM isolados
60. ceptionThrown messagelD resultSimple resultWithTrace testIndex i i ie i i he S testName Properties Methods dA Figura 4 6 Estrutura TestGeneratorExceptionError com os seus atributos Interpreta o do resultado de execu o Ap s execu o do c digo de teste toda a informa o necess ria para a edi o do modelo UML no Enterprise Architect encontra se sob forma textual no resultado da execu o Foi necess rio construir um interpretador que percorre o resultado da execu o para recolher toda esta informa o Atendendo quantidade e s v rias formas que a informa o pode assumir o interpretador constru do foi uma das partes mais delicadas de desenvolver A informa o recolhida pelo interpretador agrupada numa estrutura constru da exatamente para esse fim O nome da estrutura TestGeneratorExceptionError e os seus atributos encontram se registados na figura 4 6 Nesta estrutura s o definidos o tipo de erro apanhado exception Thrown os identificadores de elementos no Enterprise Architect onde ocorreu o erro message IDecombined Fragment ID o resultado da execu o com e sem tra ado resultWithTrace e resultSimple e finalmente o ndice e nome do teste test Index e testName Uma lista de todos os erros ocorridos organizados atrav s da estrutura analisada anteriormente recolhida e anexada ao n da classe a que correspondem na rvore de n s ProjectHierarchyNode
61. cess rios para conclus o da instala o bem como as configura es necess rias para habilitar o add in a executar todos os seus modos de opera o A 1 Processo de instala o do add in De seguida s o detalhadas passo por passo as etapas necess rias para a conclus o da instala o do add in para Enterprise Architect Passo 1 Primariamente necess rio ter dispon vel as duas bibliotecas de v nculo din mico dll refe rentes ao add in desenvolvido TestGenerator dll e Interop EA dll Estas duas bibliotecas devem ser colocadas num diret rio escolha Para este tutorial ser usado como forma de exemplo o diret rio apresentado na Instru o A 1 C EAAddins Instru o 5 1 Diret rio exemplo para armazenamento das bibliotecas dll Passo 2 O passo seguinte passa pelo registo da biblioteca TestGeneratordll no sistema Para tal utilizada a Ferramenta de Registo de Assemblagem Regasm exe que vem inclu da na plataforma NET Para efetuar o registo deve ser executada a Instru o A 2 na linha de comandos C WINDOWS Microsoft NET Framework lt noneversion gt RegAsm exe C EAAddins TestGenerator dll codebase Instru o 5 2 Registo da biblioteca TestGenerator dll 77 Tutorial de instala o e configura o A etiqueta lt version gt deve ser substitu da pela vers o da plataforma NET instalada no sis tema Por fim deve ser verificado que o registo foi
62. cionalidade analisada um exemplo e a indica o se esta suportada ou n o pelo FEUP SBT 1 0 Funcionalidade Exemplo Suportado Parcialmente suportado i o fragmento alt mas Fragmento combi K sem defini o de con nado alt alternative o Ad di es e sem utiliza o do operador else no errors Sim incluindo suporte Fragmento combi para condi es de guarda t t nado opt option did sf implementado no de correr deste projeto dl Parcialmente E suportado o fragmento loop com in Fragmento combinado loop dica o do n mero m nimo e m ximo de itera es mas sem defini o de condi es 12 An lise do prot tipo existente Fragmento com binado break Parcialmente N o prev Fragmento combi i execu o concorrente ape do llel Pap DAP ipa rate nas intercalada interleaved Fragmento combinado Sim strict Strict Sequencing Parcialmente Como n o Fragmento combinado prev execu o concorrente seq Weak Sequencing reduz se ao fragmento 4 E combinado strict search_yahoo 13 An lise do prot tipo existente Fragmento combinado e a N o critical Critical Region remove Fragmento com E N o binado ignore Fragmento com E N o binado consider Fragmento combinado 5 3 N o assert Assert
63. classe abstrata TestCase 1 usada para definir um conjunto de casos de teste Tem definidos os m todos invocados pelos testes unit rios gerados como as v rias vers es do m todo assertEquals Console tem por objectivo simular a intera o com o utilizador Possui como membros prin cipais duas listas uma para os valores de entrada e outra para os respetivos valor de sa da Cont m igualmente m todos para introdu o e leitura de valores e uma classe encaixada para tratamento de exce es Nesta classe tamb m foram adicionados identificadores de mensagens para imple menta o das novas funcionalidades de execu o dos testes ConformanceException uma classe abstrata sendo superclasse de ArgumentException MissingCallException ReturnValueException e UnexpectedCallException definindo assim um conjunto de exce es criadas para representar situa es de erro previstas Tal como os nomes sugerem ArgumentException representa um erro nos argumentos duma fun o e MissingCallEx ception uma mensagem que era prevista e que n o ocorreu Em rela o a ReturnValueException acontece quando existe um erro no valor de retorno e UnexpectedCallException quando uma cha mada que n o era prevista foi detetada ObjectHandler uma classe gen rica criada para representar objetos que necessitem de ser utilizados antes da sua defini o Esta situa o acontece quando necess rio definir uma rvore de execu o esperada contendo co
64. concreto e dois observadores deste atra 62 Valida o v s da classe java util Observable Posteriormente realizada uma atualiza o no objeto concreto e espera se que internamente a opera o seja replicada nos observadores Na figura vis vel o resultado da execu o do caso de teste com apenas alguns dos casos de teste executados sem erro As falhas foram introduzidas intencionalmente para verificar a a o em caso de erro Procurou se que os anteriormente apresentados casos de teste em conjunto inclu ssem nos seus modelos a grande maioria das especificidades suportadas pelo FEUP SBT 2 0 para que desta forma pudesse ser posto prova o funcionamento da ferramenta em cada destas a maior parte delas j abordada ao longo do documento Desde logo tinha se como inten o p r prova o atua o da ferramenta em cada uma das exce es definidas na biblioteca Tracing Utilities tamb m analisado o correto funcionamento do analisador de cobertura em situa es de cobertura total ou parcial S o ainda analisadas diversas features de modela o como os 3 tipos de intera es inter nas com aplica o cliente e de consola tamb m analisado o comportamento da ferramenta para diagramas que contenham cen rios parametrizados e os v rios fragmentos combinados poss veis A presen a de v rias classes de teste por pacote e v rios m todos de teste por classe s o tamb m testadas Finalmente situa es mais minuciosa
65. dades de intera o com o utilizador conformidade estrita e exce es S o tamb m apenas nele conferidos os tipos de erro ReturnValueException e UnexpectedCallException Trata se portanto de um caso de teste de import ncia elevada para validar aspetos mais espec ficos do modelo 61 Valida o Al m dos dois casos de teste anteriores foi tamb m utilizado o exemplo denominado Ob server Este um curto exemplo que assim permitiu de forma vers til efetuar os primeiros tes tes a novas implementa es antes de partir para um teste mais profundo recorrendo ao exemplo Spreadsheet Engine que bem mais complexo Este caso de teste conta ainda com chamadas a m todos externos ou seja de classes n o implementadas pelo utilizador e portanto devido a uma limita o existente da biblioteca TracingUtilities que n o deteta a ocorr ncia de intera es internas quando estas s o envolvem classes externas ocorre um problema na an lise de cobertura deste exemplo j Client ConceteSubject item update s updste s newPrice Parameters item String price double newPrice double com 12 0 4 5 test 3 0 7 0 test2 4 0 6 0 testa 13 0 4 5 est 2 0 5 0 Figura 6 1 Diagrama de sequ ncia do caso de teste Observer Na figura 6 1 encontra se modelado o diagrama de sequ ncia do caso de teste Observer sendo vis vel o seu funcionamento E criado um objeto
66. de n veis de pastas permitindo assim definir um pacote mais complexo Para uma mais f cil perce o desta estrutura de pastas apresentado em 5 3 um modelo exemplificativo No caso ilustrado vis vel a presen a de 3 camadas para representar o pacote de testes do modelo come ando em Pacote n vel 1 seguido de Pacote n vel 2 e por ltimo Pacote n vel N Ao gerar c digo de testes JUnit a partir deste modelo seria criado no diret rio raiz definido pelo utilizador uma pasta com o nome do primeiro n vel do pacote contendo a sua semelhante do segundo n vel que por sua vez ia conter a do terceiro n vel Cada uma das classes de teste pertencentes a este pacote iriam ter expresso no seu c digo fonte a refer ncia a que 48 Utiliza o da ferramenta pertenciam ao pacote package Pacote n vel 1 Pacote n vel 2 Pacote n vel N Analisando de seguida as classes de teste estas s o sempre representadas pelas pastas do pen ltimo n vel da estrutura Verifica se assim que dentro do pacote complexo est o presentes duas classes de teste Classe de teste 1 e Classe de teste 2 e que a primeira cont m 2 m todos de teste ao passo que a segunda 3 m todos Os m todos de teste s o representados pelo ltimo n vel da estrutura de pastas e devem conter no seu interior o diagrama de sequ ncia que posteriormente ser convertido em c digo de teste jatiang od tt B E Model Bi Dynamic View DD Pacote n vel 1
67. de teste da seguinte instru o Trace covering Mode true para alertar a biblioteca auxiliar deste modo de execu o Al m deste aspeto todas as mensagens devem ser codificadas atrav s da classe Trace conforme apresentado no exemplo B 10 Esta obriga o deve se necessidade de informar a biblioteca auxiliar de que se est espera Trace expect de todas as mensagens presentes no diagrama para posterior mente conferir se todas elas foram executadas Por ltimo caso sejam utilizadas exce es dentro do bloco cat ch respetivo deve ser introduzida a seguinte instru o Trace coveredMessages add lt id gt onde lt id gt deve ser substitu do pelo identificador da mensagem de retorno que re presenta a exce o a lan ar 95 Interpreta o do c digo de teste gerado 96 Anexo C Metodologia No desenvolvimento deste trabalho de disserta o foi adotada uma abordagem iterativa na qual eram realizadas todas as semanas reuni es com o orientador de disserta o nas quais eram definidos os requisitos a implementar na itera o seguinte e eram avaliados e validados os requi sitos implementados na itera o anterior No fim de cada itera o era suposto ter dispon vel uma vers o execut vel do prot tipo contendo as implementa es definidas validando assim o rumo tomado pelo processo de desenvolvimento De seguida apresentada uma lista resumida das principais tarefas realizadas em cada uma das it
68. doc junit framework TestCase html acedido a ltima vez em 22 de Julho de 2012 AspectJ The aspect project 2012 Dispon vel em http www eclipse org aspect j acedido a ltima vez em 22 de Julho de 2012 Kent Beck Test Driven Development By Example Addison Wesley Novembro 2002 Luciano Bathaglini Biasi Gera o automatizada de drivers e stubs de teste para junit a partir de especifica es u2tp Master s thesis Faculdade de Inform tica da Pontif cia Universidade Cat lica do Rio Grande do Sul 2006 Eclipse Eclipse the eclipse foundation open source community website 2012 Dispon velem http www eclipse org acedido a ltima vez em 22 de Julho de 2012 Falk Fraikin e Thomas Leonhardt Seditec testing based on sequence diagrams In 17th IEEE International Conference on Automated Software Engineering ASE 2002 2002 Micro Focus Together visual modeling for enterprise software applica tions 2012 Dispon vel em http www microfocus com products micro focus developer together index aspx acedido a ltima vez em 22 de Julho de 2012 Jo o Pascoal Faria Ana Paiva e Zhuanli Yang Test generation from uml sequence diagrams In 8th International Conference on the Quality of Information and Com munications Technology QUATIC 2012 2012 URL http paginas fe up pt jpf research TR LSDBT 2012 01 pdf Eclipse Modeling Framework Eclipse modeling emf 2012 Dispon velem http www eclip
69. dy24 JUnitCore java 157 at ATM ATMTesttestATM_O ATMTest java 30 at org junit runner JUnitCore run JUnitCore java 152 at sun reflect NativeMethodAccessorlmpl invoke0 Native Method at org junit runner JUnitCore run_aroundBody20 JUnitCore java 136 at sun reflect NativeMethodAccessorlmpl invoke Unknown Source at org junit runner JUnitCore run JUnitCore java 136 at sun reflect DelegatingMethodAccessorlmpl invoke Unknown Source at org junitrunner JUnitCore run aroundBody 16 JUnitCore java 117 at java lang reflect Method invoke Unknown Source at org junit runner JUnitCore run JUnitCore java 117 at junitframework TestCase runTest aroundBody 10 TestCase java 168 at org junit runner JUnitCore runMain aroundBody 12 JUnitCore java 98 at junit framework TestCase runTest TestCase java 152 at org junit runner JUnitCore runMain JUnitCore java 84 at junitframework TestCase runBare aroundBody8 TestCase java 134 at org junit runner JUnitCore runMainAndExit aroundBody2 JUnitCore java 53 at junit framework TestCase runBare TestCase java 131 at org junitrunner JUnitCore runMainAndExit JUnitCore java 53 at junitframework TestResultS1 protect aroundBodyO TestResultjava 110 at org junit runner JUnitCore main aroundBody0 JUnitCore java 45 a at junitframework TestResultS1 protect TestResultjava 110 at org junit runner JUnitCore main JUnitCore java 45 at junitframework TestResult runProtected aroundBody24 TestResultjava 128 at junit framework T
70. e senvolvimento Dirigido a Modelos MDD pressup e que se for poss vel construir um modelo de um sistema depois este poder ser transformado em algo real mais concretamente em c digo MCF03 J Teste Baseado em Modelos MBT pressup e a gera o de testes a partir de mode los ou mais especificamente a automa o do desenho de testes de caixa preta ULO7 isto a avalia o do comportamento externo do software Com base na ideia anterior de gera o autom tica de c digo e testes a partir dos modelos UML foi desenvolvido um prot tipo experimental denominado FEUP SBT 1 0 que possibilita a gera o autom tica de testes unit rios JUnit JUn12 a partir de diagramas de segu ncia UML na forma de uma extens o add in para a aplica o Enterprise Architect EA Sys12 mas que se encontra ainda num estado que n o permite a sua utiliza o pr tica fora de um contexto de inves tiga o Este prot tipo servir de base para esta disserta o sendo analisadas as suas limita es e necessidades em maior detalhe A motiva o pessoal principal para a realiza o desta disserta o incentivar a utiliza o dos modelos UML desde o in cio do desenvolvimento de software dotando os engenheiros de software de uma ferramenta que lhes permita lucrar com o tempo despendido na elabora o dos modelos 1 2 Objetivos O objetivo principal deste trabalho de disserta o passava por evoluir a vers o do prot tipo experimen
71. e gt new LinkedList lt namelnFile String strictConformance bool false package Package parsmetersBlockID int 10 parent ProjectHierarchyNode testStatus string NotTested combinedFragmentiD int exceptionThrown string messagelD int resultSimple string resultWithTrace string testindex int testName string aspectJJarPath string SspectJJarPathLabel string coverageMode bool false executionMode bool false javaAgentPath string javsAgentPathLabel string junitJarPath string junitJarPathLabel string mainPath string mainPathCheck bool false maximumTreeLevel int 0 colorFinalLabel string lt font gt coveredMessagesLabel string lt TG CoveredMe ermorDiagramCombinedFragmentLabel string Diagram emorDiagramMessageLabel string DiagramMessagelD emorDisgramMessageNoteL abel string Execution result exceptionsToCatch string new string 6 greenColor string lt font color parametersBlockLabel string TGparametersBloc prefencesFileName string TGconfig xml ferencesFileEm tent string lt jenerator redColor string lt font color 4d dA sspectJLabel string espectJValue string espFile string jsvasgentLsbel string javaagentValue string junitLabel string junitVslue string mainPath string mainPsthChec
72. e gt diagram Diagram exceptions List lt TestGeneratorExceptionError gt isMethod bool isPackage bool isTest bool level int name string namelnFile string package Package parametersBlockID int parent ProjectHierarchyNode he eh he eh he k k testStatus string E lt ethods A A Figura 4 5 Estrutura ProjectHierarchyNode com os seus atributos n mero de chamadas EA API foi constru da uma estrutura na qual carregada a informa o ne cess ria da estrutura de pastas do modelo e refer ncias para os respetivos diagramas de sequ ncia Para carregamento da estrutura do modelo foi assim criada de raiz a classe ProjectHierar chyNode que representa um n da estrutura de pacotes referida ou seja cada um dos pacotes da estrutura Os atributos desta classe est o inteiramente apresentados em 4 5 onde se destacam parent e children a que correspondem respetivamente o n pai e a lista de n s filho de cada n Atrav s destes atributos poss vel ligar cada um dos n s numa estrutura em rvore permitindo navegar em qualquer dire o na estrutura Existem tamb m flags que indicam o tipo de pacote Pacote Classe ou M todo de teste Alguns atributos apenas s o aplic veis para alguns tipos de pacote sendo exemplo disso a lista de erros resultantes da execu o que s empregada nos n s do tipo Classe ainda guardada uma refer ncia para a estrutura Package Pacote resp
73. e sequ ncia UML Introdu o da qual se desejava reunir um conjunto de abordagens que posteriormente pudessem ser com paradas com o prot tipo experimental e assim verificar as suas mais valias e poss veis ideias de melhoramentos a aplicar no prot tipo 1 3 Estrutura do documento Para al m deste cap tulo introdut rio este documento contar com mais 6 cap tulos No ca p tulo 2 apresentada uma an lise do prot tipo existente explicando a abordagem em que se insere os seus componentes e as suas limita es No cap tulo 3 encontra se a revis o bibliogr fica incidida sobre o tema automa o de testes baseados em diagramas de sequ ncia UML com a an lise comparativa entre as abordagens identificadas no processo e o prot tipo existente O cap tulo 4 apresenta a conce o e implementa o das novas funcionalidades do prot tipo enquanto o cap tulo 5 cont m todas as informa es sobre a utiliza o da ferramenta O leitor pode considerar mais conveniente ler primeiro o cap tulo 5 onde apresentada uma vis o externa do prot tipo desenvolvido antes do cap tulo 4 que apresenta uma vis o interna do mesmo No cap tulo 6 s o apresentadas as a es de valida o da implementa o atrav s de um sistema real e dos casos de teste existentes Por ltimo o cap tulo 7 cont m as conclus es retiradas da realiza o deste trabalho Introdu o Cap tulo 2 An lise do prot tipo existente Neste cap t
74. em alvo dos testes a Java continua a ser uma limita o do FEUP SBT e um ponto forte da abordagem MDA tratando se de uma ideia para trabalho futuro 6 4 Limita es detetadas Atrav s do processo de valida o foram sendo detetadas algumas limita es do FEUP SBT 2 0 Desde logo ao n vel da performance esta n o atinge os n veis desejados devido falta de 70 Valida o rapidez demonstrada pela API do Enterprise Architect Outra limita o detetada e j abordada anteriormente prende se com a incapacidade da biblioteca Tracing Utilities intercetar chamadas a m todos de classes externas o que pode impossibilitar a correta execu o das funcionalidades do FEUP SBT 2 0 em alguns modelos no entanto pode ser contornado com descompila o Fi nalmente a tamb m j abordada falha na codifica o da modela o de exce es nos diagramas de sequ ncia inviabiliza a dete o da mensagem exata onde foi lan ada a exce o e consequente mente compromete a execu o do analisador de cobertura onde estas situa es se verifiquem 71 Valida o 2 pspcourse FileDifferenceCLI pspcourse SourceCodeParser User start options filename1 filename2 readFileToAmayList filename1 j i i options contains i EEE printDifferenceDetails diff pjons contains p l getDifferenceDetails getNewVslue getOperation getOldValue display printDetails _ printDiffe
75. entusiasmo sempre demonstrado Finalmente mas n o em ltimo agrade o FEUP por muito mais que formar engenheiros formar homens e mulheres com sentido de responsabilidade na sociedade M rio Jorge Ventura de Castro vi A vida foge nos escapa se nos como gua entre os dedos Morremos a cada respira o a cada palavra a cada olhar momento a momento encurta se a dist ncia que nos separa do nosso fim nascemos e j estamos condenados morte A vida breve n o passa de um instante fugaz de um brilho ef mero nas trevas da eternidade Jos Rodrigues dos Santos vii viii Conte do Introdu o 1 1 Motiva o e e s aea ee ed ee 12 Objetivos a sca ssa a ea DR e O eed tate a aa 1 3 Estrutura do documento oao oa a An lise do prot tipo existente 2 1 Abordagem oo es eres caneycdd oa ya nuo ee 22 Exemplos 6 aeni ba ye Gage Oe aw a ew LR eae daw Ges 2 3 Funcionalidades suportadas 00000 Did LIMA O Sue ala e i dea E EDER SR SS A An lise do estado da arte Sl ObJVOS pps ga ea ko bad wade BS de gs E dg E bes 32 SEDITel a a pele ead ew A oh A ae ee ee hw ee 3 3 Abordagem utilizando Arquitetura Dirigida por Modelos MDA dd SSCENTOR soe don a Wace ur eo TB Oe O SD ee e 3 5 An lise comparativa 2 0 2 0 2 ee Conce o e implementa o 4 1 Abordagem e modo de funcionamento geral 4 2 Estrutura dos componentes da ferramenta 4 2
76. er os modelos ficam prontos para serem transformados em c digo Para a gera o das classes a partir do diagrama de classes UML basta utilizar as funcionalidades nativas da ferramenta Enterprise Architect enquanto que para a gera o do c digo de teste apenas necess rio executar o plug in TestGenerator integrado no prot tipo FEUP SBT a partir dos menus do Enterprise Architect O c digo de teste gerado tem de ser integrado com a biblioteca Tracing Utilities traceutils jar e tem de ser ativada a execu o de aspetos em AspectJ antes do c digo de teste poder ser execu tado recorrendo ao JUnit3 A classe de testes gerada estende a classe InteracTestCase que se baseia na classe TestCase API12 da framework JUnit3 Por cada diagrama de sequ ncia gerado um m todo de teste e nos casos em que s o utilizados cen rios parametrizados como na figura 2 3 adicionalmente gerado um m todo de teste por cada combina o de valores de par metros caso de teste O excerto de c digo em 2 1 uma amostra do c digo de teste criado pelo gerador de testes com algumas linhas de c digo omitidas por limita es de espa o Para o primeiro diagrama fi gura 2 3 criado o m todo de teste testSpreadsheetAPI que recebe como argumentos os par metros definidos no diagrama origem Este m todo depois chamado uma vez por cada caso de teste com os seus respetivos valores As intera es com o utilizador s o testadas atrav s da
77. era es definidas ao longo do trabalho Para cada itera o ainda indicado o intervalo de tempo a que esta correspondeu e Itera o 1 17 09 2012 a 21 09 2012 Gerar compilar e executar c digo de teste apresentando resultado numa janela inde pendente Itera o 2 24 09 2012 a 28 09 2012 Incluir identificadores de elemento do Enterprise Architect no c digo de teste gerado e na biblioteca Tracing Utilities Mapear falhas de testes de API com a respetiva mensagem no modelo UML e Iteragdo 3 01 10 2012 a 05 10 2012 Mapear falhas nas intera es com o utilizador Hera o 4 08 10 2012 a 12 10 2012 Mapear falhas nas intera es internas recolhendo os v rios tipos de erros e Iteracdo 5 15 10 2012 a 20 10 2012 Melhorar as mensagens de erro Colorir cada linha dos par metros de teste conforme o resultado 97 Metodologia Colorir fragmento combinado par caso nenhuma das mensagens seja executada Iera o 6 22 10 2012 a 27 10 2012 Colocar informa o resumida nas notas das mensagens com erro Criar estrutura para carregamento de informa o do modelo ProjectHierarchyNode Hera o 7 29 10 2012 a 02 11 2012 Definir e editar os diferentes estere tipos Criar o m dulo de configura es Hera o 8 05 11 2012 a 09 11 2012 Permitir a sele o de excerto de modelo a executar Iera o 9 12 11 2012 a 16 11 2012 Re estruturar
78. eredMessages Finalmente no m todo tearDown impressa a lista coveredMessages dentro de um de terminado formato para ser leg vel pelo add in importante ainda real ar que este m todo de gera o s utilizado caso seja invocada este modo de opera o sendo mantido o modo de gera o anterior para os restantes modos de opera o 43 Conce o e implementa o class traceutils actualNumiter int 0 max int 1 min int 1 oldNumiter int 0 disgramObjectD int opName String 1 CallNode lastChildStarted lastChildStarted CallNode null parenttChildStarted nestedCalls ArayList lt CallNode gt new ArrayList lt C oldLastChildStarted CallNode null parent CallNode null ootExpected R currentActual ActualCall null currentExpected Call null hasCallStub boolean false reflectiveConstructorCa 0 rootExpected CallNode null strict _boolean false args Object classNsme String match ActualCall null messagelD int methodName String oldMatch ActualCall null parentCall Call null ret Object null returnMessagelD int tergetObject Object coveringMode boolean false insideAspect boolean false prevTraceOn boolean false o 7 traceOn boolean false args Object parent NestedCall coveredMessages HashSet lt Integer gt new HashSet lt Int match a className String curentNestedCall ActualCall match Call null methodN
79. erfei oando as quest es de manutenibilidade do c digo e desempenho da exe cu o do prot tipo No entanto o principal foco foi sempre contornar os problemas de usabilidade do prot tipo presentes no FEUP SBT 1 0 onde o utilizador tinha total responsabilidade em executar os testes gerados e analisar os seus resultados Assim foi desenvolvida a nova funcionalidade que permite a execu o dos testes e apresenta o dos respetivos resultados diretamente na ferramenta Enterprise Architect Para um melhor entendimento das altera es que esta nova funcionalidade opera na aborda gem em que se insere o FEUP SBT encontra se na figura 4 1 ilustrado o esquema representativo da abordagem do FEUP SBT 2 0 Al m de registadas as refabrica es de ambos os componentes atrav s da etiqueta v2 vis vel que a gera o e execu o de c digo de teste e an lise de resul tados comp em uma nica etapa 3 5 nesta nova abordagem Aos diagramas de sequ ncia UML chegam os resultados da execu o do c digo de teste e atrav s destes o utilizador tem acesso aos resultados Para demonstra o da modo de funcionamento geral foi elaborado um diagrama de comu nica o que visa apresentar a comunica o estabelecida entre todos os artefactos envolvidos no 27 Conce o e implementa o O Complete method bodies code UML Class 4 Diagrams O refactor design Enterprise Architect EA code generator SEVEN ESS Uses Java
80. estResult runProtected TestResult java 128 FAILURES at junit framework TestResult run_aroundBody20 TestResult java 113 Tests run 2 Failures 1 at junit framework TestResult run TestResult java 107 at junit framework TestCase run_aroundBody6 TestCase java 124 at junit framework TestCase run TestCase java 124 at junit framework TestSuite runTest ere a java 243 Bt junit framework TestSuite runTest TestSuite java 243 gt E ira na e Figura 5 10 Mensagem ap s execu o com erros Na imagem direita encontra se a mesma mensagem da imagem esquerda percorrida at baixo estere tipo apresentado entre aspas angulares imediatamente antes do nome do pacote respetivo Existem quatro etiquetas utilizadas pelo add in para classificar cada um dos pacotes Passed Failed NotTested e Incomplete Cada um dos pacotes do n vel mais baixo representando ce n rios de teste s o classificados como Failed ou Passed caso tenham sido executado com ou sem erros respetivamente ou como NotTested caso n o tenham sido selecionados para serem executados J os pacotes do segundo n vel que representam classes de teste s o classificados como Failed se pelo menos um dos seus cen rios de teste tiver falhado Passed se nenhum ce n rio tiver falhado NotTested se nenhum dos seus cen rios tiver sido executado e finalmente Incomplete caso nem todos os seus cen rios tenham sido selecionados E
81. etando mensa gens que n o foram efetivamente executadas e consequentemente inconformidades comprovando assim a utilidade que se previa ter Conclui se tamb m que o esfor o para construir de raiz um diagrama test vel n o seria significativamente diferente da constru o de um diagrama informal com a vantagem de se poder verificar a consist ncia automaticamente 6 3 An lise comparativa em rela o ao estado da arte e vers o ante rior No cap tulo 3 ap s a an lise do estado da arte foi produzida uma tabela com os pontos principais para compara o das v rias abordagens com o FEUP SBT 1 0 mesma tabela agora adicionada a vers o 2 0 do FEUP SBT 2 0 para uma melhor perce o dos pontos em que esta nova vers o traz mais vantagens Uma vez mais s o utilizados como identificadores um sinal positivo verde e um sinal negativo vermelho para serem melhor percet veis os pontos fortes e fracos respetivamente de cada uma das abordagens Abordagem FEUP FEUP SeDiTeC SCENTOR MDA SBT 1 0 SBT 2 0 Enterprise Enterprise Integra o Together Eclipse Rational Rose f Architect Architect 68 Valida o Transforma Abordagem Executa Gera JUnit f em modelo de da Au diretamente Gera drivers e executa o E teste e depois Gera JUnit toma o diagramas de P de teste de forma na em c digo de Testes sequ ncia transparente O de teste Compara
82. etiva no Enterprise Architect e para os n s do ltimo n vel o Diagram Diagrama de Sequ ncia Imediatamente antes da execu o do FEUP SBT 2 0 constru da a rvore de n s ProjectHi erarchyNode do modelo a testar que analisa desde o pacote Model que representa o n raiz at todos os seus descendentes estarem inclu dos Ap s o preenchimento da rvore guardado o n raiz da mesma a partir do qual se pode percorrer a rvore por completo Caso a rvore n o contenha um m nimo de 3 n veis de n s ser considerada inv lida o utilizador ser informado e a execu o interrompida Atendendo a que a dimens o da rvore de n s ilimitada pois o utilizador pode definir um sem n mero de n veis de pacotes as fun es de navega o e procura na rvore foram implementadas com recurso recursividade sendo assim invocadas para o n em quest o e posteriormente para cada um dos filhos at ser atingido o ltimo n vel da rvore 37 Conce o e implementa o Sele o do Excerto de Modelo a Testar O utilizador define o excerto de modelo que pretende testar ao invocar a execu o do FEUP SBT 2 0 numa determinada pasta sendo todos os cen rios que pertencem descend ncia do pa cote onde ocorreu a invoca o selecionados para ser executados Este processo foi desenvolvido recorrendo fun o Get TreeSelectedPackage do EA SDK Spal0 que devolve o pacote selecionado pelo utilizador De seguid
83. gem apresentada ap s execu o do modelo com este erro encontra se presente em 5 10 Ao confirmar a visualiza o da mensagem com o resultado da execu o o utilizador depara se com o modelo j contendo todas as altera es operadas pelo FEUP SBT 2 0 De seguida ser o descritas cada uma dessas edi es do modelo tanto para o exemplo anterior e como para outros casos n o cobertos pelo mesmo Estere tipos Come ando pelo Explorador de Projetos Project Browser em cada um dos pacotes defini dos no j abordado sistema de 3 n veis de pacotes introduzida uma etiqueta condizente com o resultado da execu o Esta etiqueta introduzida como estere tipo stereotype dos pacotes do diagrama de sequ ncia sem preju zo para anteriores estere tipos que os utilizadores possam ter definido atendendo a que um pacote pode estar associado a v rios estere tipos Visualmente o 54 Utiliza o da ferramenta Result Fo JUnit version 4 10 Time 0 058 OK 2 tests Figura 5 9 Mensagem ap s execu o sem erros Rest a tenn uu at junit tramework estSuite run estSurte java 235 Execution Result at org junitinternal runners JUnit38ClassRunner run aroundBody0 JUnit38ClassRunner java 83 K at org junitinternal runners JUnit38Class Runner run JUnit38Class Runner java 81 sei at orgjunitrunners Suite runChild aroundBodyS Suite java 128 at org junit runners Suite runChild Suite java 128 ATM
84. gido por Testes TDD incute que os m todos devem ser implementados com o m nimo custo ou esfor o para que pos sam passar os testes propostos Posteriormente estes sofrer o um processo de refabrica o para otimizar o c digo desenvolvido Passo 6 Execu o dos testes com m todos j implementados Esta etapa que representada pelo ponto 5 assemelha se da al nea D diferenciando se por nesta altura os m todos das classes j estarem implementados e assim o resultado esperado dos testes que estes passem Se por alguma raz o algum teste falhar ter o de ser processadas as devidas modifica es nos m todos implicados e novamente executados os testes 2 2 Exemplo Esta sec o apresenta um exemplo ilustrativo dos passos que comp e a abordagem anterior mente exposta usando como exemplo um mecanismo de folhas de c lculo Spreadsheet Engine S o expostos os artefactos implementados e gerados pela execu o da abordagem A Modelo Estrutural O primeiro passo da abordagem conforme foi descrito anteriormente elaborar os diagramas estruturais e comportamentais para o sistema de software em causa Come ando pelo diagrama estrutural a figura 2 2 apresenta o diagrama de classes UML do mecanismo de folhas de c lculo O mecanismo de folhas de c lculo suporta a cria o de folhas de c lculo Spreadsheet que s o compostas por c lulas Cell permitindo a adi o das mesmas a uma folha de c lculo add Cel
85. gramobject ID prise Architect e args o conjunto de CallNode args mensagens que devem obrigatoria mente ocorrer pela ordem indicada Tabela B 1 Correspond ncia entre fragmentos combinados e respetivas estruturas do Tracing Uti lities B 3 3 Defini o das intera es previstas Apresentadas as estruturas b sicas para codifica o dos principais elementos de um diagrama de sequ ncia mensagens e fragmentos combinados de seguida apresentada a forma como pos s vel estruturar as intera es internas que se espera ocorrerem no c digo de teste Este processo realizado atrav s da classe Trace pertencente biblioteca TracingUtilities e a sua forma de utili za o est apresentada em B 8 Como vis vel dentro do m todo expect devem ser inseridas as chamadas que comp e o conjunto de intera es internas previstas De seguida deve ser codifi cada a mensagem principal que desencadeia as intera es referidas e por fim invocado o m todo finalCheck Para o exemplo apresentado em B 3 o c digo completo que lhe corresponde est registado no excerto de c digo B 9 Trace expect Interacoes internas esperadas 3 Chamada principal Trace finalCheck Excerto de C digo B 8 Esqueleto da codifica o das intera es internas esperadas 91 Interpreta o do c digo de teste gerado Trace expect new Call 6 AIM Account a withdraw new Object a
86. hamadas API do Enterprise Architect para recolher toda a informa o necess ria para a correta gera o do c digo de teste Compiler AndExecuter conta com a implementa o necess ria para a compila o e execu o do c digo de teste e interpreta o dos resultados das referidas opera es Conta com um m todo executor de comandos do sistema e uma s rie de m todos de complexidade mais elevada que var rem o resultado da execu o armazenando a informa o sobre os poss veis erros numa estrutura denominada TestGeneratorExceptionError Esta estrutura servir posteriormente de fonte de informa o para edi o do modelo Advicer e Preferences representam classes para a cria o de janelas Windows Forms nas quais apresentada informa o ao utilizador A primeira serve para avisos simples por exemplo de indica o de erros na compila o A segunda apresenta uma janela contendo todas as informa es de configura o do add in Utils uma classe de m todos utilit rios desde a cria o de janelas para sele o de ficheiros a m todos de pesquisa de palavras chave num texto utilizados na interpreta o de resultados de execu o 4 2 2 Biblioteca para an lise do tra ado de execu o Tracing Utilities Conforme j foi referido anteriormente Tracing Utilities uma biblioteca em Java desenvol vida no projeto do prot tipo FEUP SBT 1 0 e tem por miss o possibilitar que os testes gerados possam verificar a
87. idos dentro de Classe de teste 2 ou seja Cen rio de teste 3 Cen rio de teste 4 e Cen rio de teste 5 As especificidades do c digo de teste gerado encontram se apresentadas no anexo B Ap s a constru o da estrutura de pastas e c digo de testes esta funcionalidade encerra o seu funcionamento ficando ao encargo do utilizador executar os testes e analisar o seu resultado Executar testes O modo de opera o Executar Testes tem por objetivo automatizar n o apenas a gera o como acontece no FEUP SBT 1 0 mas tamb m a compila o execu o e apresenta o de resul tados Esta opera o pode ser dividida em 3 etapas Gera o de Testes Compila o Execu o de Testes e Edi o do modelo UML de acordo com os resultados Na primeira etapa Gera o de Testes tal como o nome indica s o realizadas as a es indicadas na funcionalidade anterior ou seja gera o do c digo de teste JUnit e aloca o do mesmo na estrutura de pastas respetiva De seguida efetuada a Compila o Execu o de Testes de forma autom tica e transparente para o utilizador sendo guardado o resultado da mesma execu o que cont m as informa es necess rias para a edi o do modelo Por ltimo interpretado o resultado da execu o e com base nessa an lise editado o modelo de v rias formas com o objetivo de disponibilizar ao utilizador um leque variado de informa o que integrado possa ser o mais co
88. ion Fragmento combi E N o nado neg Negative 14 An lise do prot tipo existente Concorr ncia threads mensagens ass ncronas Mensagens S ncronas Sim Tabela 2 1 Funcionalidades suportadas pelo prot tipo 2 4 Limita es Atrav s da an lise do prot tipo FEUP SBT 1 0 apresentada nas sec es anteriores foi pos s vel registar um conjunto de limita es que afetam o prot tipo Desde logo as limita es em algumas funcionalidades dos diagramas de sequ ncia UML acima referidas podem aumentar a probabilidade do utilizador criar um modelo estrutural n o suportado Na vers o 1 0 do prot tipo a estrutura o do seu c digo fonte n o a desejada devendo a sua manutenibilidade isto a facilidade de manuten o do c digo desenvolvido ser melhorada No entanto a limita o considerada mais relevante prende se com a usabilidade do prot tipo devido ao facto de os utilizadores serem for ados a sair da ferramenta Enterprise Architect e eles pr prios compilarem e executarem os testes Este pode ser um fator desmotivante para a utiliza o do produto que deve ser contornado 15 An lise do prot tipo existente Es setValue xVal setFormula yExpr getVslue xVat double op char cVaidouble Wai double yExpr String hs 120 130 x 2 I 120 1 10 x 2 p 130 160 xir I 140 105 x4 Figura 2 3 Diagrama de sequ ncia UML para teste da
89. j existentes tornou se pr tica frequente no desenvolvimento de software tanto a n vel edu cacional como no mundo profissional Esta utiliza o passiva dos modelos UML acarreta v rios inconvenientes Desde logo o consumo de tempo implicado neste processo n o tem associado um benef cio proporcional Tratando se de um processo que geralmente n o pode ser totalmente au tomatizado exigindo consequentemente interven o humana o resultado pode n o ser totalmente correto Por fim tratando se o desenvolvimento de software dum processo iterativo e estando o software em constante evolu o facilmente a documenta o fica em desacordo com o c digo ou descuidada a sua manuten o Para combater os problemas que adv m da utiliza o de UML apenas para documenta o e tornar a utiliza o de UML mais eficaz e eficiente t m sido desenvolvidas nos ltimos anos di versas t cnicas de gera o de c digo a partir dos modelos MDD Model Driven Development e de gera o de testes a partir dos modelos MBT Model Based Testing Com estas t cnicas para al m de se recuperar o tempo despendido no desenho dos modelos UML poss vel verificar Introdu o e melhorar a qualidade destes modelos e aumentar a probabilidade destes se manterem atualiza dos Esta t cnica p e em pr tica os conceitos de Desenvolvimento Dirigido a Modelos MDD Model Driven Development e Teste Baseado em Modelos MBT Model Based Testing D
90. k bool false traceutilsLabel string traceutilsValue string xmiPath string t the be et te Figura 4 4 Diagrama de classes do add in TestGenerator excluindo opera es Arquitetura O diagrama de classes presente em 4 4 ilustra a arquitetura do add in sendo de seguida efetu ada uma breve descri o de cada classe TestGenerator a principal classe do add in contendo os m todos que estabelecem a liga o entre o Enterprise Architect e o add in desenvolvido e a constru o de toda a sua estrutura Cont m uma s rie de atributos vitais para o funcionamento do add in como a estrutura ProjectHierarchy que cont m toda a informa o do modelo a testar S o a partir desta classes invocados todas as fun es do add in como o carregamento da informa o gera o compila o e execu o do 31 Conce o e implementa o c digo de teste entre outras ProjectHierarchyNode a classe utilizada para representar cada n da estrutura de pacotes do modelo isto cada um dos pacotes que comp em um modelo desenvolvido no Enterprise Architect desde o pacote principal Model at ao pacote no n vel mais profundo Ser mais adiante no documento abordada em mais detalhe os motivos da utiliza o desta classe JUnitGenerator tal como o nome indicia cont m todos os m todos e estruturas necess rios para a gera o do c digo de teste a partir dos diagramas de sequ ncia UML Cont m in meras c
91. l Uma c lula cont m um valor value e um indicador se se encontra em processamento de c lculo calculating A uma c lula podem ser realizadas queries para determinar o seu valor getValue e pode ser atribu do um valor diretamente setValue ou uma f rmula setFormula disponibilizado ainda um analisador Parser que permite converter express es textuais numa representa o em rvore definida pela classe F rmula Formula Uma f rmula s pode conter constantes Const operadores bin rios BinOp e refer ncias para c lulas CellRef A classe SpreadSheetCLI representa uma interface por linha de comandos disponibilizada pelo mecanismo de folhas de c lculo A classe CircularReferenceException representa exce es que s o lan a das quando detetado a ocorr ncia de c lculo de uma c lula como uma fun o de si mesma poss vel ainda verificar que a classe do analisador Parser est definida com o estere tipo stub indicando que esta classe cont m m todos ainda n o implementados An lise do prot tipo existente EEE cells HashMap lt Stng Cel addCelname String Cel NotCovereda Spreadsheet NotCovereds CircularReferenceException calculating boolean false value double 0 getValue double setFormuls expression String void setVslue value double void NotCovered Cell spreadsheet Spreadsheet value double CellRef cell Cell eval double C
92. l a representa o de v rios tipos de ciclos atrav s desta classe CombStrict CombPerm e CombInter s o tamb m a exemplo das anteriores subclasses de CombOperator para defini o da ordem de ocorr ncia das mensagens CombStrict representa o fragmento combinado strict enquanto que a sua subclasse CombSeq representa o fragmento combinado seg Estes dois fragmentos modelam um conjunto de mensagens que ocorrer por uma determinada ordem Atendendo a que n o se prev execu o concorrente o fragmento seg reduz se ao fragmento strict CombPerm representa um conjunto de mensagens que poder ocorrer por uma qualquer ordem Por fim Comblnter e a sua subclasse CombPar representando o fragmento par encerram um conjunto de mensagens cuja execu o poder ocorrer de forma entrela ada ou paralelamente respetivamente ConformanceChecker uma das principais classes desta biblioteca onde est o implementa dos os diversos m todos utilizados na an lise de conformidade da execu o obtida com a esperada E ainda superclasse de Trace Trace a classe contendo a defini o dos v rios aspetos para intercetar as mensagens do sis tema para posterior an lise de conformidade pela sua superclasse ConformanceChecker E nesta 33 Conce o e implementa o classe que foi definida a lista de identificadores de mensagens executadas utilizada no funcionali dade de an lise de cobertura InteracTestCase uma classe que estende a
93. lp View the status of the available add ins and configure the add ins that are loaded on startup Figura A 8 Acesso ao Gestor de Add Ins do Enterprise Architect do add in possa estar ativado necess rio que seja assinalada a op o Load on Startup isto confirmar o carregamento do add in no in cio da execu o do Enterprise Architect Ao confir mar estas op es ser necess rio reiniciar o Enterprise Architect Depois de reaberto deve ser efetuada uma valida o final da instala o do add in acedendo ao Gestor de Add Ins conforme previamente visto em A 8 e verificar que todos os campos se encontram com aspeto id ntico ao ilustrado em A 9 espesso DD Status Load on Startup Enabled Vv Figura A 9 Verifica o da instala o com sucesso do add in A 2 Processo de configura o As funcionalidades que permitem a execu o direta dos cen rios de teste fazem no atrav s de um executor que recorre ao pacote de desenvolvimento Java JDK Assim para possibilitar a utiliza o dos comandos disponibilizados pelo Java JDK este deve ser adicionado s vari veis 81 Tutorial de instala o e configura o ambiente dos sistema ap s a sua instala o Para tal devem ser efetuados os seguintes passos que podem ser ligeiramente diferentes dependendo da vers o do Sistema Operativo Windows em funcionamento n o se tratando de diferen as impeditivas da conclus
94. lt value gt C aspectjl 6 lib aspectjweaver jar lt value gt lt javaagent gt lt files gt lt file name C workspace Observer eap gt lt path gt C workspace ob lt path gt lt check gt true lt check gt lt file gt lt file name C workspace spreadsheetengine eap gt lt path gt C workspace spread lt path gt lt check gt true lt check gt lt file gt lt files gt lt testgeneratorconfigurations gt Excerto de C digo 4 1 Exemplo do conte do do ficheiro TGconfig xml Toda esta informa o recolhida no in cio da execu o da ferramenta FEUP SBT 2 0 e tam b m quando lan ado o m dulo de configura es Quando neste se registam altera es procede se respetiva altera o do ficheiro Este m dulo apresenta ao utilizador uma janela Windows Form que cont m todas as informa es do ficheiro XML relevantes para o projeto a testar N o sendo um ficheiro oculto a utiliza o direta do mesmo pelo utilizador desencorajada dado que a poss vel inje o dum erro de sintaxe XML no ficheiro poderia impossibilitar o funci onamento correto da ferramenta e todas as altera es pretendidas podem ser facilmente operadas diretamente na janela de configura es 4 3 2 Representa o em mem ria da estrutura do modelo De modo a conferir uma maior robustez cria o dos modelos comportamentais foi decidido for ar o utilizador a utilizar uma estrutura de pacotes seguindo uma determin
95. m sido desenvolvidas nos ltimos anos diversas t cnicas de gera o de c digo e testes a partir dos modelos Inspirando se nestas t cnicas foi desenvolvido um prot tipo interno experimental FEUP SBT para a gera o autom tica de testes unit rios JUnit a partir de diagramas de sequ n cia UML na forma de uma extens o add in para a ferramenta de modela o Enterprise Architect Este trabalho de disserta o que se serviu do prot tipo FEUP SBT como base teve como principal objetivo evolu lo para que al m da gera o de c digo de teste permitisse tamb m or denar a execu o dos cen rios de teste especificados em diagramas de sequ ncia UML e receber o feedback visual dos resultados da sua execu o diretamente no ambiente de modela o Enter prise Architect tornando o processo de gera o de c digo de testes transparente para o utilizador Foi ainda decidido implementar adicionalmente uma outra funcionalidade que permitisse ana lisar a cobertura dos testes executados ou seja verificar se todas as intera es especificadas no modelo foram efetivamente exercitadas apresentando uma vez mais os resultados atrav s de um esquema de cores diretamente no modelo UML Estipulou se ainda a constru o de um m dulo de configura o para a ferramenta Beneficiando da implementa o das novas funcionalidades pretendia se ainda detetar possi veis falhas ou limita es do prot tipo realizando um processo de refabrica o
96. mensa args gens cuja execu o pode ser entrela ada Existem 3 construtores de ciclos loop comum a todos o ltimo argumento e CombLoop int min int Ciclo loop max CallNode arg CombLoop int numIter CallNode arg CombLoop CallNode arg arg onde deve ser colocado o conjunto de chamadas a operar em cada itera o do ciclo O primeiro construtor codifica um ciclo de min at max itera es enquanto que no segundo um ciclo de numIter itera es No ltimo construtor codificado um ciclo sem restri es do n mero de itera es Paralelo par CombPar int diagramObject ID CallNode args diagramOb ject ID representa o identificador do fragmento no En terprise Architect e args o con junto de mensagens cuja execu o pode acontecer em paralelo 90 Interpreta o do c digo de teste gerado diagramObject ID representa o Permut vel CombPerm int identificador do fragmento no En ai diagramobject ID terprise Architect e args o con CallNode args junto de mensagens cuja execu o pode ser por qualquer ordem diagramOb ject ID representa o iden Sequencial CombSeq int tificador do fragmento no Enterprise Ar seq diagramObjectID chitect e args o conjunto de mensagens CallNode args que devem ocorrer de forma sequencial diagramOb ject ID representa o Estrito ConbEecice ak identificador do fragmento no Enter sie dia
97. mount 9 OK new Call 8 AIM Account a setBalance new Object balance amount 10 null assertEquals DiagramMessageID 9 IRetID 61 OK a withdraw amount Trace finalCheck Excerto de C digo B 9 Codifica o completa do trecho da figura B 3 B 3 4 Manipulador de objetos Ao definir as intera es internas previstas por vezes necess rio utilizar objetos que s o criados durante essas intera es e como tal ainda n o est o definidos Para lidar com estas situa es que iriam originar erros de compila o foi definida a classe gen rica ObjectHandler que permite criar uma refer ncia para o objeto em quest o permitindo utiliz lo na defini o das intera es sendo depois atribu do o seu real valor Caso se pretendesse codificar o construtor da figura B 1 como uma intera o interna e con sequentemente utilizando a classe Trace o objeto a do tipo Account teria de ser definido previamente com recurso ao manipulador de objetos estando apresentado em B 10 o c digo deste processo ObjectHandler lt Account gt a new ObjectHandler lt Account gt Trace expect new Call 5 AIM Account a Account new Object balance 10 null Account a new Account balance Trace finalCheck Excerto de C digo B 10 Utiliza o do manipulador de objetos ObjectHandler Apresentados os detalhes principais das estruturas presentes no c dig
98. mpleto para analisar os resultados da execu o Executar os testes analisando cobertura No seguimento do desenvolvimento da funcionalidade anterior concluiu se que para al m de constatar e exibir os erros encontrados na execu o do c digo de teste JUnit gerado seria til ao utilizador poder verificar graficamente no modelo UML as chamadas que foram de facto executadas permitindo analisar diretamente no modelo a cobertura da execu o Trata se de um crit rio de an lise extremamente til tanto para determinar quando que o teste pode ser finalizado isto quando os cen rios de teste cobrem todas as mensagens do modelo mas tamb m para medir e classificar a efic cia do processo de teste ZHM97 Desta forma foi adicionada informa o ao resultado da execu o do c digo de teste JUnit gerado que posteriormente interpretada permitindo colorir as mensagens no modelo UML que 52 Utiliza o da ferramenta foram executadas para al m de todas as informa es j disponibilizadas no modo b sico de exe cu o de testes descrito anteriormente 5 5 Interpreta o de resultados de execu o Nesta sec o s o apresentados os diversos meios utilizados para fornecer ao utilizador infor ma o gr fica e textual sobre o resultado da execu o operada Para facilitar e acelerar a compre ens o destes aspetos utilizado um exemplo denominado ATM contendo apenas um simples diagrama de sequ ncia ilustrad
99. ncontram as bibliotecas de v nculo din mico dll de instala o da ferramenta Neste ficheiro s o armazenadas todas as informa es para constru o da janela de configura es bem como toda as op es nela definidas pelo utiliza dor Um exemplo do conte do deste ficheiro pode ser observado no excerto de c digo 4 1 At linha 17 do excerto s o armazenados a etiqueta de apresenta o na janela de configura es e o caminho guardado para cada uma das bibliotecas necess rias para o correto funcionamento do FEUP SBT 2 0 A partir da linha 18 s o guardadas informa es de configura o por cada projeto do Enterprise Architect EAP localiza o do c digo fonte do respetivo modelo estrutural e ainda a indica o se o utilizador pretende utilizar sempre este diret rio sem ser questionado lt testgeneratorconfigurations gt lt junit gt lt label gt Path of JUnit jar file lt label gt lt value gt C junit4 10 junit 4 10 jar lt value gt lt junit gt lt aspectj gt lt label gt Path of AspectJrt jar file lt label gt lt value gt C aspectjl 6 lib aspectjrt 1 6 12 jar lt value gt lt aspectj gt lt traceutils gt lt label gt Location of traceutils jar file lt label gt lt value gt C Users mariofalcao Desktop traceutils jar lt value gt lt traceutils gt lt javaagent gt 35 19 Conce o e implementa o lt label gt Location of javaagent jar file lt label gt
100. nstalado no sistema a ferramenta de modela o Enterprise Architect Sys12 na vers o 7 5 ou numa vers o mais recente Esta ferramenta de modela o apenas se encontra dispon vel para instala o direta em sistemas Microsoft Mic12 Windows 8 Windows 7 Win dows Vista Windows 2008 Windows 2003 Windows XP ou Windows 2000 ainda necess rio ter instalado no sistema a plataforma NET Fra12b na qual vem inclu da a Ferramenta de Registo de Assemblagem Regasm exe Net12 utilizada no processo de instala o Dependendo das funcionalidades do FEUP SBT 2 0 que se pretende executar existe um con junto de programas que devem estar instalados no sistema para a sua correta execu o Por exem plo se o utilizador apenas desejar gerar o c digo de testes JUnit a partir do modelo comporta mental n o necess rio nenhum software adicional Por outro lado se o objetivo for executar o c digo de testes e verificar o seu resultado no diagrama j necess ria a instala o de um con junto de programas adicionais que permitem a compila o e execu o do c digo de teste gerado pelo FEUP SBT 2 0 Este conjunto de programas est assinalado na lista que se segue e Pacote de Desenvolvimento Java JDK e TracingUtilities e JUnit 45 Utiliza o da ferramenta e AspectJ O Pacote de Desenvolvimento Java JDK um ambiente desenvolvimento para constru o de aplica es Java e est dispon vel em Oral3 Este ambiente de de
101. nstrutores de objetos Unknown representa uma vari vel que pode tomar qualquer valor sendo representada no modelo pelo caracter Randomize uma classe auxiliar contendo os m todos implementados para gerar valores aleat rios necess rios implementa o de v rias funcionalidades 4 2 2 2 Utiliza o de Programa o Orientada a Aspetos AOP Programa o Orientada a Aspetos AOP um paradigma de programa o que permite au mentar a modularidade do c digo separando o c digo que implementa fun es espec ficas e que afeta partes diferentes do sistema as chamadas preocupa es ortogonais crosscutting concern Asp12 Para por em pr tica os conceitos da Programa o Orientada a Aspetos foi utilizada a extens o orientada a aspetos da linguagem java AspectJ O conceito principal do AspectJ o as peto Cada aspeto define uma fun o espec fica que pode afetar v rias partes do sistema Asp12 S o ainda utilizados join points que permitem intercetar pontos no fluxo de execu o como por exemplo a chamada ou execu o de m todos Um pointcut definido pela composi o de v rios join points e um advice representa um c digo adicional que deve ser executado aquando antes ou depois da interce o de um join point O AspectJ utilizado pela biblioteca TracingUtilities com o objetivo de intercetar as exe cu es de m todos podendo assim construir o tra ado da execu o do programa e compar lo com
102. nt years to generate code and tests from the models Inspired by these techniques it was developed an experimental prototype FEUP SBT for the automatic generation of JUnit unit tests from UML sequence diagrams as an add in to Enterprise Architect modeling tool This dissertation work was based on the prototype FEUP SBT and aimed to evolve it so that beyond the test generation it would also be possible to order the execution of test scenarios spe cified in UML sequence diagrams and receive a visual feedback of the execution results directly in the Enterprise Architect modeling environment thus hiding generated test code from users It was also decided to further implement another feature so that it could be possible to analyze the coverage of tests execution in other words verify that all interactions specified in the model were actually exercised showing once again the result through a color scheme directly in the UML model It was still further decided to build a configuration module for the tool Benefiting from the implementation of the new functionalities it was also intended to further detect possible failures or limitations presents on the prototype performing a refactoring process in order to enlarge its robustness and maintainability To develop the proposed objectives it was used an iterative approach where in each week were validated prior requirements and defined the following ones This methodology proved to be very useful to
103. ntes 7 2 Trabalho futuro Existem algumas limita es do FEUP SBT 2 0 que ao longo do documento foram registadas e que em trabalho futuro era importante serem corrigidas para aumentar ainda mais o potencial de utiliza o da ferramenta Entre estas limita es est o quest es de desempenho e suporte a especificidades do modelo como chamadas a m todos externos e modela o de exce es bem como alguns fragmentos combinados que n o s o ainda suportados A evolu o da ferramenta para outras linguagens para al m da suportada atualmente Java podem tamb m ser uma importante evolu o da ferramenta at por se tratar de um ponto fraco em rela o a uma das abordagens analisadas no estado da arte Registado como trabalho futuro encontra se tamb m a realiza o de uma experi ncia utili zando a framework de m tricas de PSP Hum05 para avaliar a produtividade e qualidade do desenvolvimento de software utilizando a abordagem aqui especificada em rela o a outras Sobretudo para p r em pr tica as capacidades do analisador de cobertura em trabalho futuro poder ser constru do um gerador autom tico de dados de teste com capacidade para identificar fragmentos combinados condicionais que poder o originar v rios tra ados de execu o tendo como objetivo for ar a execu o de todos os caminhos poss veis 76 Anexo A Tutorial de instala o e configura o Nesta sec o s o apresentados em detalhe os passos ne
104. o respetivamente J os argumen tos className e targetObject representam o nome da classe e o objeto alvos Para representar o nome do m otodo a lista de argumentos e o objeto de retorno s o utilizados respe tivamente os argumentos methodName args e ret Por ltimo podem ser definidas no ltimo argumento nestedCalls as chamadas ou fragmentos combinados encaixados na chamada codificada 87 Interpreta o do c digo de teste gerado Call int messagelD Object args String className int Object returnMessageID Object ret targetObject CallNode String methodName nestedCalls Excerto de C digo B 5 Estrutura Call da biblioteca Tracing Utilities No exemplo ATM poss vel constatar a exist ncia de intera es internas que t m de ser co dificadas com a estrutura anterior Um desses exemplos est na figura B 3 cuja codifica o em c digo de teste se encontra no excerto de c digo B 6 A primeira mensagem withdraw amount tem como identificador o n mero 6 a sua classe alvo Account contida no pacote ATM logo ATM Account e o objeto alvo o a criado anteriormente Em rela o ao m todo o seu nome withdraw e conta com apenas um par metro o amount Quanto ao retorno a mensagem com o identificador 9 e o seu valor OK Como ltimo argumento e conforme vis vel na figura B 3 est a especifica o da mensagem set Balan
105. o de teste interpret vel pela biblioteca TracingUtilities apresentado no excerto de c digo B 11 o c digo de teste completo gerado pelo FEUP SBT 2 0 para o exemplo ATM que tem vindo a ser utilizado na explica o package AIM import traceutils public class ATMTest extends InteracTestCase 92 26 oo Interpreta o do c digo de teste gerado public void testATM double balance double amount boolean log String date String type throws Exception Account a new Account balance if amount lt balance Trace expect new Call 6 ATM Account a withdraw new Object amount 9 OK new Call 8 AIM Account a setBalance new Object balance amount 10 null assertEquals DiagramMessagelD 9 RetID 6 OK a withdraw amount Trace finalCheck if log true Movement m new Movement date amount type else assertEquals DiagramMessageID 101 RetID 35I FAIL a withdraw amount public void testATM_0 throws Exception testATM 100 150 true 01 01 01 NoMoney public void testATM_1 throws Exception testATM 100 50 false 01 01 90 Money Excerto de C digo B 11 Codifica o do exemplo ATM B 4 Intera o com o utilizador Para modelar a intera o com o utilizador utilizada a classe Console da biblioteca Tra cing Utilities que cont m uma s rie de m todo
106. o dos testes um ponto a favor para a abordagem MDA que pode ser potenciada para v rias linguagens en quanto o prot tipo foi pensado para Java Ainda assim trata se de uma boa ideia para trabalho futuro no aperfei oamento do prot tipo Em termos de usabilidade cr se que o m todo utilizado pelo SeDiTeC que compara o diagrama original com o fruto da execu o n o for ando o utiliza dor a compilar e executar os testes uma mais valia e a prioridade em termos de melhoramentos para o prot tipo 25 An lise do estado da arte 26 Cap tulo 4 Conce o e implementa o No presente cap tulo s o apresentados os detalhes de conce o e implementa o da ferramenta FEUP SBT 2 0 exposta a reformula o da abordagem e modo de funcionamento geral ainda especificada a estrutura dos componentes da ferramenta o add in para EA e a biblioteca para an lise do tra ado e cobertura Por fim apresentada a concretiza o das principais funcionalidades do FEUP SBT 2 0 4 1 Abordagem e modo de funcionamento geral Da an lise do prot tipo existente e da revis o bibliogr fica apresentados nos cap tulos ante riores foi poss vel comprovar algumas limita es e necessidades que partida eram apontadas vers o 1 0 do prot tipo FEUP SBT As componentes do prot tipo foram assim alvo de um pro cesso de refabrica o refactoring principalmente o gerador de testes mas tamb m a biblioteca Tracing Utilities ap
107. o e configura o A 1 Processo de instala o do add in o oo a A 2 Processo de configura o oaoa a B Interpreta o do c digo de teste gerado B 1 Estrutura o da s classe s de teste ccccccccclccccc ee B2 Testede APL ss cu sas oe be ee bw ae ee eek A dd a B 3 An lise das intera es internas cccccccclcc a B 3 1 Chamadas o cs esce e stk asane eee ee B 3 2 Fragmentos combinados aoaaa a 0000000 eee B 3 3 Defini o das intera es previstas aaa B 3 4 Manipulador de objetos o a a B 4 Intera o com o utilizador aoaaa a BS BXCE ES as Hoe Rak aA a a Ya SR ee a Tg a B 6 Conformidade s s e a a a eee oa a a aa a al a a a ee B 7 Altera es na an lise de cobertura ooa a C Metodologia Refer ncias 61 61 65 68 70 73 T3 76 77 77 81 85 85 86 87 87 89 91 92 93 94 95 95 97 99 Lista de Figuras 21 2 2 2 3 2 4 2 5 3 1 3 2 3 3 4 1 4 2 4 3 4 4 4 5 4 6 4 7 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 5 12 5 13 5 14 5 15 Abordagem em que se insere o prot tipo FEUP SBT 1 0 Diagrama de classes UML do mecanismo de folhas de c lculo Diagrama de sequ ncia UML para teste da API do mecanismo de folhas de c lculo Diagrama de sequ ncia UML para teste da Interface do mecanismo de folhas de caleulo 26 24 bandh a aod aoe bd pro oP pd bp do hw A Execu o e verifica o dos
108. o em 5 7 no qual simplificado um processo de levantamento monet rio num sistema banc rio constru do com o prop sito de abranger praticamente todas as op es de apresenta o de resultados de execu o disponibilizadas pelo FEUP SBT 2 0 Neste exemplo existem duas classes Account e Movement representando respetivamente uma conta e um registo de movimento banc rios Faz ainda parte do modelo um conjunto de par metros edit veis pelo utilizador como o saldo da conta quantidade de dinheiro a levantar indica o se se deve registar o movimento ou n o entre outras por forma a possibilitar a cria o dos mais variados casos de teste para o mesmo cen rio de teste A resposta ao processo de levantamento simplificada pelo retorno de palavras chave OK ou FAIL H Client a m x Bana a arna F Q Model Client E Dynamic View I ATM 5 E ATM E ATM P ATM 2 Client E A a Account withdraw amount amount lt balance E m Movement a J Bugs E Logical View 5 EB ATM FE Logical View a E Account a E Movement w E a Bee Bt es withdraw amount L Parameters balance double amount double log boolean date String type Sting 100 1150 true 101 01 01 NoMoney 100 150 false 01 01 90 Money Figura 5 7 Exemplo ATM Diagrama de sequ ncia exemplificativo de um levantamento moneta rio num sistema bancario 53 Utiliza o da ferramenta Mensagem de erro de compil
109. oi exe cutado e passou ou falhou respetivamente Caso n o tenha sido executado colocada a etiqueta NotTested Editados todos os n s do mais baixo n vel da rvore iniciado um processo iterativo que em cada itera o sobe um degrau na rvore e edita os estere tipos desse n vel em fun o dos filhos Na primeira itera o definido o estere tipo para os n s do tipo Classe sendo atribu do Passed caso todos os cen rios dessa classe tenham sido executados com resultado Passed Failed caso algum dos cen rios tenha falhado NotTested se nenhum dos cen rios foi executado e Incom plete se nem todos foram executados De seguida passa se para o ltimo n vel dos n s do tipo Pacote e repetido o mesmo processo at atingir o n vel mais alto da rvore n o entrando neste processo de edi o os pacotes especiais Model e Dynamic View Edi o de elementos dos diagramas de sequ ncia Quando detetado que um teste cont m erros resultantes da sua execu o o primeiro passo que realizado pelo add in verificar quais dos seus cen rios deram origem a esse erro poss vel atrav s da compara o do atributo TestName da estrutura de erro do add in com o nome dos seus cen rios Uma vez conclu da esta verifica o s o analisados os identificadores MessageID e CombinedFragment ID definidos na estrutura Os elementos a que correspondem estes ele mentos s o coloridos a vermelho atrav s do seu atributo Color tamb m
110. om sucesso na sua totalidade incluindo as diversas formas de apresenta o de resultados no modelo que incidem na colora o das mensagens e ou fragmentos combinados adi o de mensagens de erro nas notas dos elementos em quest o edi o dos estere tipos dos cen rios de teste e colorindo cada cen rio parametrizado conforme os respetivos resultados da sua execu o e mensagens auxiliares de informa o A funcionalidade para an lise de cobertura dos testes foi tamb m ela conclu da com sucesso sendo detetadas as mensagens efetivamente executadas e utilizando um esquema de cores para colorir o modelo em conformidade com os resultados Para al m das funcionalidades de execu o direta de testes foi tamb m desenvolvido um m dulo de configura es onde s o editadas todas as op es necess rias para o correto funcio namento das funcionalidades anteriores incrementando a usabilidade da utiliza o do prot tipo FEUP SBT 2 0 15 Conclus es Toda esta implementa o permitiu reestruturar os componentes que comp em o FEUP SBT 2 0 sobretudo o add in para o EA estruturando o num sistema de classes mais robusto e que facilita a sua manutenibilidade A an lise do estado da arte foi tamb m uma importante etapa conclu da com xito registando algumas abordagens que se assemelham ao FEUP SBT 2 0 per mitindo registar ideias para trabalho futuro e verificar poss veis vantagens que a ferramenta pode acrescentar s j existe
111. omandos e verificar que a resposta a mesma vers o do Pacote de Desenvolvimento instalado conforme exemplificado em 4 10 Caso j exista texto no Valor da vari vel para acrescentar mais caminhos basta inserir um ponto e v rgula seguido dos novos caminhos a inserir 82 Tutorial de instala o e configura o ES Administrador Linha de comandos Lo E jts c N gt javac version javac 1 7 8 87 iC k 4 Figura A 10 Verifica o da instala o com sucesso do Pacote de Desenvolvimento Java JDK 83 Tutorial de instala o e configura o 84 Anexo B Interpreta o do c digo de teste gerado Embora o objetivo principal desta disserta o seja automatizar o processo de compila o execu o e exposi o de resultados escondendo assim do utilizador o c digo de teste gerado tamb m poss vel ser o pr prio utilizador a criar o c digo de teste JUnit tirando proveito das funcionalidades que a biblioteca TracingUtilities disponibiliza Nesta sec o assim apresentado o c digo de teste gerado pelo add in Antes de mais conveniente esclarecer que o c digo de teste gerado atrav s da op o Exe cutar os Testes Analisando Cobertura tem diferen as em rela o ao gerado atrav s do modo de gera o ou execu o b sica De seguida s o analisados individualmente os v rios aspetos do c digo de teste utilizando como exemplo o c digo de teste gerado pelo exemplo ATM ilustr
112. onstivalue double BinOp op char Ihs Formuls rhs Formula NotCovered eval double eval double toString String NotCovered NotCovered toString String toString String Figura 2 2 Diagrama de classes UML do mecanismo de folhas de c lculo B Modelo Comportamental Paralelamente constru o do modelo estrutural acima apresentado constru do o modelo comportamental atrav s de diagramas de sequ ncia UML representando o comportamento pre tendido pelo mecanismo de folhas de c lculo tanto para as intera es externas com clientes utili zadores como as intera es internas entre os v rios objetos As figuras 2 3 e 2 4 apresentam os 2 diagramas de sequ ncia implementados para testar o comportamento do mecanismo de folhas de c lculo Na figura 2 3 apresentado o comportamento previsto da aplica o nas situa es em que o utilizador define e efetua queries sobre c lulas de uma dada folha de c lculo Os cen rios de teste An lise do prot tipo existente est o devidamente parametrizados numa nota estereotipada no fundo do diagrama podendo assim ser executado o mesmo c digo de teste para diferentes situa es isto diferentes dados de teste Inicialmente come a se por definir a folha de c lculo e adicionar duas c lulas mesma x e y De seguida testada a funcionalidade de atribui o de um valor e de uma f rmula a cada uma das c lulas criadas Conforme indicado as
113. opera o Executar Testes Analisando Cobertura podendo assim ser verificadas as altera es descritas anteriormente 58 Utiliza o da ferramenta Project Browser vax amp GI Failed ATM GO Failed ATM Parameters balance double amount double log boolean date String type String 100 150 true 01 01 01 NoMoney 100 150 false 1 01 01 90 Money Figura 5 17 Exemplo ATM com inje o de erros ap s execu o analisando cobertura 59 Utiliza o da ferramenta Project Browser amp 8 Dynamic View E Pacote n vel 1 Oo Pacote nivel 2 Oo Pacote nivel N a PT Diagrama de Sequ ncia o Dfii deese PF Diagrama de Sequ ncia E D Esse detested Cesoire PF Diagrama de a BT Diagrama de Sequ ncia Cena de tee PF Diagrama de Sequ ncia Project Browser E Dynamic View b E Pacote n vel 2 E E Pacote n vel N a oO P7 Diagrama de Sequ ncia E BP Diagrama de Sequ ncia E E are O prt Diagrama de Sequ ncia erre P7 Diagrama de Sequ ncia meee i BP Diagrama de Sequ ncia Project Browser oa Pacote n vel 1 E Pacote n vel 2 E E Pacote nivel N L ET Diagrama de Sequ ncia 4 Cenario de teste 2 PF Diagrama de Sequ ncia Classe de teste 2 a 5 Cen rio de teste 3 i PS Diagrama de Sequ ncia C Cen rio de teste 4 BT Diagrama de Sequ ncia B Cen rio
114. os resultantes da execu o do c digo de teste gerado d o origem colora o da mensagem espec fica onde ocorreu o erro seja esta a pr pria chamada ou a chamada de retorno exceto em dois casos mais espec ficos O primeiro ocorre quando o erro encontrado do tipo UnexpectedCallException que acontece quando em modo estrito strict detetada uma cha mada que n o est prevista no diagrama de sequ ncia Tratando se de uma chamada que n o existe no modelo o que impossibilita a sua colora o a mensagem editada o pai que lhe deu origem ou seja que iniciou a sequ ncia de intera es internas E apresentado em 5 13 como 56 Utiliza o da ferramenta seria pintado o modelo se ocorresse qualquer uma outra chamada para al m da indicada como msgFilho ficando o erro assinalado em msgPai que lhe deu origem O segundo caso especial pode ocorrer caso o modelo conte com um fragmento combinado do tipo alterna tiva alt e se n o forem executadas nenhuma das alternativas definidas o pr prio fragmento combinado que editado Um exemplo desta ltima situa o apresentado em 5 14 No exem plo como tanto msg1 argl arg2 como msg2 arg3 arg3 n o foram executadas o fragmento combinado alt em que estas se inserem que editado R x Cell msgFilho msgi argi arg2 H msg2 arg3 arg4 Figura 5 14 Colora o do modelo caso todas as alternativas de um fragmento combinado Alt
115. ource model target model 3 4 SCENTOR Na mesma confer ncia de apresenta o da abordagem anterior o 2nd International Workshop on Automation of Software Test AST 2007 foi tamb m apresentada por Jeremiah Wittevrongel e Frank Maurer uma ferramenta que cria drivers de teste funcionais a partir de diagramas de sequ ncia criado para aplica es de e business Esta ferramenta encontra se descrita no docu mento SCENTOR Scenario Based Testing of E Business Applications WMO Come ando pela defini o de driver de teste um driver uma classe que simula o programa principal do elemento a ser testado ou seja faz chamadas ao m dulo a ser testado Bia06 A ferramenta SCENTOR encontra se dispon vel na Internet embora atualmente se encontre offline atrav s de um web browser para a interface com o utilizador e de um web server para lidar com pedidos e respostas e permite a gera o compila o e execu o de drivers de testes atrav s da sua interface O processo em que se insere o SCENTOR encontra se exemplificado pela figura 3 3 Os mo delos UML t m de ser desenhados numa ferramenta externa que posteriormente possa exportar os diagramas num formato XMI Para esse efeito foi utilizada a ferramenta Rational Rose Ros12 De seguida os ficheiros XMI s o carregados no SCENTOR atrav s da sua interface web site tamb m introduzido c digo de configura o caso seja necess rio executar algumas opera es an
116. plementa o do projeto e nesse processo encontrar tamb m limita es do FEUP SBT 2 0 sobretudo em rela o s especificida des de modela o do diagrama de sequ ncia suportadas pelo prot tipo O projeto a testar denominado FileDiff foi desenvolvido na FEUP antes sequer da imple menta o do FEUP SBT 1 0 e sem qualquer inten o de servir de suporte ao mesmo Neste projeto foi implementado um comparador de ficheiros que analisa a diferen a entre duas vers es conse cutivas de ficheiros de c digo fonte em n mero de linhas adicionadas modificadas ou eliminadas ignorando linhas em branco e coment rios Este utilit rio tem sido usado pelo alunos do MIEIC no desenvolvimento de projetos para recolha de m tricas de tamanho de c digo produzido alte rado O diagrama de classes deste projeto encontra se exposto em 6 2 Est o assim modeladas as classes FileDifferenceCLI contendo a fun o main do projeto e a implementa o da interface atrav s da linha de comandos SourceCodeParser contendo m todos para interpretar e limpar o conte do recolhido de cada ficheiro DifferenceCalculator respons vel por calcular as diferen as entre os ficheiros Delta que representa uma altera o Operation trata se de uma enumera o das poss veis altera es Encontrava se tamb m elaborado no modelo UML do projeto FileDiff um diagrama de sequ ncia que se assumia representar plenamente a intera o dos objetos que ocorreria na execu
117. presente na sua vers o 1 0 no qual gerado um c digo de teste em JUnit a partir dos diagramas de sequ ncia UML modelados no Enterprise Architect Ao selecionar esta funcionalidade ser criado caso n o exista ainda a estrutura de pastas que representa a estrutura definida no modelo UML tal como explicado na Sec o 5 3 Esta estrutura no seu caso mais b sico pode ser apenas uma pasta com o mesmo nome do nico pacote de primeiro n vel definido no modelo comportamental UML e ser criada dentro da pasta 51 Utiliza o da ferramenta de refer ncia Dentro das pastas a que pertencem ser o criadas as classes Java onde estar o codificados os cen rios de teste modelados Para uma melhor compreens o deste processo se se invocasse este modo de opera o no modelo definido em 5 3 seria criado na pasta refer ncia um diret rio com o nome Pacote n vel 1 no seu interior o Pacote n vel 2 e dentro deste o diret rio com o nome Pacote n vel N representando assim o primeiro n vel de pacotes do modelo No ltimo diret rio Pacote nivel N seriam criados 2 ficheiros Java Classe de teste 1 java e Classe de teste 2 java de acordo com o segundo n vel de pacotes Na Classe de teste 1 java estariam implementados 2 m todos representando os Cen rio de teste 1 e Cen rio de teste 2 da Classe de teste 1 ao passo que o ficheiro Classe de teste 2 java contaria com 3 m todos representando os cen rios de teste defin
118. preta o e edi o gr fica do modelo a adapta o dos m todos implemen tados anteriormente foi realizada sem problemas de grande relevo Assim sendo o verdadeiro desafio desta funcionalidade residiu em operar uma s rie de altera es tanto na parte de gera o de c digo de teste como na biblioteca Tracing Utilities por forma a conseguir detetar as mensa gens efetivamente executadas e coloc las no resultado da execu o Em rela o gera o de c digo a implementa o utilizada no modo de execu o b sico n o permitia que as mensagens de API ditas externas fossem intercetadas uma vez que a estrutura Trace da biblioteca Tracing Utilities n o tinha inclu da na sua lista de chamadas esperadas este conjunto de mensagens Este problema foi solucionado alterando a gera o de c digo por forma a que todas as chamadas tanto de intera es internas como acontecia anteriormente como de intera es externas fossem codificadas atrav s da estrutura Trace ficando assim a biblioteca Tra cingUtilities capacitada para detetar a sua efetiva execu o No que toca a biblioteca Tracing Utilities foi criado um contentor do tipo HashSet de valores inteiros denominado coveredMessages com a miss o de armazenar todos os identificadores de mensagens que de facto foram executadas Quando confirmada a ocorr ncia de uma mensagem prevista pela estrutura Trace o identificador dessa mensagem automaticamente adicionado lista cov
119. que n o se encontram em utiliza o por An lise do prot tipo existente exemplo os m todos toString das classes Const BinOp e CellRef Esta funcionalidade extremamente til no caso do utilizador tencionar que o modelo comportamental atinja 100 de cobertura do modelo estrutural Nos diagramas das figuras 2 3 e 2 4 poss vel verificar que existem inconsist ncias entre o modelo comportamental e estrutural Estas inconsist ncias caracterizam se por m todos referen ciados nos diagramas de segu ncia UML que n o t m paralelo no diagrama de classes UML ou seja n o existe um m todo com o mesmo nome e o mesmo n mero de par metros No diagrama de sequ ncia da figura 2 3 poss vel verificar algumas destas inconsist ncias assinaladas atrav s da colora o a vermelho das mensagens com problemas Por exemplo os construtores das classes folha de c lculo SpreadSheet e c lula Ce11 t m um diferente n mero de par metros em rela o ao definido no modelo estrutural Outras inconsist ncias ocorrem tanto no diagrama da figura 2 3 como no da figura 2 4 dado que os m todos getCe11ByName e eval n o est o defi nidos nas classes Parser e SpreadSheetCLI respetivamente Foram ocultadas dos diagramas as notas correspondentes a cada um dos erros encontrados para n o dificultar a visualiza o e perce o dos mesmos D Gera o de c digo e teste Ap s corrigidas as inconsist ncias detetadas pelo verificador UML Check
120. r detetar poss veis inconsist ncias e incompletudes entre o modelo estrutural e comportamental Atrav s desta funcionalidade o utilizador alertado para inconsist ncias como m todos desconhecidos n mero de par metros incorreto tipos de par metros ou retorno errados viola es de acessibilidade entre outras O utilizador pode ainda conferir se todos os m todos e construtores definidos no modelo estrutural s o exercitados no modelo comportamental Em rela o s tr s primeiras funcionalidades para gera o e execu o de testes a primeira a o que ocorre quando uma delas selecionada verificar se existe necessidade do utilizador escolher a pasta de refer ncia Esta pasta refere se ao local onde s o guardados os testes JUnit gerados e em caso de execu o dos testes tamb m a localiza o do c digo fonte a testar Esta pasta pode ser selecionada atrav s da abertura de uma Janela para Sele o de Pastas Windows Form Net13 Esta janela aparecer se n o houver nenhum diret rio pr definido nas configura es ou caso o utilizador n o tenha selecionado a op o que permite utilizar sempre o diret rio pr definido tamb m nas configura es De seguida s o apresentadas separadamente cada uma destas tr s funcionalidades do FEUP SBT 2 0 n o necessariamente pela ordem em que ocorrem no menu de sele o Gerar JUnit a partir dos diagramas de sequ ncia Este o modo de opera o b sico do add in j
121. rator 4 2 1 Gerador e executor de testes TestGenerator O gerador e executor de testes TestGenerator um add in para a ferramenta Enterprise Architect que permitia a gera o autom tica de testes unit rios JUnit3 a partir de diagramas de sequ ncia UML na vers o 1 0 do prot tipo adicionando se agora as funcionalidades de execu o dos testes e an lise de cobertura com apresenta o dos resultados diretamente a partir do modelo Este add in foi implementado em Cf recorrendo ao pacote de desenvolvimento de software SDK da ferramenta EA fazendo uso da API que esta disponibiliza Este pacote permite personalizar e estender as funcionalidades nativas do Enterprise Architect O Enterprise Architect disponibiliza um modelo de objetos no qual s o codificados os modelos UML Este modelo de objetos acess vel via API o que permite aceder manipular modificar e criar os modelos UML da ferramenta Foi desta forma poss vel percorrer os diagramas de sequ n cia criar os respetivos testes e editar o modelo conforme o resultado da execu o dos testes Um resumo do modelo de objetos do Enterprise Architect est defindo na figura 4 3 Spal0 29 Conce o e implementa o EEEE EE E T E SE Foo a 0 Terms 0 Clients 0 a E vein ain Tasks Authors 0 A va oe TaggedVslues a E 0 ZA jE Pf A m Parameters AttributeConstraint PreConditions PostConditions L Sales a 0 Constraints Reso
122. re Test AST 2007 com o documento Automated generation of test cases using Model Driven Architecture JSWO07 que demonstra uma aborda gem que utiliza os conceitos da Arquitetura Dirigida por Modelos MDA para gera o de testes unit rios a partir de diagramas de sequ ncia UML A for a motriz por tr s da Arquitetura Dirigida por Modelos MDA a ideia de que o software ir ser implementado em mais que uma plataforma diferentes entre si MSUW02 Uma utiliza o simples da MDA modelar uma aplica o numa linguagem de modela o independente de plataformas O modelo independente de plataforma PIM platform independent model pode ser posteriormente convertido para um modelo para uma plataforma espec fica PSM platform specific model atrav s da defini o de um conjunto de regras de transforma o tendo em vista uma plataforma espec fica por exemplo Java Poo01 A figura 3 1 mostra uma vis o geral da abordagem apresentada assentando em 2 passos prin cipais No primeiro passo o diagrama de sequ ncia UML transformado em modelo de teste 20 An lise do estado da arte independente de linguagem xUnit atrav s de transforma o horizontal Esta transforma o man t m o grau de abstra o tratando se assim de uma transforma o de PIM para PIM No segundo passo o modelo de teste xUnit convertido num c digo de teste concreto e execut vel atrav s de transforma o vertical isto PI
123. re os objetos que fazem parte do sistema A modela o destes 2 tipos diagramas o primeiro passo da abordagem Passo 2 Verifica o A consist ncia e a completude do modelo comportamental desenvolvido no ponto 1 podem ser verificadas atrav s de outra funcionalidade do add in desenvolvido para o Enterprise Archi An lise do prot tipo existente O Complete method bodies code Enterprise Architect UML Class EA code generator EEE uses ava q Diagrams compile ready Libraries g empty methods refactor i f i design Check model Traces execution O iterate j Tests of methods amp constructors developer Ea c Test generator Tracing Utilities Uses AspectJ Sequence JUnittests Diagrams Figura 2 1 Abordagem em que se insere o prot tipo FEUP SBT 1 0 tect denominada UML Checker e que permite ao utilizador verificar se os m todos utilizados no diagrama de sequ ncia t m correta correspond ncia no diagrama de classes e ainda se o diagrama de sequ ncia abrange todos os m todos definidos no diagrama de classes Passo 3 Gera o de c digo A ferramenta Enterprise Architect j disponibiliza de origem uma funcionalidade denominada Enterprise Architect code generator que permite gera o de c digo ou mais especificamente para esta abordagem classes Java a partir dos diagramas de classes definidos As classes criadas est o compil veis e os seus m
124. renceStstistics diff 1 getNumAdditions i numAdditions getNumModifications numModifications getNumDeletions numDeletions 7 getNumUnchanged numUnchanged display numAdditions i addition s i display numModifications I modification s l display numDeletions I L i L 4 I S E E deletionis display numUnchanged O unchanged from Use Case View Parameters op ons Sting flename1 Sring flename2 Sving numAdditons int numModiicatons int numDelefons int numUnchanged int printDetals Sring Ap TestiFilel oc TestiFile2 0e 0 1 0 0 M bbin ip Test2File1 oct Test2File2 oa 110 1 1 A bbin aanD bbin Figura 6 4 Diagrama de sequ ncia vers o 2 test vel do projeto FileDiff j colorido de acordo com os resultados da execu o 72 Valida o start options filename1 filensmeZ Toptions contains i printDifferenceDetails diff getDifferenceDetsils display printDetails display numAdditions display numModifications i i numModificastions T getNumDeletions display numDeletions numNeletinns TT J deletion s getNumUnchanged J display numUnchanged numUnchanged op ons String filename Sring flename2 Seing numAdditons int numModiicatons int numDelefons int
125. s como conformidade estrita isto tudo o que efetivamente acontece durante a execu o deve estar representado no modelo sendo que quando esta op o n o ativada por defeito utilizada conformidade n o estrita sendo nesse caso per mitidas chamadas n o especificadas no modelo modela o de exce es chamadas a m todos de classes externas De seguida analisada a correta cobertura por parte de cada um dos casos de teste do con junto de caracter sticas descritas anteriormente Em 6 1 est ilustrada a matriz de cobertura de caracter sticas sendo utilizados os cones caso a caracter stica seja testada com sucesso no caso de teste 9 caso a caracter stica seja exercitada no caso de teste mas n o obtido o resultado pretendido caso a caracter stica n o se aplique ao caso de teste Casos de Teste Spreadsheet Observer ATM Engine Feat d Intera es eatures da com Aplica o Vy Y Vv modela o Cliente Intera es i com Utilizador Intera es Y y Internas Cen rios Parametrizados 63 Valida o Fragmentos lt A 4 e Combinados V rios Cen rios Classes Y V de Teste Conformidade f y f Estrita Exce es v Chamadas a m todos y externos Tipos de Erros Assertion Error Y Y Vv Mising Call Y y Exception Argument y Exception Return Value f f Exception Unexpected f Y f Call Exception N vel de Total x L R Cobertura Parcial
126. s intera es internas dos seus objetos para al m das intera es externas com o cliente Nesta sec o apresentada a arquitetura da biblioteca e de que forma a Programa o Orientada a Aspetos interv m no processo de an lise do tra ado realizado pela aplica o 4 2 2 1 Arquitetura Na figura 4 7 est representada a arquitetura da biblioteca Tracing Utilities atrav s do seu diagrama de classes UML incluindo as respetivas classes e liga es Para permitir uma melhor compreens o do funcionamento da biblioteca apresentada uma descri o de cada uma das classes que a comp e CallNode uma classe abstrata que representa uma chamada ou um fragmento combinado presente no modelo sendo assim superclasse de Call e CombOperator utilizada para repre sentar um conjunto de intera es com chamadas e ou fragmentos combinados possibilitando a 32 Conce o e implementa o cria o de uma estrutura em rvore contendo as chamadas encaixadas realizadas a partir da Call Node origem Call uma subclasse de CallNode e representa uma mensagem do modelo que ser codifi cada numa chamada no c digo de teste Cont m a classe e objeto alvo bem como o m todo os par metros e valor de retorno A estes atributos foram ainda adicionados os identificadores do elemento respetivo no Enterprise Architect para serem implementadas as novas funcionalidades Call ainda superclasse de CallStub CallStub uma subcl
127. s que se assemelham aos utilizados em ambientes de teste de interface para o utilizador como exemplo o FIT MC05 Est o assim modelados os comandos start para iniciar o m todo main da classe assinalada numa thread auxiliar enter para o utilizador introduzir o valor especificado pelo standard input display para a aplica o apresentar o valor especificado pelo standard output check para verificar se o valor apresen tado o esperado stop para fechar o simulador de consola e esperar que a aplica o termine a sua execu o 93 Interpreta o do c digo de teste gerado De seguida apresentado o exemplo de um modelo simplificado contendo intera es com o utilizador na figura B 5 A codifica o respetiva para este exemplo apresentada no excerto de c digo B 12 start enter x 1 enter x 1 display 2 0 enter Figura B 5 Exemplo de intera o com o utilizador public void testCommandLinelInterface 2 Console start SpreadsheetApp class null Console enter x 1 4 Console enter x 1 assertEquals 2 0 Console check 6 Console enter Console stop Excerto de C digo B 12 Codifica o do exemplo de intera o com o utilizador presente em B 5 B 5 Exce es N o existindo definida uma forma normalizada de modelar exce es em diagramas de sequ n cia a solu o adotada para modelar este estrutura foi atrav s das men
128. sagens de retorno Tomando como exemplo a figura B 6 nela est modelada uma mensagem msg onde deve ser lan ada uma exce o ExampleException No excerto de c digo B 13 encontra se o c digo correspondente para o exemplo dado ity d 2 msg 94 Interpreta o do c digo de teste gerado msg ExampleException Figura B 6 Modela o de uma exce o em UML fail Should have thrown ExampleException catch ExampleException exception 61 Excerto de C digo B 13 Codifica o de um exemplo de exce o B 6 Conformidade Existem dois tipos de an lise de conformidade da rvore de chamada estrita strict confor mance e alargada loose conformance Por pr defini o todos os exemplos s o tratados com an lise de conformidade alargada nos quais n o s o interpretados como erros poss veis chamadas adicionais s previstas Caso o utilizador pretenda habilitar a an lise de conformidade estrita ne cess rio no in cio de cada m todo de teste incluir a seguinte instru o Trace setStrictConfo rmance n o permitindo assim que nesse exemplo sejam executadas chamadas n o previstas B 7 Altera es na an lise de cobertura O c digo gerado a partir do modo de funcionamento Executar os Testes Analisando Cober tura tem ligeiras diferen as em rela o gera o b sica j apresentada A primeira altera o a exig ncia de inclus o no in cio de cada m todo
129. se 2012 Dispon vel em http www 01 ibm com software awdtools developer rose acedido a l tima vez em 22 de Julho de 2012 Sparx Systems Enterprise Architect Software Development Kit 2010 Sparx Systems Uml tools for software development and modelling enterprise ar chitect uml modeling tool 2012 Dispon vel em http www sparxsystems com au acedido a ltima vez em 22 de Julho de 2012 Tefkat Tefkat The emf transformation engine 2012 Dispon vel em http tefkat sourceforge net acedido a ltima vez em 22 de Julho de 2012 Mark Utting e Bruno Legeard Practical Model Based Testing A Tools Approach Morgan Kaufmann Mar o 2007 URL http books google pt books id 8hAGtY4 000C amp lpg PAl amp hl pt PT amp pg PPlfv onepages amp qsf false Microsoft Windows Using regedit exe 2012 Dispon vel em http www microsoft com resources documentation windows xp all proddocs en us tools_regeditors mspx mfr true acedido a ultima vez em 18 de Dezembro de 2012 Jeremiah Wittevrongel e Frank Maurer Scentor Scenario based testing of e business applications In 2nd International Workshop on Automation of Software Test AST 07 2007 Hong Zhu Patrick A V Hall e John H R May Software unit test coverage and adequacy ACM Computing Surveys 29 4 366 427 Dezembro 1997 101
130. se org modeling emf acedido a ltima vez em 22 de Julho de 2012 NET Framework net development 2012 Dispon vel em http msdn microsoft com en us library ff361664 aspx acedido a ltima vez em 18 de Dezembro de 2012 99 FS99 Hum05 Jav12 JSW07 JUn12 MC05 MCF03 Mic12 MOF12 MSUWO2 Net12 Net13 OMG11 Oral 3 Poo01 REFER NCIAS Martin Fowler e Kendall Scott UML Distilled A Brief Guide to the Standard Object Modeling Language Addison Wesley Agosto 1999 Watts S Humphrey PSP sm A Self Improvement Process for Software Engineers Addison Wesley Professional Mar o 2005 Enterprise JavaBeans Oracle enterprise javabeans technology 2012 Dis pon vel em http www oracle com technetwork java javaee ejb index html acedido a ltima vez em 22 de Julho de 2012 A Z Javed P A Strooper e G N Watson Automated generation of test cases using model driven architecture In 2nd International Workshop on Automation of Software Test AST 07 2007 JUnit Junit org 2012 Dispon vel em http www junit org acedido a l tima vez em 22 de Julho de 2012 Rick Mugridge e Ward Cunningham Fit for Developing Software Framework for Integrated Tests Prentice Hall Julho 2005 Stephen J Mellor Anthony N Clark e Takao Futagami Model driven development IEEE Software Magazine 20 5 14 18 Setembro Outubro 2003 URL http ngis computer org csdl m
131. senvolvimento exige uma confi gura o pr via para que todos os seus comandos possam ser utilizados pelo sistema configura o que mais frente ser detalhadamente descrita Em rela o biblioteca Tracing Utilities esta disponibilizada juntamente com o add in e a sua fun o possibilitar a verifica o da execu o das intera es internas do c digo de teste gerado conforme o previsto pelo utilizador A framework JUnit que possibilita a cria o e execu o de testes unit rios est dispon vel em JUn12 Deve ser utilizada uma vers o igual ou posterior 4 10 e confirmada a presen a da biblioteca junit lt version gt jar na pasta de instala o Por ltimo a extens o AspectJ utilizada para intercetar as chamadas efetuadas durante a execu o do c digo de teste de modo a verificar que todas as chamadas especificadas foram de facto efetuadas A extens o est dispon vel em Asp12 onde deve ser descarregada e descomprimida a vers o 1 6 12 Deve ser confirmada a presen a dos ficheiros aspectjrt 1 6 12 jar e aspectjweaverjar S o de seguida apresentados uma lista resumida dos passos necess rios para se proceder instala o do add in para Enterprise Architect No anexo A encontra se de forma mais detalhada todos os passos para instala o e configura o do add in 1 Colocar as bibliotecas dll num diret rio do sistema 2 Registar das bibliotecas no sistema atrav s da Ferramenta de Registo de
132. st n cias entre esta vers o do diagrama de sequ ncia ou seja a especifica o de comportamento e a implementa o Desde logo detetado um erro na parte final onde s o exibidas as altera es en 66 Valida o sd ObjectinteractionDiagram A pspoourse FileDifferenceCL User l main options filename filename2 list1 readFileToArayList filename1 list2 readFileToArayList filename2 Li option stripCommentAndBlankLines list1 1 Li option i 3tripCommentAndBlankLines list2 gt newValue operstion p option printDifferenceDetsils diff details getDifferenceDetails gt getNewVslue getOperstion getOldValue line by line T T ni ifferences printDifferenceStstistics diff getNumAdditions getNumModifications getNumDeletions number of lines added modified 3 etNumUnchanged deleted and 8 E po from Use Case View Figura 6 3 Diagrama de sequ ncia vers o 1 original do projeto FileDiff contradas Este erro acontece porque se sup e que as diferentes altera es s o todas impressas sequencialmente no final da execu o o que n o acontece de facto tamb m verificado que a mensagem getNewValue n o detetada contrariamente ao que era esperado Como esta cont m o wildcard a n o ocorr ncia desta mensagem n o encarada como erro Todavia existe aq
133. ste processo de defini 55 Utiliza o da ferramenta o dos estere tipos para o n vel das classes de teste em fun o dos seus cen rios replicado para o n vel dos pacotes de teste em fun o das suas classes Em 5 11 vis vel o aspeto do Explorador de Projetos do modelo do exemplo ATM ap s a sua execu o Na figura esquerda encontra se o resultado no exemplo sem erros e direita com a inje o de erros Encontram se assinaladas a verde a etiqueta Passed a amarelo as etiquetas Not Tested e Incomplete e a vermelho a etiqueta Failed ati bh B ts Naga ae E ty Model Bj Model Dynamic View Dynamic View 5 ED Incomplete ATM DD eFailed ATM EB Passed ATM DD Failed ATM E E sPassed ATM 5 A sFailed ATM PF ATM PF ATM 2 Client 2 Client E a Account E a Account m Movement E m Movement y 4 a LJ NotTested Bugs Figura 5 11 Explorador de Projetos com os estere tipos dos pacotes editados pelo FEUP SBT 2 0 LJ NotTested Bugs Colora o de mensagens ou fragmentos combinados Outra edi o gr fica operada no modelo a colora o a vermelho das mensagens onde ocorre ram erros de execu o No exemplo ATM a mensagem de retorno com erro injetado ser pintada de vermelho conforme vis vel em 5 12 withdraw amount Errolnjetado Figura 5 12 Mensagem pintada de vermelho assinalando erro de execu o Todos os err
134. tal FEUP SBT 1 0 na qual poss vel gerar o c digo de teste JUnit a partir do modelo UML para uma vers o 2 0 que permite ordenar a execu o dos cen rios de teste especificados em diagramas de sequ ncia UML e receber o feedback visual dos resultados da sua execu o diretamente no ambiente de modela o Enterprise Architect tornando o processo de gera o de c digo de testes transparente para o utilizador Estipulou se adicionalmente o objetivo de implementar uma outra funcionalidade que permi tisse adicionalmente analisar a cobertura da execu o dos cen rios de testes ou seja verificar se todas as intera es especificadas no modelo foram efetivamente exercitadas apresentando uma vez mais os resultados atrav s de um esquema de cores diretamente no modelo UML Al m desta nova funcionalidade pretendia se ainda construir um m dulo de configura es til para a defini o de op es v rias do gerador e executor de testes Beneficiando da implementa o desta nova funcionalidade era pretendido efetuar uma pro funda an lise aos componentes que comp em o prot tipo detetando e corrigindo poss veis falhas inconsist ncias limita es ou necessidades e ainda estruturando de forma conveniente e robusta o c digo fonte dos referidos componentes Paralelamente a esta an lise cuidada do prot tipo experimental pretendia se realizar uma revi s o bibliogr fica sobre o tema automa o de testes baseados em diagramas d
135. te passo a estrutura de pastas no Editor de Registos deve ter uma estrutura semelhante apresentada em A 4 78 Tutorial de instala o e configura o HKEY CURRENT USER Software Sparx Systems Instru o 5 3 Localiza o dos EA Add Ins no Editor de Registos Ed Sparx Systems d Expandir H Novo b Chave d Lea Valor da cadeia de Eliminar Valor bin rio udar o Nome alor its Mudaro N Valor DWORD 32 bits i Ee Valor QWORD 64 bit ad a Valor de multiplas cadeias Permiss es d System Valor de cadeia expans vel Volatile Environm Copiar nome de chave HKEY LOCAL MAC Figura A 3 Adi o de uma nova chave no Editor de Registos 4 de Sparx Systems D i EA400 J EAAddins Figura A 4 Estrutura de pastas no final do Passo 4 Passo 5 De seguida necess rio adicionar uma chave dentro do diret rio criado no passo anterior com o nome do projeto neste caso TestGenerator Tal como anteriormente basta seguir as instru es em A 3 para adicionar a chave e o resultado desta a o pode ser validado comparando a estrutura de pastas no Editor de Registos com a presente em A 5 a Sparx Systems p J EA400 4 J EAAddins i J TestGenerator Figura A 5 Estrutura de pastas no final do Passo 5 79 Tutorial de instala o e configura o Passo 6 Neste passo necess rio especificar o valor padr o assinalado como Predefini o da chave Test
136. ternas apenas s o utilizadas as fun es b sicas start enter e display No entanto para cada uma delas apresentado o comportamento interno esperado Por exemplo quando o utilizador lan a a aplica o start internamente esperado que seja criada uma folha de c lculo Identicamente quando o utilizador opta por introduzir enter a express o x esperado que internamente seja criada a c lula x na folha de c lculo anteriormente criada e que lhe seja atribu do o valor 1 C Verifica o do Modelo Com os modelos estrutural e comportamental elaborados pode ser agora utilizado o plug in UML Checker cuja execu o alertar para poss veis inconsist ncias ou incompletudes nos mo delos Estes problemas s o apresentados no pr prio modelo atrav s da colora o e adi o de etiquetas e notas no mesmo Os diagramas presentes nas figuras 2 2 2 3 e 2 4 j cont m as modifica es operadas pela execu o do verificador UML Checker No diagrama de classes presente na figura 2 2 a classe CircularReferenceException encontra se com os contornos a vermelho e com a etiqueta NotCovered acima do seu nome Esta informa o indica que a classe n o foi utilizada em qualquer cen rio definido no modelo comportamental Para al m da utiliza o de cada classe ainda verificada a utiliza o de todos os m todos de todas as classes nos cen rios definidos E assim poss vel verificar que existem v rios m todos
137. tulo apresentado o estado da arte ap s revis o bibliogr fica sobre o tema auto ma o de testes baseados em diagramas de sequ ncia UML S o descritas individualmente as abordagens descobertas e por fim elaborada uma an lise comparativa destas abordagens com o prot tipo FEUP SBT 1 0 3 1 Objetivos No cap tulo 2 foi apresentado o prot tipo FEUP SBT 1 0 para a gera o autom tica de testes unit rios a partir de diagramas de sequ ncia UML verificando as intera es internas Para encon trar poss veis ferramentas ou abordagens que realizassem uma fun o id ntica foi efetuada uma revis o bibliogr fica sobre o tema automa o de testes baseados em diagramas de sequencial UML com especial foco na verifica o das intera es internas A elabora o desta revis o bibli ogr fica tinha como principal objetivo descobrir noutras abordagens ideias para poss veis melho ramentos do prot tipo FEUP SBT 1 0 Desta pesquisa resultaram 3 abordagens que se aproximam da seguida pelo FEUP SBT 1 0 e que de seguida s o apresentadas De salientar que se encontra ram muito mais abordagens de gera o de testes a partir de diagramas UML mas que consideram outros diagramas diagramas de estados diagramas de atividades ou outros aspetos a montante na gera o de teste gera o de caminhos de teste gera o de dados de teste 3 2 SeDiTeC Uma das abordagens mais citadas na rea de gera o de testes baseados em di
138. ui uma falha na modela o dado que na implementa o getOperation acontece sempre antes de getNewValue mas n o est assim modelado no diagrama de sequ ncia 67 Valida o Finalmente foram corrigidas as inconsist ncias do modelo na sua vers o 2 criando assim a vers o 3 e final do mesmo Os m todos display das altera es que ocorriam no fim de forma sequencial foram colocados um por um logo ap s o retorno da altera o respetiva de tetada Enquanto que a utiliza o de wildcard x foi substitu da pelo fragmento combinado loop sendo colocada a mensagem getOperation antes de um bloco alt cujas op es s o getNewValue ou getOldValue de acordo com a implementa o A utiliza o de uma abordagem por engenharia reversa gerando o diagrama de sequ ncia UML que representa a intera o entre os objetos na execu o de um programa foi analisada como alternativa a este processo No entanto obter um modelo UML com o grau de abstra o ao n vel do apresentado em 6 5 com inclus o de fragmentos combinados parametriza o omiss o de mensagens irrelevantes entre outras especificidades seria invi vel atrav s duma abordagem deste tipo Em conclus o atrav s da execu o do FEUP SBT 2 0 foram encontradas disparidades entre um modelo que se assumia conforme e a sua implementa o A utiliza o do modo de opera o Executar os testes analisando cobertura foi extremamente til neste processo det
139. ulo apresentado o resultado da an lise ao prot tipo experimental FEUP SBT 1 0 para gera o autom tica de testes unit rios a partir de diagramas de sequ ncia UML descrita a abordagem para a qual o prot tipo foi pensado e demonstrado o seu funcionamento S o tam b m expostas as tecnologias utilizadas pelo prot tipo Por fim s o analisadas as limita es e necessidades principais da sua vers o atual 2 1 Abordagem Podendo ser utilizado noutras situa es o prot tipo FEUP SBT 1 0 foi desenvolvido com o objetivo de potenciar uma utiliza o ativa dos modelos UML no desenvolvimento de software combinando Desenvolvimento Dirigido a Modelos MDD Teste Baseado em Modelos MBT e Desenvolvimento Dirigido por Testes TDD Esta abordagem est descrita atrav s do diagrama da figura 2 1 e ser de seguida explicada passo a passo De salientar que este um processo iterativo portanto a sequ ncia de passos deve ser repetida as vezes que se considerar necess rio at os modelos UML e respetivo c digo de teste atingirem o estado pretendido pelo engenheiro de software Passo 1 Modela o O prot tipo FEUP SBT 1 0 composto por um add in para a ferramenta de desenho de mo delos UML Enterprise Architect Esta ferramenta entre outras funcionalidades permite que os seus utilizadores modelem diagramas de classes UML para defini o da estrutura do sistema e diagramas de sequ ncia UML para defini o das intera es ent
140. urce n O 1 Q 1 _Atributerag memos Resources 0 a TaggedValues Scenario A MethodsEx Scenarios 0 Models Methods o z ps 0 oe Requirements Requirement AttributesEx a E Fi Renan o oe E 1 a 1 DisgramObjects DiagramObject Diagrams 0 is La Attributes 0 K gt ns E 1 ClientEnd SupplierEnd Figura 4 3 Modelo de Objetos do Enterprise Architect Das classes apresentadas destacam se o Repository reposit rio que o principal con tentor de todas as estruturas como Models modelos Packages pacotes e Elements ele mentos tamb m estes bastante utilizados para a recolha da informa o necess ria do modelo Uma outra classe extremamente importante na implementa o foi o Connector conector que representa mensagens no modelo e que cont m m todos de edi o utilizados para a colora o de mensagens 30 Conce o e implementa o suxRecursivelyCheck int children List lt ProjectHierarchyNode gt new List lt Projec diagram Diagram null exceptions List lt CompilerAndExecuter TestGenerstorExceptionEror gt null isMethod bool false isPackage bool false interactionSections List lt InteractionFragment gt isTest bool false ObjectHandlers LinkedList lt ObjectHandler gt new LinkedList lt level int operandNames string alt opt name String outputFiles LinkedList lt OutputFil
141. w Model root node Bonne J New View amp Add a New Model using Wizard Hy Find In Project Browser Ctrl Shift F Evnand Rranch Figura 5 1 Meio de acesso ao Menu de Configura o pelas configura es do add in que s o comuns a todos os projetos enquanto que as Configura es do Projeto Atual s o relativas s configura es do projeto de Enterprise Architect em execu o O aspeto do Menu de Configura o pode ser visualizado em 5 2 Configura es gerais Nas Configura es Gerais do Menu de Configura o requerido ao utilizador indicar a lo caliza o no sistema de uma s rie de ficheiros JAR relativos ao software adicional necess rio registado anteriormente assim indispens vel definir o caminho para o ficheiro JAR do JUnit junit lt version gt jar para o ficheiro jar do AspectJ aspectjrt 1 6 12 jar para o ficheiro weaver do AspectJ aspectjweaverjar e ainda a biblioteca adicional Tracing Utilities traceutils jar dis ponibilizada juntamente com o add in Todos estes ficheiros s o essenciais para a execu o direta do c digo de testes Configura es do projeto atual As configura es relativas ao projeto em execu o t m por objetivo aumentar a usabilidade da utiliza o do add in Nestas configura es poss vel definir a localiza o do c digo fonte do modelo estrutural necess rio para a compila o e execu o do c digo de testes Existe ainda a op
142. xperimenta o das novas funcionalidades num projeto j existente e finalmente a reformula o da an lise comparativa do prot tipo com as abordagens estudadas na an lise do estado da arte incluindo agora o FEUP SBT 2 0 na an lise 6 1 Casos de teste e an lise de cobertura de caracter sticas Durante a implementa o foram utilizados tr s casos de teste criados com o objetivo de cobrir a maior parte das funcionalidades de modela o de testes e tipos de erros poss veis Estes casos de teste foram extremamente teis para guiar a correta evolu o da implementa o das novas funcionalidades e validar a conclus o de cada uma destas O mais simples dos exemplos utilizados o denominado ATM que foi detalhadamente apresentado no cap tulo 5 Nele est representado uma opera o simplificada de levantamento banc rio contendo cen rios parametrizados e fragmentos combinados condicionais criando as sim v rios caminhos de execu o poss veis para melhor analisar a funcionalidade de an lise de cobertura Z O exemplo com o nome Spreadsheet Engine um outro caso de teste que foi tamb m apresentado anteriormente no cap tulo 2 Neste exemplo modelado um mecanismo de folhas de c lculo contando com v rios diagramas de sequ ncia tornando o no caso de teste utilizado mais completo o que permitiu analisar uma maior diversidade de funcionalidades Por exemplo apenas neste caso de teste s o exercitadas as funcionali

Download Pdf Manuals

image

Related Search

Related Contents

The Alternative Misfit Press Book  ABOUT THIS MANUAL - Daewoo Electronics México  P o r t a b L e U S B R e c o r d e r Worldwide Offices  Traffic FA Security Network  Voir la fiche  Invacare ® TDX-SP / TDX  BCS-707 BCS-303  OPENapp Handbuch  Câmera digital com zoom Kodak EasyShare C643/C603  取扱説明書 ローライフレックス オートマット X  

Copyright © All rights reserved.
Failed to retrieve file