Home
Visualizar/Abrir
Contents
1. Ambiente Computacional de Origem Ambiente Computacional de Origem Ambiente Computacional de Destino d Re liga o Antes Recurso Recurso Ambiente Computacional de Origem Ambiente Computacional de estino Depois Recurso Recurso Ambiente Computacional de Origem Ambiente Computacional de Destino Figura 2 5 Mecanismos de Gerencimanto de Espa o de Dados FUGGETTA PICCO VIGNA 1998 e Remo o de liga o quando uma unidade de execu o migra para outro ambi ente computacional ent o a liga o descartada Figura 5a superior e Reloca o por deslocamento quando uma unidade de execu o est ligada a um recurso livre transfer vel por identificador ent o o recurso transferido juntamente com a unidade de execu o para outro ambiente computacional a liga o n o muda Figura 2 5a inferior e Refer ncia de Rede quando uma unidade de execu o est ligada a um recurso n o transfer vel por identificador ent o o recurso n o transferido e ap s a mi gra o da unidade de execu o para outro ambiente computacional a liga o passa a referenciar o recurso no ambiente computacional de origem Figura 2 5b e Por C pia quando a liga o por valor e o recurso transfer vel ent o uma c pia do recurso original criada e a liga o passa a refere
2. Figura 4 13 Selecionando os arquivos de classes a serem testados 4 5 Funcionalidades e Sess o de Projetos de Teste 54 Continuando a tela da ferramenta de teste de cobertura disponibilizada com a apresenta o da classe selecionada como ilustrado na Figura 4 14 Depois de ter criado um projeto a JaBUTi fornece uma ferramenta de an lise de cobertura e uma ferramenta slice que ser o descritas nas se es seguintes File Tools Visualization Summary TestCase Reports Properties Update Help e All Nodes ei All Edges ei All Uses ei All Pot Uses ei All Nodes ed C All Edges ed All Uses ed All Pot Uses ed 0 a Def Use Grap ent BozoClie 5 bestPlace l x 0 Vt pit py E Motta fh NS x n t pi f No yi f Lahn fhe At E Beat foro x tt x a ki tt t Sy X A i i ke SS oe is a Se f E S AF 226 goto 236 node 216 229 astore a4 Start Pc 216 231 aload 24 jus BEG Abs 233 invokevirtual java lang Throwable pri E ERR Ki v Show Node Info Show Decisions Definitions int bestChoice I vi Show Primary Edges v Show Secondary Edges 4 gt _JaBUTi Coverage Tool File client BozoClient2 ine 782 of 1398 Coverage All Nodes ei Highlighting All Priorized Figura 4 14 Tela da Ferramenta de Teste de Cobertura As subse es a seguir apresentam a ferramenta de an lise de cobertura e a ferra menta slice
3. O programa criado no editor e armazenado em disco O compilador cria bytecodes e os armazena em disco Lm Mem ria Principal Fase 3 Carregador de Classe O carregador de classe gt coloca bytecodes na mem ria Lao Mem ria Verificador de Bytecode Fase 4 O Verificador de bytecodes confirma gt que todos os bytecodes s o v lidos e n o violam restri es de seguran a de Java JL Mem ria Principal Fase 5 Interpretador O interpretador l os bytecodes e os traduz para uma linguagem que gt o computador pode entender possivelmente armazenando valores dos dados enquanto executa o programa E Figura 4 1 Fases de Desenvolvimento de Software em Java Programa Java Programa Java Programa Java M quina Virtual Java M quina Virtual Java M quina Virtual Java Windows Windows NT Hardware M quina 1 Hardware M quina 2 Hardware M quina 3 Figura 4 2 Independ ncia de Plataforma provida pela JVM de lixo e uma rea para armazernar m todos Colocado em software o processador Java JVM possibilita a execu o de um mesmo programa em m quinas diferentes A M quina Virtual Java conforme Lindholm e Yellin LINDHOLM YELLIN 1999 tem uma estrutura orientada pilha e usada para carregar e executar arquivos de classe 4 1 Java JVM e Instru es Bytecode 39 O arquivo de classe uma representa o bin ria que con
4. Kept 1 xX X Kept 0 X X X X Roll 2 4 22 Roll amp 1 6 1 2 6 2 set Round 2 Kept 2 a by 3 of a kind 0 Kept 1 X X X X Roll 0 2 6 4 5 2 Placed on Twos 4 of a kind 9 Roll 2 6 5 2 6 2 Kept 0 X X Full hand 25 Kept 2 ao amet Roll 1 2 4 1 1 2 et Round 4 Small seq 30 Placed on Chance Kept 1 X X X X Roll 0 3 5 6 3 1 Large seq 40 Roll 2 2 1 1 1 2 Kept 0 X 5 of a kind 0 Round 1 Kept 2 7 7 7 Roll 1 3 4 5 3 6 Chance 21 Roll 0 5 1 4 6 1 Placed on Full hand Kept 1 X X Bonus 0 Kept 0 X X Roll 2 3 4 1 6 2 Total 173 Roll 1 5 1 1 4 1 Round 3 Kept 2 Ap ndice B Boz Conjunto de Casos de Teste Tune Placed on Small seq aK Round 5 Roll 0 1 3 3 Kept 0 x x Roll 1 4 3 1 5 3 Kept 1 x x Roll 2 2 3 3 Kept 2 Placed on Threes Round 6 Roll 0 2 1 2 4 5 Kept 0 X x Roll 1 2 1 2 3 1 Kept 1 X x Roll 2 2 221 Kept 2 if CASO DE TESTE 54 3 of a kind 0 4 of a kind 9 Full hand 25 Small seq 30 Large seq 40 5 of a kind 0 Chance 10 Bonus 0 Total 175 Round O Roll 0 1 3 1 3 2 Kept 0 X X X X Roll 1 1 3 1 3 2 Kept 1 X X X X Roll 2 1 3 1 3 2 Kept 2 7 Placed on Chance xk Round 1 Roll 0 4 2 6 1 3 Kept 0 X X X Roll 1 4 2 1 5 3 Kept 1 kd Placed on La
5. Round 7 Roll 0 5 2 4 2 2 Kept 0 X X X Roll 1 6 2 3 2 2 Kept 1 x xX X Roll 2 2 2 1 2 2 Kept 2 aes Cn SS Placed on 4 of a kind Round 8 Roll 0 5 6 3 5 3 Kept 0 X x Roll 1 5 1 2 5 1 Kept 1 X x Roll 2 5 5 2 5 3 Kept 2 T Placed on Fives Round 9 Roll 0 3 4 5 6 3 Kept 0 X X Roll 1 3 4 2 3 2 Kept 1 X Total 240 Round O Roll 0 3 2 5 1 3 Kept 0 X X Roll 1 3 3 2 3 3 Placed on 3 of a kind Round 11 Roll 0 5 3 5 Kept 0 Roll 1 1 3 2 Kept 1 Roll 2 1 5 3 Kept 2 Placed on 5 of a kind vox ox a ES Round 12 Roll 0 5 4 5 2 2 Kept 0 Roll 1 3 4 1 2 5 Kept 1 Placed on Large seq Roll 2 3 3 3 3 4 Kept 2 7 Placed on Threes Round 10 Roll 0 3 5 4 4 3 Kept 0 Roll 1 3 6 1 4 5 Kept 1 X x Roll 2 3 1 2 4 5 Kept 2 7 Placed on Small seq Round 11 Roll 0 1 5 5 6 5 Kept 0 X Roll 1 1 3 6 6 3 Kept 1 X X Roll 2 4 6 6 5 Kept 2 Pau Placed on 3 of a kind Round 12 Roll 0 1 2 1 5 5 Kept 0 Roll 1 3 3 1 5 2 Kept 1 Roll 2 4 2 2 3 5 Kept 2 7 Placed on 5 of a kind Kept 1 X X x Roll 2 3 3 1 3 Kept 2 7 7 Placed on Threes Round 1 Roll 0 6 6 4 2 3 Ap ndice B Boz Conjunto de Casos de Teste Tune 127 Kept 0 X X Ro
6. Roll 1 6 6 6 6 3 Roll 1 5 1 5 1 Ap ndice C Bozo Conjunto de Casos de Teste Testr 137 CASO DE TESTE 66 Ones 2 Placed on Sixes Kept 1 X X X Roll 0 6 6 3 3 5 Twos 4 Roll 2 3 4 4 4 3 Kept 0 Threes 9 eee Round 2 Kept 2 7 Roll 1 1 4 2 3 2 Fours 12 Roll 0 3 6 5 2 3 Placed on Full hand Kept 1 X X X Fives 15 Kept 0 X x Roll 2 4 4 2 3 5 Sixes 18 Roll 1 3 5 1 4 3 et Round 6 Kept 2 7 7 7 T 3 of a kind 15 Kept 1 X X Roll 0 2 36 4 Placed on Small seq 4 of a kind 18 Roll 2 3 5 6 3 3 Kept 0 X X Full hand 25 Kept 2 T Roll 1 2 2 5 1 3 Round 10 Small seq Placed on Threes Kept 1 X X Roll 0 6 4 6 6 6 Large seq Roll 2 2 2 3 1 6 Kept 0 5 of a kind et Round 3 Kept 2 A Roll 1 2 4 4 5 1 Chance 20 Roll 0 3 4 6 1 6 Placed on Twos Kept 1 X Bonus 0 Kept 0 X X Roll 2 1 5 4 1 Total 208 Roll 1 5 3 4 Round 7 Kept 2 Kept 1 X X Roll 0 3 6 3 3 6 Placed on Ones Roll 2 6 3 4 4 4 Kept 0 X X X Round O Kept 2 Roll 1 3 3 3 3 5 Round 11 Roll 0 3 6 2 5 2 Placed on Fours Kept 1 X X X X Roll 0 1 5 3 4 5 Kept 0 X X Roll 2 3 3 3 3 6 Kept 0 Roll 1 5 6 2 5 2 kee Round 4 Kept 2 Roll 1 5 6 5 5 5 Kept 1 X X X X Roll 0 3 2 4 3 6 Placed on 4 of a kind
7. Placed on Full hand Kept 1 X X X Roll 0 1 3 6 5 2 Placed on Small seq Roll 2 3 3 3 1 5 Kept 0 X sete Round 2 Kept 2 7 7 7 7 Roll 1 5 2 6 1 3 Roll 0 6 1 5 3 3 Placed on Fives Kept 1 X CASO DE TESTE 11 Ones 3 Roll 1 2 5 2 5 4 Roll 2 5 5 5 4 5 Placed on Sixes Twos 8 Kept 1 X X X X Kept 2 7 Threes 6 Roll 2 2 5 2 5 4 Placed on 4 of a kind Round 5 Fours 8 Kept 2 7 Roll 0 2 2 4 1 5 Fives 10 Placed on Chance Round 3 Kept 0 X X Sixes Roll 0 2 2 1 2 5 Roll 1 2 2 1 2 6 3 of a kind Round 1 Kept 0 X X x Kept 1 X X X 4 of a kind Roll 0 5 1 3 5 4 Roll 1 2 2 5 2 1 Roll 2 2 2 2 2 3 Full hand Kept 0 X X Kept 1 X X X Kept 2 Small seq 0 Roll 1 5 6 1 5 2 Roll 2 2 2 5 2 Placed on Twos Large seq 0 Kept 1 X X Kept 2 7 5 of a kind 0 Roll 2 5 4 2 5 1 Placed on Full hand Round 6 Chance 18 Kept 2 Roll 0 1 4 1 2 3 Bonus 0 Placed on Fives Round 4 Kept 0 X X X X Roll 0 1 6 6 4 5 Roll 1 1 4 4 2 3 x Round 2 Kept 0 xX Xx Kept 1 X X X Roll 0 5 5 2 6 5 Roll 1 6 6 6 6 3 Roll 2 3 4 2 2 3 Round O Kept 0 X X x Kept 1 X X X X Kept 2 T T Roll 0 2 5 2 5 6 Roll 1 5 5 6 1 5 Roll 2 6 6 6 6 2 Placed on Threes Kept 0 X X X X Kept 1 X X X Kept 2 Ap n
8. servidor errada porta 2020 com par metros corretos Executa outro cliente com par metros corretos Invoca o comando nick Invoca o comando nick Invoca o comando nick Invoca o comando nick CASO DE TESTE 13 Executa o servidor Executa um cliente e espa o vazio e o mesmo apelido sem par metros com lt apelido gt colocando espa o no apelido nick Jo o atual e o apelido de outro usu rio conectado par metros corretos Executa outro cliente com par metros corretos Invoca o comando getserver lt porta gt e na porta coloca um espa o vazio Invoca o comando getserver e informa um caracter para a porta abobrinha por exemplo 145 Ap ndice E Mobile Chat Conjunto de Casos de Teste Tune CASO DE TESTE 14 Executa o servidor sem par metros Executa um cliente com par metros corretos I Executa outro cliente com par metros corretos Invoca o comando getserver e informa a mesma porta do ClientServer CASO DE TESTE 15 Executa o servidor sem par metros mas a porta 1968 n o est dispon vel CASO DE TESTE 16 Executa o servidor com par metro mas a porta especificada n o est dispon vel CASO DE TESTE 17 Executa o servidor sem par metros I Executa um cliente com par metros corretos Executa outro cliente com par metros corretos Informa apenas uma barra na caixa de entrada do cliente e em seguida tecla ENT
9. 1001 Dicas de Programa o S o Paulo SP Makron Books 1999 DEITEL H M DEITEL P J Java Como Programar 3a ed Porto Alegre RS Bookman 2001 DELAMARO M E Automatiza o do Teste Estrutural de Agentes M veis S o Carlos SP ICMC USP 2005 DELAMARO M E VINCENZI A M R MALDONADO J C Jabuti ma An environment to test mobile agents Preprint submited to Elsevier Science Mar lia SP August 2004 DEMILLO R A LIPTON R J SAYWARD F G Hints on Test Data Selection Help for the Practicing Programmer S 1 Computer 1978 DUARTE L M DOTTI F L Desenvolvimento de Aplica es M veis Corretas Porto Alegre RS Pontif cia Universidade Cat lica do Rio Grande do Sul PUCRS 2001 FRANKL P G WEISS S N WEYUKER E J Asset A system to select and evaluate tests IEEE Conference on Software Tools IEEE p 72 79 April 1985 FUGGETTA A PICCO G P VIGNA G Understanding code mobility JEEE Transactions on Software Engineering IEEE v 24 n 5 May 1998 HORGAN J R LONDON S LYU M R Achieving software quality with testing coverage measures JEEE Transactions on Software Engineering IEEE v 27 n 9 p 60 69 September 1994 Refer ncias 119 INC S R TCAT Test Coverage Analysis Tool May 2002 Website URL http www soft com Test Works index html INC S R TCAT PATH Path Test Coverage Analysis Tool May 2002 Website URL http www sgi com pro
10. 3 Twos 6 Threes 12 Fours 12 Fives c 15 Round 6 Roll Kept Roll Kept Roll Kept 0 0 1 1 2 2 YN BM ND PS Placed on NN MND MON Round 7 Roll Kept Roll Kept Roll Kept 0 0 1 1 2 2 6 VD MoM HD MS vox ox a SN RON 5 of a vox ox a Placed on Sixes Round 8 Kept Roll Kept Roll Kept Placed on Threes 0 1 1 2 2 ox wa Ux wa Round 3 Roll Kept Roll Kept Roll Kept 0 0 1 1 2 2 6 ox ox 4 so a Placed on Sixes Round Roll Kept Roll Kept Roll Kept 0 0 1 1 2 1 2 Placed on Round Roll Kept Roll Kept Roll Kept 0 0 1 1 2 2 2 4 4 X 4 X 4 q sw w OR os op Placed on Fours 3 of a kind 4 of a kind SN KN kind sw w Full hand Roll 0 3 1 1 Kept 0 xX X Roll 1 1 1 1 Kept 1 X X X Roll 2 1 1 1 Kept 2 Placed on Ones Round 9 Roll 0 1 2 4 Kept 0 X Roll 1 1 1 5 Kept 1 X X Roll 2 1 1 5 Kept 2 Placed on Chance Round 10 Roll 0 5 3 1 Kept 0 Round 6 Roll 0 1 Kept 0 X Roll 1 1 Kept 1 Roll 2 2 Kept 2 Placed on Small DD Moss DM ON o MN Round 7 Roll 0 4 2 5 Kept 0 X Roll 1 3 2 4 Kept 1 x Roll 2
11. Cobertura Geral dos Requisitos Funcionais M veis pelos Derivados de Tesir Cobertura dos Requisitos Funcionais 100 100 100 Portanto acredita se que esta atividade de teste mostrou claramente que o teste estrutural em agentes m veis uma excelente t cnica de teste para mostrar a corretude de um c digo m vel e ainda refor ou a utiliza o da Ferramenta JaBUTi MA como base de aux lio para testar agentes m veis desenvolvidos em Java com a API uCODE 116 6 Conclus o Esta disserta o teve por objetivo estudar e avaliar formas para apoiar o teste em c digo m vel utilizando se para tanto os crit rios de teste estrutural Em particular foram focados os crit rios de fluxo de dados e fluxo de controle que a Ferramenta JaBUTi suporta Tamb m possibilitou verificar o comportamento do c digo m vel enquanto ele se movimentava pelos n s de uma rede capturando informa es de seu estado em cada n do trajeto que percorreu e quais partes do c digo foram executadas A utiliza o de uma ferramenta de teste neste trabalho tornou se imprescind vel pois permitiu a avalia o dos testes aplicados Permitindo tamb m avaliar a pr pria Ferramenta JaBUTi como sendo uma excelente ferramenta de teste estrutural n o s de programas e componentes Java mas tamb m de programas que suportam mobilidade de c digo desenvolvidos pela CODE Pode se verificar com a aplica o das atividades de teste fun
12. Cobertura da Classe agents RestoreServerAgent por Tunc T n o houve altera o na cobertura Tabela 9 10 Chat Cobertura da Classe agents SpawnMigrationAgent por Tyunc T iunc 14 de 15 16 de 18 43 de 49 87 Tabela 9 11 Chat Cobertura da Classe agents ServerMigrationMessage por Tunc T iunc Tabela 9 12 Chat Cobertura da Classe agents NickListMessage por Tyfunc Thune Cassi se TESIS Tabela 9 13 Chat Cobertura da Classe agents JoinChatSession por Tfune Thune 42 de 42 100 47 de 47 135 de 141
13. Em seguida realizada a an lise de cobertura dos requisitos funcionais atrav s da aplica o dos casos de teste no jogo Boz Analisando o caso de teste de n mero 01 detalhes no Ap ndice B verificou se que foram cobertos 14 dos 24 requisitos funcionais sendo os de n mero 01 08 09 11 12 13 15 16 17 19 20 21 22 e 24 Tal cobertura se deu conforme segue e No round 0 foram satisfeitos os requisitos 13 e 01 no qual foram selecionados na primeira rolada tr s dados com o valor 4 requisito 13 na segunda rolada conseguiu se ent o quatro dados com o mesmo valor anterior e na terceira rolada o round finalizado com cinco dados com o valor 4 marcando a op o FIVE_OF_KIND requisito 01 e O round 1 cobriu os requisitos 12 11 e 9 onde foram selecionados dois dados com valores iguais a 6 requisito 12 na segunda rolada encontrou se dois pares de dados sendo um com o valor 6 e a outro com o valor 5 requisito 11 Em seguida na terceira rolada obteve se mais um dado com o valor 6 fechando o round com tr s dados iguais a 6 e dois iguais a 5 marcando se a op o FULL HAND do placar requisito 9 e No round 2 foram cobertos os requisitos 12 e 16 no qual a primeira e a segunda 5 3Tais casos de testes foram gerados atrav s da execu o aleat ria de v rios jogos portanto n o foram previamente elaborados Vale esclarecer que cada jogo um caso de teste 5 1 Jogo Boz 72 rolada cobriram novamente o r
14. mais vantajoso elege esse cliente Se o servidor estiver rodando em um outro cliente ent o migra para o n mais vantajoso 149 150 AP NDICE G Mobile Chat Cobertura dos Crit rios Estruturais por fire Este ap ndice apresenta as tabelas com a cobertura dos crit rios estruturais Todos N s Todas Arestas e Todos Usos pelo conjunto de casos de teste Testr de cada agente m vel do Mobile Chat Vale esclarecer que os casos de teste que nao apresentaram cobertura nao foram listados Tabela 7 1 Chat Cobertura da Classe agents LeaveChatSession por Testr Tabela 7 2 Chat Cobertura da Classe agents ServerAgent por Test 01 Tabela 7 3 Chat Cobertura da Classe agents SimpleMessageAgent por Testr Casi se TS eae ES 0 03 de 03 01 de 01 02 de 02 100 A Ap ndice G Mobile Chat Cobertura dos Crit rios Estruturais por Testr 151 Tabela 7 4 Chat Cobertura da Classe agents ServerLeavingMessage por Testr Tabela 7 5 Chat Cobertura da Classe agents NickChangeMessage por Testr 00 de 17 00 de 19 00 de 52 0 Tabela 7 6 Chat Cobertura da Classe agents GrabUserListAgent por Testr Casos de Teste Todos N s Todas Arestas Todos Usos 0 05 de 05 04 de 04 06 de 06 100 Tabela 7 7 Chat Cobertura da Classe agents PrintRoutingTable por Testr Ro se TRE ERR SE PESE Tabela 7 8 Chat Cobertura da Classe agents MobileMessage por Testr Tabela 7 9 Chat Cobertura
15. o conjunto de n s E o conjunto de arestas edge s start corresponde ao n inicial ou seja o bloco cuja senten a a primeira do programa E por fim T o conjunto de n s terminais ou seja os blocos cujas ltimas senten as s o as terminais do programa A JaBUTi VINCENZI et al 2003 devido ao mecanismo de manipula o de exce o em Java distingue dois conjuntos de arestas prim rias e secund rias As prim rias representam o fluxo regular de controle ou seja sem exce o e as secund rias representam o fluxo de controle que manipulam a exce o Deste modo na JaBUTi o GFC para um determinado m todo m um grafo estendido Gy m N Ep Es s T onde E o conjunto de arestas prim rias e E o conjunto de arestas secund rias sendo portanto subconjuntos separados de E Para melhor entendimento Vicenzi et al mostra em VINCENZI et al 2003 como um grafo de bloco criado Inicialmente cria se um Grafo de Instru o G m contendo uma nica instru o por n Neste GFC se uma instru o j puder ser executada ap s a instru o 7 ent o existe uma aresta do n i ao n j Se a instru o i est no alcance de um manipulador de exce o que come a na instru o j ent o existe uma segunda aresta do n i ao n j Depois de criado G m reduzido gerando o Grafo de Bloco Gy m Em VINCENZI et al 2003 consta o algoritmo detalhado para realizar a redu o do grafo de instru
16. o dando origem ao grafo de bloco Tal redu o ocorre tendo em m os o grafo de instru o G m e verificando cada bloco de instru o ou seja verifica se uma instru o inicial de um bloco ent o caso seja esta instru o passa a ser a instru o inicial de um bloco em Gy m isto tamb m 4 2 Gerando Grafos com a JaBUTi 43 vale quando encontra se uma instru o final ent o esta instru o passa a ser a instru o final de um bloco em G m Tamb m verifica se uma determinada instru o de G m faz parte do conjunto de arestas prim rias ou secund rias do grafo Gy m Maiores detalhes sobre o algoritmo constam em VINCENZI et al 2003 Conforme Vincenzi et al VINCENZI et al 2003 ao construir o GFC caso exista um manipulador de exce o um novo n tamb m criado para qualquer instru o que puder gerar uma exce o conforme instru es em negrito na Tabela 4 1 o que pode aumentar significativamente o n mero de n s no GFC Vincenzi et al VINCENZI et al 2003 continua dizendo que ap s o Grafo de Bloco G m ser constru do realizado um pr processamento eliminando n s desnecess rios por exemplo n s que contenham uma nica instru o goto Eles s o eliminados co nectando diretamente suas arestas que chegam com as arestas que apontam para seus sucessores Em seguida ap s a redu o de n s estes s o rotulados conforme o n mero de seu primeiro bytecode equivalente E os n
17. 2 Placed on Fours set Round 10 Placed on Full hand et Round 7 Roll 0 3 5 6 1 4 et Round 4 Roll 0 2 1 4 6 3 Kept 0 X see Round 1 Roll 0 4 5 1 4 3 Kept 0 X Roll 1 1 3 1 1 5 Roll 0 6 5 6 5 2 Kept 0 X X Roll 1 3 5 2 5 Kept 1 X X X Kept 0 X X Roll 1 4 2 3 4 2 Kept 1 X X Roll 2 1 2 1 1 6 Roll 1 6 6 6 4 4 Kept 1 X X Roll 2 5 6 6 5 Kept 2 Kept 1 X X X Roll 2 4 3 5 4 2 Kept 2 T Placed on Ones Roll 2 6 6 6 2 5 Kept 2 cg Placed on 4 of a kind Kept 2 7 Placed on Small seq Round 11 Placed on Sixes Round 8 Roll 0 6 6 6 1 3 et Round 5 Roll 0 1 3 1 3 3 Kept 0 X X X sete Round 2 Roll 0 1 6 6 4 5 Kept 0 X X X Roll 1 6 6 6 5 3 Roll 0 4 1 5 5 2 Kept 0 X X Roll 1 4 3 3 3 3 Kept 1 X X X Kept 0 X X Roll 1 5 6 6 3 4 Kept 1 X X XX Roll 2 6 6 6 3 1 Roll 1 5 6 5 5 1 Kept 1 X X Roll 2 1 3 3 3 3 Kept 2 Kept 1 X X X Roll 2 3 6 6 4 6 Kept 2 7 7 7 7 Placed on 5 of a kind Roll 2 5 6 5 5 1 Kept 2 Placed on Threes Kept 2 T Ro Placed on 3 of a kind Round 12 Placed on Fives set Round 9 Roll 0 1 4 5 1 2 x Round 6 Roll 0 4 4 3 2 5 Kept 0 Round 3 Roll 0 4 2 4 5 1 Kept 0 X Roll 1 3 6 4 2 5 Roll 0 4 4 2 4 3 Kept 0 X X Roll 1 3 3 1 2 4 Kept 1 Kept 0 X X X Roll 1 4 4 6 3 Kept 1 X Placed on Large seq Roll 1 4
18. 2 7 7 7 Roll 1 1 3 4 1 5 Round 10 Sixes 12 Placed on Threes Kept 1 X X Roll 0 2 2 3 2 2 3 of a kind 12 Roll 2 1 3 4 1 6 Kept 0 X X X X 4 of a kind 0 Round 3 Kept 2 Roll 1 2 2 3 2 2 Full hand 25 Roll 0 1 1 1 6 3 Placed on Fours Kept 1 X X X X Small seq 30 Kept 0 X X X Roll 2 2 2 6 2 2 Large seq 0 Roll 1 1 1 1 4 6 et Round 7 Kept 2 5 of a kind 0 Kept 1 X X X Roll 0 1 2 4 1 6 Placed on Twos Roll 2 1 1 1 2 3 Kept 0 X x Kept 2 Roll 1 1 3 1 1 5 Round 11 Placed on Ones Kept 1 X X X Roll 0 5 4 4 3 5 Roll 2 1 dy gt Kept 0 Round 4 Kept 2 ToT Roll 1 2 3 2 3 6 Round O Roll 0 3 4 1 3 3 Placed on 4 of a kind Kept 1 X Roll 0 4 6 5 2 2 Kept 0 X X X Roll 2 6 2 1 4 6 Kept 0 r X Roll 1 3 1 2 3 3 Round 8 Kept 2 T Roll 1 4 5 4 2 2 Kept 1 X X X Roll 0 3 4 6 3 5 Placed on Large seq Kept 1 X X X X Roll 2 3 2 1 3 3 Kept 0 X X Roll 2 4 6 4 2 2 Kept 2 oe 2 Roll 1 3 4 1 4 5 Round 12 Kept 2 7 7 7 Placed on 3 of a kind Kept 1 Roll 0 4 2 2 5 1 Placed on Chance Roll 2 1 4 3 5 3 Kept 0 eee Round 5 Kept 2 7 7 7 7 Roll 1 6 2 5 3 4 k Round 1 Roll 0 3 3 3 4 2 Placed on 5 of a kind Kept 1 X X X Roll 0 1 1 1 6 6 Kept 0 X X X Roll 2 5 2 6 3 4 Kept 0 7 7 7 Roll 1 3 3 3 1 6 et Round 9 Kept 2 7 7
19. 4 2 2 Kept 2 Ke Placed on Twos Round 8 Roll 0 2 5 Kept 0 Roll 1 Kept 1 Roll 2 Kept 2 Placed on 4 of a YO MOD H vox ox a Round 9 Roll 0 4 1 4 Kept 0 X Roll 1 3 1 6 Kept 1 X Large seq 40 5 of a kind 0 Chance 19 Bonus 35 Total 240 N vox ox a kind Momo e Placed on Large seq Round 11 Roll 0 4 3 6 Kept 0 Roll 1 5 Kept 1 Roll 2 4 Kept 2 Placed on 4 of a YO eM D vox ox Round 12 Roll 0 4 1 2 Kept 0 Roll 1 4 2 6 Kept 1 Roll 2 2 5 3 Kept 2 Placed on Threes Roll 2 2 1 2 Kept 2 Placed on Ones Round 10 Roll 0 5 1 3 Kept 0 X Roll 1 5 5 6 Kept 1 X X Roll 2 5 5 1 Kept 2 Placed on Fives Round 11 Roll 0 5 1 1 Kept 0 Roll 1 5 5 5 Kept 1 Roll 2 2 3 2 Kept 2 Placed on 3 of a Round 12 Roll 0 2 3 4 Kept 0 Roll 1 2 5 3 Kept 1 Roll 2 1 4 Kept 2 Placed on 5 of a Round O Roll 0 3 2 2 Kept 0 X X kind H w vox a kind kind 5 6 134 Ap ndice C Bozo Conjunto de Casos de Teste Testr 135 Roll 1 3 2 2 5 6 Kept 1 X X X Roll 2 4 4 4 1 6 Kept 2 7 Kept 1 X X Roll 2 4 4 1 4 6 Kept 2 7 Placed on Twos Roll 2 4 2 2 4 2 Kept 2 Placed on Chance Kept
20. 4 6 3 2 3 Kept 2 7 7 7 7 Kept 2 7 7 7 7 Kept 0 X X Placed on 3 of a kind aeee Round 1 Placed on Small seq Roll 1 4 2 3 3 3 Roll 0 1 3 2 6 4 Kept 1 X X X Round 12 Kept 0 X X X Round 5 Roll 2 5 4 3 3 3 Roll 0 5 1 4 3 2 Roll 1 1 3 2 5 4 Roll 0 2 2 3 6 4 Kept 2 2 Kept 0 Kept 1 7 7 7 Kept 0 X X Placed on Threes Roll 1 4 6 3 3 6 Placed on Large seq Roll 1 2 2 Kept 1 X X Kept 1 X X Round 9 Roll 2 3 6 4 6 aeee Round 2 Roll 2 2 2 Roll 0 4 3 2 4 4 Kept 2 F Roll 0 5 6 5 3 1 Kept 2 Kept 0 Placed on 5 of a kind Kept 0 X X Placed on Twos Roll 1 3 3 5 6 3 Ap ndice C Bozo Conjunto de Casos de Teste Testr 130 CASO DE TESTE 04 Ones 4 Kept 1 X X Roll 0 1 5 1 5 1 Roll 2 5 3 4 6 4 Twos 4 Roll 2 4 4 1 6 1 Kept 0 X X X Kept 2 7 Threes 6 Kept 2 7 7 7 7 Roll 1 1 2 1 1 1 Placed on Fours Fours 8 Placed on Chance Kept 1 X X X X Fives 15 Roll 2 1 2 1 1 1 Round 10 Sixes 18 Round 3 Kept 2 7 7 7 Roll 0 5 6 4 1 3 3 of a kind 20 Roll 0 1 2 1 4 5 Placed on Ones Kept 0 X 4 of a kind 0 Kept 0 X X Roll 1 5 6 6 1 4 Full hand 25 Roll 1 1 5 6 5 et Round 7 Kept 1 X X Small seq Kept 1 X X Roll 0 3 4 5 3 Roll 2 2 6 6 5 6 Large seq 40 Roll 2 4 5 5 3 5 Kept 0 x Ke
21. Ap ndice B foi aplicado na Ferramenta JaBUTi MA com o intuito de verificar a porcentagem de cobertura obtida para os crit rios estruturais Vale esclarecer que os itens n o execut veis referentes aos crit rios estruturais foram exclu dos A Tabela 5 9 apresenta a cobertura dos crit rios estruturais com rela o ao con junto de casos de teste Tfunc Tabela 5 9 Boz Cobertura dos Crit rios Estruturais por Tyunc Esta quarta fase da aplica o do teste funcional no jogo Boz n o foi cansativa pois a Ferramenta JaBUTi MA tornou f cil e atraente a ger ncia e a avalia o da co bertura dos crit rios estruturais O tempo de dura o desta quarta fase foi de 1 hora sendo que 20min foram utilizados para criar um projeto de teste na JaBUTi MA e executar os casos de teste e 40min para avaliar tais casos e gerar uma documenta o simples sobre a cobertura 5 1 3 5 Boz 5 Fase Compara o dos Resultados Aqui o intuito de comparar os conjuntos de casos de teste gerados Assim temos que no item 5 1 3 1 foram gerados casos de teste para cobrir 100 dos requisitos funcionais criando se para tanto o conjunto de casos de teste Tune Ap ndice B E o item 5 1 3 2 apresentou o conjunto de casos de teste Testr Ap ndice C gerado pela JaBUTi MA que obteve 100 de cobertura dos crit rios estruturais Com base nos conjuntos de casos de teste Tfunc Testr foi estipulada uma troca na cobertura
22. FIVE_OF_KIND int 11 o lt final gt gt CHANCE int 12 BozoGamelmpl glogPrinter PrintWriter BozoGamelmpl setScore ram setScore VgetScore getCompleteScore VgetilaxRolls Vgetonesg Vgetsum BozoException Soet3k Vgetsk PoetFull getSm getLa0 getGen Vgetvalue Vgetvalue Figura 5 6 Classes que comp em o pacote bozoserver O cliente BozoClient2 ilustrado na Figura 5 7 um agente m vel que quando executado migra seu c digo para o servidor e l executa o corpo do m todo run contendo as chamadas e defini es de m todos do cliente e do servidor tais chamadas s o utilizadas para migrar o cliente e para realizar o funcionamento do jogo O m todo playGame contido na classe BozoClient2 conforme Figura 5 7 respons vel pela realiza o do jogo e tem por fun o controlar quais dados ser o mantidos para as pr ximas roladas de dados e determinar em qual placar a pontua o ser marcada A marca o dos itens que comp em o placar realizada atrav s de um algoritmo que seleciona a primeira posi o livre encontrada no vetor booleano gone Este vetor cont m treze posi es inicializadas como false indicando que nenhum item do placar foi 5 1 Jogo Boz GameRec gid Round GameRec addRoll addChoiced setSpot VgetRollo getChoice SaetSpot ostring choices Vector oralls Vector
23. Fours 12 Roll 1 6 1 5 5 2 Round 6 Fives 10 Kept 1 X X Roll 0 5 6 3 3 3 Round 10 Sixes 6 Roll amp 2 6 2 5 5 6 Kept 0 X X X Roll 0 3 2 4 3 of a kind 18 Kept 2 Roll 1 3 3 3 3 3 Kept 0 X 4 of a kind 0 Placed on Fives Kept 1 x coe E Roll 1 2 2 6 Full hand 25 Placed on 5 of a kind Kept 1 X X Small seq Round 3 Roll 2 2 2 5 Large seq 0 Roll 0 2 2 3 5 3 et Round 7 Kept 2 5 of a kind Kept 0 X X Roll 0 6 4 3 2 1 Placed on Twos Chance 10 Roll 1 6 1 6 Kept 0 X X X Bonus 0 Kept 1 X X Roll 1 5 4 3 2 5 Round 11 Total 181 Roll amp 2 6 4 1 6 1 Kept 1 r a Sas 4 Roll 0 4 4 3 3 2 Kept 2 er 2 Roll 2 2 4 3 2 1 Kept 0 Placed on Ones Kept 2 RM CR Roll 1 4 5 5 4 2 Round O Placed on Small seq Kept 1 Roll 0 2 1 3 3 5 Round 4 Roll 2 3 2 2 2 3 Kept 0 KX X Roll 0 3 2 6 2 3 Round 8 Kept 2 Roll 1 1 1 3 3 2 Kept 0 X X Roll 0 4 3 4 6 2 Placed on Large seq Kept 1 X X X X Roll 1 3 3 5 3 3 Kept 0 X X Roll 2 1 1 3 3 2 Kept 1 X X XxX X Roll 1 4 4 4 2 6 Round 12 Kept 2 7 7 7 7 Roll 2 3 3 2 3 3 Kept 1 X X X Roll 0 6 1 2 5 5 Placed on Chance Kept 2 mers Roll 2 4 4 4 3 3 Kept 0 X Placed on Threes Kept 2 Roll 1 6 4 1 4 1 k Round 1 Placed on Fours 2 Kept 1 X Roll 0 4 3 1 1 4 Round 5 Roll 2 6
24. Kept 0 X X Round 11 Bonus 0 Placed on Large seq Roll 1 3 2 6 6 6 Roll 0 1 5 4 1 5 Kept 1 X X X Kept 0 et Round 4 Roll 2 2 4 6 6 6 Roll 1 3 2 4 6 6 Roll 0 5 2 3 6 3 Kept 2 x cama Maas Kept 1 X aeee Round O Kept 0 X X Placed on Sixes E Roll 2 4 2 6 2 Roll 0 1 3 1 1 2 Roll 1 5 6 5 Kept 2 fe tag SE Kept 0 X X X Kept 1 X X x Round 8 Placed on Twos Roll 1 1 1 1 1 3 Roll 2 5 4 1 5 4 Roll 0 1 1 1 4 2 Kept 1 X X X X Kept 2 Kept 0 X X X Round 12 Roll 2 1 1 1 1 5 Placed on Fours Roll 1 1 1 1 1 1 Roll 0 6 1 2 6 4 Kept 2 7 7 Kept 1 SP ck Kept 0 X X Placed on Ones Round 5 Placed on 5 of a kind Roll 1 6 2 6 6 3 Roll 0 3 4 3 5 5 Kept 1 X X X aeee Round 1 Kept 0 X X set Round 9 Roll 2 6 4 6 6 2 Roll 0 6 2 2 1 6 Roll 1 2 3 6 5 5 Roll 0 1 1 6 6 5 Kept 2 EF Kept 0 X X X X Kept 1 X X Kept 0 X X Placed on Small seq Roll 1 6 2 2 1 6 Roll 2 2 6 6 5 5 Roll 1 4 6 6 1 Kept 1 X X X X Kept 2 7 7 7 Kept 1 X X X Roll 2 6 2 2 5 6 Placed on Fives Roll 2 6 6 6 3 Ap ndice C Bozo Conjunto de Casos de Teste Testr 138 CASO DE TESTE 87 Ones 2 Round 2 Kept 2 7 7 7 Roll 2 5 1 3 1 1 Twos 6 Roll 0 2 3 5 5 6 Placed on 3 of a kind Kept 2 7 7 7 7 Threes 12 Kept 0 X X Placed on 4 of a kind
25. Kept 1 X Roll 2 5 6 2 5 2 Kept 0 X X Roll 2 4 6 5 2 4 Kept 2 7 7 Roll 1 3 3 6 3 4 Round 8 Kept 2 gras 3 Placed on Chance Kept 1 X X X Roll 0 3 5 3 6 5 Placed on 5 of a kind Roll 2 3 3 2 3 4 Kept 0 X X aeee Round 1 Kept 2 Roll 1 4 5 2 5 5 Round 12 Roll 0 2 6 4 6 3 Placed on 3 of a kind Kept 1 X X X Roll 0 4 6 2 5 3 Kept 0 x X Roll 2 5 1 5 5 Kept 0 Roll 1 1 6 6 6 5 Round 5 Kept 2 Te oe e Placed on Large seq Kept amp 1 X X X Roll 0 3 4 2 6 3 Placed on Fives Roll 2 4 6 6 6 5 Kept 0 X X Kept 2 Mo e i Roll 1 3 2 4 4 3 set Round 9 CASO DE TESTE 68 Ones 4 Kept 2 7 Kept 2 7 7 7 Twos 4 Placed on Chance Round 6 Placed on 4 of a kind Threes Roll 0 6 2 1 5 6 Fours Round 2 Kept 0 X X Round 10 Fives 10 Roll 0 4 4 6 4 5 Roll 1 6 2 5 5 6 Roll 0 6 2 3 5 5 Sixes 18 Kept 0 X X X Kept 1 X X Kept 0 X 3 of a kind 27 Roll 1 4 4 1 4 Roll 2 6 5 6 Roll 1 3 4 3 1 1 4 of a kind 27 Kept 1 7 7 7 7 7 Kept 2 Kept 1 X X Full hand 25 Placed on Full hand Placed on 3 of a kind Roll 2 3 5 3 4 1 Small seq 0 Kept 2 T Large seq 40 Round 3 set Round 7 Placed on Threes 5 of a kind 50 Roll 0 4 3 2 1 5 Roll 0 1 5 6 3 6 Chance 21 Kept 0
26. Re Re liga o Re Re liga o Re fer ncia de Rede fer ncia de Rede Por fer ncia de Rede Por C pia Por C pia Movimento A migra o de uma unidade de execu o gera duas classes de problemas a re loca o de recursos e a reconfigura o de liga o Fuggeta em FUGGETTA PICCO VIGNA 1998 conforme Tabela 2 1 apresenta mecanismos de gerenciamento de espa o de dados para lidar com esses problemas Os mecanismos de gerenciamento de espa o de dados ilustrados na Figura 2 5 s o descritos a seguir 27Vale esclarecer que na Figura 2 5 o c rculo sombreado a unidade de execu o que se movimenta do host de origem para o de destino 2 1 Mecanismos de Suporte ao C digo M vel 12 a Por Movimento Antes Recurso Depois CH Recurso b Refer ncia de Rede Antes Recurso Depois Recurso Ambiente Computacional de Origem Ambiente Computacional de Origem Ambiente Computacional de Ambiente Computacional de Origem Ambiente Computacional de Origem Ambiente Computacional de estino Antes Recurso Depois c Por C pia Antes Recurso Recurso Depois Recurso Recurso Ambiente Computacional de Origem Ambiente Computacional de Origem Ambiente Computacional de Destino
27. X X X X Placed on Small seq Sixes 18 set Round O Roll 1 3 4 3 4 4 3 of a kind 20 Roll 0 2 6 1 2 2 Kept 1 T Round 3 4 of a kind 28 Kept 0 X X X Placed on Full hand Roll 0 5 2 5 5 2 Full hand 25 Roll 1 2 5 2 2 2 Kept 0 X X X Small seq 30 Kept 1 X X X X Round 2 Roll 1 5 1 5 5 Large seg 40 Roll 2 2 6 2 2 2 Roll 0 1 4 6 3 2 Kept 1 X X X 5 of a kind 50 Kept 2 Loe Ae Kept 0 x X X Roll 2 5 1 5 5 Ap ndice C Bozo Conjunto de Casos de Teste Testr Kept 2 7 7 Placed on Fives Round 4 Roll 40 5 3 3 2 5 Kept 0 X x Roll 1 5 4 5 4 5 Kept 1 X X X Roll 2 5 4 5 1 5 Kept 2 a cae i Placed on 3 of a kind Round 5 Roll 0 1 2 4 4 4 Kept 0 X X X Roll 1 6 1 4 4 4 Kept 1 X X X Roll 2 2 2 4 4 4 Kept 2 Kil dallas Placed on Fours CASO DE TESTE 21 Ones 2 TWOS crer 8 Threes 12 Fours 12 Fives 15 Sixes 24 3 of a kind 0 4 of a kind 29 Full hand 25 Small seq 30 Large seq 40 5 of a kind 0 13 35 245 Round O Roll 0 5 4 1 2 Kept 0 Roll 1 1 1 4 3 Kept 1 X X Roll 2 1 1 4 5 2 Kept 2 Placed on Chance kxk Round 1 Roll 0 2 4 3 Kept 0 7 7 7 H q Placed on Large seq Round 2 Roll 0 3 3 4 3 5 CASO DE TESTE 29 Qnes
28. facilitando a verifica o da cobertura do fluxo de dados e de controle do programa Comparando o teste estrutural com aux lio da JaBUTi e o teste funcional reali zado manualmente verificou se que com o aux lio da Ferramenta JaBUTi a atividade de teste fica muito mais f cil de ser realizada e a probabilidade de ocorr ncia de erros por descuido de observa o e anota o ocorrido no teste manual remota O teste funcio nal realizado manualmente exige que o testador esteja sempre atento s suas anota es e avalia es Al m disso o tempo gasto na atividade de teste funcional foi muito superior quando comparado com o teste estrutural auxiliado pela JaBUTi Analisando as atividades de teste funcional e estrutural aqui realizadas pode se observar que a maior cobertura Tabela 5 10 obtida pelo conjunto de casos de teste T func gerado durante o teste funcional foi de 97 para o crit rio Todos N s Quando comparado com a cobertura Tabela 5 11 do conjunto Testr gerado durante o teste estrutural com o aux lio da JaBUTi MA verificou se que a menor cobertura foi de 95 dos requisitos com 5 2 Mobile Chat 82 rela o ao conjunto Tese n s OS demais conjuntos derivados de Testr apresentaram 100 de cobertura dos requisitos funcionais Tabela 5 10 Boz Cobertura Geral dos Crit rios Estruturais por Tune Rc Cobertura dos Crit rios Estruturais por Tyunc Tabela 5 11 Boz Cobertura Geral dos Requisitos Funcion
29. m disso se o servidor estiver em execu o na m quina do cliente uma mensagem exibida na tela informando que o mesmo est hospedando o servidor Quando acontece a migra o do servidor do local de origem para uma m quina cliente o MainServer fica desativado na m quina de origem e uma inst ncia do ChatServer servidor itinerante inicializada como servidor ativo na m quina de um cliente A troca de apelido realizada pelo comando nick lt novo apelido gt Tal co mando troca o apelido atual do usu rio pelo novo apelido especificado Ao executar este comando verificado se algum apelido foi realmente digitado caso contr rio um erro acusado Se o apelido foi digitado verifica se se diferente do apelido atual e se n o cont m nenhum espa o em branco Ap s essa verifica o o agente NickChangeMessage enviado para o servidor carregando o c digo que ser executado no servidor e o novo apelido Ao chegar no servidor o agente verifica se o novo apelido j est em uso por um outro usu rio caso esteja o agente retorna ao cliente informando que o apelido n o est dispon vel para uso Caso o apelido n o esteja em uso a entrada do usu rio na tabela de clientes conectados atualizada Em seguida o agente NickListMessage enviado para todos os clientes conec tados com o intuito de atualizar a lista de apelidos na interface gr fica dos clientes Ap s a atualiza o da lista o agente Mobi
30. o O servidor gerencia o jogo fornecendo m todos que realizam as a es do jogo e aguarda a conex o de um cliente As jogadas foram implementadas de forma autom tica ou seja o pr prio programa que assume a escolha de uma determinada jogada atrav s de estrat gias previamentes implementadas pelo programador 5 Estudos de Casos 62 O segundo exemplo um aplicativo de conversa o semelhante ao ICQ por m com menos funcionalidades pois o intuito n o estava na elabora o de um bom programa de chat e sim na constru o de um aplicativo m vel O Mobile Chat foi desenvolvido com o intuito de mostrar o exemplo de uma aplica o m vel mais complexa e de uso real Este exemplo diferente do primeiro mais robusto pois foram implementados dois servidores um fixo e outro m vel e treze agentes m veis que estabelecem comunica o e se movimentam entre tais servidores Como se n o bastasse o servidor m vel se movimenta pelos hosts clientes pois este foi implementado de forma a realizar a migra o aut noma baseada na verifica o do melhor host participante da sess o de chat para alocar o servidor itinerante com o intuito de melhorar o tr fego da rede Os exemplos citados foram testados com o intuito de comprovar o tema proposto por este trabalho Vale ressaltar que a depura o de aplica es m veis especialmente dif cil pois al m de tratarem se de aplica es distribu das s o m veis dificultando ain
31. o deste comando faz com que o agente ServerAgent seja enviado para o servidor ativado no momento seja ele o pr prio MainServer localizado no host inicial ou algum ChatServer localizado na m quina de um dos clientes Chegando no servidor ativo o ServerAgent efetua a migra o do servidor para o cliente da requisi o Para restaurar o servidor principal ou seja para que o servidor ativo possa ser novamente o servidor principal MainServer basta invocar o comando restore Este comando envia o servidor de volta sua posi o inicial ou seja se o servidor est presente na m quina de um cliente ele retorna para o n onde foi executado a princ pio Antes de tudo o aplicativo cliente certifica se de que o servidor est hospedado na m quina local Caso esteja o agente RestoreAgent utilizado para enviar o servidor de volta para a posi o inicial ativando assim o MainServer novamente caso contr rio uma mensagem 59Detalhes sobre a migra o ser o tratados na Se o 5 2 2 3 5 2 Mobile Chat 99 de erro exibida para o usu rio O comando stats informa ao usu rio o estado dos servidores exibindo o endere o do servidor principal e o endere o do servidor ativo Este ltimo pode ser diferente do primeiro devido ocorr ncia de migra o do servidor Vale esclarecer que o servidor ativo pode ser o principal caso n o houver a migra o do servidor ou pode ser o itinerante caso houver migra o do servidor Al
32. usando a conex o de novos clientes j que o servidor se encontra em tal host a informa o sobre o melhor servidor a migra o do servidor para outro host e o retorno do servidor para o host da Ana atrav s da utiliza o do comando getserver informando a porta 12345 A interface gr fica da Ana conforme Figura 5 14 apresenta do lado direito a lista de todos os usu rios conectados do lado esquerdo s o apresentadas todas as in forma es ocorridas durante a sess o de chat sobre a conex o de novos usu rios j que a Ana foi a primeira a se conectar e as conversas entre os usu rios Na caixa de texto que recebe todos as entradas de mensagens e comandos o usu rio Ana insere o comando getserver lt porta gt para chamar o servidor para ser alocado em sua m quina A Figura 5 15 apresenta o shell de execu o do cliente para o usu rio Jo o 5 2 Mobile Chat 89 C WINDOWS system32 cmd exe MobileChat Ana 127 0 0 1 2000 ID 0 15 19 gt Joao 127 0 0 1 2001 has joined 15 20 Jose 127 0 0 1 2002 has joined 15 21 lt Ana gt Oi meninos 15 21 lt Joao gt Oi Ana tudo bom 15 21 Jose Oi gente ctive server is now 127 a z Jose 127 0 0 1 2002 21 inserted est Host lew server address estination node address erver Migrating to 127 6 6 MuServer activated on ctive server is now 127 8 0 1 12345 xl getserver 12345 Figura 5 13
33. vel tore lt n gt istore istore lt n gt Istore Istore lt n gt ocal Carrega uma constante para a pi bipush sipush Ide Idc_w ldc2w aconst null ha de operando dconst lt d gt fconst lt f gt iconst_m1 iconst lt i gt Iconst_ lt 1 gt Oferece acesso para mais vari veis wide ocais usarem um ind ce extenso ou para um operando imediato amplo Aritm tica dadd Tadd iadd Tadd dsub fsub isub Tsub Multiplica o dmul fmul imul Imul i d2l f2d f Di PL i2b i2c i2d i2f i2 i2s Dd Lf Cria o e Mani Cria inst ncia de classe new pula o de Objeto newarray anewarray multlanewarray Accesso de Campos de Classes getfield getstatic putfield putstatic Carrega um componente de matriz aaload baload caload daload faload iaload laload para a pilha de operando saload Armazena um valor da pilha de aastore bastore castore dastore fastore iastore operando como um componente de lastore sastore matriz Obt m o comprimento da matriz Checa propriedades de inst ncias checkcast instanceof EE on Transfer ncia de Ramo Incondicional goto goto_w jsr jsr w ret athrow Ramo Condicional ifacmpeg ifacmpne ificmpeq ificmpge if_icmpgt if_icmple ificmplt if icmpne ifeq ifge ifgt ifle iflt ifne ifnonnull ifnull Ramo Condicional Composto lookupswitch tableswitch Acesso de M todo Invoca o invokeinterface invokespecial invokestatic invoke vi
34. 18 UNC Tabela 5 18 Chat Cobertura dos Criterios Estruturais do pacote agents por Tpunc EE eka Pe EE T iunc ra E a Zo a e a i n o houve altera o na cobertura Para a gera o dos casos de teste adicionais Tm com o intuito de unc concluir a cobertura dos crit rios estruturais foram despendidas 2 horas sendo que 1h30min foram utilizados para analisar o c digo gerar os casos de teste adicionais e aplic los na Ferramenta JaBUTi e 30 minutos para gerar uma documenta o simples 5 2 3 5 Chat 5 Fase Compara o dos Resultados Agora a inten o de comparar os conjuntos de casos de teste gerados Assim temos que no item 5 2 3 1 foram gerados casos de teste para cobrir 100 dos requisitos funcionais criando se para tanto o conjunto de casos de teste Tyunc Ap ndice E E o item 5 2 3 2 apresentou o conjunto de casos de teste Testr Ap ndice F gerado pela JaBUTi MA que obteve 100 de cobertura dos crit rios estruturais Com base nos conjuntos de casos de teste Tfunc Testr foi estipulada uma troca na cobertura ou seja o item 5 2 3 3 apresentou a cobertura dos requisitos funcionais pelo conjunto Testr O item 5 2 3 4 apresentou a cobertura dos crit rios estruturais por Tpunc 5 2 Mobile Chat 114 e T unc Avaliando a troca percebeu se que o conjunto Tune inicialmente gerado para cobrir os requisitos funcionais apesar de ter coberto 100 destes quando a
35. 3 2 4 4 Kept 0 X xX X X Roll 0 3 2 3 5 2 set Round 9 Kept 2 Roll 1 4 4 1 1 4 Kept 0 X X Roll 0 4 1 2 1 6 Placed on Sixes Kept 1 Roll 1 3 5 3 1 1 Kept 0 X x Placed on Full hand Kept 1 X X Roll 1 6 1 2 1 5 Roll 2 3 3 3 4 5 Kept 1 X X 139 AP NDICE D Mobile Chat Requisitos Funcionais Este ap ndice mostra os requisitos funcionais especificados para o aplicativo Mo bile Chat conforme segue 1 Quando a linha de comando que invoca o cliente possuir menos do que quatro par metros ent o uma mensagem dever ser exibida na sa da padr o indicando o modo correto de executar a linha de comando e o cliente n o ser iniciado 2 Quando a linha de comando que invoca o cliente ter mais do que quatro par metros ent o uma mensagem dever ser exibida na sa da padr o indicando o modo correto de executar a linha de comando e o cliente n o ser iniciado 3 Ao executar o cliente e a porta do ClientServer informada no segundo par metro da linha de comando j estiver em uso ent o uma mensagem dever ser exibida na sa da padr o indicando que tal porta j est em uso e o cliente n o ser iniciado 4 Ao executar o cliente e o arquivo contendo as informa es de custo informado no ltimo par metro da linha de comando n o for encontrado ent o uma mensagem dever ser exibida na sa da padr o indicando que o arquivo n o foi encontrado por fim o cliente
36. 4 5 6 Placed on Twos Kept 1 X X X Roll 2 4 4 4 4 4 Kept 0 X x Roll 2 1 6 1 1 6 Kept 2 7 Roll 1 6 2 3 5 6 Round 6 Kept 2 7 T T Ap ndice B Boz Conjunto de Casos de Teste Tune 125 Placed on Sixes x Round 11 Roll 0 3 6 4 6 5 Round 10 Roll 0 4 3 2 2 4 Kept 0 X X seit Round 9 Roll 0 6 5 4 5 5 Kept 0 Roll 1 3 5 4 6 3 Roll 0 5 5 1 5 3 Kept 0 Roll 1 6 5 4 1 1 Kept 1 X X Kept 0 X X X Roll 1 3 1 4 5 1 Kept 1 X Roll 2 3 6 4 4 5 Roll 1 5 5 1 5 6 Kept 1 X Roll 2 6 2 1 6 2 Kept 2 Kept 1 X X X Roll 2 3 6 2 1 6 Kept 2 2 Placed on Small seq Roll 2 5 5 4 5 4 Kept 2 ETT Placed on Large seq Kept 2 Placed on Threes Placed on 4 of a kind Round 12 CASO DE TESTE 02 Ones 4 Placed on Chance Kept 2 7 7 7 7 Roll 1 4 3 2 5 6 Twos 4 Placed on 4 of a kind Kept 1 7 7 7 Threes 9 Round 2 Placed on Large seq Fours 8 Roll 0 5 1 6 2 1 xxx Round 6 Fives 15 Kept 0 X X Roll 0 6 5 5 3 1 Round 10 Sixes 24 Roll 1 6 1 6 1 1 Kept 0 X Roll 0 2 5 5 6 6 3 of a kind 0 Kept 1 Mie Se Roll 1 6 6 6 6 5 Kept 0 4 of a kind 8 Placed on Full hand Kept 1 X X X X Roll 1 2 1 5 3 2 Full hand Roll 2 6 6 6 6 1 Kept 1 x Small seq 30 Round 3 Kept 2 7 7 7 Roll 2 1 3 2 3 4 Large
37. Assincrono oigo i Retardado Fragmento kea Imediato C digo ass ncrono Retardado Sincrono C digo Aut nomo Imediato dado Assincrono cigo Retardado Fragmento de Sincrono Imediato C digo Ass ncrono Retardado Mobilidade FUGGETTA PICCO VIGNA Detalhando a Figura 2 4 apresenta que a mobilidade forte apoiada por dois mecanismos migra o e clonagem remota O mecanismo de migra o suspende uma unidade de execu o transmite a para o ambiente computacional de destino e ent o prossegue A migra o pode ser proativa ou reativa Na migra o proativa o tempo e o destino para migra o s o determinados de forma aut noma pela unidade de execu o migradora Na migra o reativa o movimento favorecido por uma unidade de execu o diferente que se relaciona com a unidade de execu o a ser migrada 2 1 Mecanismos de Suporte ao C digo M vel 10 O mecanismo de clonagem remota cria uma c pia de uma unidade de execu o em um ambiente computacional remoto A clonagem remota difere se do mecanismo de migra o por que a unidade de execu o original n o separada de seu ambiente computacional corrente Como na migra o a clonagem remota pode ser tanto proativa como reativa conforme mostra a ilustra o da Figura 2 4 Mecanismos que d o suporte mobilidade fraca podem ser classificados de acordo com a dire o de transfer ncia e a natureza do c digo com a
38. Boz Cobertura dos Requisitos Funcionais por T func Analisando a Tabela 5 2 pode se verificar que os casos de teste do conjunto Tfunc Ap ndice B obtiveram 100 de cobertura dos requisitos funcionais conforme desejado A primeira fase desta atividade de teste al m de ter sido cansativa foi custosa devido verifica o de cada rolagem de dados em conjunto com a avalia o dos requisitos funcionais especificados O tempo de dura o da primeira fase do teste para o jogo Boz foi de 21 horas e 30 minutos sendo que 2h30min foram utilizadas para gerar os 150 casos de teste 17h40min para avaliar tais casos e 1h20min para gerar uma documenta o simples Isto com exce o do tempo utilizado para o entendimento do estudo de caso e especifica o dos requisitos funcionais que levou cerca de 16 horas 5 1 Jogo Boz 75 5 1 3 2 Boz6 2 Fase Cobertura dos Crit rios Estruturais por Testr Prosseguindo com a atividade de teste do jogo Boz o objetivo avaliar a cober tura dos crit rios estruturais Desta forma foi especificado o seguinte plano para o teste estrutural 1 Especificar os crit rios estruturais a serem testados 2 Gerar casos de teste para testar os crit rios estruturais 3 Aplicar os casos de teste para cobrir 100 dos crit rios estruturais especificados Para realizar tal teste foi criado um projeto de teste na JaBUTi em seguida foi configurado e inicializado o servidor de teste da mesma d
39. N 0 15 34 43 54 54 82 60 60 82 74 74 82 79 91 97 Assim suponha que um caso de teste de falha atravesse os n s do GFC F 0 34 15 34 43 54 54 82 91 97 e um caso de teste de sucesso atravesse os n s do GFC S 0 34 43 60 60 82 91 97 As localiza es mais prov veis da falha est o nos n s 15 54 ou 54 82 uma vez que s o executados pelo caso de teste de falha F S Se a falha n o estiver localizada em tais n s ela ser encontrada nos n s do GFC 0 34 43 91 e 97 Fs N Ss Tal procedimento baseado em informa es de fluxo de controle facilita a atividade de teste j que todos os outros n s do GFC n o precisam ser analisados Assim a ferramenta Slice facilita a detec o de falhas A pr xima se o apresenta a adapta o realizada na Ferramenta JaBUTi para suportar o teste de agentes m veis 4 6 Testando Agentes M veis com a JaBUTi MA Segundo Delamaro DELAMARO 2005 sob a perspectiva de teste estrutural mais trabalhoso testar uma aplica o de agente m vel do que um programa convencional A dificuldade est no fato de que a coleta de informa es de um programa convenvional simples ao contr rio do teste de agentes m veis que requer uma forma para coletar dados de trace rastreio de v rios pontos diferentes da rede isto de todos lugares na rede onde o agente executa e depois pass los para a ferramenta de an lise A JaBUTi MA L a extens o da JaBUTi para t
40. NickChangeMessage GrabUserListAgent e PrintRountingTable Em contrapartida o agente ServerLeavingMessage n o obteve cobertura em nenhum crit rio Ainda na Ta bela 5 17 pode se verificar claramente que a maioria dos agentes n o obteve cobertura total dos crit rios estruturais Tabela 5 17 Chat Cobertura dos Criterios Estruturais dos Agentes M veis por Tpunc po aera sd agents ServerMigrationMessage 06 de 07 04 de 06 agents NickListMessage 24 de 24 23 de 24 49 de 49 100 agents JoinChatSession 37 de 42 42 de 47 110 de 141 Esta quarta fase durou cerca de 3 horas e 30 minutos sendo que 1 hora foi utilizada para a aplica o dos casos de testes na JaBUTi e 2h30min para a avalia o dos resultados e cria o de um relat rio simples Com o intuito de cobrir totalmente os crit rios estruturais de todos os agentes m veis foram gerados mais casos de teste criando se o conjunto Tr Ap ndice H Os novos casos de teste foram gerados com base na an lise de cobertura da Ferramenta JaBUTi Vale mostrar que Thin 4 b c d e f g h A apresenta o detalhada da cobertura dos crit rios estruturais pelo conjunto Tunc consta no Ap ndice I no qual os casos de teste identificados por letras s o os casos 5 2 Mobile Chat 113 1 de testes adicionais ou seja os casos de teste pertencentes ao conjuntos Tpune A cobertura dos crit rios estruturais com adi o do conjunto JT apresentada pela Tabela 5
41. O texto digitado ser encapsulado no agente m vel MobileMessage juntamente com o n mero de identifica o do cliente Este agente ter como destino o servidor ativo Ao chegar no servidor o agente Mobi leMessage obt m a lista de clientes conecta dos e identifica qual o apelido do usu rio que o enviou atrav s do n mero de identifica o que trouxe consigo criando ent o um novo texto concatenando o apelido e o texto da mensagem para a identifica o do remetente O formato desse novo texto representado da seguinte forma 5 2 Mobile Chat 97 lt apelido gt texto Ent o o novo texto encapsulado em um outro agente o Mobi leMessage que enviado para todos os usu rios presentes na lista de conectados inclusive para o cliente que a enviou Quando o agente chega em um dos clientes ele cria um outro texto novo concatenando o formato do texto anterior com a hora em que o agente chegou de modo a exibir para o usu rio a hora de chegada da mensagem O formato do texto concatenado que exibido para o usu rio o seguinte hh mm lt apelido gt texto Esclarecendo hh representa as horas mm os minutos e apelido o remetente da mensagem Desta forma o destinat rio tem a no o sobre qual o hor rio que a mensagem chegou quem enviou remetente e qual o texto enviado Al m da troca de mensagens o Mobile Chat oferece comandos que fortalecem o controle da sess o de chat e a comunica o entre o usu rio e o s
42. Oi meninos 15 21 sJoao gt Oi Ana tudo bom 15 21 Jose Oi gente acres Routing Table L gt 127 0 0 1 2002 127 Filtered Routing Table connected nodes gt gt 127 0 0 1 2001 127 0 0 1 2000 31 gt 127 0 0 1 2002 127 0 0 1 2000 31 E2 127 0 0 1 2000 127 0 968 31 gt 127 0 0 1 2002 127 0 0 1 2001 3 gt 127 0 0 1 2001 127 0 0 1 1968 4 gt 127 0 0 1 2002 127 0 0 1 1968 31 erver Migrating to 127 0 0 1 2008 ctive server is now 127 8 0 1 12345 e printroutes Figura 5 15 Simula o de chat shell de Figura 5 16 Simulacao de chat execu o do usu rio Jo o tela do cliente para o usu rio Jo o 5 2 Mobile Chat 90 A Figura 5 17 apresenta o shell de execu o do cliente para o usu rio Jos onde s o exibidas informa es referentes a conex o o id de n mero 2 gerado pelo servidor principal a localiza o do servidor ativo tamb m mostra que este host aloca o servidor ativo e informa que o servidor ser migrado para o host 127 0 0 1 2000 e que o mesmo est ativado na porta 12345 Na interface gr fica do cliente Figura 5 18 como nas outras apresenta a con versa o entre os usu rios e a invoca o do comando stats Neste caso quando o co mando foi invocado o servidor estava sendo executado no mesmo host do cliente ent o uma mensagem informando que o cliente j estava hospedando o servidor foi exibida C WINDOWS
43. Testr agents agents LeaveChatSession por Testr ServerAgent por Testr SimpleMessageAgent por Tem ServerLeavingMessage por Testr NickChangeMessage por Testr GrabUserListAgent por Testr PrintRoutingTable por Testr RestoreServerAgent por Testr SpawnMigrationAgent por Testr ServerMigrationMessage por Testr NickListMessage por Testr LeaveChatSession por Tyfune Trune SimpleMessageAgent por Tun T 150 151 151 151 151 151 151 152 152 155 UNC Lista de Tabelas xix 9 3 9 4 9 5 9 6 9 7 9 8 9 9 9 10 9 11 9 12 9 13 Chat Cobertura da Classe agents ServerLeavingMessage por Tjunc Chat Cobertura da Classe agents ServerAgent por Tunc Thune 156 Chat Cobertura da Classe agents NickChangeMessage por Tyfunc Thune 156 Chat Cobertura da Classe agents GrabUserListAgent por Tune Thune 156 Chat Cobertura da Classe agents PrintRoutingTable por Tyfunc Thune 156 Chat Cobertura da Classe agents MobileMessage por Tune Thine 156 Chat Cobertura da Classe agents RestoreServerAgent por Tune Tyuncl5T Chat Cobertura da Classe agents SpawnMigrationAgent por Tunc Tinere do Seg O ga Seek Se 6G ee SN Sie a PEPE a OER a 157 Chat Cobertura da Classe agents ServerMigrationMessage por Tpunc e Tines oin a A AR te A mi Ra NT Ge a Rh a a a i 157 Chat Cobertura da Classe agents NickListMes
44. _ PPClassLoaden PloadClassQ PMloadClassQ PdefineClass PdefineClass PPresolveClassQ PPtindSystemC lass PPsetSignersd PrtindLoadedClass0 PloadClassintemald SgetSystemResourceAsStreamO getSystemResourced Ogetr esourceAsStream g etResource O Runnable Mom mp eu n0 MuClassLoader getClass Space QgetCurrentt QgaClass loader QloadClassQ Figura 2 6 Hierarquia do Pacote mucode No pr ximo cap tulo ser o apresentados os conceitos b sicos sobre o teste es trutural j que a inten o deste trabalho apresentar a utiliza o do teste estrutural em c digo m vel desenvolvido pela linguagem Java suportando a mobilidade de c digo oferecida pela API yCODE 2 3 A API CODE ClosureConstants from util NONE tint amp ROOT int amp DECLARED int Q REFERENCED int DECLAREDCLOSURE int FULLCLOSURE int GroupHandle r from mucode unpackd Serializable Runnable from io from ag rung Figura 2 7 Hierarquia do Pacote mucode abstractions 19 2 3 A API CODE Object from lang Doo N ygetClasso hashCoded Sequalso Plone StoStringd Pnotifro PnotifvAllo waite So bjecto EEE YLauncher Og etClassClosure YLauncher MgetClassClosured VgetServen VgetDeclaredClasses ViaunchQ g etDeclaredClassClosure Vparsenrgs QgatRetarencedClasses maind VgetrullClassClosure getClassNamex
45. a jogada 10 Se for a primeira ou a segunda rolada e sair qualquer seqiiencia de qualquer tamanho constando o valor 2 e o placar SMALL SEQ estiver livre mant m no m ximo tr s dados em seqiiencia e continua jogando 11 Se for a primeira ou a segunda rolada e sa rem duas duplas e o placar FULL HAND estiver livre mant m as duplas e continua jogando Ap ndice A Boz Requisitos Funcionais 122 12 Se for a primeira ou a segunda rolada os dados apresentarem alguma repeti o e os valores que mais se repetirem forem 5 ou 6 e os placares correspondentes FIVES ou SIXES ou o CHANCE ou FOUR_OF_KIND ou THREE_OF_KIND estiverem livres mant m os dados de maior repeti o ou os dados de maior valor caso o placar correspondente aos dados de maior repeti o j tenha sido marcado e continua jogando 13 Se for a primeira ou a segunda rolada os dados apresentarem alguma repeti o e os valores que mais se repetirem forem 1 2 3 ou 4 e os placares correspondentes ONES TWOS THREES ou FOURS ou FOUR_OF_KIND ou THREE OF KIND estiverem livres mant m os dados de maior repeti o e continua jogando se houver duas duplas mant m a dupla maior 14 Se for a primeira ou a segunda rolada n o houver repeti es e o placar CHANCE ou FOUR_OF_ KIND ou THREE_OF_KIND ou o placar correspondente entre ONES e SIXES estiver livre guarda o dado de maior valor num rico e continua jogando 15 Se for a primeira ou a seg
46. a tecnologia de c digo m vel auxiliando na divulga o de seus mecanimos e linguagens principalmente da API uCOoDE Proporci onando atrav s da verifica o da confiabilidade e da funcionalidade do c digo m vel a constru o de aplica es distribu das baseadas em mobilidade de c digo com qualidade Este trabalho permitir que sejam estudados a cobertura de c digo m vel para outras linguagens e ambientes que suportam mobilidade atrav s da aplica o de agentes m veis de teste que percorrem o mesmo caminho que um agente m vel comum realiza possibilitando a captura de informa es de trace Por fim confirmou se que a utiliza o de teste estrutural em c digo m vel uma forma eficaz de mostrar a corretitude de um sistema baseado em mobilidade de c digo E em acr scimo contribuiu para adaptar a Ferramenta JaBUTi MA e validar tal adapta o 118 Refer ncias BOOCH G RUMBAUGH J JACOBSON I UML Guia do Usu rio Rio de Janeiro RJ Campus 2000 CARVALHO A M B R CHIOSI T C S Introdu o a Engenharia de Software Campinas SP Unicamp 2001 CASTRO M A S Tutorial HTML do ICMC USP 1995 Website URL http www icmc usp br ensino material html CHAIM M L POKE TOOL Uma Ferramenta para Suporte ao Teste Estrutural de Programas Baseado em An lise de Fluxo de Dados Campinas SP Universidade Estadual de Campinas UNICAMP 1991 CHAN M C GRIFFITH S W IASI A F Java
47. ambas s o oferecidas pela JaBUTi 4 5 1 Ferramenta de An lise de Cobertura Ao ser carregada a ferramenta VINCENZI et al 2003 mostra o bytecode em vez do c digo fonte Java pois este nem sempre pode estar dispon vel ferramenta usa diferentes cores para fornecer sugest es sobre qual parte do bytecode c digo fonte GFC dever ser coberta primeiro para aumentar a cobertura Tais cores s o mostradas considerando o crit rio de blocos Apesar do c digo fonte n o ser requisitado pela JaBUTi VINCENZI et al 2003 4110 Crit rio de blocos tem por objetivo gerar um caso de teste para cobrir uma das reas com alta relev ncia se poss vel na frente de outras reas com baixa relev ncia deste modo as reas de baixa relev ncia s o cobertas assim que a cobertura m xima possa ser executada 4 5 Funcionalidades e Sess o de Projetos de Teste 55 quando este estiver dispon vel ele tamb m poder ser exibido em cores facilitando a identifica o de qual parte do c digo dever ser coberta primeiro Em VINCENZI et al 2003 a nota o da ferramenta possui diferentes tipos de c rculos para representar diferentes tipos de n s e C rculos duplos representam n s de chamada e C rculos em negrito representam n s de sa da e C rculos simples representam todos os outros n s restantes A ferramenta tamb m apresenta nota o para dois tipos diferentes de arestas para representar o fluxo de contr
48. comando restore e o cliente estiver hospedando o servidor ent o o servidor dever ser enviado de volta para a posi o inicial ou seja o servidor principal voltar a ficar ativo 30 Ao invocar o comando getserver sem nenhum par metro uma mensagem de erro dever ser exibida na caixa de mensagens do usu rio acusando erro de sintaxe 31 Ao invocar o comando getserver com um par metro que consiste em um n mero inferior 1024 ent o uma mensagem de erro dever ser exibida na caixa de mensagens do usu rio acusando que o valor da porta deve ser acima de 1024 32 Ao invocar o comando getserver com a porta desejada que consiste em uma cadeia de carac teres alfanum ricos ent o uma mensagem de erro dever ser exibida na caixa de mensagens do usu rio acusando um valor inv lido 33 Ao invocar o comando getserver com mais de um par metro uma mensagem dever ser exibida na caixa de mensagens acusando erro de sintaxe 34 Ao invocar o comando getserver tendo como par metro para porta um n mero superior 1024 e o cliente j estiver hospedando o servidor ent o uma mensagem de erro dever ser exibida na caixa de mensagens acusando que o servidor j est em execu o naquela m quina 35 Ao invocar o comando getserver tendo como par metro para porta um n mero igual ao n mero da porta onde est sendo executado o ClientServer ent o uma mensagem dever ser exibid
49. cria se um grafo def uso a partir de um grafo de fluxo de controle associando se aos n s e arcos as defini es e usos de vari veis ocorridas nesses n s ou arcos O grafo def uso utilizado para determinar quais caminhos e associa es ser o requeridas Utilizando o exemplo do c digo da Figura 3 2 e o exemplo do grafo de fluxo de controle ilustrado pela Figura 3 3 gera se o grafo def uso conforme a Figura 3 4 READ X Y Y gt 0 Y lt 0 Z Z X Y gt 0 Pow Pow 1 ZeliZ ANSWER e Z 1 PRINT ANSWER Figura 3 4 Exemplo do Grafo def uso Rapps e Weyuker em RAPPS WEYUKER 1985 apresentam uma fam lia de crit rios que requerem que dados de teste executem caminhos livres de defini o de cada n contendo uma defini o global de uma vari vel para n s contendo usos computacionais globais e arcos contendo usos predicativos desta vari vel A seguir definida uma s rie de conceitos estabelecidos a partir do grafo def uso do programa conforme RAPPS WEYUKER 1985 Para tanto considera se i j k como sendo n s distintos do grafo do programa 3 2 Crit rios Baseados em Fluxo de Dados 29 def z o conjunto de vari veis que possuem uma defini o global no n i c uso z o conjunto de vari veis que possuem um c uso global no n i p uso z j o conjunto de vari veis para as quais a aresta i j cont m um p uso dcu a i seja x def i o conjunto de todos os
50. da Classe agents RestoreServerAgent por Testr Gaos de Teste e ES ES E a n o houve altera o na cobertura Ap ndice G Mobile Chat Cobertura dos Crit rios Estruturais por Testr 152 Tabela 7 10 Chat Cobertura da Classe agents SpawnMigrationAgent por Testr 10 de 15 10 de 18 22 de 49 44 12 de 15 13 de 18 33 de 49 67 Tabela 7 11 Chat Cobertura da Classe agents ServerMigrationMessage por Testr 06 de 07 04 de 06 08 de 11 72 Tabela 7 12 Chat Cobertura da Classe agents NickListMessage por Testr 24 de 24 24 de 24 49 de 49 100 Tabela 7 13 Chat Cobertura da Classe agents JoinChatSession por Testr CE el EESSES 153 AP NDICE H Mobile Chat Congunto de Casos de Teste T UNC Este ap ndice apresenta os 08 casos de teste adicionais gerados com a finalidade de cobrir os crit rios estruturais dando continuidade a cobertura dos 22 casos de teste pertinentes ao conjunto Tune Ap ndice E gerados anteriormente Para tanto tem se que Trine E ta b C d e 9 h CASO DE TESTE a Troca de mensagens entre dois usuarios CASO DE TESTE b Um usu rio se conecta e requisita o servidor Um segundo usu rio se conecta CASO DE TESTE c Um usu rio se conecta utilizando o apelido de um usu rio j conectado Quando requisitado quanto a troca de apelido escolhe um novo apelido e aperta OK CASO DE TESTE d O usu rio A se conecta e requisita o servidor O
51. de uma nova conex o 11 Ao executar um cliente e a porta do MainServer informado no terceiro par metro da linha de comando n o corresponder porta na qual o servidor principal est em execu o o cliente ser iniciado por m n o conseguir estabelecer conex o com o servidor e uma caixa de di logo dever ser exibida perguntando sobre o desejo de uma nova conex o 12 Quando uma caixa de di logo for exibida informando que n o foi poss vel estabelecer conex o com o servidor e se h o desejo de tentar conex o novamente e o bot o No for pressionado ent o o cliente dever ser finalizado 13 Quando uma caixa de di logo for exibida informando que n o foi poss vel estabelecer conex o com o servidor e se h o desejo de tentar conex o novamente e o bot o Yes for pressionado ent o dever ocorrer uma nova tentativa de estabelecimento da conex o 14 Ao executar um cliente e a linha de comando possuir quatro par metros informados corretamente ent o o cliente dever ser executado com sucesso e dever ocorrer uma tentativa de conex o com o servidor 15 Ap s a tentativa do cliente de se conectar ao servidor e a interface gr fica n o apresentar a lista de apelidos e o campo de entrada de texto estiver desabilitado isto indica que n o foi poss vel se conectar com o servidor principal ent o uma caixa de di logo dever ser exibida perguntando se o usu rio deseja tentar se conectar novam
52. em uso 41 Ao invocar o comando nick tendo como par metro para o novo apelido uma cadeia de caracteres num ricos ou alfanum ricos livre de espa os em branco e nenhum outro usu rio estiver utilizando o ent o o apelido do usu rio dever ser trocado Em seguida todos os usu rios participantes da sess o de chat dever o ser informados da troca atrav s de uma notifica o que dever ser exibida na caixa de mensagens A lista de apelidos presente na interface gr fica dos clientes conectados dever ser atualizada o apelido antigo ser removido e o novo ser adicionado 42 Quando um novo usu rio se conectar todos os outros usu rios conectados dever o receber uma notifica o exibida na caixa de mensagens indicando que tal usu rio acaba de entrar na sess o de chat Em seguida a lista de apelidos presente na interface gr fica dos clientes conectados dever ser atualizada atrav s da inser o do apelido do novo usu rio 43 Quando um usu rio se desconectar ent o todos os outros usu rios dever o receber uma notifica o na caixa de mensagens indicando que tal usu rio acaba de deixar a sess o de chat Em seguida a lista de apelidos presente na interface gr fica dos clientes conectados dever ser atualizada atrav s da remo o do apelido do usu rio que deixou a sess o de chat 44 Quando o servidor principal n o estiver em execu o em nenhum dos n s da rede no momento em que um cliente tenta se con
53. estabelecer os valores a serem apresentados por cada face de dado nem como realizar a escolha de uma determinada estrat gia e a marca o de um determinado item do placar ou seja o programa que rola os dados randomicamente escolhe a estrat gia e marca o placar automaticamente ent o para tal caso fica imposs vel gerar de forma intencional os dados de entrada 5 1 Jogo Boz 71 A natureza rand mica do exemplo impossibilita manter o controle total sobre a atividade de teste impedindo verificar a sensibilidade do programa a certos valores de entrada isolar fronteiras de uma classe verificar a toler ncia indice de dados e averiguar os efeitos obtidos atrav s de combina es de dados conforme sugest o de Pressman Assim para avaliar o teste funcional foi estabelecido que atrav s das estrat gias fossem gerados os requisitos funcionais e que ent o fossem gerados os casos de teste para conseguir a cobertura dos requisitos Para a realiza o do teste funcional foram gerados 150 casos de teste e destes apenas 5 obtiveram sucesso na cobertura dos requisitos funcionais Tais casos de teste foram os de n mero 1 2 3 54 e 61 Ap ndice B em ordem de execu o os demais casos de testes foram exclu dos pois n o obtiveram xito na cobertura Portanto deixa se claro aqui que existe um conjunto Tpunc 1 2 3 54 61 que cont m os casos de teste selecionados para testar os requisitos funcionais do jogo Boz
54. existia o tratamento de erro no caso de informar na caixa de entrada de texto apenas uma barra ou um comando inexistente Neste caso de teste nenhum erro foi encontrado e foram cobertos os requisitos funcionais 21 e 22 e O caso de teste 18 verificou se existia o tratamento em rela o ao comando stats no caso de invocar tal comando e o servidor estar sendo executado localmente na m quina Este caso de teste cobriu o requisito 27 e nenhum erro foi encontrado e O caso de teste 19 teve o intuito de verificar se havia o tratamento em rela o ao comando restore no caso de invocar tal comando e o servidor n o estar sendo executado localmente na m quina O requisito funcional 28 foi coberto e nenhum erro foi encontrado e O caso de teste 20 verificou se havia o tratamento em rela o ao comando getserver no caso de informar uma porta com valor inferior 1024 mais de um valor para o par metro porta e uma porta correta sendo que o cliente j alo cava o servidor Apesar dos requisitos funcionais 33 e 34 serem cobertos este caso de teste encontrou um erro pois n o houve tratamento no caso da porta ser inferior 1024 e O caso de teste 21 verificou o comportamento do cliente ao ser inicializado sem a exist ncia de um servidor em execu o O requisito 44 foi coberto e nenhum erro foi encontrado e O caso de teste 22 verificou qual o comportamento do aplicativo no caso de haver uma queda do servidor ativo e d
55. fonte e analisa a cobertura de casos de teste E uma abor dagem mais rigorosa para an lise de cobertura do que para cobertura de ramo l gico TCAT PATH recomendada para projetos de software de missao critica Freqtiente mente um conjunto de teste com 90 a 100 de cobertura de ramo l gico tem somente 20 a 30 de cobertura de caminho TCAT PATH dispon vel para Ada C Fortran COBOL e Pascal INC 2002b Ferramenta de Herman suporta a aplica o do primeiro crit rio baseado em an lise de fluxo de dados proposto por Herman este crit rio semelhante ao crit rio 32COmmon Business Oriented Language 3 3 AJ Paths Generator 3 8 Ferramentas de Teste Estrutural 33 todos c uso proposto por Rapps e Weyuker RAPPS WEYUKER 1985 Sendo assim a ferramenta faz an lise de cobertura para o crit rio todos c usos de programas escritos em Fortran trata aspectos inter procedurais e associa es defini o uso de elementos de veto res e matrizes instrumenta o n mero do elemento do vetor sempre que este referenciado no c digo fonte CHAIM 1991 ASSET foi desenvolvida por Frankl e Weyuker suporta basicamente a aplica o dos crit rios de Rapps e Weyuker em programas escritos em Pascal N o faz nenhum trata mento inter procedural fornece gera o autom tica do programa execut vel possui uma interface gr fica que apresenta o grafo de fluxo de controle e prov uma intera o amig vel com o usu rio ASSET det
56. formato de bytecode que interpretado pela M quina Virtual Java JVM portanto basta a plataforma possuir a JVM para portar as classes Java sem a necessidade de altera o do c digo Java suporta mobilidade fraca usando mecanismos para buscar fragmentos de c digo FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Java Aglets a API Java Aglets desenvolvida pelo Laborat rio de Pesquisa de T quio da IBM no Jap o estende Java com suporte mobilidade fraca Aglets unidades de execu o s o threads em um interpretador Java que constituem o ambiente computacional FUGGETTA PICCO VIGNA 1998 MO implementada pela Universidade de Geneva uma linguagem interpretada baseada em pilha que implementa o conceito de mensageiros Mensageiros unidades de execu o s o sequ ncias de instru es que s o transmitidas entre plataformas ambien tes computacionais e executadas incondicionalmente conforme recebimento FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Mole desenvolvida pela Universidade de Stuttgart uma API Java que suporta mobilidade fraca Agentes Mole s o objetos Java que executam como threads da JVM que s o abstra dos dentro de um lugar o ambiente computacional Mole FUGGETTA PICCO VIGNA 1998 Obliq desenvolvida pela DEC uma linguagem interpretada sem tipo base ada em objeto estendida lexicamente Uma thread unidade de execu o pode requisitar a execu o de um proce
57. introdu o apresentou um resumo sobre o cen rio atual para sistemas dis tribu dos e consequentemente as motiva es para o desenvolvimento deste projeto No Cap tulo 2 apresentado o conceito de mobilidade de c digo mostrando os mecanimos que d o suporte a mobilidade e os ambientes de implementa o de c digos m veis O Cap tulo 3 apresenta a import ncia do teste de software e se concentra na apresenta o da t cnica de teste estrutural e os crit rios que a comp e A Ferramenta JaBUTi escrita no Cap tulo 4 apresentando suas funcionalidades sua forma de an lise de cobertura do c digo em teste e sua adapta o para suportar o teste de c digo m vel O Cap tulo 5 apresenta os estudos de casos implementados e utilizados para a aplica o das atividades de teste e avalia o dos resultados E por fim o trabalho conclu do no Cap tulo 6 sendo apresentadas as considera es finais e os trabalhos futuros 2 Mobilidade A chegada das redes de computadores proporcionou o aumento da utiliza o dos computadores e popularizou seu uso Tal tecnologia tem crescido a passos largos devido n o s facilidade de uso mas tamb m ao custo baixo da infra estrutura de hardware aplicada para sua implanta o Ao mesmo tempo em que tal crescimento colabora com as aplica es computacionais em contra partida aumenta o tr fego da rede Este aumento do tr fego um dos fatores preponderantes para a pesquisa na rea de perfo
58. leMessage enviado para todos os clientes conec tados com o objetivo de inform los sobre a troca do apelido atrav s de uma mensagem apresentada na interface gr fica dos clientes Finalmente o agente NickChangeMessage ainda no servidor migra de volta para o cliente e atualiza o conte do da barra de t tulo da interface gr fica com a inten o de exibir o novo apelido do usu rio 5 2 Mobile Chat 100 5 2 2 3 Migra o do Servidor Inicialmente o servidor principal MainServer executado em um dos n s da rede permanecendo neste n at a finaliza o do sistema Durante a execu o do servidor pode ocorrer a migra o do mesmo para um n de um cliente ou a migra o entre clientes Neste segundo caso o servidor j est localizado em um cliente e migrar para a m quina de outro cliente Al m disso estando o servidor em um cliente este poder migrar para o host inicial onde foi executado primeiramente no servidor principal As migra es podem ocorrer de forma aut noma que a migra o baseada nas informa es da tabela de custo ou deliberada que a migra o acionada pelo comando getserver lt porta gt de acordo com a vontade de algum usu rio O Mobile Chat apresenta as seguintes formas de migra o do servidor principal para o cliente de cliente para cliente do cliente para o servidor principal e a migra o baseada na tabela de custo A migra o do servidor principal para o cli
59. n s j tal que x c uso j e para o qual existe um caminho livre de defini o com respeito a x de i at j dpu a seja x def i o conjunto de todas as arestas j k tal que x p uso j k e para o qual existe um caminho livre de defini o com respeito a x de i at j du caminho um caminho n1 nj Np du caminho com respeito a x se n tiver uma defini o global de x e 1 ny tiver um c uso de g e n1 Nj Nk um caminho simples livre de defini o com respeito a x ou 2 nj ny tem um p uso de x e n nj um caminho livre de la o e livre de defini o com respeito a x Um du caminho com respeito a x execut vel se existe algum conjunto de valores de entrada capaz de executar um caminho completo que o inclua Conforme RAPPS WEYUKER 1985 obtido em SPOTO PERES BUENO 1995 dado G como um grafo def uso e P como um conjunto de caminhos completos de G Ent o P satisfaz o crit rio Todos N s se todo n de G est inclu do em P P satisfaz o crit rio Todos Arcos se toda aresta de G est inclu da em P P satisfaz o crit rio Todos Caminhos se todos os caminhos completos de G s o inclu dos em P P satisfaz o crit rio Todas Defini es se para todo n i de G e todo x def i P inclui um caminho livre de defini o com respeito a x de para todos elementos de deu x 7 ou dpu z i P satisfaz o crit rio Todos p usos se para todo n i e todo
60. o crit rio Todos N s sendo estes os de n mero 01 02 03 06 07 08 11 21 e 37 Assim tem se um conjunto de casos de teste derivado do conjunto Testr representado por Test n s 01 02 03 06 07 08 11 21 37 A Tabela 5 5 apresenta a cobertura dos requisitos funcionais com rela o ao 5 1 Jogo Boz 78 Tabela 5 4 Boz Cobertura dos Requisitos Funcionais por Testr EE E ee ee re a 36 eA EE el Tabela 5 5 Boz Cobertura dos Requisitos Funcionais por Test n s Casos de Teste Requisitos Funcionais Cobertos Itens Cobertos Porcentagem de Cobertura n o houve altera o na cobertura conjunto Test n s na qual obteve se uma cobertura final de 95 dos requisitos funcionais Dos casos de teste do conjunto Testr que cobriram o crit rio Todas Arestas con forme Tabela 5 3 tem se Testr arestas 01 02 03 06 07 08 11 21 31 37 38 destes os casos de teste de n mero 01 02 03 06 e 31 foram o suficiente para cobrir 100 dos requisitos funcionais conforme apresenta a Tabela 5 6 Os casos de teste do conjunto Testr que cobriram o crit rio Todos Usos conforme Tabela 5 3 gera o conjunto Test usos 01 02 03 05 06 07 08 11 16 21 31 37 38 que conseguiu cobrir 100 dos requisitos funcionais sendo que os casos de teste 01 02 03 06 e 31 foram suficientes para obter tal cobertura conforme mostra a Tabela 5 7 Para os casos de teste do conjunto Testr que cobriram
61. o interc mbio destas informa es CASTRO 1995 2 Mobilidade 5 mas Apesar de n o ser um novo conceito ela est em fase de amadurecimento faltando lhe ainda uma boa estrutura de conceitos e m todos PICCO 2000 Conforme Fuggeta FUGGETTA PICCO VIGNA 1998 e Picco PICCO 2000 a mobilidade de c digo pode ser definida informalmente como a capacidade de mudar dinamicamente as liga es entre fragmentos de c digo e o local onde eles s o executados Detalhes sobre o suporte mobilidade de c digo est o descritos na Se o 2 1 O desenvolvimento de Sistemas de C digo M vel se deu com pesquisas na rea de sistemas operacionais distribu dos que utilizam t cnicas de migra o de processos TA NENBAUM STEEN 2002 A t cnica de migra o de processos em FUGGETTA PICCO VIGNA 1998 descrita como a transfer ncia de um processo do sistema operacional da m quina onde ele est rodando para uma m quina diferente Acrescentando tal migra o se torna insuficiente quando aplicada em larga escala Sistemas de C digo M vel s o concebidos para operar em configura es de larga escala conhecem o local de execu o e podem agir com base neste conhecimento e a mobilidade fica sob controle do programador Estes sistemas tamb m se preocupam com a adapta o de servi os extens o din mica da funcionalidade da aplica o autonomia toler ncia falha e suporte s opera es desconectadas Tamb
62. o crit rio Todos Potenciais Usos conforme Tabela 5 3 tem se Testr potUsos 11 2 3 4 5 6 7 8 11 13 16 21 29 31 37 38 66 68 87 5 1 Jogo Boz 79 Tabela 5 6 Boz Cobertura dos Requisitos Funcionais por Testr arestas Requisitos Funcionais Cobertos Porcentagem de Cobertura gc E E Seo Tabela 5 7 Boz Cobertura dos Requisitos Funcionais por Testr usos Eme esa Na tabela 5 8 pode se verificar que tamb m houve 100 de cobertura dos requi sitos funcionais para o conjunto Bro sos sendo que os casos de teste de n mero 01 02 03 04 06 e 31 foram suficientes para realizar tal cobertura Tabela 5 8 Boz Cobertura dos Requisitos Funcionais por Test potU sos Casos de Teste Requisitos Funcionais Cobertos Itens Cobertos Porcentagem de Cobertura 1 01 08 09 10 11 12 13 14 15 16 17 19 20 e 21 ES ee RE Esta terceira fase durou 5 horas sendo que 3h20min foram utilizadas para avaliar os casos de teste do conjunto Testr e conjuntos derivados Testr n s Testr_arestas Testr_usos Testr potUsos 1h40min para gerar uma documenta o simples 5 1 3 4 Boz 4 Fase Cobertura dos Crit rios Estruturais por Tyunc Agora o interesse est em avaliar a cobertura do conjunto Tyyne para cobrir os crit rios estruturais vale lembrar que o conjunto Testr cobriu 100 dos crit rios estrutu 5 1 Jogo Boz 80 rais Nesta fase da atividade de teste o conjunto de casos de teste Tune
63. o do caso de teste da falha pode se habilitar um ou dois casos de teste adicionais bem sucedidos para que atrav s da execu o dos caminhos bem sucedidos a ferramenta possa identificar os peda os mais prov veis de conterem a falha bem como os menos prov veis Segundo Vincenzi et al em VINCENZI et al 2003 slice uma t cnica de an lise de programa amplamente aplic vel que pode ser usada para realizar diversas atividades de engenharia de software tais como compreens o de programa depura o teste pa raleliza o re engenharia manuten o e outras No contexto da JaBUTi as atividades mais importantes s o compreens o de programa e teste A JaBUTi VINCENZI et al 2003 utiliza um crit rio simples de slice din mico baseado nas informa es de fluxo de controle para identificar um subconjunto de senten as 4 6 Testando Agentes M veis com a JaBUTi MA 57 mais provaveis de conter o erro Portanto tem o intuito de 1 Computar o conjunto de falha F de n s do GFC que inclui todas as senten as executadas pelo caso de teste de falha 2 Computar o conjunto de sucesso S de n s do GFC considerando um ou dois casos de teste de sucesso 3 Calcular a diferen a e a intersec o desses conjuntos para priorizar as senten as executadas pelo caso de teste de falha Vincenzi et al VINCENZI et al 2003 exemplifica considerando o GFC apresen tado na Figura 4 6a onde N o conjunto de n s do GFC
64. por ERROS thew E E SE Rh DE A a A MO BAY tot Eee S 5 2 3 4 Chat 4 Fase Cobertura dos Crit rios Estruturais por Tecra hohe eRe DA de DE AD aoe WIAA Ee el ee RR a 5 2 3 5 Chat 5 Fase Compara o dos Resultados 5 2 3 6 Conclus o da Atividade de Teste Mobile Chat 6 Conclus o Refer ncias Ap ndice A Boz Requisitos Funcionais Ap ndice B Boz Conjunto de Casos de Teste Tyunc Ap ndice C Boz Conjunto de Casos de Teste Testr Ap ndice D Mobile Chat Requisitos Funcionais 116 118 121 124 128 139 Sum rio xiii Ap ndice E Mobile Chat Conjunto de Casos de Teste Tpunc 144 Ap ndice F Mobile Chat Conjunto de Casos de Teste Testr 148 Ap ndice G Mobile Chat Cobertura dos Crit rios Estruturais por Testr 150 Ap ndice H Mobile Chat Conjunto de Casos de Teste T 153 UNC Ap ndice I Mobile Chat Cobertura dos Crit rios Estruturais por Tyunc e T 155 fune 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 3 1 3 2 3 3 3 4 4 1 4 2 4 3 4 4 Lista de Figuras Sistemas Distribu dos Tradicionais FUGGETTA PICCO VIGNA 1998 Sistemas de C digo M vel FUGGETTA PICCO VIGNA 1998 Estrutura Interna de uma Unidade de Execu o FUGGETTA PICCO VIGNA Mecanismos de Gerencimanto de Espa o de Dados FUGGETTA PICCO VIGNA TIS a a Eas 0s oy aid BG SR DES ee a Oe A a eae een 4 Hierarquia do Pacote mucode alem E
65. que se utilizam do paradigma de agentes m veis A dificuldade deste projeto estava em aplicar e avaliar o teste estrutural em c digo m vel devido pr pria caracter stica do c digo O c digo m vel pode trafegar em um ambiente distribu do tornando dif cil saber quais partes do c digo foram executadas bem como a ordem de execu o das mesmas Portanto este projeto possibilitou a verifica o do comportamento do c digo enquanto se movimentava pelos n s de uma rede capturando todas as informa es de seu estado em cada n durante o trajeto percorrido Com base neste cen rio de mobilidade de c digo o teste de c digo m vel requer o suporte de uma ferramenta que seja robusta o suficiente para conseguir capturar todo o processo de execu o do c digo m vel ao longo do percurso por onde ele se locomove Assim este trabalho al m de averiguar a possibilidade da utiliza o do teste estrutural em c digos m veis contribuiu com a adapta o da Ferramenta JaBUTi DELAMARO VIN CENZI MALDONADO 2004 auxiliando na extens o de suas funcionalidades objetivando suportar o teste de c digo m vel Estudos de casos foram escritos e apresentados com o intuito de estudar a aplica o de teste estrutural em c digo m vel e consequentemente permitir a avalia o da robustez da extens o da Ferramenta JaBUTi contribuindo com a inclus o de melhorias na mesma 1 2 Organiza o do Texto 3 1 2 Organiza o do Texto A
66. refor ando o teste estrutural Nas subse es a seguir ser o apresentadas a forma de execu o e a descri o da implementa o do Mobile Chat Em seguida ser descrita a atividade de teste realizada no mesmo Vale ressaltar que devido ao servidor ser m vel esta atividade de teste passa a ser muito mais interessante do que no exemplo anterior 5 2 1 Funcionalidades do Mobile Chat O servidor principal do Mobile Chat deve ser o primeiro elemento a ser iniciado S existe uma nica inst ncia deste servidor na rede executando continuamente no host em que foi iniciado tal servidor denominado de MainServer Quando solicitada a migra o do servidor o MainServer fica desativado uma inst ncia de um servidor itinerante criada sendo denominada de ChatServer esta inst ncia migrada e passa a ser conhecida como o servidor ativo Por m o servidor principal continua rodando para que um novo usu rio se conecte para evitar falha na conex o do cliente devido ao desconhecimento do cliente sobre o endere o IP do servidor itenerante O servidor principal se tornar ativo novamente somente quando o servidor itenerante retornar para o host de origem Para conseguir realizar a migra o do servidor cada cliente e o pr prio servidor precisam ter uma tabela de roteamento contendo o custo associado entre todos os n s que estar o aptos a hospedar um cliente ou um servidor A tabela dever ter o seguinte formato en
67. s expandidos s o rotulados com o r tulo do n que causou sua invoca o seguido pelo r tulo do n de destino para o qual ir Para exemplificar a cria o do GFC apresentado um exemplo de VINCENZI et al 2003 no qual tem se um simples programa Java com um m todo que tem por fun o calcular a m dia de um conjunto de n meros inteiros Tal exemplo ilustrado pela Figura 4 5 que consta o c digo fonte Java o seu bytecode e a tabela de exce o que mostra o manipulador de exce o v lido de acordo com o correspondente bytecode equivalente Na Figura 4 5 as chaves esquerda das instru es de bytecode indicam o conjunto de instru es que comp em cada n A Figura 4 6a apresenta o GFC para o m todo average da classe Vet conforme o bytecode apresentado na Figura 4 5 Analisando o exemplo de VINCENZI et al 2003 ilustrado pelas Figuras 4 5 e 4 6 verifica se que o terceiro n possui r tulo 15 devido sua primeira instru o de bytecode ser 15 aload 0 Os n s 12 57 e 71 foram eliminados do GFC devido possu rem uma nica instru o goto A JaBUTi VINCENZI et al 2003 apresenta tr s tipos de ilustra es de n s conforme Figura 4 6 e Linha em negrito representa n s terminais no exemplo temos os n s 79 e 97 4 2 Gerando Grafos com a JaBUTi 01 public class Vet 02 03 04 05 06 oF 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 int v floa
68. ser ligadas a outro CE enquanto recursos fixos s o associados permanentemente ao CE Conforme apresentado na Tabela 2 1 os recursos podem ser ligados a uma unidade de execu o por meio de tr s formas e Liga o por identificador a forma mais forte de liga o quando uma unidade de execu o deseja ser ligada a um recurso que n o pode ser substitu do por outro 2 1 Mecanismos de Suporte ao C digo M vel 11 equivalente e Liga o por valor quando uma unidade de execu o est interessada nos conte dos de um recurso e quer ser capaz de acess los localmente o recurso mi grado deve ter o mesmo tipo e valor daquele presente no ambiente computacional de origem e Liga o por tipo a forma mais fraca de liga o por tipo neste caso a EU requer que o recurso seja de um determinado tipo nao importando qual o seu valor ou identidade Esta liga o usada para ligar recursos que estejam dispon veis sobre o ambiente computacional como variaveis de sistemas bibliotecas ou dispositivos de rede Tabela 2 1 Mecanismos de Gerenciamento de Espa o de Dados FUGGETTA PICCO VIGNA 1998 Transfer ncia Li Transfer ncia Fixa Transfer ncia N o Fixa Por Identificador Por Movimento Re Refer ncia de Rede Refer ncia de Rede fer ncia de Rede Por Valor Por C pia Por Movi Por C pia Re Refer ncia de Rede mento Refer ncia de fer ncia de an Rede Por Tipo Re liga o
69. sincroniza o e o momento em que o c digo ser executado no local de destino Uma EU pode tanto buscar o c digo para ser dinamicamente ligado e ou execu tado ou despachar o c digo para um outro CE A Figura 2 4 mostra que o c digo pode ser migrado tanto como c digo aut nomo quanto como fragmento de c digo C digo aut nomo completo e usado para instanciar uma nova EU no lugar de destino Re ciprocamente um fragmento de c digo deve ser ligado no contexto do c digo j em an damento e finalmente executado Estes mecanismos podem ser s ncronos ou ass ncronos Em mecanismos ass ncronos a execu o do c digo transferido pode acontecer de modo imediato o c digo executado assim que recebido ou retardado o c digo executado somente quando uma determinada condi o satisfeita Para conseguir realizar a migra o de uma EU para um novo CE deve haver um gerenciamento do espa o de dados para tanto devem ser avaliados os recursos envolvidos na migra o Fuggeta em FUGGETTA PICCO VIGNA 1998 modela os recursos da seguinte forma Recurso I V T onde I um identificador nico V o valor do recurso e T seu tipo que determina a estrutura da informa o contida no recurso bem como sua interface O tipo do recurso determina se transfer vel ou n o transfer vel ou seja se ele pode ser migrado al m da rede ou n o Recurso transfer vel pode ser livre ou fixo Recursos livres podem
70. sourceforge net PICCO G P et al Analyzing mobile code languages Mobile Object Systems Towards the Programmable Internet Mobile Object Systems Towards the Programmable Internet 1997 PRESSMAN R S Engenharia de Software 3 ed S o Paulo SP MAKRON Books 1995 RAPPS S WEYUKER E J Selecting software test data using data flow information IEEE Transactions on Software Engineering IEEE Press v 11 n 4 p 8367 375 April 1985 SILVA J Proteste Ambiente de Valida o Autom tica de Qualidade de Software atrav s de T cnicas de Teste e de M tricas de Complexidade Porto Alegre RS Master Thesis CPGCC UFRS 1995 Refer ncias 120 SPOTO E S PERES L M BUENO P M S Um Estudo de Crit rios de Teste de Software Baseados em Fluxo de Dados Campinas SP UNICAMP 1995 TANENBAUM A S STEEN M Distributed Systems Principles and Paradigms Upper Saddle River New Jersey Prentice Hall 2002 VINCENZI A M R et al JaBUTi Java Bytecode Understanding and Testing Sao Carlos SP Universidade de Sao Paulo USP 2003 ZHAO J Analyzing control flow in java bytecode In 16th Conference of Japan Society for Software Science and Technology p 313 316 September 1999 ZHAO J Dependence analysis of java bytecode In 24th IEEE annual International Computer Software and Applications Conference COMPSAC 2000 IEEE Computer Society Press Taipei Taiwan p 486 491 October 2000 121 AP N
71. spot int cont int YRound VaddChoice VaddRoll setSpot VaetRollo VgetChoice getSpot ostring grounds Vector AbstractBozoClient from bozozerver esignat bytel dump byte gident Sting VabstractBazo Client VabstractBozo Client W lt lt fnal gt gt setident VgetBytes etPrivatel efPublid lt final gt gt sign lt lt final gt gt verify BozoClient2 o lt lt final gt gt NOT_MIGRATED int 0 4 final gt MIGRATED int 1 4 lt lt final gt RETURNED int 2 o lt final gt gt labels String state int amp lt lt transient gt bg IBozoGame score int greturnServer String odestServer String gor GameRec null gremoteException Exception ozoClien BozoClient2 uni VprepareandGo playGame egFullOrRep juaseFull stPlace estChoice isEnough isplay Smain 68 ozoGame from bomserve o lt final gt gt ONES int 0 o lt lt final gt gt TWOS int 1 4 sfinal gt gt THREES int 2 o final gt gt FOURS int 3 o lt lt final gt gt FIVES int 4 ossfinal gt SIXES int 5 sfinal gt gt THREE_OF_KIND int 6 lt lt final gt gt FOUR OF KIND int 7 lt lt final gt gt FULL HAND int 8 o lt sfinal gt gt SMALL_SEQ int 9 lt final gt gt BIG_SEQ int 10 gssfinal gt FIVE_OF_KIND int 11 4 lt lt final gt CHANCE int 12 Srono setScore getSco
72. superior requer pouco espa o execu o ex tremamente leve possui projeto aberto modularidade flexibilidade composabilidade e suporte a qualquer estrat gia de realoca o de classes PICCO 2001b A distribui o da CODE composta por tr s pacotes conforme PICCO 2001b e mucode cont m o n cleo do sistema prov um conjunto m nimo de primitivas para construir qualquer opera o de mobilidade de alto n vel e mucode util cont m utilit rios para iniciar um servidor CODE e mecanismos que complementam a capacidade de reflex o da linguagem Java e mucode abstractions cont m abstra es de alto n vel incluindo as primitivas para reloca o de c digo e estado de v rias maneiras bem como uma implementa o de um agente m vel O pacote mucode o n cleo do uCODE sendo que abstra es de alto n vel podem ser constru das com base nas seguintes classes e Group a nica unidade de mobilidade Oferece um container ao programador que pode ser preenchido arbitrariamente com classes e objetos incluindo objetos Thread Classes e objetos n o necessitam pertencer mesma unidade de execu o e MuServer o destino de um Group a abstra o do suporte de run time do uCODE Prov o mecanismo b sico para relocar c digo e estado e GroupHandler o respons vel pela extra o do mix de classes e objetos em um grupo e pelo uso coerente destes possibilitando gerar novas
73. system32 cmd exe NMobileChat gt java gldente Client Jose 127 0 0 1 2002 127 6 6 1 1968 c txt 4 ickname Jos ocal info 127 B 8 1 2082 emote info 127 0 0 1 1968 ost or c txt 22 0 attains 39 a 3 MobileChat Jose 127 0 0 1 2002 ID 2 FR eer ongneren Zee 15 21 lt Ana gt Oi meninos ctive server is now 127 0 0 1 18888 15 21 Joao gt Oi Ana tudo bom erver has migrated to 127 6 6 1 18888 15 21 Jose gt Oi gente ID after connecting 2 15 21 Server will migrate to 127 0 0 1 2002 15 21 Active Server 127 0 0 1 59405 erver Migrating to 127 8 0 1 2002 15 21 Main Server 127 0 0 1 1968 ooting Thread Thread 26 5 main 9949215 15 21 YOU ARE HOSTING THE SERVER ucode MuServer activated on port 59495 15 21 ctive server is now 127 8 8 urrent server address 127 0 0 1 Baa lew server address 127 6 6 1 1234 estination node address 12 Bt 2000 erver is migrating to is 6 666 erver Migrating to E 2 ctive server is now 139 EM 8 1 123 pantis Thread MuServer 5 mainl 23949215 El Figura 5 17 Simula o de chat shell de Figura 5 18 Simula o de chat execu o do usu rio Jos tela do cliente para o usu rio Jos Como foi apresentado atrav s da exemplifica o de uma sess o de chat pode se verificar que o estudo de caso Mobile Chat bastante simples e interessante de ser utilizado Sua tela clara e objetiva ao apresentar as informa es necess rias para uma
74. usadas na an lise de cobertura e outras opera es Toda vez 70 que o m todo Prober prober invocado salvo no arquivo de trace as seguintes informa es conforme VINCENZI et al 2003 class_id um n mero inteiro que identifica unicamente uma dada classe C method id um n mero inteiro que identifica unicamente um s m todo m de C block id um n mero inteiro que corresponde ao deslocamento da primeira instru o de bytecode de um bloco de GFC b de Cm Os n s expandidos s o identificados depois de p s processar o arquivo de trace object id uma string que identifica o objeto sendo usado para executar C m Um valor nulo utilizado para representar execu o de um m todo est tico thread id um inteiro que identifica a thread corrente em uso para executar Cm Vincenzi et al em VINCENZI et al 2003 implementa um carregador de classe instrumentador que estende o carregador de classe padr o assim durante a execu o os arquivos de classe a serem testados s o identificados instrumentados e executados Os arquivos que n o requerem instrumenta o s o entregues ao carregador de classe padr o para serem executados Depois de cada execu o as informa es de trace s o acrescenta das no fim do arquivo de trace caracterizando um novo caso de teste O arquivo de trace lido pela JaBUTi e as informa es de cobertura s o computadas para cada m todo 190 ar
75. usu rio B ent o se conecta O n mais vantajoso eleito o servidor principal ent o o servidor migra de volta para a posicao inicial As tabelas de custo do usu rio A e B s o respectivamente 127 0 0 1 2001 9 127 0 0 1 2002 9 127 0 0 1 1968 1 127 0 0 1 2000 9 127 0 0 1 2002 9 127 0 0 1 1968 1 O n mais vantajoso o servidor principal 127 0 0 1 1968 Ap ndice H Mobile Chat Conjunto de Casos de Teste Paio CASO DE TESTE e O usu rio A se conecta e requisita o servidor O usu rio B se conecta e requisita o servidor que migra de A para B CASO DE TESTE f O usu rio B se conecta e requisita o servidor O usu rio A se conecta e o servidor migra de B para A pois A o n mais vantajoso As tabelas de custo dos usu rios A e B s o respectivamente 127 0 0 1 2001 1 127 0 0 1 2002 2 127 0 0 1 1968 3 127 0 0 1 2000 3 127 0 0 1 2001 3 127 0 0 1 1968 3 CASO DE TESTE g O usu rio A se conecta troca de nick e sai CASO DE TESTE h Tr s clientes A Be C se conectam e se desconectam nessa mesma ordem 154 155 AP NDICE I Mobile Chat Cobertura dos Crit rios Estruturais por Tunc e T UNLC Aqui sao apresentadas as tabelas com a cobertura dos crit rios estruturais Todos N s Todas Arestas e Todos Usos pelo conjunto de casos de teste Tpunc de cada agente m vel contido no pacote agents Tais tabelas foram geradas com base nos relat rios de cobertura gerados pela F
76. x def i P inclui um caminho livre de defini o com respeito a x de para todos elementos de dpu z i 3 2 Crit rios Baseados em Fluxo de Dados 30 e P satisfaz o crit rio Todos c usos Alguns p usos se para todo n i e todo x def i P inclui algum caminho livre de defini o com respeito a x de para todo n em deu x i se deu x y vazio ent o P deve incluir um caminho livre de defini o com respeito a x de para alguma aresta contida em dpu x 1 Este crit rio requer que todo c uso de uma vari vel x definida em um n deve ser inclu do em algum caminho de P e P satisfaz o crit rio Todos p usos Alguns c usos se para todo n i e todo x def i P inclui um caminho livre de defini o com respeito a x de i para todos elementos de dpu z i se dpu z y vazio ent o P deve incluir um caminho livre de defini o com respeito a x de para algum n contido em dcu z i Este crit rio requer toda defini o que constantemente usada para ser usada em algum caminho de P e P satisfaz o crit rio Todos Usos se para todo n i e para todo x def i P inclui um caminho livre de defini o com respeito a x do n i at cada um dos elementos de deu x i e at cada elemento de dpu x i e P satisfaz o crit rio Todos du Caminhos se para todo n 7 e para toda vari vel x def i P inclui todos os du caminhos com respeito a x Exemplificando baseado na Figura 3 4 o grafo de def
77. 0 X X Roll 0 2 5 6 2 3 Placed on 3 of a kind Kept 1 X X X Roll 1 2 2 6 6 6 Kept 0 X X Roll 2 4 6 6 6 Kept 1 7 Roll 1 2 3 3 2 set Round 9 Kept 2 foe Placed on Full hand Kept 1 X X X Roll 0 3 6 6 1 4 Placed on Large seq Roll 2 2 2 3 2 Kept 0 X X CASO DE TESTE 03 Roll 1 5 4 5 4 4 Kept 1 X Kept 1 X X X Round 6 Roll 2 4 5 3 6 6 Roll 2 3 4 2 4 4 Roll 0 2 4 5 1 3 Kept 2 12 Kept 2 ro Se Kept 0 X Placed on Sixes 215 Placed on Fours Roll 1 1 4 5 5 4 12 Kept 1 X X Round 10 3 of a kind 20 Round 3 Roll 2 2 5 5 5 1 Roll 0 6 6 3 5 4 4 of a kind 19 Roll 0 4 5 4 4 5 Kept 2 T Kept 0 Full hand 25 Kept 0 X X X Placed on Fives Roll 1 6 3 6 2 1 Small seq 30 Roll 1 4 4 4 4 1 Kept 1 X Large seq 40 Kept 1 X X X X et Round 7 Roll 2 1 6 4 1 1 5 of a kind 0 Roll 2 4 4 4 4 3 Roll 0 6 4 6 2 5 Kept 2 7 7 7 Chance 22 Kept 2 Kept 0 X X Placed on Ones Bonus 0 Placed on 4 of a kind Roll 1 6 1 6 2 5 Kept 1 X X Round 11 eee Round 4 Roll 2 6 6 3 2 Roll 0 3 3 6 3 3 Roll 0 5 3 6 1 3 Kept 2 Kept 0 X sete Round O Kept 0 X X Placed on Chance E Roll amp 6 3 6 6 3 Roll 0 3 4 3 4 3 Roll 1 2 3 5 6 3 Kept 1 X X X Kept 0 Kept 1 X X Round 8 Roll 2 6 1 6 6 1 Placed on Full hand Roll 2 4 3 2 1 3 Roll 0
78. 0 Kept 1 X X X X Kept 0 X X Placed on Ones Bonus 0 Roll 2 2 5 2 4 4 Roll 1 5 5 1 5 1 Kept 2 7 7 7 Kept 1 X X X Round 11 Placed on Twos Roll 2 5 5 2 5 6 Roll 0 3 5 5 4 3 Kept 2 Kept 0 X X seek Round O et Round 4 Placed on Fives Roll 1 3 4 1 1 3 Roll 0 4 5 4 1 5 Roll 0 2 3 3 5 3 Kept 1 X X Kept 0 X X X X Kept 0 X X X Round 8 Roll 2 3 3 1 3 Roll 1 4 5 4 1 5 Roll 1 4 3 3 4 3 Roll 0 2 1 1 6 3 Kept 2 Ed Kept 1 X X X x Kept 1 r Kept 0 X X Placed on Threes Roll 2 4 5 4 2 5 Placed on Full hand Roll 1 5 1 5 6 Kept 2 Kept 1 X X Round 12 Placed on Chance et Round 5 Roll 2 5 5 5 Roll 0 5 4 2 4 5 Roll amp 0 5 3 2 4 5 Kept 2 Kept 0 seek Round 1 Kept 0 X X X Placed on 4 of a kind Roll 1 2 4 2 2 3 Roll 0 3 2 4 5 1 Roll 1 6 3 2 4 4 Kept 1 Kept 0 Kept 1 X X set Round 9 Roll 2 4 1 6 5 4 Placed on Large seq Roll 2 2 3 5 4 4 Roll 0 3 6 3 6 1 Kept 2 Kept 2 7 Kept 0 X X Placed on 5 of a kind Round 2 Placed on Small seq Roll 1 4 6 2 6 3 CASO DE TESTE 38 Kept 1 X X X X Kept 1 X X X Round 2 Roll amp 2 6 6 6 6 4 Roll amp 2 5 1 5 6 Roll 0 3 1 1 3 6 Kept 2 7 7 7 7 Kept 2 Kept 0 X X Placed on 3 of a kind Placed on Fives Roll 1 3 3 2 3 3 Kept 1 X X X X x k Round 6 Round
79. 10 3 of a kind 28 Roll 2 3 3 2 3 3 Roll 0 1 4 1 4 3 Roll 0 3 2 2 3 6 4 of a kind 14 Kept 2 i dames Kept 0 X X Kept 0 Full hand 25 Placed on 4 of a kind Roll 1 5 4 1 4 2 Roll 1 2 4 1 6 4 Small seq 0 Kept 1 X X Kept 1 X Large seq 40 Round 3 Roll 2 1 4 4 4 2 Roll 2 4 3 1 4 1 5 of a kind 0 Roll 0 3 1 Kept 2 Li Kept 2 Kept 0 Placed on Fours Placed on Ones Roll 1 6 1 Kept 1 et Round 7 Round 11 Roll 2 1 4 Roll 0 3 1 2 6 4 Roll 0 1 5 4 2 6 Kept 2 Kept 0 X X Kept 0 X Round O Placed on Twos i Roll 1 3 1 2 4 Roll 1 1 1 5 2 6 Roll 0 1 2 5 1 6 Kept 1 X xX X Kept 1 X Kept 0 X X Round 4 Roll 2 3 2 4 Roll 2 5 1 1 6 Roll 1 1 51 1 5 Roll 0 6 3 1 3 6 Kept 2 TT Kept 2 Kept 1 7 Kept 0 X X Placed on Chance Placed on 5 of a kind Placed on Full hand Roll 1 6 1 6 2 6 Kept 1 X X X Round 8 Round 12 eee Round 1 Roll 2 6 6 5 6 Roll 0 1 3 2 5 4 Roll 0 2 3 6 4 1 Roll 0 3 6 2 1 3 Kept 2 ig Kept 0 7 Kept 0 X X x Kept 0 X x Placed on Sixes Placed on Large seq Roll 1 2 3 5 4 1 Roll 1 3 6 3 6 3 Kept 1 X X X Kept 1 X X X Round 5 set Round 9 Roll 2 2 3 3 4 6 Roll 2 3 3 6 3 Roll 0 6 2 2 6 3 Roll 0 1 2 5 3 5 Kept 2 E Kept 2 T Kept 0 X X Kept 0 X X Placed on Small seq Placed on Threes
80. 12 Roll 1 2 4 1 4 3 ek Round 6 Kept 2 Fives 20 Kept 1 X X X Roll 0 4 3 5 6 6 Placed on Ones Sixes 18 Roll 2 2 4 6 3 3 Kept 0 X X 3 of a kind 23 Kept 2 Roll 1 3 4 2 6 6 Round 10 4 of a kind 0 Placed on Chance Kept 1 X X Roll 0 6 3 3 3 5 Full hand Roll 2 2 5 6 6 6 Kept 0 X X X Small seq 30 Round 3 Kept 2 Roll 1 3 3 3 3 5 Large seq 0 Roll 0 1 2 4 4 Placed on Sixes Kept 1 X X X X 5 of a kind 50 Kept 0 X X X Roll 2 3 3 3 3 3 Roll 1 3 2 4 4 set Round 7 Kept 2 7 Kept 1 X X Roll 0 3 5 5 4 4 Placed on 5 of a kind Roll 2 3 1 4 3 4 Kept 0 X X Kept 2 7 T Roll 1 4 5 5 2 2 et Round 1 Placed on Threes Kept 1 X X Roll 0 3 5 2 4 5 sete Round O Roll amp 2 5 5 5 5 6 Kept 0 X X Roll 0 4 6 4 4 Round 4 Kept 2 CA Roll 1 1 5 3 6 5 Kept 0 X X X Roll 0 3 6 1 2 3 Placed on Fives Kept 1 X X Roll 1 4 2 1 4 4 Kept 0 X X Roll 2 5 5 1 2 5 Kept 1 X X X Roll 1 3 5 4 2 Round 8 Kept 2 ome Roll 2 4 4 4 Kept 1 X X X Roll 0 5 3 2 5 2 Placed on 4 of a kind Kept 2 T A Roll 2 3 3 4 2 5 Kept 0 X x Placed on Fours Kept 2 we Roll 1 5 5 1 5 2 Round 12 Placed on Small seq Kept 1 X X X Roll 0 1 2 6 3 4 seis Round 1 Roll 2 5 5 2 5 6 Kept 0 X Roll 0 2 2 4 6 5 Round 5 Kept 2 7 Roll 1 1 6 6 1 6 Kept
81. 2 3 2 4 Kept 1 X Large seq 40 Kept 0 X X Round 7 Roll 2 5 6 5 4 4 5 of a kind 0 Roll 1 1 2 1 2 Roll 0 5 6 3 6 3 Kept 2 Chance 20 Kept 1 7 7 7 Kept 0 X X Placed on 3 of a kind Bonus 0 Placed on Full hand Roll 1 2 6 4 6 3 Kept 1 X x Round 11 et Round 4 Roll 2 2 6 4 6 3 Roll 0 1 1 1 4 3 Roll 0 5 6 2 2 2 Kept 2 7 Kept 0 sete Round O Kept 0 X X X Placed on 4 of a kind Roll 1 1 1 4 2 1 Roll 0 4 6 6 3 5 Roll 1 2222 Kept 1 Kept 0 X X Kept 1 X X XX Round 8 Roll 2 3 3 6 1 5 Roll 1 4 6 5 3 5 Roll 2 3 2 2 2 2 Roll 0 3 2 4 2 5 Kept 2 7 Kept 1 X X Kept 2 7 Kept 0 X X X Placed on 5 of a kind Roll 2 4 4 3 3 Placed on Twos Roll 1 3 2 4 2 6 Kept 2 TF Kept 1 Round 12 Placed on Chance Round 5 Roll 2 4 1 2 2 1 Roll 0 4 4 5 3 6 Roll 0 3 6 6 6 5 Kept 2 7 7 Kept 0 X x Round 1 Kept 0 X X X Placed on Ones Roll 1 4 3 3 3 1 Roll 0 3 3 6 2 5 Roll 1 4 6 6 6 1 Kept 1 Kept 0 X X Kept 1 X X X Round 9 Roll 427 5 1 2 6 4 Roll 1 3 3 21 Roll 2 1 6 6 6 5 Roll 0 5 3 6 2 2 Kept 2 Kept 1 X X Kept 2 Kept 0 X Placed on Small seq Roll 2 3 3 3 3 6 Placed on Sixes Roll 1 5 5 6 1 1 Placed on Twos Roll 1 1 4 4 3 2 Kept 1 X X X Round 1 Roll 2 3 4 5 3 2 Roll 0 3 5 3 4 4 Kept 2 TF Kept 0
82. 2 6 Roll 1 1 5 1 3 1 Roll 0 4 4 2 1 6 Kept 2 E Kept 1 X X X Kept 0 X e Round O Placed on Chance Roll 2 1 1 1 2 1 Roll 1 6 5 2 2 4 Roll 0 6 1 2 4 3 Kept 2 7 Kept 1 X X Kept 0 X X X Round 4 Placed on 4 of a kind Roll 2 3 6 2 2 1 Roll 1 1 4 2 4 3 Roll 0 3 6 4 6 3 Kept 2 AR Cra Kept amp 1 X X X Kept 0 X X x Round 8 Placed on Twos Roll 2 2 4 2 1 3 Roll 1 6 6 4 6 6 Roll 0 2 4 6 3 1 Kept 2 7 Kept 1 X X X X Kept 0 X Round 12 Placed on Small seq Roll 2 6 6 6 6 6 Roll amp 1 5 4 6 5 5 Roll 0 4 3 5 3 1 Kept 2 7 7 7 Kept 1 X xX X Kept 0 Round 1 Placed on 5 of a kind Roll amp 2 5 2 6 5 5 Roll 1 1 6 5 2 4 Roll 0 1 6 2 4 6 Kept 2 Tor Kept 1 X Kept 0 X X Round 5 Placed on Fives Roll 2 4 6 2 1 1 Roll 1 3 6 5 3 6 Roll 0 1 4 6 4 6 Kopt 2 T T P N F Kept 1 X X X X Kept 0 X X Round 9 Placed on Large seq Roll 2 3 6 3 3 6 Roll 1 3 6 5 6 Roll 0 3 4 2 3 2 Kept 2 fo v Kept 1 X X Kept 0 X X Placed on Full hand Roll 2 2 6 3 6 Roll 1 3 5 5 3 4 CASO DE TESTE 02 Ap ndice C Bozo Conjunto de Casos de Teste Testr 129 Ones 1 xxee Round 2 Kept 2 7 7 7 7 Roll 1 6 6 6 3 1 Twos 8 Roll 0 3 4 6 4 1 Placed on Twos Kept 1 X X X Threes 6 Kept 0 x Roll 2 6 6 6 1 3 Fours
83. 4 6 4 5 Kept 1 X X Roll 2 3 2 2 2 1 CASO DE TESTE 31 Ones 4 Round 2 Roll 2 6 1 6 6 1 Twos 6 Roll 0 3 3 3 1 3 et Round 6 Kept 2 7 T 7 Threes 9 Kept 0 X X X X Roll 0 2 1 3 4 5 Placed on Chance Fours 8 Roll 1 3 3 3 3 3 Kept 0 X X X Fives 15 Kept 1 Roll 1 2 2 3 4 5 Round 10 Sixes 24 Placed on 5 of a kind Kept 1 X X X Roll 0 1 2 5 1 4 3 of a kind Roll 2 2 3 3 4 3 Kept 0 X X 4 of a kind Round 3 Kept 2 7 Roll 1 1 4 1 1 1 Full hand 25 Roll 0 1 2 2 6 2 Placed on Threes Kept 1 X X X X Small seq 30 Kept 0 X X X Roll 2 1 4 1 1 1 Large seq 40 Roll 1 4 2 2 1 2 et Round 7 Kept 2 Tor 5 of a kind 50 Kept 1 X X X Roll 0 6 4 6 2 5 Placed on Ones Chance 20 Roll 2 6 2 2 4 2 Kept 0 X Bonus 35 Kept 2 7 7 Roll 1 3 3 3 Round 11 Total 299 Placed on 3 of a kind Kept 1 x X X Roll 0 5 6 4 4 3 Roll 2 5 3 3 3 3 Kept 0 X X Round 4 Kept 2 TF Roll 1 5 6 4 6 3 Round O Roll 0 3 6 1 6 4 Placed on 4 of a kind Kept 1 X X Roll 0 4 3 2 6 2 Kept 0 X X Roll 2 1 1 4 2 3 Kept 0 X X Roll 1 3 6 2 6 6 Round 8 Kept 2 F 7 2 7 7 Roll 1 5 2 2 4 2 Kept 1 X X X Roll 0 6 2 4 2 2 Placed on Small seq Kept 1 X X X Roll 2 6 6 6 6 6 Kept 0 X Roll 2 1 2 2 4 2 Kept 2 K Roll 1 6 6 6 4 6 Roun
84. Aspectos de Implementa o Jogo Boz 0 66 5 1 3 Atividade de Teste Jogo Boz 2 2 2 2 ee ee 68 5 1 3 1 Boz 1 Fase Cobertura dos Requisitos Funcionais por Fama ty Sy t By 2 Ses a ed OB rand a yy Beat DA 70 9 1 3 2 Boz 2 Fase Cobertura dos Crit rios Estruturais por Tip Ea BES C RRR WO ROS e wd 75 5 1 3 3 Boz 3 Fase Cobertura dos Requisitos Funcionais por Tep he BUS E oe shook a Bah RB Se heh Ao eR E A 76 5 1 3 4 Boz 4 Fase Cobertura dos Crit rios Estruturais por E nao cor hae Goa a tas oe ana da De he A CT RA 79 9 1 3 5 Bozo 5 Fase Compara o dos Resultados 80 9 1 3 6 Conclus o da Atividade de Teste Jogo Boz 81 5 2 MO be Ca syss ah do tol LB Abe Sd q Ah Ae na ea So ad Seed Ye ee AD rk 82 5 2 1 Funcionalidades do Mobile Chat 002 0 0 2000 83 Sum rio 9 2 2 Aspectos de Implementa o Mobile Chat 5 2 2 1 Conex o de Clientes ums a Boe EE RE EOE ole 9 2 2 2 Comunica o entre Usu rios 5 2 2 3 Migra o do CENTO ste cr ep Se E E Se SE ee AE R 5 2 3 Atividade de Teste Mobile Chat 02 000 5 2 3 1 Chat 1 Fase Cobertura dos Requisitos Funcionais por Timea ean ae nda te lea einen Ades eed RR et 5 2 3 2 Chat 2 Fase Cobertura dos Crit rios Estruturais por DA A a REA GEE ANSA QUO BUS See RO OE ns Re 5 2 3 3 Chat 3 Fase Cobertura dos Requisitos Funcionais
85. DICE A Boz Requisitos Funcionais Este ap ndice apresenta a especifica o dos requisitos funcionais estrat gias do jogo Boz conforme segue 1 Se sa rem cinco dados iguais e o placar FIVE_OF_KIND estiver livre marca o e finaliza a jogada 2 Se sa rem cinco dados iguais o placar FIVE OF KIND estiver ocupado e o placar BIG SEQ estiver livre marca o e finaliza a jogada 3 Se sa rem cinco dados iguais os placares FIVE OF KIND e BIG SEQ estiverem ocupados o placar SMALL SEQ estiver livre e for a ltima rolada marca o placar SMALL SEQ e finaliza a jogada 4 Se sa rem cinco dados iguais os placares FIVE OF KIND BIG SEQ e SMALL SEQ estiverem ocupados e for a ltima jogada e o placar FULL HAND estiver livre marca o e finaliza a jogada 5 Se sa rem cinco dados iguais os placares FIVE OF KIND e BIG SEQ estiverem ocupados n o for a ltima jogada e o placar FULL HAND estiver livre marca o e finaliza a jogada 6 Se sair uma sequ ncia grande e o placar BIG SEQ estiver livre marca o e finaliza a jogada 7 Se for a terceira rolada e sair uma segu ncia grande se o placar BIG SEQ estiver ocupado e o placar SMALL SEQ estiver livre marca o SMALL SEQ e finaliza a jogada 8 Se for a ltima rolada sair uma sequ ncia pequena e o placar SMALL SEQ estiver livre marca o e finaliza a jogada 9 Se sa rem dois dados de um valor e tr s dados de outro valor e o placar FULL HAND estiver livre marca o e finaliza
86. Dr M rcio Eduardo Delamaro 1 EXAMINA DOR amaa Se And A AE SAS JA qa UA 2 EXAMINADOR _ Maria SR jus afff ad do ie em ee de 2005 Ao meu querido esposo Marcos Rog rio Okuyama Turci com muito amor por sempre me incentivar nos estudos e acima de tudo pelo companheirismo carinho amor e compreens o durante o desenvolvimento deste trabalho AGRADECIMENTOS Primeiramente agrade o Deus pelo amparo prote o e nimo para a conclus o deste trabalho Com profundo amor agrade o aos meus pais que sempre me incentivaram aos estudos de modo a me permitirem galgar mais um degrau E fraternalmente agrade o aos meus sogros pelo carinho paci ncia e compreenss o durante o desenvolvimento deste Em especial agrade o a meu querido esposo por estar sempre ao meu lado me protegendo e me aconselhando em momentos t o decisivos sustentando a minha f Agrade o com muito carinho a todos os meus familiares em particular a minha irm Edimari e a minha cunhada Ellen pelo incentivo e ajuda Tamb m agrade o a minhas queridas amigas Elzi e Nildeth que me apoiaram neste momento t o especial e importante para mim Com ressalvas quero externar meu profundo desvelo pelo meu querido professor e orientador M rcio Eduardo Delamaro por me compreender em momentos t o dif ceis da minha vida e por me amparar no t rmino deste trabalho muito obrigada Tamb m deixo aqui registrado minha estima e meu agradecimento pelo a
87. ER Informa um comando inv lido na caixa de entrada do cliente CASO DE TESTE 18 Executa o servidor sem par metros i Executa um cliente com par metros corretos Executa outro cliente com par metros corretos O cliente que aloca o servidor invoca o comando stats CASO DE TESTE 19 Executa o servidor sem par metros I Executa um cliente com par metros corretos Executa outro cliente com par metros corretos O cliente que n o aloca o servidor invoca o comando restore CASO DE TESTE 20 Executa o servidor sem par metros Executa um cliente com par metros corretos Executa outro cliente com par metros corretos Invoca o comando getserver informando uma porta inferior 1024 Invoca o comando getserver informando mais de um par metro Invoca o comando getserver corretamente por m o cliente j est alocando o servidor CASO DE TESTE 21 Executa um cliente com par metros corretos CASO DE TESTE 22 Executa o servidor sem par metros 146 Ap ndice E Mobile Chat Conjunto de Casos de Teste Tpune 147 Executa um cliente com par metros corretos Executa outro cliente com par metros corretos Desconecta o servidor ativo Desconecta o servidor principal Envia uma mensagem Invoca o comando getserver corretamente 148 AP NDICE F Mobile Chat Conjunto de Casos de Teste Testr Neste ap ndice s o apresentados os casos de teste g
88. FUNDA O DE ENSINO EUR PIDES SOARES DA ROCHA CENTRO UNIVERSIT RIO EUR PIDES DE MAR LIA UNIVEM PROGRAMA DE MESTRADO EM CI NCIA DA COMPUTA O ELISANGELA CITRO TURCI Utiliza o de Teste Estrutural em C digo M vel Java MAR LIA SP 2005 ELISANGELA CITRO TURCI Utiliza o de Teste Estrutural em C digo M vel Java Disserta o apresentada ao Programa de Mes trado do Centro Universit rio Eur pides de Mar lia mantido pela Funda o de Ensino Eur pides Soares da Rocha para obten o do T tulo de Mestre em Ci ncia da Computa o Orientador Prof Dr M rcio Eduardo Delamaro MAR LIA SP 2005 TURCI Elisangela Citro Utiliza o de Teste Estrutural em C digo M vel Java Elisangela Citro Turci Orientador M rcio Eduardo Delamaro Mar lia SP s n 2005 157 f Disserta o Mestrado em Ci ncia da Computa o Centro Universit rio Eur pides de Mar lia Funda o de Ensino Eur pides Soares da Rocha 1 C digo M vel 2 Teste Estrutural 3 Ferramenta de Teste CDD 005 2 ELISANGELA CITRO TURCI Utiliza o de Teste Estrutural em C digo M vel Java Banca Examinadora da disserta o apresentada ao Programa de Mestrado em Ci ncia da Computa o do Centro Universit rio Eur pides de Mar lia UNIVEM man tido pela Funda o de Ensino Eur pides Soares da Rocha para obten o do T tulo de Mestre em Ci ncia da Computa o ORIENTADOR Prof
89. Lestr_usos apresentam casos de teste al m dos oito primeiros ent o pode se confirmar que para todos os conjuntos derivados de Testr obtem se 100 de cobertura dos requisitos funcionais A terceira fase durou 1 hora e 30 minutos sendo que 1 hora foi utilizada para a aplica o dos casos de teste estruturais e avalia o da cobertura dos requisitos 5 2 Mobile Chat 111 funcionais e 30 minutos para a elabora o de um relat rio simples 5 2 3 4 Chat 4 Fase Cobertura dos Crit rios Estruturais por Tyune A quarta fase desta atividade de teste contempla a aplica o do conjunto de casos de teste Tpunc na JaBUTi MA com o intuito de cobrir os crit rios estruturais Todos N s Todas Arestas e Todos Usos A Tabela 5 16 apresenta a cobertura dos crit rios estruturais obtida pelo conjunto Tune mostra que a maior cobertura obtida para o pacote agents foi de 86 no crit rio Todos N s Tabela 5 16 Chat Cobertura dos Criterios Estruturais por Tpune ener ne Ceske TodastArestas n o houve altera o na cobertura 5 2 Mobile Chat 112 Para maiores detalhes o Ap ndice I apresenta a cobertura dos crit rios estruturais referente a cada classe contida no pacote agents ou seja cada agente m vel pertencente ao Mobile Chat Atrav s da avalia o da Tabela 5 17 verifica se que o conjunto de casos de teste T func conseguiu cobrir 100 dos crit rios estruturais para os agentes SimpleMessageAgent
90. MAN 1995 a atividade de teste um elemento cr tico da garantia de qualidade de software e representa a ltima revis o de especifica o projeto e codifica o Assim o teste de software vem como um dos meios principais para mostrar a corretitude e promover a distribui o segura de um software Para contribuir com este cen rio da engenharia de software foram desenvolvidas v rias t cnicas de teste dentre elas temos a t cnica estrutural que se baseia no c digo fonte do programa de software Tal t cnica apresenta v rios crit rios de teste que ser o 1 1 Objetivo 2 melhor abordados no Cap tulo 3 Vale ressaltar que muitas ferramentas de teste foram desenvolvidas com o intuito de auxiliar a atividade de teste de software como exemplo tem se Chaim CHAIM 1991 Frankl e Weyuker FRANKL P G WEISS WEYUKER 1985 Neste trabalho ser o apresen tadas v rias ferramentas que apoiam o teste estrutural por m ser melhor apresentada e utilizada como software de apoio ao teste estrutural a Ferramenta JaBUTi que permite o teste em programas escritos em Java e apresenta uma extens o adaptada para suportar a mobilidade de c digo oferecida pelo ambiente uCODE procurando atender o teste em c digo m vel DELAMARO VINCENZI MALDONADO 2004 1 1 Objetivo O intuito deste trabalho expor como meio para validar a corretitude de sistemas de c digo m vel a utiliza o do teste estrutural em aplica es distribu das
91. Milter Ubiquitous Milter Ubiquitous Classinspector VisP rimitived ClosureConstants MuConstants from mucode NONE int a ii ROOT int pay Hen String amp DECLARED int UNKNOWN int _ Qp REFERENCED int SbPORTkey String Figura 2 8 Hierarquia do Pacote mucode util 20 21 3 Teste Estrutural Sistemas de software t m desempenhado um papel cada vez mais importante na sociedade e em muitas situa es o seu funcionamento correto imprescind vel V rias aplica es cr ticas necessitam de uma execu o extremamente segura correta e confi vel ou seja devem cumprir totalmente seus requisitos Entretanto Carvalho CARVALHO CHIOSI 2001 diz que o desenvolvimento de tais sistemas complexo pois deve lidar com requisitos r gidos restri es de integridade e um amplo conhecimento sobre a aplica o para que o produto final seja satisfat rio Segundo Carvalho CARVALHO CHIOSI 2001 a engenharia de software vem cri ando durante anos formas de melhorar o processo de desenvolvimento de software visto que crescente o surgimento de novos m todos e t cnicas para ajudar tal processo To davia apesar dos esfor os referentes ao processo de desenvolvimento de software este n o deixa de ter sua complexidade dificultando sua cria o As atividades de teste de software v m dar apoio ao desenvolvimento deste objetivando garantir a sua qualidade Os custos envolvidos s falhas de software justifi
92. PICCO VIGNA 1998 PICCO et al 1997 Ara desenvolvida pela Universidade de Kaiserslautern uma multi linguagem de sistemas de c digo m vel que suporta mobilidade forte As unidades de execu o chamada de agentes s o gerenciadas por uma linguagem de interpretadores extras de n cleo de sistemas independentes em vez de linguagens de suporte em tempo de escrita C C e Tel O n cleo e os interpretadores constituem o ambiente computacional cujos servi os s o acess veis para agentes sem interrup o abstra o local FUGGETTA PICCO VIGNA 1998 Facile desenvolvida pela ECRC em Miinich uma linguagem funcional que estende a linguagem Standard ML com primitivas para distribui o concorr ncia e comu nica o Possui suporte mobilidade fraca As unidades de execu o s o implementadas como threads que executam em ambientes computacionais Facile chamados de n s FUG GETTA PICCO VIGNA 1998 PICCO et al 1997 28 Tool Command Language 29The European Computer Industry Research Center 2 2 Linguagens e Ambientes para Mobilidade 14 Java desenvolvida pela Sun Microsystems tem despertado mais aten o e expec tativas em mobilidade de c digo devido facilidade de programa o e portabilidade Ao compilar um arquivo denominado Movel java gerado um arquivo Movel class que pode ser transferido atrav s de protocolos de um cliente para um servidor A classe compilada est em
93. S a ME Be RR SE oe se eA ee Hierarquia do Pacote mucode abstractions 2 0 Hierarquia do Pacote mucode util as Sa ie Gece ea A Nota o de Grafo de Fluxo de Controle PRESSMAN 1995 Bem plovde Cdit ses i mr Sp s 5 gua Ew Se ee Ee ee ere a Grafo de Fluxo de Controle para o Exemplo Exemplo do Grafo def uso 4 333 44 ak Gre de UE Soe oe ML Fases de Desenvolvimento de Software em Java 4 Independ ncia de Plataforma provida pela JVM Exemplo de C digo em Java M todo spinQ Bytecode do M todo spin a sys 4 4 dei a Be Pa e YEP A dd xiv Lista de Figuras 4 5 4 6 4 7 4 8 4 9 4 10 4 11 4 12 4 13 4 14 4 15 5 1 5 2 5 3 5 4 5 9 5 6 5 7 5 8 5 9 Um programa Java suas instru es de bytecode e os blocos de comandos DASICOSR vx raio Sagres armoire ES a che O che a SN Aa 1 a Grafo do M todo Vet average a um nico n finally b n finally extendido C mas Ae ois Save alate bata do a id Gat dad d Grafo Def Uso para o m todo Vet average 0 An lise de Depend ncia de Fluxo de Controle Grafo de Dominador de Super Bloco com pesos a antes da execu o de qualquer caso de teste e b ap s a execu o de um caso de teste Tela Principal da Ferramenta JaBUTi ccccccccc Caixa de Di logo Open Class 2 44 2 E eo eA AS ACER pre Selecionando o Ar
94. Server de teste TUS 9 Nome MAUT Endere o TuS Classe sonda MAUT belo kt co TAY Co i MAUT instrumentado Migra o c Migra o do MAUT Figura 4 15 Funcionamento da JaBUTi MA DELAMARO 2005 Delamaro DELAMARO VINCENZI MALDONADO 2004 sugere a sequ ncia dos seguintes passos 1 Crie um projeto de teste para o agente normalmente como se faria para qualquer programa 2 De dentro da pr pria JaBUTi deve se instalar o servidor de teste que vai receber os dados da execu o do agente nos servidores por onde ele passar instrumentado 3 Executar o agente e colher os dados da sua execu o intrumentando o no cliente Para tanto todos os servidores necess rios para executar a aplica o devem ser inicializados normamente Ent o deve se executar o agente utilizando o programa mobility HostProberLoader 4 6 Testando Agentes M veis com a JaBUTi MA 60 4 Ent o o agente come a a executar normamente e os dados de trace s o enviados ao servidor de teste Caso o projeto do agente esteja aberto na ferramenta tais dados s o imediatamente processados Nesse caso o bot o Update fica vermelho indicando que novos casos de teste chegaram a ferramenta A cada vez que o agente migra para um novo host um novo caso de teste enviado ao servidor de teste No caso de realizar o teste do agente no servidor Delamaro DELAMARO VIN CENZI MALDONADO 2004 suge
95. Simula o de chat shell de Figura 5 14 Simula o de chat execu o do usu rio Ana tela do cliente para o usu rio Ana Neste caso como no anterior o servidor cliente apresenta as informa es da conex o do usu rio Jo o o id 1 que o usu rio recebeu do servidor as informa es de que o servidor principal ir migrar as informa es de que est migrando o endereco e porta do host onde o servidor est ativo e a impress o da tabela de roteamento atrav s da invoca o do comando printroutes A interface gr fica do usu rio Jo o conforme ilustrado pela Figura 5 16 apresenta igualmente como no usu rio anterior as informa es sobre quais usu rios est o conectados e a conversa entre eles bem como a entrada do comando printroutes solicitando a impress o da tabela de roteamento no shell do cliente C WINDOWS system32 cmd exe fel x ickname ocal info 129 B 0 1 2081 B 0 1 1968 aMobiloChatadaya client Client Joao 127 0 0 1 2001 127 0 0 1 1968 b txt emote info 127 27 0 0 1 1968 4 ID before connecting 18 mucode MuServer activated on port 2001 ID after connecting ID Received from Server erver will migrate to 137 B 8 1 2008 erver Migrating to 127 6 6 1 2600 ctive server is now 127 6 B 1 18888 erver Migrating to 127 1 2002 ctive server is now 127 0 0 1 59405 MobileChat Joao 127 0 0 1 2001 ID 1 15 20 gt Jose 127 0 0 1 2002 has joined 15 21 lt Ana gt
96. Small seq Placed on Ones Placed on Large seq Roll 1 4 3 2 4 3 Ap ndice C Bozo Conjunto de Casos de Teste Testr 131 CASO DE TESTE 06 Ones 1 Kept 2 7 7 7 7 Kept 1 X X X Twos 6 et Round 2 Placed on Fives Roll 2 2 3 4 1 2 Threes 9 Roll 0 4 4 2 2 6 Kept 2 Fours 12 Kept 0 X X Round 6 Placed on Small seq Fives 10 Roll 1 4 4 2 1 6 Roll 0 5 6 2 1 5 Sixes 24 Kept 1 X X Kept 0 X X set Round 10 3 of a kind 21 Roll 2 4 4 2 3 3 Roll 1 5 3 2 2 5 Roll 0 6 1 3 3 3 4 of a kind 18 Kept 2 Kept 1 X x Kept 0 Full hand 25 Placed on Chance Roll 2 5 4 2 5 Roll 1 1 6 6 1 4 Small seq Kept 2 Kept 1 X Large seq Round 3 Placed on 3 of a kind Roll 2 3 4 4 4 5 of a kind Roll 0 3 5 3 Kept 2 7 Kept 0 X X Round 7 Placed on Fours Roll 1 3 5 3 Roll 0 5 2 3 2 3 Kept 1 X X Kept 0 X X Round 11 Roll 2 3 5 3 Roll 1 1 4 3 3 3 Roll 0 4 3 5 3 2 Kept 2 Kept 1 X XK X Kept 0 Round O Placed on Threes Roll 2 3 6 3 3 3 Roll 1 2 1 2 2 3 Roll 0 4 2 1 2 6 Kept 2 7 7 7 7 Kept 1 Kept 0 X X Round 4 Placed on 4 of a kind Roll 2 6 4 1 3 5 Roll 1 1 2 5 2 4 Roll 0 3 6 4 1 5 Kept 2 Kept 1 X X Kept 0 X Round 8 Placed on 5 of a kind Roll 2 4 2 3 2 2 Roll 1 3 5 R
97. VINCENZI et al 2003 um super bloco um subcon junto de n s com a propriedade de que se qualquer n em um super bloco for coberto ent o todos os n s nesse super bloco ser o cobertos Para melhorar a compreenss o sobre a depend ncia entre os blocos de comando em um GFC Vincenzi continua o exemplo do m todo Vet average e apresenta conforme a Figura 4 8a os n s 0 e 34 que pr dominam o n 74 e os n s 74 82 e 79 que o p s dominam As Figuras 4 84 e 4 8b mostram as rvores de pr e p s dominador do GFC ED 3 DAD b rvore de P s Dominador ilustrado pela Figura 4 6a CICI Q CED ED c rvore de Dominador de Bloco B sico d rvore de Dominador de Super Bloco Figura 4 8 An lise de Depend ncia de Fluxo de Controle A rela o de dominador entre n s do GFC representada por um grafo de 4 8 A An lise de Cobertura da JaBUTi 49 dominador de bloco b sico que corresponde uni o das rvores de pr e p s dominador conforme a Figura 4 8c Atrav s de tal grafo os super blocos s o identificados gerando assim o grafo de dominador de super bloco como por exemplo os n s 74 74 82 e 79 que comp em um super bloco como ilustrado na Figura 4 8d Com tal grafo pode se calcular o peso de cada n do GFC Em VINCENZI et al 2003 o peso de um n o n mero de n s que n o foram cobertos mas ser o se aquele n for coberto A Figura 4 9a mostra em negri
98. X Roll 1 5 1 3 Kept 0 X X Roll 1 3 3 6 6 2 Kept 1 Roll 1 5 2 2 3 6 Kept 1 X X Roll 2 6 4 2 Kept 1 X X Roll 2 6 6 Kept 2 sete Round O Roll 2 4 2 2 5 5 Kept 2 T Placed on Fours Roll 0 6 6 6 3 3 Kept 2 Placed on Fives Em Kept 0 7 7 7 7 Placed on Chance Round 10 Placed on Full hand set Round 7 Roll 0 4 4 3 3 1 Round 4 Roll 0 1 5 3 2 5 Kept 0 Round 1 Roll 0 3 3 4 3 3 Kept 0 X X Roll 1 1 2 1 1 6 Roll 0 4 2 2 1 2 Kept 0 X X X X Roll 1 6 5 6 1 5 Kept 1 X Kept 0 X X X Roll 1 3 3 1 3 3 Kept 1 X X Roll 2 2 1 2 6 Roll 1 2 2 2 4 2 Kept 1 X X X X Roll 2 6 3 6 3 5 Kept 2 Kept 1 X X X X Roll 2 3 3 2 3 3 Kept 2 T Placed on 3 of a kind Roll 2 2 2 2 3 2 Kept 2 T T Placed on 4 of a kind Ap ndice C Bozo Conjunto de Casos de Teste Testr 132 k Round 11 Roll 2 4 6 3 5 2 Roll 0 4 4 2 5 2 Kept 2 7 Roll 0 4 5 3 4 2 Kept 2 7 7 7 7 7 Kept 0 Placed on 5 of a kind Kept 0 X X X Placed on Small seq Roll 1 4 3 3 1 4 Roll 1 4 1 3 6 2 Kept 1 Kept 1 X X X Round 12 Roll 2 4 2 2 4 6 CASO DE TESTE 08 Ones 3 Kept 0 X X Roll 2 4 6 6 4 2 Twos 8 Roll 1 4 5 3 3 3 k Round 6 Kept 2 7 Threes 9 Kept 1 X X X Roll 0 6 3 4 5 5 Placed on Sixes Fours 4 Roll 2 6 1 3 3 3 Kept 0 X Fives 5 Kept
99. a o da segunda fase desta atividade de teste foi de 9 horas e 40 minutos sendo que 6 horas foram utilizadas para gerar os 150 casos de teste 2h30min para avaliar tais casos e 1h10min para gerar uma documenta o simples Para auxiliar esta atividade de teste foi utilizada a ferramenta de an lise de cobertura da JaBUTi MA 5 1 3 3 Boz 3 Fase Cobertura dos Requisitos Funcionais por Testr Com base nos conjuntos de casos de teste Tune Testr foi estipulado uma troca na cobertura ou seja agora o interesse est em avaliar a aplica o do conjunto Testr para cobrir os requisitos funcionais Vale lembrar que o conjunto pune cobriu 100 dos 5 1 Jogo Boz 77 Tabela 5 3 Boz Cobertura dos Crit rios Estruturais por Testr gase de RS Rods ea Boasts Serle Usos Ea E E Ie wel ora eee ES ICE seo ae ES eee ESSAS eee ee E E EE CRC RE RES DESDE e SE a ae a eae ee ee er es EE ee ae ee ee ee BEE E a a ee a ee n o houve altera o na cobertura requisitos funcionais Assim foram aplicados os casos de testes do conjunto Testr Ap ndice C destes os casos de n mero 01 02 03 04 06 e 31 foram suficientes para cobrir 100 dos requisitos funcionais do Boz Tal cobertura apresentada na Tabela 5 4 Vale mostrar as tabelas referentes cobertura dos requisitos funcionais com rela o a cada crit rio estrutural Com base na Tabela 5 3 foi selecionado os casos de teste que cobriram apenas
100. a em que se instalou No caso de uma migra o deliberada a porta especificada pelo usu rio j no caso de uma migra o aut noma a porta aleat ria Essa inst ncia do ChatServer ser o servidor ativo respons vel pela troca de mensagens entre os usu rios da rede Estando o ChatServer ativado o agente ServerMigrationMessage informa todos os clientes sobre a nova localiza o do servidor de modo que eles saibam para onde enviar as mensagens quando forem se comunicar Assim o ServerMigrationMessage acessa a vari vel que armazena o endere o do servidor ativo e substitui pelo novo endere o Vale ressaltar que mesmo estando desativado o MainServer continua em execu o Isto ocorre devido ao fato de que um novo cliente ao se conectar n o conhece a localiza o do servidor ativo no momento pois o servidor ativo pode ser o itinerante e este pode estar em qualquer n da rede O que acontece que o cliente se conecta ao MainServer e no caso do servidor ter sido migrado o cliente informado da migra o e a requisi o de entrada na sess o de chat encaminhada para o servidor ativo Isto poss vel devido ao MainServer armazenar o destino da migra o do servidor Vale esclarecer que se o MainServer for finalizado nenhum outro cliente conseguir participar da sess o de chat A migra o de cliente para cliente ocorre quando o servidor itinerante est na m quina de um cliente e vai migrar para a m quina d
101. a mensagem de texto para os outros clientes informando que tal cliente foi desconectado Ap s o envio dessa notifica o o agente LeaveChatSession ainda no servidor envia o agente NickListMessage para os clientes com a fun o de remover o apelido do cliente que se desconectou da lista de apelidos presente na interface gr fica dos clientes Por fim o agente LeaveChatSession remove as entradas relativas do cliente desconectado da tabela de custo do servidor j que tal cliente n o ser mais um n alvo para migra o do servidor As informa es de custo poder o ser obtidas atrav s da invoca o do comando printroutes que exibe as tabelas de custo presentes no servidor Quando este comando acionado o agente PrintRoutingTable enviado para o servidor L o agente obt m a tabela de custo e retorna para o cliente Estando no cliente o agente exibe duas tabelas de custo a primeira sem formata o ou seja da forma que foi obtida no servidor a segunda exibe o resultado de uma filtragem na qual apenas as entradas relativas aos clientes conectados s o exibidas Esta tabela filtrada a que realmente interessa para o servidor determinar qual o melhor n para ele migrar Quando um cliente achar necess rio poder requisitar o servidor atrav s do co mando getserver lt porta gt Tal comando faz com que o servidor migre para o cliente que o requisitou instalando o ChatServer na porta especificada pelo cliente A execu
102. a na caixa de mensagens do usu rio acusando que a porta j est em uso Ap ndice D Mobile Chat Requisitos Funcionais 142 36 Ao invocar o comando getserver tendo como valor para a porta um n mero superior 1024 e o cliente ainda n o estiver hospedando o servidor ent o o servidor dever migrar para a m quina do cliente e aguardar por conex es na porta especificada 37 Ao invocar o comando nick sem nenhum par metro uma mensagem dever ser exibida na caixa P de mensagens do usu rio acusando um erro de sintaxe 38 Ao invocar o comando nick tendo como par metro um novo apelido sendo uma cadeia de caracteres num ricos ou alfanum ricos livre de espa os em branco id ntico ao apelido atual do usu rio ent o uma mensagem dever ser exibida na caixa de mensagens indicando que o novo apelido deve ser diferente do atual 39 Ao invocar o comando nick tendo como par metro para o novo apelido uma cadeia de caracteres num ricos ou alfanum ricos contendo espa os em branco ent o uma mensagem dever ser exibida na caixa de mensagens indicando que houve um erro de sintaxe 40 Ao invocar o comando nick tendo como par metro para o novo apelido uma cadeia de caracteres num ricos ou alfanum ricos livre de espa os em branco e algum outro usu rio conectado j estiver utilizando o ent o uma mensagem dever ser exibida na caixa de textos do usu rio informando que o apelido j est
103. ada a objetos uma linguagem segura pois possui defesas de seguran a que reduz a possibilidade de ser utilizada para criar programas maliciosos robusta pois confi vel gerenciando mem ria e tratando exce es possibilita desenvolver applets que s o pro gramas embutidos em HTML 2 pr prios para executarem na Internet e a principal de todas as caracter sticas que a linguagem Java independente de plataforma ou seja um programa desenvolvido em Java pode ser executado em qualquer hardware ou software Esta independ ncia de plataforma foi o principal fator para que a linguagem Java pudesse ser mundialmente utilizada de forma crescente sendo conforme Deitel DEITEL 4 2 Hyper Text Markup Language 4 1 Java JVM e Instru es Bytecode 37 DEITEL 2001 uma das linguagens de desenvolvimento de software mais populares Para melhor compreenss o quando uma aplica o Java desenvolvida realizam se as seguintes fases ilustradas na Figura 4 1 segundo Deitel DEITEL DEITEL 2001 e Edi o consiste em editar um arquivo de programa e armazen lo em disco com extens o java e Compila o o compilador java traduz o programa para bytecodes gerando o ar quivo class e Carga o carregador de classe transfere o arquivo de bytecode ou seja o class para a mem ria e Verifica o o verificador de bytecodes verifica se os bytecodes contidos no class s o v lidos e n o violam restri es de
104. ade de teste executar um programa com a inten o de descobrir um erro Assim um bom caso de teste aquele que tem uma elevada probabilidade de revelar um erro ainda n o descoberto e um teste bem sucedido aquele que revela um erro ainda n o descoberto Portanto o objetivo da atividade de teste projetar testes que descubram erros e fa am na com tempo e esfor o m nimos importante salientar que a atividade de teste n o mostra a aus ncia de defeitos ela s pode mostrar que defeitos de software est o presentes PRESSMAN 1995 Para auxiliar a atividade de teste foram propostos v rios m todos que oferecem mecanismos que ajudam a garantir a integridade do teste e proporcionam uma maior probabilidade de revelar erros Para tanto existem as seguintes t cnicas que auxiliam a atividade de teste do software e T cnica Funcional tamb m conhecida como teste de caixa preta concentra se nos requisitos funcionais do software E usada para demonstrar que as fun es s o operacionais a entrada aceita e a sa da corretamente produzida e que a integridade das informa es externas mantida MYERS 1979 e T cnica Estrutural tamb m conhecida como teste de caixa branca baseia se no exame dos detalhes procedimentais Todas as linhas de c digo s o testadas atrav s de casos de teste que poem prova condi es e ou la os de repeti o MYERS 1979 MALDONADO 1991 e T cnica Baseada em Defeito
105. ados e fluxo de controle para programas e componentes Java Esta ferramenta chamada de JaBUTi A principal caracter stica desta ferramenta que ela n o requer o c digo fonte para realizar o teste podendo se basear no c digo de bytes do programa Java visando proporcionar a execu o do teste estrutural sobre componentes e programas Java A Ferramenta JaBUTi implementa dois crit rios baseados em fluxo de controle todos n s e todos arcos e um crit rio baseado em fluxo de dados todos usos Tais crit rios s o usados para avaliar a qualidade de um determinado componente ou programa Java A JaBUTi implementa um conjunto de funcionalidades fornecidas por zSuds como j mencionado no Cap tulo 3 que um conjunto de ferramentas para testar programas Ce C A interface gr fica da JaBUTi permite que um testador principiante possa ex plorar e aprender conceitos referentes ao teste de fluxo de dados e fluxo de controle Al m disso ela fornece uma boa visualiza o da cobertura do programa em teste mos trando quais partes do c digo foram cobertas e quais n o obtiveram cobertura A JaBUTi 41 Java Bytecode Understanding and Testing 4 1 Java JVM e Instru es Bytecode 36 atrav s de sua an lise de cobertura facilita a gera o de bons casos de teste e atrav s da ferramenta slice apresentada na se o 4 5 2 auxilia o testador na detec o de falhas Neste cap tulo ser o descritas na Se o 4 1 as caracter st
106. aforma onde componentes localizados em diferen tes lugares de uma rede s o percebidos como locais Em sistemas tradicionais com a utiliza o de servi os do TDS n o se tem no o sobre a estrutura da rede ou seja n o 22 Core Operating System 2 3 Network Operating System 2 4 True Distributed System 2 1 Mecanismos de Suporte ao C digo M vel 7 poss vel saber qual n est disponibilizando um determinado servi o ou recurso Componente Componente Sistema Distribu do Verdadeiro Sistema Operacional de Rede Sistema Operacional de Rede Sistema Operacional de Rede N cleo do Sistema Operacional N cleo do Sistema Operacional N cleo do Sistema Operacional Hardware Figura 2 1 Sistemas Distribu dos Tradicionais FUGGETTA PICCO VIGNA 1998 As tecnologias de suporte mobilidade de c digo conforme a Figura 2 2 apre sentam um outro ponto de vista A estrutura da rede n o est escondida do programador Na Figura 2 2 o TDS substitu do por Ambientes Computacionais CE colocados so bre o NOS de cada host da rede Em contraste ao TDS o CE guarda a identidade do host onde ele est localizado A fun o do CE prover aplica es com a capacidade de relocar dinamicamente seus componentes para diferentes host Os componentes hospedados pelo CE s o denominados Unidades de Execu o EU2 e Recursos Unidades de execu o conforme a Figura 2 3 representam fluxo
107. ais pelos Derivados de Testr DO 4 Cobertura dos Requisitos Funcionais 100 Testr 100 Testr_potU sos 100 5 2 Mobile Chat O Mobile Chat um estudo de caso que foi especialmente desenvolvido para este trabalho no intuito de ser testado pela Ferramenta JaBUTi MA e fortalecer o tema proposto pelo mesmo Como o pr prio nome exprime um programa de conversa o em tempo real que tem por fun o enviar e receber mensagens entre usu rios clientes conectados em rede atrav s de um servidor Apesar de parecer um programa comum de comunica o o Mobile Chat se dife rencia dos demais pela sua tecnologia E um exemplo desenvolvido em Java utilizando a API uCODE onde tem se na m quina cliente a troca de mensagens e informa es sendo realizada atrav s de agentes m veis comunicando se com o servidor e vice versa Tamb m apresenta um servidor m vel que migra entre os hosts clientes conforme as varia es ocorridas no ambiente da rede relacionadas lat ncia custo entre os n s da rede ou atrav s de uma solicita o do cliente possibilitando ao mesmo utilizar local mente o servidor Isto se torna interessante quando algum cliente utiliza excessivamente o servidor livrando o tr fego na rede 5 2 Mobile Chat 83 Esta caracter stica migrat ria do servidor um dos fatores principais para que este trabalho possa utilizar tal exemplo j que o intuito testar os c digos m veis em situa es diversas
108. ando o apelido e as informa es extra das da tabela de custo de roteamento Como ilustra o apresentada a inicializa o de um cliente conforme as Figuras 5 9 e 5 10 que mostram respectivamente o shell de execu o referente ao ClientServer e a interface gr fica do Mobile Chat MabileChat Ana 127 0 0 1 7000 ID O cs C WINDOWS system32 cmd exe ucode MuServer activated on port 20600 ID before connecting 10 ID after connecting ID Received from Server Figura 5 10 Tela do Mobile Figura 5 9 Shell de execu o do ClientServer Chat A interface grafica do cliente foi confeccionada de forma bem simples utilizando comandos de texto de pouca complexidade para simplificar a intera o entre o cliente e o servidor O comando diferencia se de uma mensagem comum atrav s de uma barra inserida no come o da linha A sintaxe definida da seguinte forma lt comando gt A interpreta o do texto digitado realizada atrav s da verifica o da exist ncia de uma barra no in cio do texto Desta forma o texto considerado um comando e a execu o de sua funcionalidade realizada Caso contr rio ou seja se o texto digitado for diferente de o programa considera que o texto uma mensagem comum destinada a outros usu rios Para se obterem os comandos dispon veis pelo Mobile Chat basta digitar o co mando help para que o mesmo possa apresentar uma mensagem de aj
109. ansferir informa es de trace isto para o endere o do Ts Durante a migra o ou termina o do MAUT a classe probe cria um novo agente de teste TA 17 para transferir informa es de trace para o servidor de teste TuS con forme ilustra o da Figura 4 15 c A classe probe deve migrar com o MAUT juntamente com as informa es sobre o TuS DELAMARO 2005 Segundo Delamaro DELAMARO 2005 a JaBUTi MA prov dois diferentes mo dos de testar um agente O primeiro instrumentando o agente e ent o o agente j inicializa instrumentado O segundo modo instrumentar o agente somente quando ele chega em um determinado host isto a intrumenta o e a coleta de dados de trace s o inicializados por um Server Para realizar a atividade de teste na JaBUTi MA testando o agente no cliente 413 Mobile Agent under Test 414 Server de Teste 4 15 yServer o servidor que recebe e executa um agente m vel na plataforma CODE DELAMARO 2005 16na Figura 4 15 a classe probe apresentada como classe sonda 417 Test Agent 4 6 Testando Agentes M veis com a JaBUTi MA 59 H Server de teste TuS H Server de teste TuS Trace Trace Trace Nome MAUT Endere o TuS Classe sonda MAUT Arquivo de trace Arquivo de trace MAUT instrumentado a Ferramenta de an lise e servidor de teste b Instrumenta o do agente em teste MAUT TuS Host remoto Host original 4
110. apesar dos crit rios Todos N s e Todos Arcos serem vi veis sua utiliza o torna se pouco eficaz na medida em que a maioria dos defeitos pode n o ser descoberta Para complementar tais crit rios foram propostos os crit rios de fluxo de dados que t m por objetivo verificar a atribui o de valores s vari veis e o uso destes valores 3 1 Crit rios Baseados em Fluxo de Controle 26 Para exemplificar os crit rios baseados em fluxo de controle apresentado um c digo Figura 3 2 baseado em RAPPS WEYUKER 1985 Com base neste c digo ser gerado um grafo de fluxo de controle conforme a ilustra o da Figura 3 3 Com base na Figura 3 3 os seguintes caminhos satisfariam os crit rios descritos anteriormente 1 1 1 2 3 4 5 6 6 1O 1 O CO N 2 4 5 6 5 7 8 9 Todos N s 1 3 4 5 7 8 9 Todos Caminhos com restri o de sele o em rela o ao la o 4 5 6 5 7 8 9 1 2 4 5 7 9 4 5 6 5 7 9 1 3 4 5 6 5 4 5 7 8 9 1 3 4 5 6 5 Todos Arcos 2 4 5 6 5 7 8 9 1 3 4 5 7 9 START READ X Y IF Y lt O THEN GOTO A Pow lt Y GOTO B Pow lt Y Z lt 1 IF Pow O THEN GOTO D Z lt Z X Pow lt Pow 1 GOTO C IF Y gt O THEN GOTO E Z lt 1 Z ANSWER lt Z 1 PRINT ANSWER STOP Figura 3 2 Exemplo de C digo 1 3 4 5 7 8 9 7 8 9 1 3 4 5 7 9 e Figura 3 3 Grafo de Fluxo de Controle
111. ass all gt 74 79 74 lt Class all gt Figura 4 5 Um programa Java suas instru es de bytecode e os blocos de comandos b sicos a tb c Figura 4 6 Grafo do M todo Vet average a um nico n finally b n finally exten dido c 4 2 Gerando Grafos com a JaBUTi 45 e Linha dupla representa n s de chamada no exemplo temos o n 91 e Linha nica representa todos os outros n s no exemplo temos v rios como 0 e 43 Tamb m em VINCENZI et al 2003 existe dois tipos de ilustra es de arestas conforme ilustra o da Figura 4 6 e Linha cont nua representa arestas prim rias no exemplo temos v rias como 0 34 e 34 43 e Linha tracejada representa arestas secund rias que tratam de exce o no exem plo temos v rias arestas secund rias como 34 74 e 15 74 Continuando a an lise do exemplo em VINCENZI et al 2003 ilustrado na Figura 4 6a o n 82 um n de destino de uma instru o de salto presente no fim dos n s 54 60 e 74 ele deve ser expandido tr s vezes conforme os n s rotulados 54 82 60 82 e 74 82 Assim como ilustrado na Figura 4 6c tal expans o importante devido s chamadas partir dos n s 54 e 60 onde a execu o retomada no n 91 ao contr rio da chamada do n 74 onde a execu o retomada ao n 79 Portanto se n o fosse realizada a expans o conforme ilustra a Figura 4 6b s um n 82 existiria dando a impr
112. btido no servidor ser de um dos clientes conectados o agente SpawnMigrationAgent dispara o agente ServerAgent que faz com que o servidor migre para a m quina do cliente que apresenta o menor custo m dio de comunica o na rede Quando o endere o obtido representa um n que j esteja hospedando o servidor nenhuma migra o ocorre A Se o 5 2 3 apresenta todo o processo de elabora o e aplica o da atividade de teste realizada no Mobile Chat bem como a avalia o dos resultados obtidos 5 2 Mobile Chat 103 5 2 3 Atividade de Teste Mobile Chat Agora o intuito est em apresentar a atividade de teste realizada no Mobile Chat Como j dito este estudo de caso muito interessante de ser testado devido a natureza migrat ria do servidor Assim como tal estudo de caso refor a a utiliza o da mobilidade de c digo e da API CODE esta atividade de teste tamb m visa refor ar o emprego do teste estrutural para validar a corretude de c digos m veis Para tanto foi estabelecido o seguinte plano de teste e 1 Fase Cria o do conjunto de teste Tune adequado a requisitos funcionais e 2 Fase Cria o do conjunto de teste Testr adequado a crit rios estruturais e 3 Fase Medi o da cobertura dos requisitos funcionais pelo conjunto de casos de teste Testr e 4 Fase Medi o da cobertura dos crit rios estruturais pelo conjunto de casos de teste Tune e 5 Fase Avalia o dos resulta
113. cal 4s c B BozoClient2 class client D GameRec class CMabuti binisrc CJabuti binviblbcel jar C WJabut Round ctass binhlibyjunit jar C Jabuti bintlib viewsall jar C Jab uti bin libimucode jar CiJabuti binvibidom jar CAJ buti binvlib crimson jar C Jabuti binvib axp api jar vi Hide CFG Call Nodes File Name BozoClient2 class Files of Type Java bytecode class files Figura 4 12 Selecionando o Arquivo de Classe Em seguida a tela do Gerenciador de Projeto aberta conforme a Figura 4 13 atrav s da sele o da classe a ferramenta identifica o conjunto completo de arquivos de classe do sistema e n o sistema necess rios para executar a classe selecionada O usu rio ent o poder selecionar qual arquivo de classe ser testado e nomear o projeto criado concluindo o usu rio clica no bot o OK e o projeto salvo Project Manager CI User Packages Avoided Packages Project Configuration amp C bozoserver Cd client Project Name C Bozoctient2 D Round GamerRec C abuti binisre C WJabuti binvlib bcel jar Wabuti binvib unitjar C Jabuti binvlibyvie sall jar C Wabuti binilipmucode jar C Wabut i binvlib dom jar C Jabuti binilib crimson jai C Wabuti binlib jaxp api jar Classes to Instrument client BozoClient2 Base Class ant BozoClient2 7 Hide CFG Call Nodes o Cancel
114. cam a execu o de uma atividade de teste bem planejada Igualmente aos sistemas de software comuns os sistemas de c digo m vel tamb m necessitam de um funcionamento correto seguro e confi vel E isto pode ser verificado atrav s da aplica o de t cnicas de teste de software Neste trabalho em particular foi utilizada a t cnica estrutural para validar a corretitude de um c digo m vel O teste de software segundo Pressman PRESSMAN 1995 envolve o planeja mento de testes projeto de casos de teste execu o e avalia o dos resultados dos testes O projeto de casos de teste possui um conjunto de t cnicas crit rios e m todos para a elabora o dos casos de testes ajudando assim a garantir o teste por completo e o au mento da probabilidade de detec o de defeitos no software Apesar de ser uma atividade cara uma das melhores formas de remover os defeitos do software 3 Teste Estrutural 22 A maior parte dos defeitos contidos em um software de origem humana sao gerados durante a comunica o e transforma o de informa es Tais defeitos podem ser encontrados em softwares dispon veis no mercado sendo que sua maioria encontra se em partes do c digo que s o executadas raramente Quanto mais cedo for detectado os defeitos de um software menor ser o custo da sua corre o e maior ser a probabilidade de corrig los corretamente PRESSMAN 1995 Conforme Myers MYERS 1979 o objetivo da ativid
115. cional e estrutural nos estudos de casos aqui apresentados que os casos de teste gerados com o aux lio da Ferramenta JaBUTi MA com base no teste estrutural foi superior aos gerados com base no teste funcional Pois apresentaram maior cobertura durante a trajet ria de movimenta o do agente m vel tanto para cobrir os crit rios estruturais como para cobrir os requisitos funcionais A Ferramenta JaBUTi al m de auxiliar a gera o de casos de teste tamb m se mostrou uma ferramenta robusta caracterizando se pela facilidade de uso de suas funcionalidades e pela gama de informa es capturadas e gerenciadas pela mesma Com as atividades de teste realizadas neste trabalho pode se concluir que a adapta o da Ferramenta JaBUTi para testar agente m vel JaBUTi MA totalmente aplic vel para a realiza o de testes em c digo m vel Java pois conseguiu capturar in 6 Conclus o 117 forma es din micas de trace durante a trajet ria executada pelo agente m vel em todos os hosts percorridos pelo mesmo Assim atrav s desta disserta o espera se contribuir com pesquisas referentes a mobilidade de c digo principalmente em rela o aos estudos emp ricos referente a aplica o de crit rios de testes estruturais para revelar erros em c digo m vel utilizando se de outras plataformas e ou outras abordagens de mobilidade de c digo diferente das de agentes m veis aqui apresentadas Espera se tamb m desmistificar
116. cobertura foi verificada atrav s da seguinte an lise e O round 1 cobriu na primeira rolada o requisito 10 que ainda n o havia sido coberta Obteve se uma seqii ncia de dados por m nesta sequ ncia saiu o valor 2 ent o manteve se tr s dados do in cio da sequ ncia e rolaram os restantes requisito 10 Na segunda e terceira rolada do mesmo round os requisitos 13 e 19 foram satisfeitos novamente e No round 9 foi satisfeito o requisito 6 no qual na primeira rolada dos dados foi sa tisfeito o requisito 13 e na segunda rolada j obteve se a marca o do item BIG SEQ requisito 6 e O item BONUS do placar foi marcado requisito 23 O caso de teste 03 contribuiu para cobrir apenas um nico requisito o de n mero 14 No round 7 foi coberto j na primeira rolada tal requisito pois n o havia repeti o nos valores dos dados e foi selecionado o dado de maior valor requisito 14 O pr ximo caso executado com xito foi o caso de teste 54 tal caso cobriu o requisito 7 no round 10 no qual na terceira rolada conseguiu se obter uma segii ncia grande mas o placar para Big Sequence j havia sido marcado no round 1 ent o foi marcado o placar SMALL SEQ que estava livre requisito 7 No caso de teste 61 foi coberto unicamente o requisito 4 no round 4 no qual na terceira rolada obteve se cinco dados com o mesmo valor por m o item Five of kind j havia sido marcado no round 2 ent o foi marcado o item FULL HAND
117. conjunto h 3 instru es reservadas impdep1 impdep2 e breakpoint e 43 que podem levantar uma exce o na Tabela 4 1 tais instru es cons tam em negrito sendo que dessas 43 s a athrow pode explicitamente atirar uma exce o todas as outras 42 instru es podem atirar exce es implicitamente Em suma uma instru o bytecode representada por um one byte opcode seguido por valores de operando Cada one byte opcode tem um mnem nico correspondente 45C digo de opera o 46A porta de fundo permite que sempre que uma m quina estiver ligada em rede os outros hosts pertencentes a esta rede ter o acesso remoto a tal m quina 47 Ponto onde o programa para quando ocorre um erro de programa o auxilia a depura o de progra mas 4 1 Java JVM e Instru es Bytecode 40 O tipo de instru o representado por uma letra indicando o tipo de operando para tanto deve se usar i para integer 1 para long s para short b para byte c para char f para float d para double e a para refer ncia Tabela 4 1 Conjunto de Instru es Bytecode SubGrupo Conjunto de Instru o Ds DES DES SC II Carregamento e Ar Carrega uma vari vel local para a aload aload lt n gt dload dload_ lt n gt fload fload lt n gt mazenamento pilha de operando iload iload_ lt n gt lload lload lt n gt Armazena um valor da pilha de astore astore lt n gt dstore dstore lt n gt fstore fs operando dentro de uma vari
118. conversa o simples seus comandos tornam o aplicativo mais interessante possibilitando a observa o da migra o e o controle do servidor mais claro para o usu rio al m de mostrar uma boa forma de utilizar a mobilidade de c digo dentro do contexto de um sistema de comunica o Na pr xima sess o ser o descritos detalhadamente todos os processos de conex o troca de mensagens e migra o realizados pelo aplicativo 5 2 Mobile Chat 91 5 2 2 Aspectos de Implementa o Mobile Chat Existem dois elementos principais que comp em o Mobile Chat o cliente e o servidor Com a aplica o cliente o usu rio poder interagir com os outros usu rios atrav s de mensagens al m de obter informa es sobre os servidores e sobre os usu rios atrav s de comandos O Mobile Chat apresenta tr s tipos de servidores e ChatServer fornece as funcionalidades b sicas do servidor e MainServer uma extens o do ChatServer trata se do servidor principal e ClientServer tamb m uma extens o do ChatServer por m trata se do servidor respons vel pelo cliente A abstra o de agentes m veis provida pela API uCODE exige que cada n da rede possua um servidor atrav s do qual ser o enviados e rece bidos os agentes m veis Deste modo os clientes tamb m devem possuir servidores que no caso s o inst ncias da classe ClientServer Vale ressaltar que os tr s tipos de servidores apresentados s o extens es do ser vidor MuS
119. d 12 Kept 2 Placed on Full hand Kept 1 X X X X Roll 0 5 5 5 4 3 Placed on Twos Roll 2 6 6 6 3 6 Kept 0 x eee Round 5 Kept 2 Roll 1 2 4 1 4 1 Round 1 Roll 0 5 2 3 6 2 Placed on Sixes Kept 1 X X Roll 0 3 4 2 4 1 Kept 0 X x Roll 2 2 4 5 4 1 Kept 0 X X X Roll 1 5 2 5 1 2 Round 9 Kept 2 id 7 Roll 1 3 4 2 1 5 Kept 1 X X Roll 0 4 2 2 6 5 Placed on Fours Kept 1 T 7 7 g Roll 2 5 5 5 1 2 Kept 0 x Placed on Large seq Kept 2 7 7 7 7 Roll 1 1 5 6 6 5 Placed on Fives Kept 1 xX X CASO DE TESTE 37 Ap ndice C Bozo Conjunto de Casos de Teste Testr 136 Ones 3 Roll 0 4 4 4 4 1 Kept 1 X X Twos 4 Kept 0 X X X X k Round 6 Roll 2 3 6 1 6 4 Threes 9 Roll 1 4 4 4 4 2 Roll 0 6 1 4 5 2 Kept 2 7 Fours 16 Kept 1 X X X X Kept 0 X Placed on Sixes Fives 15 Roll 2 4 4 4 4 Roll 1 6 2 5 2 1 Sixes 12 Kept 2 7 Kept 1 X X Round 10 3 of a kind 10 Placed on Fours Roll 2 2 8 2 Roll 0 4 1 5 1 5 4 of a kind 0 Kept 2 T Kept 0 X X Full hand Round 3 Placed on 3 of a kind Roll 1 2 1 4 1 6 Small seq 30 Roll 0 2 3 2 4 4 Kept 1 X X Large seq 40 Kept 0 X X X X Round 7 Roll 2 1 1 4 1 4 5 of a kind 0 Roll 1 2 3 2 4 4 Roll 0 5 3 1 5 4 Kept 2 T Chance 2
120. da mais o processo de teste Em adi o tamb m n o se pode afirmar se uma eventual falha faz parte da aplica o ou do ambiente onde ela executa Para a realiza o das atividades de teste apresentadas nas subse es 5 1 3 e 5 2 3 foi estabelecido que seria utilizada a seguinte metodologia aplica o do teste funcional aplica o do teste estrutural e compara o dos testes A compara o dos testes tem o intuito de verificar qual t cnica de teste apresenta os melhores resultados A inten o mostrar que o resultado desta compara o evidencie que a cobertura da t cnica estrutural maior do que a funcional Denotando que o teste estrutural uma boa t cnica para testar c digo m vel Para auxiliar a aplica o do teste estrutural nos exemplos citados foi utilizada a Ferramenta JaBUTi MA Os exemplos foram testados utilizando a simula o de um ambiente real ou seja os programas foram executados e testados em uma nica m quina simulando hosts diferentes atrav s da aloca o de clientes e servidores em diferentes por tas Este cap tulo portanto apresenta dois estudos de casos A Se o 5 1 apresenta o Jogo Boz suas caracter sticas forma de execu o os aspectos de implementa o e a atividade de teste realizada no mesmo Na Se o 5 2 apresentado o aplicativo de comu nica o Mobile Chat suas funcionalidades os aspectos de implementa o e a atividade 1 T Seek You 5 1 Jo
121. da atividade de teste dando suporte ao testador para verificar o grau de dificuldade para se cobrir uma determinada linha de c digo e facilitando a identifica o de itens n o execut veis Os grafos da JaBUTi s o bem montados e apresentam informa es sobre cada n aresta e bytecode que o comp em e ainda apresenta a situa o atualizada da cobertura de cada m todo das classes instrumentadas A atividade de teste ficou f cil de ser realizada com o apoio da JaBUTi n o foi tedioso e nem estressante como o teste funcional realizado O teste funcional manual 5 2 Mobile Chat 115 custoso e exige muita aten o por parte do testador com rela o a cobertura de cada requisito funcional Analisando as atividades de teste realizadas no Mobile Chat observou se que o tempo gasto na atividade de teste funcional foi superior ao teste estrutural auxiliado pela JaBUTi Na questao de cobertura pode se verificar na Tabela 5 19 que a maior cobertura dos crit rios estruturais obtida pelo conjunto de casos de teste Tpunc foi de 86 para o crit rio Todos N s Quando comparado com a cobertura Tabela 5 20 do conjunto Testr gerado durante o teste estrutural com o aux lio da JaBUTi MA verificou se que todos conjuntos derivados de T s apresentaram 100 de cobertura dos requisitos funcionais Tabela 5 19 Chat Cobertura Geral dos Criterios Estruturais por Trune P Cobertura dos Crit rios Estruturais Tabela 5 20 Chat
122. da linguagem e simultaneamente enfoca a mobilidade forte FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Voyager uma plataforma de suporte distribui o e mobilidade de c digo implementada pela ObjectSpace Inc Desenvolvida em Java suporta comunica o dis tribu da resolu o de refer ncias ativa o remota transpar ncia de localiza o e mobili dade de componentes DUARTE DOTTI 2001 uCode uma pequena API desenvolvida em linguagem Java que tem por objetivo oferecer um conjunto m nimo de primitivas para suportar a mobilidade de c digo e estado PICCO 1998 PICCO 2001b Na pr xima se o ser melhor descrita a API uCODE que foi utilizada para implementar os estudos de casos apresentados neste trabalho procurando expor as ca racter sticas da API e a fun o dos pacotes das classes e das interfaces existentes que a comp em 2 3 A API uCode A API uCODE PICCO 1998 oferece primitivas para suportar a mobilidade de c digo e estado n o apenas um Sistema de Agentes M veis pois permite que o usu rio defina suas pr prias primitivas de mobilidade incluindo sua pr pria no o de agente m vel Ou o usu rio poder continuar a usar as abstra es de agentes m veis oferecidas por um dos pacotes que comp e a distribui o uCODE 2 3 A API CODE 16 214 ao inv s dos Esta API enfatiza a mobilidade de c digo fina granularidade agentes m veis trabalha com Java 1 1 ou
123. dereco ip 1 portal custol endereco ip 2 porta2 custo2 Cada cliente apresenta uma tabela distinta de forma que o ltimo cliente a se conectar sempre levar ao servidor as informa es mais atualizadas sobre o estado da rede Assim poss vel simular varia es no comportamento da rede informando valores de custo propositais para ocorrer uma migra o planejada 5 2 Mobile Chat 84 A migra o baseada na tabela de custo ocorre quando um novo cliente se conecta A tabela de custo que acompanha o cliente analisada pelo agente m vel SpawnMigration Agent que identifica o endere o que apresenta o custo m dio m nimo em rela o a todos os outros n s da rede desta forma o servidor migra para tal endere o Para a execu o do Mobile Chat necess rio que seja executado um servidor e mais de um cliente para que haja a sess o de chat Assim o primeiro passo executar o servidor que invocado atrav s da classe Server que se encontra no pacote server atrav s do seguinte comando 4 java server Server Ent o o servidor inicializado na porta padr o 1968 do MuServer conforme ilustrado pela Figura 5 8 C WINDOWS system32 cmd exe o x MobileChat gt java server Server ucode MuServer activated on port 1968 Figura 5 8 Servidor inicializado Outra forma de inicializar o servidor informando o par metro port seguido da porta desejada conforme o exemplo a seguir neste caso o servidor
124. dice C Bozo Conjunto de Casos de Teste Testr 133 Round 7 Roll amp 2 1 3 1 6 1 Roll 0 5 3 6 1 4 Kept 2 7 T 7 Roll 0 3 6 6 4 2 Kept 2 7 7 7 7 Kept 0 X X Placed on Large seq Kept 0 X Placed on Ones Roll 1 3 6 4 4 Roll 1 6 1 3 4 4 Kept 1 X Round 12 Kept 1 X X Round 9 Roll 2 6 6 2 Roll 0 5 3 2 4 4 Roll 2 6 2 2 4 4 Roll 0 6 5 5 2 4 Kept 2 Kept 0 X X X Kept 2 T r Kept 0 X Placed on 5 of a kind Roll 1 5 3 2 4 1 Placed on Fours Roll 1 6 2 5 2 5 Kept 1 KX X X Kept 1 X x Round 11 Roll 2 3242 Round 8 Roll 2 6 6 2 1 3 Roll 0 2 3 2 2 2 Kept 2 T T Roll 0 1 5 1 6 4 Kept 2 7 Kept 0 Placed on Small seq Kept 0 X X Placed on 3 of a kind Roll 1 2 2 6 3 1 Roll 1 1 3 1 5 1 Kept 1 Kept 1 X X X Round 10 Roll 2 1 5 6 1 3 CASO DE TESTE 13 Ones 2 Kept 2 7 7 Kept 1 X X TWOS 66 000 098 Placed on Threes Round 6 Roll 2 5 5 3 6 3 Threes 12 Roll 0 3 2 3 4 2 Kept 2 7 7 Fours 12 Round 2 Kept 0 X X Placed on Fives Fives 10 Roll 0 3 5 4 2 1 Roll 1 4 5 4 Kept 0 7 7 Kept 1 X X Round 10 3 of a kind 0 Placed on Large seq Roll 2 4 3 4 Roll 0 4 6 2 1 4 4 of a kind 0 Kept 2 T Kept 0 X Full hand 25 Round 3 Placed on Fours Roll 1 2 6 2 5 1 Small seq 0 Roll 0 6
125. dimento em uma m quina de execu o remota O c digo para tal procedimento enviado para a m quina de destino e executado l por uma nova unidade de execu o FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Safe Tcl desenvolvida pelos autores do padr o Internet MIME uma ex tens o da Tcl concebida para suporte de e mail ativo Em um e mail ativo as mensagens podem incluir c digo para ser executado quando o receptor recebe ou l as mensagens 240 Java Virtual Machine 2 11 International Business Machines Corporation 2 12 Digital Equipament Corporation 2 13 Multipurpose Internet Mail Extensions 2 3 A API CODE 15 FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Sumatra desenvolvida pela Universidade de Maryland uma extens o Java projetada expressamente para suportar a implementa o de programas m veis resource aware Prov suporte mobilidade forte FUGGETTA PICCO VIGNA 1998 TACOMA Tromsg And Cornell Mobile Agents a linguagem Tcl estendida para incluir primitivas que suportam mobilidade fraca Unidades de execu o chamadas de agentes s o implementadas como processos Unix executando o interpretador Tcl FUGGETTA PICCO VIGNA 1998 PICCO et al 1997 Telescript desenvolvida pela General Magic uma linguagem orientada a obje tos concebida para o desenvolvimento de grandes aplica es distribu das A seguran a tem sido um dos principais fatores de condu o do projeto
126. do de cada Round do jogo perfazendo um total de 13 rounds Em cada round apresentado o resultado da rolagem Roll dos dados os dados mantidos Kept e por fim a marca o Placed on de um item do placar CASO DE TESTE 01 Placed on 5 of a kind Kept 1 X x Roll 0 6 2 1 1 5 Roll 2 6 1 4 4 6 Kept 0 X X x Round 1 Kept 2 7 ps 7 Roll 1 1 1 1 1 3 Roll 0 1 2 5 6 6 Placed on Chance Kept 1 X X X X Kept 0 X X Roll 2 1 1 1 1 2 Roll 1 2 5 5 6 6 et Round 4 Kept 2 7 3 of a kind 23 Kept 1 X X XX Roll 0 6 5 5 4 5 Placed on Ones 4 of a kind 0 Roll 2 6 5 5 6 6 Kept 0 xX X X Full hand 25 Kept 2 7 7 Roll 1 4 5 5 3 5 Round 7 Small seq 30 Placed on Full hand Kept 1 X X X Roll 0 2 4 5 4 1 Large seq 0 Roll 2 4 5 5 4 5 Kept 0 X X 5 of a kind 50 Round 2 Kept 2 7 7 7 7 Roll 1 3 4 3 4 5 Roll 0 2 3 5 5 5 Placed on 3 of a kind Kept 1 X X Kept 0 X X X Roll 2 4 4 1 4 4 Roll 1 3 3 5 5 5 Round 5 Kept 2 7 7 Kept 1 X X X Roll 0 6 3 2 5 2 Placed on Fours Roll 2 5 6 5 5 5 Kept 0 X X seit Round O Kept 2 7 7 7 Roll 1 1 2 2 3 2 Round 8 Roll 0 6 4 4 4 5 Placed on Fives Kept 1 X X X Roll 0 1 3 1 5 2 Kept 0 X X X Roll 2 6 2 2 1 2 Kept 0 X X Roll 1 4 4 4 4 6 Round 3 Kept 2 7 Roll 1 1 3 1 1 5 Kept 1 X X X X Roll 0 6 1
127. do uma porta inv lida abobrinha java server Server port abobrinha CASO DE TESTE 04 Executa o servidor sem par metros Executa um cliente com cinco par metros os quatro primeiros corretos e o ltimo um qualquer java client Client Ana 127 0 0 1 2000 127 0 0 1 1968 a txt abobrinha Ap ndice E Mobile Chat Conjunto de Casos de Teste Tpune CASO DE TESTE 05 Executa o servidor Executa um cliente com apenas tr s par metros sem par metros sendo todos corretos java client Client Ana 127 0 0 1 2000 127 0 0 1 1968 CASO DE TESTE 06 Executa o servidor Executa um cliente CASO DE TESTE 07 Executa o servidor Executa um cliente CASO DE TESTE 08 Executa o servidor Executa um cliente CASO DE TESTE 09 Executa o servidor Executa um cliente CASO DE TESTE 10 Executa o servidor Executa um cliente CASO DE TESTE 11 Executa o servidor Executa um cliente CASO DE TESTE 12 Executa o servidor Executa um cliente sem par metros em uma porta ocupada sem par metros informando um endere o IP para a m quina local que n o exista sem par metros informando um arquivo sem par metros informando um arquivo sem par metros informando o endere o sem par metros porta informando a porta do sem par metros de roteamento inexistente de roteamento existente por m n o est no formato adequado IP do servidor errado 1968
128. dos obtidos 5 2 3 1 Chat 1 Fase Cobertura dos Requisitos Funcionais por Tyunc Ao iniciar a 1 Fase desta atividade de teste foi proposto o seguinte plano de teste 1 Especificar os requisitos funcionais 2 Gerar casos de teste para testar os requisitos funcionais 3 Aplicar os casos de teste para cobrir 100 os requisitos funcionais especificados Com base no plano apresentado deu se in cio a atividade de teste especificando os requisitos funcionais Ap ndice D do Mobile Chat Em seguida foi gerado o con junto de casos de teste Tfune Ap ndice E com o intuito de cobrir os requisitos funcio nais especificados Vale mostrar que Tune 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 5 2 Mobile Chat 104 Os casos de teste foram aplicados e obteve se os seguintes resultados e O caso de teste 01 teve o intuito de realizar uma sess o de chat entre dois clientes de forma a ocorrer tudo com sucesso Neste caso de teste foram cobertos os seguintes requisitos funcionais 05 14 16 20 23 24 25 26 29 36 41 42 43 e nenhum erro foi encontrado e O caso de teste 02 ao contr rio do anterior visou testar funcionalidades diferentes do habitual Aqui o servidor foi iniciado em uma porta diferente da porta padr o 1968 em seguida dois clientes foram conectados e tentaram trocar mensagens vazia ou em branco Aqui foram cobertos os requisitos funcionais 07 18 e 19 e nenh
129. ducts appsdirectory dir apps app number1461 html INC T T Telcordia Software Visualization and Analysis Toolsuite xSuds 1998 Website URL http xsuds argreenhouse com LI J J et al ysuds sdl A tool for diagnosis and understanding software specifications FastAbstract ISSRE Telcordia Technologies 1999 LINDHOLM T YELLIN F The Java Virtual Machine Specification 2 ed S 1 Addison Wesley 1999 MALDONADO J C Crit rios Potenciais Usos Uma contribui o ao Teste Estrutural de Software Campinas SP DCA FEE UNICAMP 1991 MCCABE T J BUTLER C W Design complexity measurement and testing Communications of the ACM ACM Press New York NY USA v 32 n 12 p 1415 1425 December 1989 MYERS G J The Art of Software Testing New York NY USA John Wiley Sons Inc 1979 ISBN 0471043281 PICCO G P wCODE A lightweight and flexible mobile code toolkit In Mobile Agents Proceedings of the 2nd International Workshop on Mobile Agents Stuttgart Germany K Rothermel and F Holh 1998 ISBN 3 540 64959 X v 1477 p 160 171 PICCO G P Understanding code mobility Proceedings of the 22th International Conference on Software Engineering International Conference on Software Engineering 2000 PICCO G P Mobile agents An introduction Journal of Microprocessors and MicroSystems Elsevier Science 2001 PICCO G P A Mobile Code Toolkit April 2001 Website URL http mucode
130. e outro cliente Essa forma de migra o tamb m pode ser efetuada de forma deliberada ou aut noma O processo similar ao processo de migra o entre o servidor principal e um cliente descrito anterior mente A diferen a que o agente m vel ServerAgent antes de migrar para o cliente que vai hospedar o servidor envia o agente ServerMigrationMessage para o MainServer avisando o de que a localiza o do servidor vai mudar Al m disso ap s o ServerAgent disparar o novo ChatServer ele precisa retornar ao antigo ChatServer do host onde partiu e finaliz lo A migra o do cliente para o servidor principal caracterizada pelo servi dor saindo de um cliente e retornando para o servidor principal MainServer Como as anteriores esta migra o pode ocorrer de forma deliberada ou aut noma Em qualquer um dos casos o agente RestoreServerAgent utilizado partindo sempre do cliente que 5 2 Mobile Chat 102 est hospedando o servidor Para tanto o cliente obt m primeiro a lista de participantes atrav s do agente GrabUserListAgent que enviado atrav s do ClientServer do cliente que est hospedando o servidor para o ChatServer Quando o GrabUserListAgent re torna ao ClientServer ele traz consigo a lista de participantes Com tal lista o agente RestoreServerAgent enviado para o MainServer e o reativa Ap s a reativa o o RestoreServerAgent migra para o ChatServer em execu o no cliente e finaliza o j que ele n
131. eMessage respons vel por transportar as mensagens que leva consigo uma mensagem com o apelido e o endere o do novo usu rio informando a sua entrada no chat Em seguida o agente NickListMessage respons vel por inserir o apelido na lista de participantes do chat enviado para todos os participantes levando somente o apelido do novo usu rio para atualizar a lista de participantes do cliente O agente JoinChatSession ainda no servidor atualiza a tabela de custo do servidor atrav s dos dados existentes na tabela de custo que ele trouxe consigo proveniente do cliente Essa atualiza o se d atrav s da inser o das entradas recebidas do cliente na tabela de custo do servidor caso elas ainda n o existam evitando entradas duplicadas A introdu o de uma nova tabela de custo atualiza a tabela presente no servidor alterando a impress o do servidor sobre a rede como se ocorresse uma varia o no ambiente de rede Ent o um algoritmo de sele o aplicado para identificar qual n da tabela 570 apelido e o endere o IP ser o exibidos na caixa de texto dos participantes 5 8A lista de participantes encontrada no lado direito da interface gr fica do cliente 5 2 Mobile Chat 96 apresenta o menor custo m dio O endere o desse n armazenado no servidor para posterior utiliza o Em seguida o cliente que acabou de se conectar recebe uma inst ncia do agente NickListMessage que atualiza a lista de ape
132. ectar ent o uma caixa de di logo dever ser exibida perguntando se o usu rio deseja tentar se conectar novamente 45 Quando algum dos agentes que carregam as mensagens de texto n o conseguir atingir o destino devido a algum problema na rede como a desconex o inesperada do servidor ativo por exemplo Ent o uma mensagem ser perdida mas o funcionamento do sistema como um todo servidores e clientes n o ser comprometido Uma mensagem dever ser exibida na caixa de mensagens do cliente que tentou envi la informando da impossibilidade do envio e a sess o de chat prossegue normalmente Ap ndice D Mobile Chat Requisitos Funcionais 143 46 Quando algum dos agentes de controle troca de apelido entrada e sa da de usu rio migra o do servidor requisi o de entrada e sa da e os demais agentes que n o t m a fun o de carregar mensagens de texto forem perdidos ou n o puderem ser enviados devido a algum problema na rede como a desconex o inesperada do servidor ativo o sistema dever atingir um estado de inconsist ncia podendo futuramente n o apresentar um funcionamento correto ent o o cliente que tentou enviar o agente ser finalizado 47 Quando o servidor for executado com a op o port seguida de uma cadeia de caracteres alfa num ricos uma mensagem indicando um erro dever ser exibida na tela e o servidor n o ser iniciado 48 Quando o cliente que estiver hospedando o servidor ativo ChatSer
133. eis O pacote mucode util PICCO 1998 composto pela interface ClosureConstants pelas classes ClassInspector e Launcher detalhadas a seguir e ClosureConstants s o contantes que identificam diferentes tipos de classes clo sure e ClassInspector utilizada para recuperar informa es sobre as classes que s o declaradas e referenciadas por uma determinada classe permitindo assim determi nar sua classe closure e Launcher esta classe simplifica a tarefa de passagem de par metros de linha de comando de uma aplica o para um uServer embutida neste Para finalizar esta sess o s o apresentadas as hierarquias de pacote classes e interfaces que comp em a API CODE PICCO 2001b ilustradas conforme as Figuras 2 6 2 7 e 2 8 e modeladas atrav s da UML BOOCH RUMBAUGH JACOBSON 2000 2 15Um agente m vel representa uma unidade de mobilidade que corresponde a unidade de execu o e que capaz de determinar autonomamente sua pr pria migra o PICCO 2001b 2 16 Unified Modeling Language 2 3 A API CODE Throwable from lang My O SgetClasso GrupHandie ThrowableQ Sedalizable hashCoded r Throwable Sequals VgetMessage rom kp cloned OgetLocalizedMessage Vtostrin g0 printStackTraceQ D gt qtostrinoo notifva Snativvaig DV Swaitd Swaitd Swaitd FMinalizeg Sobjecto printStackTraced Sprintsta Trace QrillinStackT raceQ E Qgetserver get Root ClassO
134. em ria associada a essa vari vel Existem dois tipos de usos c uso aquele que afeta a computa o que est sendo realizada ou permite a sa da de vari veis definidas anteriormente Vale ressaltar que quando n o existir nenhuma defini o da vari vel precedente a um c uso no mesmo bloco tem se um c uso global caso contr rio tem se um c uso local RAPPS WEYUKER 1985 p uso que afeta o fluxo de controle do programa ou seja a vari vel usada como predicado em um comando de decis o ou de repeti o RAPPS WEYUKER 3 1Um caminho i ni Nm j Mm gt 0 que n o cont m nenhuma defini o de x nos n s N1 Nm E 2 b 9 J q chamado livre de defini o em rela o a x do n i ao n j Um caminho i n1 Nm J k m gt 0 que n o cont m nenhuma defini o de x nos n s nj Nm 7 chamado livre de defini o em rela o a x do n i aresta j k Uma aresta i j um caminho livre de defini o com respeito a x do n i aresta i j RAPPS WEYUKER 1985 3 2 Crit rios Baseados em Fluxo de Dados 28 1985 e Indefini o acontece quando a localiza o de uma vari vel n o estiver definida na mem ria ou se seu valor n o for acess vel Os crit rios de fluxo de dados segundo Weyuker RAPPS WEYUKER 1985 s o utilizados para estender o grafo de fluxo de controle associando os tipos de ocorr ncias de vari veis aos elementos deste grafo Desta forma
135. ente 16 Quando a conex o for estabelecida ent o o usu rio dever receber um n mero de identifica o do servidor que ser exibido na sa da padr o do cliente Em seguida a lista de apelidos da interface gr fica dever conter os apelidos dos usu rios conectados O campo de entrada de texto presente na parte inferior da interface dever ser habilitado 17 Quando o arquivo contendo as informa es de custo n o estiver escrito no formato adequado o cliente ser iniciado e a interpreta o do arquivo dever ocorrer sem sucesso Uma mensagem dever ser exibida para o usu rio informando que o formato do arquivo n o est correto em seguida o cliente dever ser finalizado 18 Quando nenhum texto for digitado na caixa de entrada de texto do aplicativo e a tecla ENTER for pressionada ent o n o dever acontecer nada 19 Quando um texto contendo apenas caracteres em branco for digitado na caixa de entrada de texto e a tecla ENTER for pressionada ent o n o dever acontecer nada 20 Quando o usu rio digitar um texto iniciado por um caractere diferente de e pressionar a tecla ENTER ent o o texto ser considerado uma mensagem que dever ser enviada para todos os usu rios conectados e exibida na caixa de mensagens das interfaces dos clientes inclusive do cliente que a enviou Ap ndice D Mobile Chat Requisitos Funcionais 141 21 Quando o usu rio digitar apenas uma barra na caixa de entrada e
136. ente ocorre de duas formas atrav s da requisi o do cliente ou autonomamente com base na tabela de custo Quando o servidor principal migra para um n cliente e a migra o foi requisitada pelo cliente ent o tal requisi o faz com que o agente ServerAgent seja enviado ao MainServer Se a migra o ocorrer de forma aut noma a partir de uma an lise realizada na tabela de custo o agente ServerAgent tamb m parte de um cliente tendo como destino o MainServer Neste caso o n que apresenta maior vantagem determinado quando o cliente se conecta atrav s do agente SpawnMigrationAgent que dispara o ServerAgent que o respons vel pela migra o do servidor Esclarecendo independente do tipo de migra o o agente ServerAgent sempre enviado para o MainServer Assim que chega no MainServer o ServerAgent informa para o servidor prin cipal qual o endere o do cliente que o enviou desativa o MainServer e envia o agente SimpleMessageAgent para cada um dos clientes conectados Esse agente ao chegar no seu destino exibe uma mensagem no shell de execu o do ServerClient notificando o usu rio que o servidor vai migrar Em seguida o ServerAgent migra para o cliente que ir 5 2 Mobile Chat 101 receber o servidor carregando consigo a lista de participantes que obteve no MainServer e a tabela de custo Estando na m quina cliente uma inst ncia da classe ChatServer criada e o servidor fica escutando na port
137. epois o servidor do Boz foi executado atrav s do seguinte comando java cp C Jabuti bin lib mucode jar bozoserver BozoServerImpl Ap s a execu o do servidor a aplica o cliente do Boz foi inicializada pelo comando java cp c jabuti bin c jabuti bin lib bcel jar c jabuti bin lib junit jar c jabuti bin lib jviewsall jar c jabuti bin lib mucode jar c jabuti bin lib dom jar c jabuti bin lib crimson jar c jabuti bin lib jaxp api jar mobility HostProberLoader P testBozo2 jbt o xxx jar name bozoAgent h localhost 1988 client BozoClient2 localhost 1968 localhost O comando para inicializar a aplica o cliente composto pelas vari veis de ambiente que a Ferramenta JaBUTi precisa para estabelecer conex o com o c digo a ser testado atrav s da classe HostProberLoader do pacote mobility O comando P usado para informar o nome do arquivo do projeto de teste que neste caso testBozo2 jbt o para informar o arquivo que cont m as classes instrumentadas do exemplo a ser tratado name para informar o nome do agente m vel h para informar o host do servidor de teste da JaBUTi e por fim informada a chamada de execu o da classe e seus argumentos 5 1 Jogo Boz 76 Ao iniciar o teste estrutural foi determinado que seriam avaliados os seguintes crit rios estruturais que a JaBUTi contempla Todos N s Todas Arestas Todos Usos e Todos Pontenciais Usos Em seguida foram gerados
138. epois uma queda do servidor principal Em seguida foi realizada a tentiva de troca de mensangens e de invoca o de um comando de controle Os requisitos funcionais 45 46 e 48 foram cobertos e nenhum erro foi encontrado Todos os 9 erros encontrados nesta atividade de teste foram corrigidos Ap s a corre o de tais erros foram replicados os 22 casos de teste do conjunto Tunc obtendo se 5 2 Mobile Chat 107 a seguinte cobertura no terceiro caso de teste foi coberto o requisito funcional 47 no quarto caso de teste o requisito funcional 02 no quinto o requisito funcional 01 no s timo o requisito funcional 09 no oitavo o requisito funcional 04 no nono o requisito funcional 17 no d cimo terceiro o requisito funcional 32 no d cimo quarto o requisito funcional 35 e por fim o vig simo caso de teste cobriu o requisito funcional 31 Assim com a replica o dos casos de teste do conjunto Tnc houve a cobertura de 100 dos requisitos funcionais especificadas para o Mobile Chat conforme mostra a Tabela 5 12 Tabela 5 12 Chat Cobertura dos Requisitos Funcionais por T func Casos de Teste Requisitos Funcionais Cobertos Itens Cobertos Porcentagem de Cobertura 05 14 16 20 23 24 25 26 29 36 41 42 e 43 07 18 e 19 a S 28 37 38 39 e 40 30 32 21 e 22 31 33 e 34 45 46 e 48 48 de 48 100 Esta primeira fase do teste durou 23 horas no qual 6 horas foram utilizadas para especificar os requis
139. equisito 12 e a terceira rolada apresentou quatro dados iguais com valor igual 5 marcando ent o o item FIVES do placar requisito 16 e No round 3 foram satisfeitos os requisitos 12 e 19 a primeira e segunda rolada cobriram o requisito 12 onde dois dados apresentam repeti o do valor 6 por fim na terceira rolada obteve se um dado com valor 1 e dois dados com valor 4 sendo interessante marcar apenas o item CHANCE do placar requisito 19 e No round 4 foram cobertos os requisitos 12 e 17 no qual na primeira e na segunda rolada sa ram tr s dados com valor igual 5 cobrindo novamente o requisito 12 e a terceira rolada continuou apresentando somente tr s dados com valor 5 marcando se ent o o item THREE OF KIND do placar requisito 17 e O round 5 cobriu novamente os requisitos 13 e 16 no qual foram selecionados na primeira rolada dois dados com valor igual a 2 cobrindo o requisito 13 na segunda rolada conseguiu se tr s dados com o valor 2 e na terceira rolada fechou se o round com tr s dados com o valor 2 marcando a op o TWOS do placar cobrindo o requisito 16 e Nos rounds 6 7 e 8 como no round 5 foram satisfeitos os requisitos 13 e 16 marcando se respectivamente os itens ONES FOURS e SIXES do placar e No round 9 foram cobertos os requisitos 12 e 22 no qual na primeira e na segunda rolada sa ram tr s dados com valor igual 5 cobrindo o requisito 12 e na terceira rolada os valores n o difere
140. equisitos Funcionais pelos Derivados de Testr 82 Chat Cobertura dos Requisitos Funcionais por Tyne 0 107 Chat Cobertura dos Crit rio Estruturais do Pacote agents por Testr 109 Chat Cobertura dos Requisitos Funcionais por Testr 2 2 109 Lista de Tabelas 5 15 5 16 5 17 5 18 5 19 5 20 7 1 7 2 7 3 7 4 7 5 7 6 hot 7 8 7 9 7 10 7 11 7 12 7 13 9 1 9 2 Chat Cobertura dos Requisitos Funcionais M veis por Testr Chat Cobertura dos Criterios Estruturais por Tune Chat Cobertura dos Criterios Estruturais dos Agentes M veis por pune Chat Cobertura dos Criterios Estruturais do pacote agents por Tunc T fine Chat Cobertura Geral dos Criterios Estruturais por Tune Chat Cobertura Geral dos Requisitos Funcionais M veis pelos Derivados der fo oy an ok Oey a reler aS awakes Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe agents Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe agents Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe Chat Cobertura da Classe agents Chat Cobertura da Classe Chat Cobertura da Classe agents agents agents agents agents agents MobileMessage por Testr agents agents agents agents JoinChatSession por
141. erados com a finalidade de cobrir os crit rios estruturais Todos N s Todas Arestas e Todos Usos do aplicativo Mobile Chat Vale mostrar que Testr 01 02 03 04 05 06 07 08 09 10 CASO DE TESTE 01 Conectar dois clientes cada um utilizando arquivos de custo contendo entradas equivalentes ou seja apresentando o mesmo custo entre dois n s CASO DE TESTE 02 Conectar um cliente que requisita o servidor Conectar outro cliente que ir se conectar ao servidor que migrou para o primeiro cliente CASO DE TESTE 03 Conectar dois clientes sendo que o apelido escolhido pelo segundo cliente o mesmo que o do primeiro cliente CASO DE TESTE 04 O usu rio realiza uma troca de apelido CASO DE TESTE 05 Um usu rio envia uma mensagem comum CASO DE TESTE 06 Um cliente tenta trocar de apelido indicando um apelido j em uso CASO DE TESTE 07 Um cliente que est hospedando o servidor executa o comando restore Ap ndice F Mobile Chat Conjunto de Casos de Teste Testr CASO DE TESTE 08 O cliente executa o comando printroutes CASO DE TESTE 09 O servidor ativo est hospedado em um dos clientes Um novo cliente se conecta e feita a avaliac o sobre qual o melhor host para o servidor migrar determinado que o host mais vantajoso o servidor principal ent o o servidor migra de volta para o servidor principal CASO DE TESTE 10 Um novo cliente se conecta e a avaliac o para selecionar o n
142. erem exercitados pelo testador RAPPS WEYUKER 1985 MALDONADO 1991 e Crit rios Baseados em Complexidade utilizam informa es da representa o do fluxo de controle l gico de um programa fornece uma medida quantitativa da dificuldade do teste e uma indica o da confiabilidade final este crit rio foi proposto por McCabe MCCABE BUTLER 1989 Os crit rios estruturais geralmente utilizam o Grafo de Fluxo de Controle GFC para representar um programa O grafo de fluxo de controle descreve o fluxo de controle l gico de um programa Para cada constru o de uma estrutura de dados tem se um s mbolo de grafo correspondente conforme Pressman PRESSMAN 1995 ilustrado na Figura 3 1 Isto permite que qualquer representa o de um projeto procedimental possa ser traduzida num grafo de fluxo Segundo Weyuker RAPPS WEYUKER 1985 um grafo de programa G represen tando um programa Q consiste de um n correspondente para cada bloco b de Q e uma aresta do n j para o n k denotada j k se o ltimo comando de b n o um desvio 3 Teste Estrutural 24 Sequ ncia Figura 3 1 Nota o de Grafo de Fluxo de Controle PRESSMAN 1995 incondicional e ele precede fisicamente o primeiro comando de bg ou se o ltimo comando de b um desvio cujo alvo o primeiro comando de bx Cada c rculo do GFC denominado n representa uma ou mais instru es de procedimentos ou seja um conjunto de comando
143. ermina se um determinado conjunto de teste adequado com respeito ao crit rio e produz uma lista de alguns pares de n s requeridos pelo crit rio mas n o exercitado pelo dado de teste Esta lista pode ent o ser usada para fortalecer o conjunto de dados de teste FRANKL P G WEISS WEYUKER 1985 CHAIM 1991 PROTESTE um prot tipo desenvolvido na Universidade Federal do Rio Grande do Sul Tem por objetivo proporcionar um ambiente completo para dar suporte ao teste estrutural incluindo crit rios baseados em fluxo de dados e controle Gera a visu aliza o do grafo de fluxo de controle auxilia na deriva o dos dados de entrada para um caso de teste instrumenta a unidade em teste e suporta o teste de programas escritos em Pascal Por m pode ser ajustado para outras linguagens SILVA 1995 CHAIM 1991 POKE TOOL Potencial Uses Criteria Tool for Program Testing Em CHAIM 1991 Chaim define uma ferramenta de apoio ao teste estrutural de progra mas baseado na an lise de fluxo de dados Suporta o teste de programas escritos em C faz an lise do c digo fonte e cria o de uma base de dados gera relat rios com informa es da an lise est tica e identifica o da estrutura de dados e de controle instrumenta o c digo fonte executa casos de teste e analisa os resultados do teste xSuds Foi desenvolvida no laborat rio Telcordia Applied Research para ana lisar o comportamento din mico do software e para per
144. erramenta JaBUTi Vale esclarecer que os casos de teste que n o apresentaram cobertura n o foram listados Vale elucidar que os casos de teste identificados por n mero s o os pertencentes ao conjunto Tfunc Os casos de teste identificados por letras s o os casos de teste adicionais pertencentes ao conjunto Trane Tabela 9 1 Chat Cobertura da Classe agents LeaveChatSession por Tyunc Trane Tabela 9 2 Chat Cobertura da Classe agents SimpleMessageAgent por Tpunc Trung Ap ndice I Mobile Chat Cobertura dos Crit rios Estruturais por Tune Tunc 156 Tabela 9 3 Chat Cobertura da Classe agents ServerLeavingMessage por Tunc Trine Tabela 9 4 Chat Cobertura da Classe agents ServerAgent por T func Tunc a ES e n o houve altera o na cobertura Tabela 9 5 Chat Cobertura da Classe agents NickChangeMessage por Tunc Tune Gasos de TRR Tabela 9 6 Chat Cobertura da Classe agents GrabUserListAgent por Tune Tunc Casos Si Tee Todor Los 0 05 de 05 100 04 de 04 100 06 de 06 100 A Tabela 9 7 Chat Cobertura da Classe agents PrintRoutingTable por Tune Thunc Gases ae deste Todor Use 0 11 de 11 100 12 de 12 100 32 de 32 100 A Tabela 9 8 Chat Cobertura da Classe agents MobileMessage por Tune Tunc Cen se TRS Todas S Ap ndice I Mobile Chat Cobertura dos Crit rios Estruturais por Tpune Tunc 157 unc Tabela 9 9 Chat
145. erver est em execu o isto possibilita que a m quina cliente participe da sess o de chat E por fim o ltimo par metro o nome do arquivo que cont m a tabela de roteamento com os custos envolvidos na comunica o entre o cliente que est sendo iniciado e os demais n s da rede A abstra o de agentes m veis provida pela API uCODE exige que cada n cliente possua um servidor atrav s do qual ser o enviados e recebidos os agentes m veis Desse modo mesmo os clientes devem possuir servidores que no caso s o inst ncias da classe ClientServer Como exemplo pode ser utilizado o seguinte comando para a inicializa o de um cliente java client Client Jose 192 168 0 5 2000 192 168 0 1 1968 tabela txt Neste exemplo tem se um usu rio com o apelido de Jose que se encontra na m quina com o endere o IP 192 168 0 5 informando que a porta para a execu o do ClientServer a porta 2000 que o endere o do servidor principal MainServer 192 168 0 1 e que este est sendo executado na porta 1968 Tamb m est utilizando o arquivo tabela txt onde est o armazenadas as informa es sobre a tabela de custo de roteamento 55 A porta pode ser qualquer valor inteiro superior a 1024 6Determinacao da rota dire o de informa es enviadas na rede 5 2 Mobile Chat 86 Dessa forma o cliente ir iniciar o ClientServer que ficar executando na porta 2000 e estabelecer conex o com o MainServer inform
146. erver oferecido pela CODE que possibilita a reloca o de c digo atrav s dos n s da rede fornecendo o ambiente que d suporte mobilidade de c digo e tornando assim poss vel a implementa o deste aplicativo O Mobile Chat composto por quatro pacotes Figura 5 19 agents chat client e server O pacote agents possui todos os agentes m veis necess rios para a realiza o de troca de mensagens conex o e desconex o de um cliente impress o da tabela de roteamento migra o do servidor atrav s de uma requisi ao comando getserver ou de uma restaura o comando restore informa o atualizada da localiza o do servidor e a troca de apelidos Figura 5 20 Vale ressaltar que o pacote agents composto por treze agentes m veis respons veis pelos servi os citados O pacote chat Figura 5 21 cont m todas as classes que mant m a sess o de chat com rela o as informa es do usu rio da tabela de roteamento e das constantes utilizadas no chat conectado n o conectado adicionar ou excluir apelido O pacote client ilustrado pela Figura 5 22 possui classes que tratam das in forma es do cliente e o pacote server Figura 5 23 composto pelo servidor principal 5 2 Mobile Chat MainServer e pelo servidor itinerante ChatServer 92 agents server Figura 5 19 Pacotes que comp em o Mobile Chat NickChangeMessage JoinChatSession LeaveChatSession amp se
147. ervidor e vice versa bem como entre os pr prios usu rios possibilitando um maior aproveitamento da sess o j que disponibiliza as informa es de custo da rede permite a requisi o de migra o e restaura o do servidor informa o estado atual da rede e permite a troca de apelido do usu rio Um comando diferencia se de uma mensagem atrav s de uma barra inserida no come o da linha como j apresentado na Se o 5 2 1 Durante a interpreta o do texto digitado se for detectada uma o texto considerado um comando e tratado de maneira espec fica pelo aplicativo cliente caso contr rio o texto caracterizado como uma mensagem qualquer Detalhando melhor os comandos j apresentados na Se o 5 2 1 tem se para solicitar ajuda o comando help que exibe uma mensagem de ajuda na tela contendo todos os comandos dispon veis e uma breve explica o sobre a funcionalidade de cada um deles Para finalizar o aplicativo basta invocar o comando quit para que o cliente seja desconectado do servidor e finalizado O processo de desconex o parecido com o processo de conex o por m ao em vez de enviar o agente JoinChatSession para entrar na 5 2 Mobile Chat 98 se o de chat o cliente envia o agente LeaveChatSession requisitando a sa da Quando o LeaveChatSession chega no servidor ele remove as informa es do cliente que o enviou da tabela de conectados Em seguida o agente MobileMessage envia um
148. ess o de que qualquer chamada dos n s 54 60 e 74 podem retomar a execu o indistintamente dos n s 91 e 79 o que na realidade n o ocorre Conforme dito anteriormente tal situa o ilustrada na Figura 4 6c Com o intuito de prover an lise de fluxo de dados a JaBUTi gera grafos def uso tendo como base a an lise de depend ncia de bytecode proposta por Zhao em ZHAO 2000 Para melhor entendimento Vincenzi et al VINCENZI et al 2003 gera um grafo def uso para o exemplo da Figura 4 5 onde apresenta a classe Vet e o m todo average Tem se portanto na Figura 4 7 o grafo def uso para o m todo Vet average no qual observa se que os nomes das vari veis s o diferentes dos seus nomes no c digo fonte original Para tanto para representar uma vari vel local usa se um LO precedendo o ndice da mesma e para representar vari vel est tica usa se S Analisando o exemplo do m todo Vet average a vari vel i na linha 14 do c digo fonte Figura 4 5 referida pelo bytecode com 2 da instru o de bytecode 15 iinc 4 2 Gerando Grafos com a JaBUTi 46 D L 0 L 1 L 2 L 0 out L 0 v u L 0 0 L 2 L 0 v D L 0 0ut U L 0 L 2 L 0 out as tasked D U L o u D U L 0 L 2 L 0 L 0 out TO CD Figura 4 7 Grafo Def Uso para o m todo Vet average h2 1 na Figura 4 5 ou como 2 conforme a instru o de bytecode 11 istore_2 e 34 iload 2 na mesma Figura 4 5 desde que esteja
149. estr e 4 Fase Medi o da cobertura dos crit rios estruturais pelo conjunto de casos de teste Tune e 5 Fase Avalia o dos resultados obtidos Vale ressaltar que na realiza o do teste estrutural ser utilizada como apoio a Ferramenta JaBUTi O intuito aqui est em mostrar a capacidade do teste estrutural como meio para realizar a an lise de corretude de um programa m vel escrito em java e em contrapartida mostrar que a adapta o da Ferramenta JaBUTi para testar agentes m veis foi implementada com xito Esta Subse o dividida em tr s partes onde constam as tr s fases da atividade de teste o item 5 1 3 1 consta a aplica o do teste funcional apresentando a especifica o dos requisitos funcionais os casos de testes gerados e a cobertura dos requisitos funcio nais especificados O item 5 1 3 2 consta a aplica o do teste estrutural apresentando a especifica o dos crit rios a serem analisados os casos de testes gerados e a cobertura dos crit rios estruturais Por fim no item 5 1 3 5 apresentado o resultado da compara o dos testes aplicados funcional versus estrutural 5 1 Jogo Boz 70 5 1 3 1 Boz 1 Fase Cobertura dos Requisitos Funcionais por Tyunc Aqui o intuito est em averiguar se as caracter sticas do agente m vel s o rea lizadas ou seja se as fun es que o BozoClient2 deve desempenhar est o funcionando corretamente Para tanto ser aplicado o teste f
150. ge Vilobileldessage amp newServerAddr String a Sm etNickList VilobileMessage amp messageType zint un n 3 VaddNicki setilessage VserverlligrationMessage Darren Psp Vgetilessage VsenverlligrationMessage rang ss ale cant setNickList setUserid Sruni SoetNickList PoetUserd setListTyped Figura 5 20 Classes que comp em o pacote agents 5 2 2 1 Conex o de Clientes Primeiramente o servidor principal MainServer iniciado em algum n da rede S existe uma inst ncia deste servidor na rede que fica rodando continuamente no host onde foi iniciado O MainServer aguarda conex es de novos clientes na porta onde 5 2 Mobile Chat 93 Figura 5 21 Classes que comp em o pacote chat Figura 5 22 Classes que comp em o pacote client 5 2 Mobile Chat 94 UserList users Vector 5 z o ul UserList inc outingTable Vector amp curentid int a i bestHost String Pc par clientHostingServer String rem oveUser VaeiNewido Vchatsener VgetNick Vchatsener getUser aetUserList VosString VgetRoutingTable VgetHosts setUserList OnickExists VsetRoutingTable isHostConnected setClientHostingServer clientCounto getClientHostingServer VgetickListo setBestHost printUserList getBestHost amp pactiveServer String Vilainserver VilainServer VgetactiveSenver VsetactiveServer Figu
151. get HandlerClass get Root Named get HandlerNameQ Exception Sget Dynamic Link Source from lang set Dynamic Link Source is Synchronous TransfersO Pq R serSynchronousTransfersQ Exception set Operation PException get Operation add Object Ge defauk Properties Properties A e properties Properties add Clas ses h Server add Olas ses setPropertyO Mget Classes SgetPotd Sget ClassLoader getTimeout Qget Class Space is Compression MO get Source is DebugOn his Code Exception Yship is Errors On isttess ages MO h Code Exception ad dUbiquitousPack agel Situ Code Exception ad dUbiquitousClass Miu Code Exception is Ubiquit cust Qu Code Exception create Group hasintemalO get SharedClass Spaced SgetPrivate Class Spaced boo SshutDownd QgetServer QgetServer Brunt SgetintemalO to Stringd Sprint StackTraceQ Sprint StackTrace Sprint StackTraceQ A MuConstants EGPACKAGE NAME String UNKNOWN int PORTkey String Be MPRESSIONKey String ERRORSkey String IESSAGESkey String DEBUGkey String TIMEOUT long amp RVER PORT int GROUP int Bs DYN LINK int Duplicate Class ExceptionQ Duplicate Class Exception Object from lang EE SunpackQ 18 ClassSpace Sget Current contains ClassO removeClassO SgetClassO copy ClassToO copy ClassFromO SmoveClassTo SmoveClassFromQ Visto Size getClass Byte Code ClassLoader from lang
152. go Boz 63 de teste realizada em tal exemplo 5 1 Jogo Boz O objetivo desta se o testar um estudo de caso que implementa um jogo de dados que tem por objetivo acumular o maior n mero de pontos este denominado de Bozo O Boz utiliza cinco dados os quais poder o ser rolados no m nimo uma e no m ximo tr s vezes para cada jogada no final da jogada marcado o valor da pontua o obtida A realiza o desta pontua o se d atrav s de um placar onde s o anotados os valores obtidos para cada item contido no mesmo Os itens que comp em o placar s o determinados atrav s dos resultados obtidos com a rolagem dos dados sendo estes e ONES valor da soma dos n meros dos dados que tiverem o valor igual a 1 e TWOS valor da soma dos n meros dos dados que tiverem o valor igual a 2 e THREES valor da soma dos n meros dos dados que tiverem o valor igual a 3 e FOURS valor da soma dos n meros dos dados que tiverem o valor igual a 4 e FIVES valor da soma dos n meros dos dados que tiverem o valor igual a 5 e SIXES valor da soma dos n meros dos dados que tiverem o valor igual a 6 e 3 OF KIND valor da soma dos n meros de 3 dados que tiverem o mesmo valor e 4 OF KIND valor da soma dos n meros de 4 dados que tiverem o mesmo valor e FULL HAND vale 25 pontos ocorre quando existem 3 dados com valor igual a x e 2 dados com valor igual a y e SMALL SEQUENCE vale 30 pontos ocorre quando existem 4 dados c
153. habilitar ou desabilitar casos de teste e Properties permite mudar o estilo da interface gr fica e checar as classes que comp em o projeto corrente e Update indica que h casos de teste adicionais que podem ser importados no projeto de teste corrente e Help mostra a ajuda on line da ferramenta e o nome dos criadores da ferramenta Na JaBUTi VINCENZI et al 2003 a atividade de teste requer a cria o de um projeto de teste Para criar um projeto necess rio acessar o menu File gt Open Class uma caixa de di logo aparecer como na Figura 4 11 O testador seleciona o diret rio e o arquivo da classe desejada conforme ilustra o da Figura 4 12 e a ferramenta automaticamente identifica o pacote que a classe pertence O campo Classpath cont m o conte do corrente da vari vel de ambiente CLASSPATH e possibilita a inclus o de caminhos adicionais Esta tela finalizada com um clique no bot o OK 4 5 Funcionalidades e Sess o de Projetos de Teste 53 Open class file ei es cy BE Wti bindiblbcel jar C Jabuti pinilib viewsalljarCAJab abuti binilibidom jar C AJ Shared Documents abuti binvibljaxp api jar DVDICD RW Drive D C My Network Places File Name BozoClient2 class Files of Type Java bytecode class files Figura 4 11 Caixa de Di logo Open Class Open class file Lookin C cient
154. icas referentes a lingua gem Java as fases de programa o em Java a independ ncia de plataforma provida pela Maquina Virtual Java e as instru es de bytecode utilizadas pela Ferramenta JaBUTi Na Se o 4 2 ser descrito como s o gerados os grafos atrav s da Ferramenta JaBUTi A Se o 4 3 descreve a forma que a Ferramenta JaBUTi analisa o peso de cobertura do teste aplicado atrav s do GFC do programa Na Se o 4 4 descrito de forma sucinta o processo de instrumenta o que a Ferramenta JaBUTi realiza A Se o 4 5 apresenta as principais fun es que a Ferramenta JaBUTi disponibiliza bem como as ferramentas de an lise de cobertura e slice Na Se o 4 6 apresentada a Ferramenta JaBUTi MA que uma adapta o da Ferramenta JaBUTi com extens o para suportar o teste de agentes m veis 4 1 Java JVM e Instru es Bytecode A Ferramenta JaBUTi suporta programas desenvolvidos atrav s da linguagem Java Tal foco interessante devido ao grande n mero de programadores utilizar a lin guagem Java como principal meio de desenvolvimento de software Dentro deste contexto verifica se a grande necessidade de empregar a atividade de teste em programas e com ponentes desenvolvidos em Java visando oferecer suporte qualidade de tais softwares A linguagem Java amplamente utilizada n o s pelas suas caracter sticas cl ssicas pois tamb m como em CHAN GRIFFITH IASI 1999 uma linguagem de programa o orient
155. im na Subse o 5 1 3 detalhada a atividade de teste realizada em tal jogo 5 1 1 Execu o do Jogo Boz Para executar o jogo Boz necess rio primeiramente a execu o de um servidor BozoServer em seguida de um cliente BozoClient2 Para tanto deve se inicializar o servidor que ser ativado na porta padr o 1968 conforme ilustrado na Figura 5 1 da seguinte forma java bozoserver BozoServerImpl Em seguida deve se executar o cliente que ir receber como par metro o host do servidor endere o IP e porta 1968 e ser inicializado no host local na porta padr o 2000 Figura 5 2 da seguinte forma java client BozoClient2 localhost 1968 localhost 5 1 Jogo Boz 65 Ainda na execu o do cliente deve se informar o nome do usu rio como na Figura 5 2 Ent o o jogo iniciado realizando as treze jogadas ap s o t rmino do jogo apresentada na tela a pontua o obtida e cada jogada realizada como ilustrado na Figura 5 3 WINNT System32 cmd exe BozofAgent gt cd C NBozofgent Bozofgent gt java cp C Jabuti bin lib mucode jar bozoserver BozoServerImpl sage java BozoServerImpl r r reproduz jogadas do usuBrio em par metros joga normal ucode MuServer activated on port 1968 Figura 5 1 BozoServer iniciado WINNT System32 cmd exe Bozofgent gt cd C NBozofigent Bozofgent gt java cp C Jabuti bin lib mucode jar client BozoClien
156. ind 12 Roll 2 5 4 4 4 6 Roll 2 6 3 6 1 Roll 0 1 1 4 2 1 4 of a kind 7 Kept 2 Kept 2 T Kept 0 X X X Full hand 25 Placed on Fours Placed on Sixes Roll 1 1 1 5 1 1 Small seq 0 Kept 1 X X X X Large seq 40 Round 3 et Round 7 Roll 2 1 1 3 1 1 5 of a kind 0 Roll 0 2 1 1 1 2 Roll 0 4 6 6 4 1 Kept 2 cana Kept 0 X X X Kept 0 X X Placed on 4 of a kind Roll 1 6 1 1 1 3 Roll 1 4 6 6 2 3 Kept 1 X xX X Kept 1 xX X Round 11 Roll 2 6 1 1 1 3 Roll 2 3 6 6 5 1 Roll 0 6 3 2 5 3 Kept 2 7 Kept 2 TR Kept 0 X seit Round O Placed on 3 of a kind Placed on Threes Roll 1 6 4 4 2 2 Roll 0 2 6 5 5 1 Kept 1 X Kept 0 X X Round 4 Round 8 Roll 2 6 3 5 5 Roll 1 4 5 5 5 4 Roll 0 4 6 4 4 2 Roll 0 2 5 4 6 2 Kept 2 Kept 1 TE Kept 0 X X X Kept 0 X X Placed on 5 of a kind Placed on Full hand Roll 1 4 2 4 4 6 Roll 1 2 2 3 2 2 Kept 1 X X X Kept 1 X X xX X Round 12 k Round 1 Roll 2 4 5 4 4 2 Roll 2 2 2 4 2 2 Roll 0 1 6 5 3 5 Roll 0 6 1 5 4 1 Kept 2 Toor Kept 2 Tef Kept 0 X Kept 0 X X Placed on Chance Placed on Twos Roll 1 6 6 5 1 3 Roll 1 5 1 2 6 1 Kept 1 X X Kept 1 X X Round 5 Round 9 Roll 2 6 6 5 6 3 Roll 2 6 1 5 1 Roll 0 1 5 3 2 4 Roll 0 4 1 2 4 3 Kept 2 Kept 2 T Coe ae Kept 0 7 7 7 7 Kept 0 X X X Placed on
157. iniciado na porta 2005 java server Server port 2005 N o importando a forma utilizada para executar o servidor ap s ser iniciado ele fica aguardando conex es de novos clientes na porta em que est sendo executado Para que o usu rio possa se conectar ao servidor para participar de uma sess o de chat ele deve utilizar a classe Client do pacote client Diferente do servidor o cliente possui uma interface gr fica que permite ao usu rio digitar mensagens e comandos para 540s comandos devem ser digitados dentro do diret rio onde se encontram os pacotes do Mobile Chat e o classpath deve estar configurado de maneira correta ou seja informando tanto o diret rio corrente quanto o arquivo mucode jar 5 2 Mobile Chat 85 interagir com outros clientes e com o servidor Assim para invocar o cliente a seguinte linha de comando deve ser utilizada java client Client lt nick gt lt ipCliente porta gt lt ipServidor porta gt lt arqRoteamento gt Onde nick o par metro que trata do apelido utilizado pelo usu rio sendo que cada usu rio possui um apelido distinto O segundo par metro especifica o endere o IP do cliente e a porta em que o servidor cliente ClientServer ir utilizar para execu o possibilitando que o servidor principal MainServer estabele a comunica o com o cliente O terceiro par metro caracteriza o endere o IP da m quina servidora em conjunto com a porta onde o servidor principal MainS
158. itos funcionais 2 horas para criar os casos de teste 3 horas para aplicar os casos de teste 10 horas para corre o 2 horas para replicar os casos de teste e 5 2 Mobile Chat 108 1 hora para gerar um relat rio simples sobre a atividade de teste 5 2 3 2 Chat 2 Fase Cobertura dos Crit rios Estruturais por Testr Nesta segunda fase de teste o seguinte plano foi elaborado 1 Especificar os crit rios estruturais a serem testados 2 Gerar casos de teste baseados na an lise de cobertura provida pela JaBUTi MA 3 Aplicar os casos de teste na JaBUTi MA at conseguir 100 de cobertura dos crit rios estruturais com a exclus o dos itens n o execut veis Iniciando esta atividade de teste foi estabelecido que seria testado os seguintes crit rios estruturais Todos N s Todas Arestas e Todos Usos Em seguida foi gerado o conjunto de casos de teste Testr Ap ndice F com o aux lio da ferramenta de an lise de cobertura da JaBUTi Assim Testr 01 02 03 04 05 06 07 08 09 10 Vale ressaltar que a ferramenta de an lise de cobertura da JaBUTi ajuda o tes tador a gerar casos de teste pois apresenta em cor vermelha a parte do c digo mais interessante de ser coberta sendo que a cobertura da rea vermelha implica na cobertura de boa parte do c digo A Tabela 5 13 apresenta 100 de cobertura de todos os crit rios estruturais com rela o todo o projeto de teste ou seja com rela o a todas as classe
159. l e indecid vel em geral verific lo Um caminho completo considerado execut vel se existir alguma associa o de valores s vari veis de entrada que cause a execu o do caminho Um caminho definido como execut vel se ele um subcaminho de um de terminado caminho completo execut vel A executabilidade de um caminho depende da sem ntica e n o somente da sintaxe do programa Neste cap tulo ser o descritos na Se o 3 1 os crit rios baseados em fluxo de controle e um c digo de exemplo para mostrar como satisfazer tais crit rios de teste Na Se o 3 2 s o descritos os crit rios baseados em fluxo de dados e tamb m apresenta um exemplo mostrando como satisfazer tais crit rios A Se o 3 3 apresenta alguns exemplos de ferramentas que apoiam o teste estrutural 3 1 Crit rios Baseados em Fluxo de Controle Os crit rios baseados em fluxo de controle foram os primeiros a surgirem como exemplos temos os crit rios conforme Weyuker RAPPS WEYUKER 1985 e Todos N s requer que todos os n s blocos de comandos sequenciais de um pro grama sejam executados pelo menos uma vez e Todos Arcos requer que todos os arcos comandos de transfer ncia entre blocos sejam executados e Todos Caminhos requer que todos os caminhos de um programa sejam executa dos O crit rio de Todos Caminhos em geral imposs vel de ser aplicado devido poder gerar um n mero infinito de requisitos de teste E
160. lidos na interface do cliente com os apelidos de todos os clientes conectados Ent o o agente JoinChatSession volta para o cliente com o n mero de identi fica o do usu rio alterando a barra de t tulo da interface do cliente com as informa es do mesmo e habilitando o campo de entrada de texto Caso o agente JoinChatSession n o retorne isso significa que o cliente n o conseguiu estabelecer a conex o este remo vido da lista de participantes e uma mensagem de notifica o enviada para os demais participantes informando que o cliente que estava tentando se conectar n o vai mais par ticipar da se o de chat Vale ressaltar que devido aos agentes serem aut nomos n o existe uma conex o constante entre os clientes e o servidor ou seja h possibilidade de troca de mensagens em qualquer situa o uma mensagem sendo independente das demais O estabelecimento de conex o entre o cliente e o servidor apenas significa que o servidor est ciente da exist ncia do cliente e armazena o mesmo em sua lista de clientes conectados Ap s conectado o usu rio est apto trocar mensagens de texto com os outros usu rios 5 2 2 2 Comunica o entre Usu rios A comunica o entre usu rios no Mobile Chat efetuada atrav s da troca de mensagens Para que um usu rio possa enviar uma mensagem para os demais preciso primeiro digitar o texto da mensagem na caixa de entrada e em seguida pressionar a tecla ENTER
161. ll 0 6 2 6 4 1 Kept 1 X X Roll 1 1 4 3 4 4 Roll 1 6 6 6 5 3 Kept 0 X X Roll 2 5 3 5 2 3 Kept 1 X X X Kept 1 X X X Roll 1 6 6 6 6 5 Kept 2 7 7 7 Roll 2 5 4 2 4 4 Roll 2 6 6 6 4 3 Kept 1 X X X X Placed on Fives Kept 2 7 Kept 2 7 Roll 2 6 6 6 6 Placed on Fours Placed on Sixes Kept 2 7 7 7 Round 8 Placed on Full hand Roll 0 4 2 1 6 4 Round 11 Round 2 Kept 0 X X Roll 0 4 6 1 3 6 Roll 0 3 5 1 1 2 eee Round 5 Roll 1 4 2 3 2 4 Kept 0 X Kept 0 X X Roll 0 4 2 6 5 3 Kept 1 X X Roll 1 1 4 1 4 6 Roll 1 1 6 1 1 5 Kept 0 7 Roll 2 4 1 2 3 4 Kept 1 X X Kept 1 X X X Placed on Large seq Kept 2 Roll 2 1 3 1 3 2 Roll 2 1 1 1 1 1 Placed on Small seq Kept 2 Kept 2 7 Round 6 Placed on Ones Placed on 5 of a kind Roll 0 3 4 1 6 3 set Round 9 Kept 0 X X Roll 0 4 2 3 3 5 Round 12 sete Round 3 Roll 1 3 4 6 3 3 Kept 0 X X Roll 0 6 3 1 4 2 Roll 0 6 3 1 4 2 Kept 1 X xX X Roll amp 5 1 3 3 3 Kept 0 X Kept 0 X X X Roll 2 3 6 6 3 3 Kept 1 X X X Roll 1 3 5 1 1 2 Roll 1 4 3 2 4 2 Kept 2 7 Roll 2 333 Kept 1 X Kept 1 X KX X X Placed on 3 of a kind Kept 2 7 7 Roll 2 4 4 1 4 2 Roll 2 4 24 2 Placed on 4 of a kind Kept 2 Ed Kept 2 RO a x Round 7 Placed on Twos Placed on Chance R
162. localizada no conector 2 na tabela de vari vel local Assim a Ferramenta JaBUTi VINCENZI et al 2003 chama essa vari vel de L 2 Em VINCENZI et al 2003 quando tem se L O sempre se refere a this o objeto corrente Dessa forma considerando as instru es de bytecode da Figura 4 5 usa se L O out para indicar que out uma vari vel de inst ncia Considerando a refer ncia de arrays e seus componentes tem se L O v para representar a pr pria refer ncia do array v da Figura 4 5 e L O v para representar um determinado componente do array Vincenzi et al VINCENZI et al 2003 estende a an lise de depend ncia de Zhao ZHAO 2000 para gerar grafos def uso incluindo vari veis de inst ncia vari veis est ticas refer ncia de array e componente de array ao determinar o conjunto de vari veis usadas Por fim cada n do grafo def uso possui dois conjuntos 1 Um conjunto de defini o D incluindo todas as vari veis definidas no n 2 Um conjunto de uso U incluindo todas as vari veis usadas no n 48Cada objeto tem acesso a uma refer ncia a ele pr prio chamada de refer ncia this A refer ncia this implicitamente utilizada para referenciar vari veis de inst ncia e m todos de um objeto DEITEL DEITEL 2001 4 3 A An lise de Cobertura da JaBUTi 47 A Figura 4 7 apresenta o conjunto completo de vari veis definidas e usadas do m todo Vet average tendo como refer ncia o c digo de bytecode ilustrado
163. logo em seguida pressionar a tecla ENTER ent o uma mensagem informando que houve um erro de sintaxe deve ser exibida na caixa de mensagens 22 Quando o usu rio digitar um comando inv lido ou seja um comando inexistente ent o uma mensagem informando que o comando digitado n o foi encontrado dever ser exibida para o usu rio atrav s da caixa de mensagens 23 Ao invocar o comando help uma mensagem contendo um sum rio dos comandos dispon veis bem como uma breve descri o de cada um dever ser exibida na caixa de mensagens 24 Ao invocar o comando quit o cliente dever ser desconectado do servidor e a aplica o ser finalizada 25 Ao invocar o comando printroutes a tabela de custo do servidor dever ser exibida na sa da padr o do cliente 26 Ao invocar o comando stats e o cliente n o estiver hospedando o servidor ent o dever o ser exibidas mensagens na caixa de texto do cliente informando a localiza o do servidor principal e do servidor ativo 27 Ao invocar o comando stats e o cliente estiver hospedando o servidor ent o uma mensagem notificando que o servidor est em execu o localmente no cliente dever ser exibida 28 Ao invocar o comando restore e o cliente n o estiver hospedando o servidor ent o uma men sagem de erro dever ser exibida na caixa de texto do cliente informando que o servidor n o est em execu o localmente 29 Ao invocar o
164. luno de inicia o cient fica Gustavo Rondina que n o mediu esfor os para me ajudar na conclus o deste Agrade o com profundo respeito e afeto aos meus queridos professores de mes trado em especial Dino F tima Mucheroni e Jorge pelos ensinamentos e sobre tudo pela amizade Obrigada E por fim agrade o com todo amor e amizade aos meus queridos amigos de mestrado os Fora da Curva L o Piva Luiz Claudia Adriane Lucilena Gislene e Rosiane pelos sorrisos abra os e risos Por serem presentes mesmo longe Por serem amigos de modo infinito de modo a n o poder esquecer a n o poder escrever em palavras exatas a defini o de nossa amizade De modo a perpetuarem em um cantinho do meu cora o Obrigada pelo carinho s posso retribuir com muitos risos e bom humor Que Deus aben oe a todos e um sincero muito obrigada Tente e n o diga que a vit ria est perdida se de batalhas que se vive a vida Tente outra vez Raul Seixas TURCI Elisangela Citro Utiliza o de Teste Estrutural em C digo M vel Java 2004 x f Disserta o Mestrado em Ci ncia da Computa o Centro Universit rio Eur pides de Mar lia Funda o de Ensino Eur pides Soares da Rocha Mar lia SP 2004 RESUMO Este trabalho utiliza alguns crit rios do teste estrutural com o intuito de testar c digo m vel atrav s de uma ferramenta de aux lio atividade de teste Para tanto especifica os mecanismos q
165. m importante apresentar o termo agente m vel Segundo Fuggeta FUGGETTA PICCO VIGNA 1998 na rea de sistemas distribu dos este termo utilizado para designar um componente de software que capaz de se movimentar entre diferentes ambientes de execu o Esta capacidade que permite que programas possam trafegar livremente pela rede depende da tecnologia de c digo m vel empregada Tal tecnologia engloba lingua gens de programa o e seus suportes em tempo de execu o Fuggeta et al FUGGETTA PICCO VIGNA 1998 apresenta tr s dimens es para o processo de desenvolvimento de Sistemas de C digo M vel tecnologia paradigmas de projeto e dom nio de aplica es Tecnologia diz respeito s linguagens e aos mecanismos que permitem e d o suporte mobilidade de c digo Paradigmas de projeto referem se arquitetura de aplica o utilizada podendo ser cliente servidor c digo por demanda execu o remota e agente m vel E dom nios de aplica o s o classes de aplica es que compartilham o 2 1 Mecanismos de Suporte ao C digo M vel 6 mesmo objetivo geral por exemplo recupera o de informa es distribu das documentos ativos servi os avan ados de telecomunica o controle e configura o de dispositivos re motos gerenciamento e coopera o de wokflows redes ativas e com rcio eletr nico PICCO 2001a Neste cap tulo ser o descritos na Se o 2 1 os mecanimos que d o supor
166. m sido realizadas para melhorar o desenvolvimento e a execu o de tais aplica es A mobilidade de c digo uma nova t cnica para contribuir com o desen volvimento e execu o de sistemas distribu dos complexos Isto se deve ao fato de que a mobilidade de c digo permite desenvolver sistemas mais configur veis customiz veis flex veis e escal veis tais caracter sticas s o essenciais para sistemas distribu dos PICCO 2000 V rias linguagens t m sido propostas para implementar sistemas de c digo m vel conforme citado no Cap tulo 2 A API uCoDE foi desenvolvida em linguagem Java Diferente de outras linguagens propostas para suportar c digo m vel a wCODE al m de oferecer primitivas de suporte mobilidade de c digo permite que o desenvolvedor defina suas pr prias primitivas de mobilidade incluindo sua pr pria no o de agente m vel Este cap tulo tem o objetivo de apresentar aplica es desenvolvidas em Java uti lizando a API wCoDE para alcan ar a mobilidade do c digo implementando o paradigma de agente m vel Estas aplica es foram desenvolvidas com o intuito de serem testadas para evidenciar que a utiliza o do teste estrutural em c digo m vel uma boa forma de comprovar a corretude do mesmo Para tanto foram desenvolvidos e apresentados dois programas o primeiro um jogo denominado Boz que implementa um cliente que um agente m vel e um servidor com o qual o agente estabelece comunica
167. mais de 150 casos de teste e destes apenas 19 cobriram um novo crit rio estrutural Tais casos de teste foram os de n mero 01 02 03 04 05 06 07 08 11 13 16 21 29 31 37 38 66 68 e 87 em ordem de execu o apresentados no Ap ndice C os demais casos de testes que n o obtiveram xito na cobertura foram exclu dos pois n o houve o porqu de apresent los Vale esclarecer que existe um conjunto Testr 01 02 03 04 05 06 07 08 11 13 16 21 29 31 37 38 66 68 87 que cont m os casos de teste selecionados para testar os crit rios estruturais pertinentes ao agente m vel BozoClient2 A Tabela 5 3 apresenta a cobertura dos crit rios estruturais com rela o aos 19 casos de teste que obtiveram xito Tais informa es foram capturadas atrav s dos relat rios emitidos pela pr pria Ferramenta JaBUTi Vale elucidar que na Tabela 5 3 a primeira coluna refere se aos n meros dos ca sos de testes selecionados a segunda coluna Todos N s uma mescla de duas colunas primeiro apresenta a quantidade de item coberto do total de itens existentes e se gundo apresenta a porcentagem da cobertura obtida e as demais colunas destinam se respectivamente aos crit rios Todas Arestas Todos Usos e Todos Potenciais Usos Com base na Tabela 5 3 pode se verificar que atrav s destes 19 casos de teste gerados com sucesso houve a cobertura de 100 dos requisitos estruturais execut veis A dur
168. mitir ao usu rio visualizar todos os dados do programa composta de sete ferramentas rAtac rRegress rVue Slice tProf Find Diff que possibilitam compreender depurar testar manter e analisar programas escritos em C ou C O testador pode visualizar o c digo fonte do programa atrav s de cores INC 1998 LI et al 1999 HORGAN LONDON LYU 1994 34A System to Select and Evaluate Tests 3 5 Software understanding system 3 8 Ferramentas de Teste Estrutural 34 O pr ximo cap tulo descreve uma ferramenta de teste chamada JaBUTi apre sentada em VINCENZI et al 2003 que foi adaptada sendo denominada de JaBUTi MA conforme DELAMARO VINCENZI MALDONADO 2004 e utilizada para testar os c digos m veis implementados como estudos de casos para este trabalho 35 4 JaBUTi Para auxiliar a aplica o de t cnicas de teste necess ria a utiliza o de ferra mentas de apoio Sendo o teste de software como dito anteriormente respons vel por 40 do esfor o utilizado num projeto de desenvolvimento de software a utiliza o de fer ramentas de apoio pode reduzir o tempo despendido para a atividade de teste sem reduzir a efic cia PRESSMAN 1995 O uso de ferramentas automatizadas que auxiliam a atividade de teste est cres cendo e melhorando a confiabilidade dos sistemas baseados em computador Vincenzi et al em VINCENZI et al 2003 apresenta uma ferramenta de teste baseada em fluxo de d
169. n o ser iniciado 5 Quando o servidor for executado sem nenhum par metro ele dever ser iniciado na porta 1968 6 Quando o servidor for executado sem nenhum par metro e a porta 1968 n o estiver dispon vel ent o o servidor n o dever ser iniciado 7 Quando o servidor for executado com a op o port seguido por um n mero que corresponda porta em que se deseja executar o servidor e tal porta n o estiver em uso ent o o servidor dever ser iniciado na porta especificada 8 Quando o servidor for executado com a op o port seguido de um n mero que corresponda porta em que se deseja executar o servidor e tal porta j estiver em uso ent o o servidor n o ser iniciado 9 Ao executar um cliente e o endere o do ClientServer informado no segundo par metro da linha de comando n o corresponder ao endere o associado m quina onde o cliente est sendo executado ent o uma mensagem de aviso dever ser exibida informando que o endere o est incorreto O cliente n o ser iniciado Ap ndice D Mobile Chat Requisitos Funcionais 140 10 Ao executar um cliente e o endere o do MainServer informado no terceiro par metro da linha de comando n o corresponder ao endere o associado m quina onde o servidor principal est sendo executado ent o o cliente ser iniciado por m n o conseguir estabelecer conex o com o servidor e uma caixa de di logo dever aparecer perguntando sobre o desejo
170. nciar a c pia do recurso depois esta c pia transferida juntamente com a unidade de execu o para o ambiente computacional de destino Figura 2 5c e Re liga o quando uma unidade de execu o est ligada a um recurso por tipo ent o depois da migra o da unidade de execu o a liga o passa a referenciar outro recurso no ambiente computacional de destino Para tanto o recurso do 2 2 Linguagens e Ambientes para Mobilidade 13 ambiente computacional de destino deve ser do mesmo tipo do recurso do ambiente computacional de origem Figura 2 5d Na se o seguinte ser o apresentados alguns exemplos de linguagens e ambientes existentes para a implementa o de um c digo m vel 2 2 Linguagens e Ambientes para Mobilidade Na gera o de Sistemas de C digo M vel importante contar com uma linguagem de programa o que d suporte para o desenvolvimento do c digo A seguir ser o apre sentadas algumas linguagens e ambientes de programa o que d o suporte a mobilidade de c digo Agent Tcl desenvolvida pela Universidade de Darthmouth prov um interpre tador Tcl 8 estendido com suporte mobilidade forte Unidades de execu o executam em espa os de endere os separados Elas podem compartilhar somente recursos fornecidos pelo sistema operacional b sico A abstra o do ambiente computacional implementada pelo sistema operacional e pela linguagem de suporte em tempo de execu o FUGGETTA
171. nciaram por m marcou se o item FOUR OF KIND do placar requisito 22 Aqui o item FOUR OF KIND foi descartado ou seja a pontua o foi igual zero e O round 10 cobriu os requisitos 21 13 e 16 pois na primeira rolada nenhum dado foi selecionado requisito 21 na segunda rolada selecionou se um dado com o valor 3 cobrindo o requisito 13 e na terceira rolada continuou com apenas um dado com o valor 3 cobrindo novamente o requisito 16 marcando portanto o item THREES e O round 11 cobriu os requisitos 21 15 e 20 pois como no round anterior na primeira rolada nenhum dado foi selecionado requisito 21 na segunda rolada selecionou se o dado com o maior valor requisito 15 na terceira rolada os valores apresentados n o satisfizeram os placares dispon veis assim marcou se o descarte do item LARGE_SEQ requisito 20 5 1 Jogo Boz 73 e O round 12 satisfez os requisitos 24 e 08 no qual na primeira e segunda rolada foram selecionados dois dados valores 3 e 4 do in cio de uma pequena sequ ncia de quatro valores com a aus ncia do valor 2 requisito 24 e na terceira rolada verificou se que n o houve aumento da segu ncia dos dados ent o foi marcado o item SMALL SEQ requisito 08 Continuando a avalia o dos casos de teste funcionais ser o analisados somente os requisitos que ainda n o foram cobertos Portanto foi verificado que o caso de teste de n mero 02 cobriu tr s novos requisitos 06 10 e 23 Esta
172. nda com defeitos n o descobertos Diante destes fatos uma ferramenta de teste surge como aux lio para a atividade de teste proporcionando um teste mais efetivo e facilitando a an lise dos resultados do teste Segundo Chaim CHAIM 1991 uma ferramenta de teste estrutural deve prover as seguintes atividades an lise est tica do c digo fonte instrumenta o do c digo medi o da cobertura de um conjunto de casos de teste e produ o de relat rios As ferramentas de teste podem utilizar crit rios de teste estruturais para gerar casos de teste que satisfa am tais crit rios ou analisar a cobertura de um conjunto de casos de teste interessante que uma ferramenta tamb m possa auxiliar o tratamento da n o executabilidade documentar o processo de teste e gerar a visualiza o de grafos CHAIM 1991 A maioria das ferramentas de teste estrutural faz an lise de cobertura de um conjunto de casos de teste segundo algum crit rio de teste selecionado Elas apresentam ao usu rio quais requisitos de teste s o exigidos para que os crit rios sejam satisfeitos 3 8 Ferramentas de Teste Estrutural 32 objetivando orientar e auxiliar os usu rios na elabora o dos casos de teste A seguir s o apresentadas algumas ferramentas de teste estrutural que suportam a aplica o de crit rios baseados em an lise de fluxo de dados RXVP80 uma ferramenta de teste comercial distribu da pela General Re search Corporation San
173. nder User amp serverGone boolean amp newNick String amp yisMainServer boolean oldNick String sender User LeaveChatSession state int amp costTable Vector E Po pnickState int amp newServer String peering ae in atServerAddr String ERR sendLeavelessage NickChangeMessage clientAddr String Fat era VremoveSingleNick NickChangeMessage amp mainServerAddr String olaser ai r Vrun amp state int Sn aaka Su SiinGhatSessiong E dem SpawnMigrationAgent JoinChatSession erase pee QuserList UserList Sun S lt lt final gt gt pa ost String SsenahickListt state int i Goclientaddr String sendSingleNick amp currentServer ddr String YsendJoinhessage USE SbmainServeradar String ServerAgent amp clientHostingServer String uno VaetNewSener Da ea Moan igrationAgent Ea Gul UserList amp clientAddr String ServerLeavingMessage state int E EEE VserverLeavingessage SGrabuserListagent gemia rung ANA V Ef uagen F PrintRoutingTable Da Restore ServerAgent amp routingTable Vector lt j YR realRoutingTable Vector Ab amp userList UserList pclientAdar String amp mainServerAddr String state int RestoreServerAgent PrintRoutinaTable RestoreServerAgent PrintRoutingTable runt runt NickListMessage ca race oa message String i a ee sgid in S EEE ickListMessage ree ded alas SimpleMessageAgent NickListilessa
174. ng BozoServerimpl newGame oot EScurrThreado SgetPort aetTimeout isCompressionOn VisDebugOn VisErrorson isMessagesOn getSharedClassSpace getPrivateClassSpace VaddUbiquitousClass VaddUbiquitousPackage setProperty shutDown setPrivateKey setPublicKey etPublic etPrivate decrip xencrip eadPasswdFile itePasswdFile addUsers Smain BozoGame Potries int grounds int AbstractBozoClient esignat byte dump bytel dices intf gident String Bescore int amp r2 Random VabstractBozoClientt id String VabstractBozoClient lt lt final gt gt setident BozoGame VaetBytes VgetitaxRolls ES getPrivate Vroll EPgetPublic setScore S lt lt final gt gt sign getScore lt lt final gt gt verify getCompleteScore et nes o et3k Saetsk SgetF ull getSm0 P g etGen Vgetvalue O IBozoGame 9 final gt gt ONES int 0 Vgetvalue 4 lt final gt TWOS int 1 lt lt final gt gt THREES int 2 o lt lt final gt gt FOURS int 3 o lt lt final gt gt FIVES int 4 lt lt final gt gt SIXES int 5 lt lt final gt gt THREE OF KIND int 6 lt lt final gt gt FOUR_OF_KIND int 7 lt final gt gt FULL HAND int 8 o lt lt final gt gt SMALL_SEQ int 9 4 sfinal gt BIG_SEQ int 10 9 lt lt final gt gt
175. o mais o servidor ativo A migra o baseada na tabela de custo n o mais um tipo de migra o e sim uma forma de acionar a migra o do servidor Aqui a migra o ocorre de forma aut noma Esta autonomia de migra o proporcionada atrav s de varia es ocorridas na rede apresentadas a seguir O cliente estando conectado envia para o servidor o agente SpawnMigrationAgent que tem a fun o de disparar a migra o aut noma do servidor caso seja vantajosa Tal vantagem verificada atrav s de uma an lise na tabela de custo Dessa forma sempre que um cliente se conectar esse agente ser enviado para o servidor que poder ou n o migrar conex o de um novo usu rio pode ser vista como uma altera o no ambiente da rede e o agente SpawnMigrationAgent faz com que o servidor responda a esta altera o migrando caso houver necessidade Chegando no servidor o agente SpawnMigrationAgent obt m o endere o que apresenta custo m dio m nimo em rela o a todos os outros n s da rede e em seguida retorna ao cliente Estando no cliente o agente avalia o endere o obtido e caso houver necessidade a migra o realizada conforme j descrito nesta mesma se o Se o endere o obtido for o endere o do MainServer e o servidor itinerante estiver ativo em um n cliente ent o o agente SpawnMigrationAgent faz com que o servidor migre de volta para o MainServer atrav s do agente RestoreAgent No caso do endere o o
176. o ocorrido no servidor principal durante a sess o de chat como a inicializa o do servidor principal na porta padr o 1968 a inclus o de novos clientes na sess o de chat a apresenta o do melhor host para alocar o servidor ativo a migra o do servidor itenerante para um outro host e o endere o atualizado do servidor itenerante C WINDOWS system32 cmd exe do Mobiiechat gt ea C MobileChat MobileChat gt java server Server ucode MuServer activated on port 1968 Ana 127 0 0 1 2000 1 inserted flew client connected est Host 127 0 8 1 1968 Joao 127 8 0 1 2081 11 inserted lew client connected 1 est Host 127 8 8 1 2008 urrent server address 127 0 0 1 1968 lew server address 127 0 0 1 18888 Destination node address 127 08 8 1 2000 erver is migrating to 127 8 8 1 2008 ctive server is now 127 0 0 1 59405 ctive server is now 127 0 0 1 12345 Figura 5 12 Simula o de chat Execu o do servidor principal A Figura 5 13 apresenta o shell de execu o do cliente para o usu rio Ana onde s o apresentadas todas as informa es ocorridas durante a sess o de chat como as informa es referentes a conex o do cliente nick endere o dos hosts do cliente e do servidor principal o identificador do cliente gerado pelo servidor principal quando o cliente conectado que neste caso 0 a informa o sobre a migra o do servidor para a sua pr pria m quina e a porta atual que est
177. odavia como os requisitos funcionais especificados se referem todas as fun es do Mobile Chat n o h a possibilidade de se conseguir uma cobertura desej vel de todos os requisitos funcionais j que o conjunto T sm foi gerado na JaBUTi atrav s do teste aplicado somente nos agentes m veis ou seja no pacote agents Como o intuito deste trabalho testar c digo m vel foi selecionado apenas os requisitos que referenciam um agente m vel Assim foi constatado que os requisitos de n mero 05 07 14 16 20 24 25 26 29 36 40 41 42 43 e 48 ativam alguma fun o de mobilidade em um agente m vel A Tabela 5 15 apresenta a cobertura dos requisitos funcionais m veis citados As sim pode se verificar que o conjunto de casos de teste Testr obteve 100 de cobertura dos requisitos funcionais m veis sendo que os oito primeiros casos de teste foram suficientes para obter tal cobertura Tabela 5 15 Chat Cobertura dos Requisitos Funcionais M veis por Testr Detalhando a cobertura dos requisitos funcionais pelo conjunto de casos de teste Testr com base na Tabela 5 13 tem se que Test n s Testr arestas 101 02 03 04 05 06 07 08 09 e Testrusos 101 02 03 04 05 06 07 08 09 10 pu S Y D Y a ps Ao analisar que os oito primeiros casos de teste de Testr foram suficientes para cobrir 100 dos requisitos funcionais e se os conjuntos derivados de Testr Testr_n s Testrarestas
178. ole conforme VINCENZI et al 2003 e Linha cont nua representa fluxo de controle normal e Linhas tracejadas representa fluxo de controle de exce o A JaBUTi VINCENZI et al 2003 suporta a aplica o de tr s crit rios de teste es truturais todos n s todos arcos e todos usos Dependendo de qual crit rio esteja ativado o bytecode o c digo fonte ou o GFC colorido de um modo diferente As cores relacio nadas aos pesos fornecidos pela ferramenta referem alta ou baixa cobertura podendo serem vistos como sugest es para facilitar a gera o de casos de teste proporcionando uma cobertura maior com menos casos de teste Para avaliar a cobertura obtida a ferramenta fornece relat rios de teste perso nalizados que podem ser acessados a partir do menu Sumary e do menu Test Case conforme dito anteriormente Atrav s destes relat rios pode se avaliar a cobertura de cada classe sob teste com diferentes granularidades e decidir se uma determinada classe requer testes adicionais A JaBUTi VINCENZI et al 2003 oferece suporte avalia o de adequa o de conjunto de caso de teste e fornece orienta o na sele o dos mesmos Se existe um conjunto de teste pronto tal conjunto pode ser avaliado isso permite verificar se todas as senten as no componente foram executadas ou n o por este conjunto de teste Se n o casos de teste adicionais podem ser elaborados para melhorar a qualidade deste c
179. oll 0 5 3 5 6 2 Round 10 Kept 0 X X Roll 0 6 4 3 4 3 Round 4 Roll 1 5 3 5 6 3 Kept 0 X X 128 AP NDICE C Boz Conjunto de Casos de Teste Testr Neste ap ndice constam dos 150 casos de teste gerados para o Teste Estrutural somente aqueles que obtiveram xito na cobertura dos crit rios estruturais Todos N s Todas Arestas Todos Usos e Todos Potenciais Usos referentes ao jogo Boz Sendo as sim tem se que Testr 01 02 03 04 05 06 07 08 11 13 16 21 29 31 37 38 66 68 87 CASO DE TESTE 01 Ones 2 Kept 2 7 7 Kept 1 X X Twos 4 et Round 2 Placed on 3 of a kind Roll 2 3 4 6 3 1 Threes 6 Roll 0 6 3 6 6 3 Kept 2 7 7 7 Fours 8 Kept 0 X X X Round 6 Placed on Threes Fives 15 Roll 1 6 2 6 6 6 Roll 0 1 3 5 1 6 Sixes 24 Kept 1 X X X X Kept 0 X X Round 10 3 of a kind 23 Roll 2 6 2 6 6 6 Roll 1 1 2 3 1 4 Roll 0 6 3 1 4 1 4 of a kind 6 Kept 2 LOE Cg Kept 1 X x Kept 0 X Full hand 25 Placed on Sixes Roll 2 1 5 5 1 6 Roll 1 1 1 1 4 5 Small seq 30 Kept 2 Kept 1 X Large seq 0 Round 3 Placed on Ones Roll 2 5 5 5 4 4 5 of a kind 50 Roll 0 1 2 3 4 6 Kept 2 20 Kept 0 x Round 7 Placed on Fours 0 Roll amp 1 6 2 4 5 6 Roll 0 2 4 1 3 1 2213 Kept 1 X X Kept 0 X X Round 11 Roll 2 6 1 5
180. oll 0 5 5 6 2 6 Kept 2 E di OR i Kept 1 X Kept 0 X X Round 12 Placed on Twos Roll 2 3 2 Roll 1 6 2 6 3 6 Roll 0 3 5 1 5 6 Kept 2 Kept 1 X X X Kept 0 X aeee Round 1 Placed on Ones Roll 2 6 6 6 1 6 Roll 1 3 4 6 5 6 Roll 0 3 1 6 1 5 Kept 2 i nt ame Kept 1 X X Kept 0 X X kee Round 5 Placed on Sixes Roll 2 4 6 6 Roll 1 3 1 3 1 4 Roll 0 5 3 3 4 1 Kept 2 Kept 1 X X X X Kept 0 X X Round 9 Placed on Large seq Roll 2 3 1 3 1 1 Roll 1 6 3 3 1 4 Roll 0 2 3 2d Kept 2 7 7 7 Kept 1 xX X Kept 0 X X Placed on Full hand Roll 2 2 3 3 5 5 Roll 1 2 3 4 4 1 CASO DE TESTE 07 Ones 1 Kept 2 7 7 Placed on Threes TWOB 660500098 Placed on Twos Round 8 Threes et Round 5 Roll 0 1 3 2 1 1 Fours 8 et Round 2 Roll 0 2 6 4 3 6 Kept 0 Fives 10 Roll 0 1 4 6 4 6 Kept 0 x X Roll 1 2 1 1 4 3 Sixes 18 Kept 0 X X Roll 1 4 6 2 2 6 Kept 1 X X X X 3 of a kind 13 Roll 1 2 1 6 6 6 Kept 1 X X Roll 2 2 1 5 4 3 4 of a kind 0 Kept 1 X X X Roll 2 1 6 3 3 6 Kept 2 TF Full hand 25 Roll 2 4 1 6 6 6 Kept 2 Placed on Large seq Small seq 30 Kept 2 7 Placed on Ones Large seq 40 Placed on Sixes Round 9 5 of a kind 0 k Round 6 Roll 0 1 3 3 Round 3 Roll 0 1 4 6 6 3 Kept 0 Roll 0 5 2 2 1 6 Kept 0 X
181. om valores seguidos a b ce d Exemplo 2 3 4 e 5 e LARGE SEQUENCE vale 40 pontos ocorre quando existem 5 dados com valores seguidos a b c de e Exemplo 2 3 4 5 e 6 5 OF KIND vale 50 pontos ocorre quando existem 5 dados com o mesmo valor 5 1 Jogo Boz 64 e CHANCE valor da soma dos n meros dos 5 dados independente dos valores ob tidos nos mesmos Este item uma chance que o jogador possui quando o resultado da jogada n o favor vel para marcar qualquer pontua o no placar com exce o do item CHANCE importante salientar que quando n o existe item para marcar o resultado ob tido isso caso a chance j tiver sido marcada a ent o ocorre um descarte Para tanto o jogador deve anular algum item que n o esteja marcado O jogo termina quando todos os itens forem marcados com valores e ou descartes ou seja ap s treze jogadas Aqui o ganhador aquele jogador que conseguir obter a maior pontua o No t rmino do jogo caso o valor do resultado do c lculo da soma dos itens de ONES at SIXES for igual ou maior que 63 incrementada a pontua o somando se mais 35 pontos pois um caso especial na qual ocorreu no m nimo a marca o de tr s dados iguais em cada item de ONES SIXES Esta se o composta por tr s subse es Na Subse o 5 1 1 apresentado como executar o jogo Boz na Subse o 5 1 2 s o descritos os aspectos referente a imple menta o do Boz e por f
182. onjunto 4 5 Funcionalidades e Sess o de Projetos de Teste 56 Por outro lado se nenhum conjunto de teste estiver dispon vel podem ser utili zadas as sugest es fornecidas pela pr pria ferramenta para elaborar o conjunto referente aos crit rios de teste implementados pela JaBUTi Os crit rios de teste segundo Vincenzi et al VINCENZI et al 2003 podem ser aplicados com incrementa o ou seja se necess rio podem ser desenvolvidos casos de teste adicionais e toda vez que crit rios sejam adicionados o bot o Update na interface gr fica da JaBUTi torna se vermelho indicando que a informa o de cobertura pode ser atualizada considerando os novos casos Durante a adi o de um determinado caso de teste deve ser verificado se a sa da obtida est correta relacionada com a especifica o Se for detectada uma discrep ncia a falha deve ser localizada e corrigida Uma alternativa para localiza o de falhas a ferramenta Slice 4 5 2 Ferramenta Slice A ferramenta Slice implementa uma simples heur stica de busca de falhas baseada em informa o de fluxo de controle A id ia reduzir o prazo de pesquisa para a localiza o de falhas Utilizando a ferramenta slice deve se escolher entre os casos de teste aquele que cause uma falha e dois que n o a revelem Baseada nestas informa es a ferramenta destaca a parte do c digo mais prov vel de conter a falha Ap s ter observado o caminho de execu
183. ou seja o item 5 1 3 3 apresentou a cobertura dos requisitos funcionais pelo conjunto Testr O item 5 1 3 4 apresentou a cobertura dos crit rios estruturais por Trune 5 1 Jogo Boz 81 Avaliando a troca percebe se que o conjunto nc inicialmente gerado para cobrir os requisitos funcionais apesar de ter coberto 100 destes quando aplicado para cobrir os crit rios estruturais apresentou uma cobertura conforme Tabela 5 9 de 97 do crit rio Todos N s 94 para Todas Arestas 93 para Todos Usos e 87 para Todos Potenciais Usos Assim pode se verificar que n o houve crit rio estrutural 100 coberto Portanto o conjunto Tune nao apresentou uma cobertura satisfat ria com rela o aos crit rios estruturais Com base no conjunto Testr gerado pela ferramenta JaBUTi MA para cobrir os crit rios estruturais verifica se que al m de ter obtido 100 de cobertura dos crit rios estruturais tamb m conseguiu obter 100 de cobertura dos requisitos funcionais Deta lhando a cobertura com base em cada crit rio estrutural verificou se que os conjuntos Testr_arestas Lestr_usos Testr potUsos derivados de Testr obtiveram 100 de cobertura dos requisitos funcionais e somente o conjunto Ts n s apresentou uma cobertura menor por m consider vel de 95 5 1 3 6 Conclus o da Atividade de Teste Jogo Boz A an lise de cobertura da Ferramenta JaBUTi altamente interessante de ser utilizada na atividade de teste estrutural
184. para o Exemplo 3 2 Crit rios Baseados em Fluxo de Dados 27 3 2 Crit rios Baseados em Fluxo de Dados Os crit rios baseados em fluxo de dados fornecem uma hierarquia de crit rios que s o mais exigentes do que o crit rio Todos Arcos e menos custosos que o crit rio Todos Caminhos Conforme Weyuker RAPPS WEYUKER 1985 os crit rios baseados em fluxo de dados se ap iam na id ia de que n o se pode acreditar na corretude de uma computa o se o resultado desta computa o nunca foi utilizado Para tanto na an lise de fluxo de dados existem tr s tipos de ocorr ncias de vari veis e Defini o ocorre quando um valor de uma vari vel armazenado em uma posi o de mem ria associada a essa vari vel Isto ocorre quando a vari vel est no lado es querdo de um comando de atribui o em um comando de entrada ou em chamadas de procedimentos como par metro de sa da por exemplo def global uma defini o de uma vari vel x do n i global se ela a ltima defini o de x em i e se existe um caminho livre de defini o de i at um c uso global de x ou at um p uso de x RAPPS WEYUKER 1985 def local uma defini o de uma vari vel x do n i local se existe um c uso local de x em que segue esta defini o e outra defini o de x n o aparece entre a defini o e o c uso local RAPPS WEYUKER 1985 e Uso a recupera o de um valor de uma vari vel em uma posi o de m
185. pela Figura 4 5 Segundo Weyuker RAPPS WEYUKER 1985 um grafo def uso muito til quando se trata de crit rios de teste baseados em fluxo de dados Vincenzi et al VINCENZI et al 2003 tendo o intuito de utilizar a aplica o de tal teste em conjunto com o teste de fluxo de controle retira informa es de fluxo de dados e de controle dos bytecodes contidos no arquivo de classe a ser testado Assim coletadas as informa es para cada m todo pode se definir e aplicar os crit rios de teste intra m todo A Ferramenta JaBUTi VINCENZI et al 2003 prop e conduzir teste de cobertura em programas e componentes Java atrav s da utiliza o de tr s crit rios diferentes de teste como j dito anteriormente dois s o baseados em fluxo de controle e um baseado em fluxo de dados Sendo que os crit rios baseados em fluxo de controle utilizados pela JaBUTi s o todos n s e todos arcos e o crit rio baseado em fluxo de dados todos usos composto pelos crit rios c uso e p uso Vale ressaltar que quanto ao crit rio todos arcos conforme dito no Cap tulo 3 este requer que cada aresta do GFC seja coberta pelo menos uma vez Na JaBUTi VINCENZI et al 2003 isso quer dizer que deve se cobrir al m do desvio verdadeiro e falso de cada senten a condicional no m todo e de cada senten a condicional composta tamb m o conjunto de exce es manipul veis que possam ser atiradas em cada bloco J no caso do crit rio todos u
186. pelido igual ao atual um apelido que j estava sendo utilizado por outro usu rio Nenhum erro foi encontrado e os requisitos funcionais 37 38 39 e 40 foram cobertos e O caso de teste 13 teve o objetivo de verificar se havia o tratamento de erro em rela o ao comando getserver no caso de informar um espa o vazio e uma cadeia de caracter para o par metro porta Apesar de cobrir o requisito funcional 30 um erro foi encontrado pois n o houve tratamento de erro ao informar uma cadeia de caracter para o par metro porta e O caso de teste 14 verificou se havia o tratamento de erro em rela o ao comando getserver no caso de informar a mesma porta na qual estava sendo executado o ClientServer para o servidor itinerante ChatServer Aqui foi encontrado um erro pois n o houve tratamento ao informar para a porta do ChatServer o valor da mesma porta do ClientServer ent o a execu o do cliente foi interrompida imediatamente e O caso de teste 15 verificou se existia o tratamento de erro durante a chamada de execu o do servidor no caso da porta padr o estar indispon vel Nenhum erro 5 2 Mobile Chat 106 foi encontrado e o requisito funcional 06 foi coberto e O caso de teste 16 verificou se havia o tratamento de erro durante a chamada de execu o do servidor no caso da porta especificada estar indispon vel Nenhum erro foi encontrado e o requisito funcional 08 foi coberto e O caso de teste 17 verificou se
187. plicado para cobrir os crit rios estruturais apresentou uma cobertura conforme Tabela 5 16 de 86 do crit rio Todos N s 84 para Todas Arestas e 79 para Todos Usos Assim pode se verificar que n o houve crit rio estrutural com 100 de cobertura Portanto o conjunto Tune n o apresentou uma cobertura satisfat ria com rela o aos crit rios estruturais Continuando teve que ser gerado mais oito casos de teste T unc para concluir a cobertura dos crit rios estruturais iniciada pelo conjunto Tyunc Com base no conjunto Testr gerado pela ferramenta JaBUTi MA para cobrir os crit rios estruturais verificou se que al m de ter obtido 100 de cobertura dos crit rios estruturais tamb m conseguiu obter 100 de cobertura dos requisitos funcionais Ao detalhar a cobertura com base em cada crit rio estrutural verificou se que os conjuntos Testr n s Testr arestas Testrusos derivados de Testr obtiveram 100 de cobertura dos requisitos funcionais 5 2 3 6 Conclus o da Atividade de Teste Mobile Chat Mais uma vez foi comprovado que o uso da JaBUTi como ferramenta de apoio ao teste foi muito importante devido a mesma oferecer atrav s da an lise de cobertura uma forma simples de gerar os casos de teste de forma a cobrir a maior parte do c digo sem a morosidade verificada na aplica o do teste funcional Com esta atividade de teste verificou se que a JaBUTi muito rica em in forma es referente ao estado atual
188. pt 2 cms 5 of a kind Kept 2 7 Roll 1 1 4 3 2 Placed on Sixes Chance Placed on Fives Kept 1 X X X Bonus 0 Roll 2 4 3 2 Round 11 Total 1236 Round 4 Kept 2 T f Roll 0 6 6 4 2 5 Roll 0 1 4 4 4 4 Placed on Small seq Kept 0 X X Kept 0 X X XX Roll 1 6 6 3 1 2 Round O Roll 1 4 4 4 4 4 Round 8 Kept 1 X X Roll 0 3 2 6 4 5 Kept 1 7 7 Roll 0 4 3 3 5 2 Roll 2 6 6 1 6 1 Kept 0 7 7 Placed on 5 of a kind Kept 0 X X Kopt 2228 PTE Placed on Large seq Roll 1 5 3 3 4 6 Placed on 3 of a kind Round 5 Kept 1 X X aeee Round 1 Roll 0 3 5 2 4 6 Roll 2 2 3 3 6 1 Round 12 Roll 0 3 3 3 4 4 Kept 0 X X X Kept 2 7 Roll 0 5 1 6 6 2 Kept 0 Roll 1 3 1 2 4 2 Placed on Threes Kept 0 X X Placed on Full hand Kept 1 X X X Roll 1 4 5 6 6 4 Roll 2 3 4 2 4 2 set Round 9 Kept 1 X X Round 2 Kept 2 Roll 0 5 3 4 6 4 Roll 2 1 2 6 6 2 Roll 0 4 4 1 3 3 Placed on Twos Kept 0 X X Kept 2 7 Kept 0 X X Roll amp 5 1 4 3 4 Placed on 4 of a kind Roll 1 4 4 2 3 6 eee Round 6 Kept 1 X X CASO DE TESTE 05 Kept 1 X X Round 2 Round 6 Roll 2 4 4 1 4 5 Roll 0 3 4 5 4 1 Roll 0 2 5 6 Kept 2 7 Kept 0 X X Kept 0 X X Placed on Fives Roll 1 3 4 4 4 2 Roll 1 6 5 6 Kept 1 X X X Kept 1 X X set Round 10 3 of a k
189. quivo de Classe ccccccccccccc a Selecionando os arquivos de classes a serem testados Tela da Ferramenta de Teste de Cobertura 2 Funcionamento da JaBUTi MA DELAMARO 2005 BozoServer iniciado ta gua Sida AA Soe IR E Bieta koe gee BozoCitzent2 iniciador sad E QUA E a a DA ee Ci Resultado da execu o do BozoClient2 008 Diret rio e arquivos gerados pelo BozoClient2 Pacotes que comp em o Boz sp xa eme PE RA ees Classes que comp em o pacote bozoserver 008 Classes que comp em o pacote bozoclient 0 Servidor inicializ d soes e Dep af Aa SiS e de ain e te Sia Gee os Shell de execu o do ClientServer 0 0 0 0 00 eee XV Lista de Figuras 5 10 5 11 5 12 5 13 5 14 5 15 5 16 5 17 5 18 5 19 5 20 5 21 5 22 5 23 xvi Tellado Mobles Chat s ats ua cep bale ar wha ine aea ine ae a e EN 86 Apresenta o do comando help oaao 0000004 87 Simula o de chat Execu o do servidor principal 88 Simula o de chat shell de execu o do usu rio Ana 89 Simula o de chat tela do cliente para o usu rio Ana 89 Simula o de chat shell de execu o do usu rio Jo o 2 2 89 Simula o de chat tela do cliente para o usu rio Joao 2 89 Simula o de chat shell de execu o do usu rio Jos 2 ee 90 Sim
190. quivo de trace rastreio gerado pela Ferramenta JaBUTi com a extens o trc e armazena os dados da execu o do programa instrumentado DELAMARO VINCENZI MALDONADO 2004 4 100 m todo Prober prober invocado toda vez que a execu o alcan a a primeira instru o de um determinado n do GFC VINCENZI et al 2003 4 5 Funcionalidades e Sess o de Projetos de Teste 51 Na pr xima se o s o apresentadas as principais funcionalidades pertinentes a Ferramenta JaBUTi o processo de cria o de uma sess o de teste as ferramentas de an lise de cobertura e slice 4 5 Funcionalidades e Sess o de Projetos de Teste Segundo Vincenzi et al VINCENZI et al 2003 um projeto de teste na JaBUTi caracterizado por um banco de dados que armazena o arquivo da classe principal o con junto completo de classes necess rias para executar tal arquivo o conjunto de classes que ser instrumentado e o conjunto de classes que n o ser Esta informa o armazenada em um arquivo com extens o jbt Durante a execu o de qualquer arquivo class que pertence ao conjunto de classes a ser instrumentado de um determinado projeto in forma es de fluxo de controle din micas s o coletadas e salvas em um arquivo separado que tem o mesmo nome do arquivo de projeto mas com uma extens o diferente trc trace A JaBUTi VINCENZI et al 2003 composta pela ferramenta de an lise de co bertura e pela ferramenta slice descrita na
191. ra 5 23 Classes que comp em o pacote server est sendo executado Ao ser inicializado o MainServer possui apenas a lista de usu rios e a tabela de custos vazias pois n o h nenhum cliente conectado Em seguida deve se iniciar o cliente que interpreta os par metros do usu rio atrav s da linha de comando conforme apresentado na Se o 5 2 1 Se ocorrer algum problema durante a interpreta o dos par metros o cliente finalizado caso contr rio as informa es colhidas s o exibidas na sa da padr o para o cliente certificando o de que tal interpreta o ocorreu com sucesso O pr ximo passo para a conex o do cliente a leitura do arquivo com as in forma es de roteamento atrav s da classe RoutingTable Durante tal processo todas as linhas que comp em o arquivo s o lidas Uma linha precedida do s mbolo interpre tada como um coment rio e as linhas em branco s o ignoradas Para cada linha v lida gerada uma tripla contendo o endere o IP do cliente o endere o IP de um outro n e o custo envolvido na comunica o entre estes dois n s Se essa tripla ainda n o estiver presente na tabela que est sendo gerada ela inserida Ap s o processamento do arquivo o cliente possuir uma estrutura de dados interna contendo o resultado da interpreta o Essa tabela de custo ser enviada pos teriormente para o servidor para que este tenha a rela o atualizada dos endere os dos clientes e seus re
192. ratar de agentes m veis usa a 412 Java Bytecode Understanding and Testing Tool for Mobile Agents 4 6 Testando Agentes M veis com a JaBUTi MA 58 estrutura de mobilidade fornecida pela CODE para suportar a transfer ncia de dados de trace do agente m vel sob teste MAUT 3 para a ferramenta de an lise Para garantir a comunica o entre o MAUT e a JaBUTi requisitada a instala o do yCODE em cada host que consta no caminho do agente N o h mudan as entre a ferramenta de an lise da JaBUTi e da JaBUTi MA pois ambas verificam constantemente se existem novos dados no arquivo de trace Todavia existem mudan as no processo de instrumenta o da ferramenta DELAMARO 2005 A Figura 4 15 a obtida em DELAMARO 2005 mostra como funciona a Ja BUTi MA Vale esclarecer que em conjunto com a ferramenta de an lise existe um servidor de teste TuS 4 que uma extens o do pServer por m com altera es para realizar a instrumenta o nas classes a serem testadas recebe dados de trace de um agente m vel e os escreve no arquivo de trace Na Figura 4 15 b ilustrado um MAUT sendo instrumentado e executado em um determinado host Conforme Delamaro DELAMARO 2005 a instrumenta o na JaBUTi MA acopla uma classe probe para o MAUT que sustenta trilhas de todos os pontos alcan ados pelo agente como na intrumenta o convencional Em adi o a classe probe armazena informa es sobre para onde tr
193. re agetCompleteScore getMaxRolls Vgetones Vaetsum Vget3k Vgetsk Vgetrull Vgeismy VgetLg Vgetcent Vgetvalue Vgetvalue Figura 5 7 Classes que comp em o pacote bozoclient marcado Quando um item marcado a respectiva posi o configurada para true A posi o de cada item do placar identificada no vetor gone conforme a Tabela 5 1 Quando os dados s o rolados o algoritmo verifica a frequ ncia dos valores de cada face dos dados para avaliar em qual item do placar ser atribu da a pontua o Esta atribui o se d atrav s das estrat gias implementadas pelo programador 5 1 3 Atividade de Teste Jogo Boz Ap s compreender a execu o e a implementa o do Boz o interesse est em realizar a atividade de teste para obter resultados satisfat rios com rela o ao teste de c digo m vel Para tanto foi desenvolvido o seguinte plano de teste e 1 Fase Cria o do conjunto de teste Tunc adequado a requisitos funcionais 5 1 Jogo Boz 69 Tabela 5 1 Valor das posi es dos itens do placar no vetor gone Posic o Placar fo Jow J twos po ms f e runs k Js me ef o las o jo Jmnmmoram ro Jromoram E m k oe Joao k a e Jemeoram e Jonas e 2 Fase Cria o do conjunto de teste Testr adequado a crit rios estruturais e 3 Fase Medi o da cobertura dos requisitos funcionais pelo conjunto de casos de teste T
194. re 1 Crie um projeto de teste para o agente normalmente como se faria para qualquer programa 2 De dentro da pr pria JaBUTi deve se instalar o servidor de teste que vai receber os dados da execu o do agente nos servidores por onde ele passar instrumentado 3 Executar o agente instrumentando o no servidor Neste caso o agente ser ins trumentado somente quando chegar em algum Server configurado para realizar a instrumenta o Essa configura o feita passando se tr s par metros o endere o do servidor de teste o nome do agente o mesmo nome que identifica o agente no servidor de teste e as classes a serem instrumentadas Caso a aplica o m vel utilizar um servidor padr o este pode ser instalado e parametrizado utilizando se o programa mucode util TestLauncher em vez de utilizar o mucode util Launcher que aceita par metros na linha de comando para setar cada um destes argumentos O cap tulo seguinte apresenta os estudos de casos implementados com o intuito de serem testados para validar o tema proposto por este trabalho Para tanto foram criados dois estudos de casos o primeiro um jogo denominado Boz e o segundo um aplicativo de conversa o denominado Mobile Chat Al m dos estudos de casos criados tamb m s o apresentadas as atividades de teste realizadas nos mesmos 61 5 Estudos de Casos Desenvolver aplica es para ambientes distribu dos um trabalho complexo e pesquisas te
195. requisito 4 Ap s v rias tentativas ainda faltou cobrir os requisitos 2 3 5 e 18 Com o intuito de cobrir tais requisitos deu se continuidade a gera o dos casos de testes por m mesmo 5 1 Jogo Boz 74 com mais de 150 casos de teste gerados a cobertura de tais requisitos n o foi alcan ada Vale lembrar que os casos de testes que n o obtiveram xito foram descartados pois n o houve raz o de apresent los Analisando os requisitos 2 3 5 e 18 especificados no Ap ndice A verifica se que eles s o muito particulares e a probabilidade de sa da de dados aleat ria para cobrir tais requisitos m nima Isto se deve ao fato do jogo Boz rolar os dados de forma rand mica portanto dificulta se a gera o de casos de teste espec ficos para cobrir tais requisitos Diante disto os requisitos 2 3 5 e 18 foram marcados como n o execut veis A Tabela 5 2 apresenta a cobertura dos requisitos funcionais do jogo Boz com a exclus o dos quatro requisitos n o execut veis Vale esclarecer que a Tabela 5 2 composta por quatro colunas a primeira mostra o n mero dos casos de teste de sucesso a segunda apresenta o n mero dos requisitos funcionais que foram cobertos com a execu o de um determinado caso de teste a terceira coluna mostra o total de requisitos cobertos do total de requisitos existentes e a quarta coluna apresenta a porcentagem de requisitos cobertos por requisitos existentes Tabela 5 2
196. rge seq CASO DE TESTE 61 Ones 2 Twos 2 Threes 12 Fours 12 Fives 10 Sixes 18 3 of a kind 21 Placed on 4 of a kind Round 7 Roll 0 4 6 Kept 0 x Roll 1 3 6 Kept 1 Roll 2 6 Kept 2 A w Placed on Fours Round 8 Roll 0 6 2 1 Kept 0 X Roll 1 6 6 4 Kept 1 X X Roll 2 6 6 2 Kept 2 Round 2 Roll 0 1 1 3 Kept 0 X X Roll 1 1 1 6 Kept 1 X X Roll 2 1 1 5 Kept 2 Placed on Ones Round 3 Roll 0 5 6 4 Kept 0 X X Roll 1 5 6 6 Kept 1 Placed on Full hand Round 4 Roll 0 5 Kept 0 Roll 1 Kept 1 Roll 2 Kept 2 ON MON YN MN MON Placed on Twos kx Round 5 Roll 0 4 5 6 Kept 0 X Roll 1 4 1 Kept 1 Roll 2 1 3 Kept 2 YO MD Placed on Sixes 4 of a kind 0 Full hand 25 Small seq 30 Large seq 40 5 of a kind 50 Chance 18 Bonus 0 vox ox a vox a Placed on Sixes Round 9 Roll 0 5 4 2 2 1 Kept 0 X Roll 1 5 2 6 6 3 Kept 1 X Roll 2 5 2 1 1 6 Kept 2 SR Placed on Fives Round 10 Roll 0 5 1 Kept 0 Roll 1 2 4 Kept 1 Roll 2 2 2 Kept 2 YOK HD HOD e w o Round Roll 0 4 5 Kept 0 Roll 1 3 4 Kept 1 Roll 2 5 2 Kept 2 YD MD MD Placed on Fours
197. ria and supports mobile code testing Keywords Mobile code Structural testing Testing tools Sum rio Lista de Figuras xiv Lista de Tabelas xvii 1 Introdu o 1 T SODJEUVO so qe at oe ie RA Dos oe Maj Di Gb BE oe o pl PEA a pt CRA a A ST 2 1 2 Organiza o do Texto pets as Bode a EA UE ER eS EU dg a 3 2 Mobilidade 4 2 1 Mecanismos de Suporte ao C digo M vel 2 02 6 2 2 Linguagens e Ambientes para Mobilidade 13 23 WASP CODE do er he de tn e Meee De gee BE A a Pato Aa atte SA a e A PG eed 15 3 Teste Estrutural 21 3 1 Crit rios Baseados em Fluxo de Controle o oaoa aa 25 3 2 Crit rios Baseados em Fluxo de Dados 2 27 3 3 Ferramentas de Teste Estrutural oaa ee ae pla eS 31 4 JaBUTi 35 4 1 Java JVM e Instru es Bytecode aoaaa aaa 0000 ee eee 36 4 2 Gerando Grafos com a JaBUTi aoaaa a a a a a a a 42 Sum rio xi 4 3 A An lise de Cobertura da JaBUTi va sau ne atue e De Rae 47 4 4 O Processo de Instrumenta o da JaBUTi 50 4 5 Funcionalidades e Sess o de Projetos de Teste 0 51 4 5 1 Ferramenta de An lise de Cobertura 54 4 5 2 Ferramenta Slice Nada ee ol E Ea SE A E ee hed BR 56 4 6 Testando Agentes M veis com a JaBUTi MA 57 5 Estudos de Casos 61 5E Jogo DORA x fas ee Sa Beit A SR he Be RS A Bh A A Depi 63 5 1 1 Execu o do Jogo BOZO E pesca a subo eS oe ee ee YAS Ev eS 64 9 1 2
198. rmance na comunica o em rede FUGGETTA PICCO VIGNA 1998 O aumento e a melhoria de performance da rede al m de facilitar a computa o torna poss vel a explora o da conectividade de rede independente da localiza o f sica do usu rio ou seja possibilita o advento da computa o m vel Assim tem se que usu rios podem estar se conectando na rede hora em um local hora em outro independente da sua localiza o geogr fica utilizando se para tanto recursos da tecnologia sem fio A Internet outro fator importante que ajudou a mudar o papel das redes de computadores gerando novos dom nios de aplica es sendo que a World Wide Web uma das tecnologias disponibilizadas pela Internet que mais contribui para o crescimento da mesma FUGGETTA PICCO VIGNA 1998 Com a evolu o das redes de computadores surgiram v rios problemas como a queda do desempenho em larga escala a topologia da rede deixa de ser est tica difi culdades na difus o de servi os busca de informa es e execu o de tarefas distribu das Como se pode ver a infra estrutura da comunica o b sica da rede passa a requerer maior flexibilidade e extensibilidade A mobilidade de c digo uma nova t cnica para auxiliar na solu o desses proble 21A World Wide Web tamb m chamada Web ou WWW um sistema de informa es organizado de maneira a englobar todos os outros sistemas de informa o dispon veis na Internet permitindo
199. rquivo de classe gerado verifica se que um arquivo de classe cont m muitas informa es de alto n vel sobre um programa Deste modo a JaBUTi VINCENZI et al 2003 tem por finalidade utilizar tal recurso fornecendo o m ximo de informa es poss veis durante a atividade de teste mesmo que o c digo fonte original n o esteja dispon vel Coleta para tanto informa es de fluxo de controle e de dados a partir do bytecode e usa tais informa es para fornecer crit rios de cobertura para programas Java A se o seguinte descreve como a JaBUTi gera o grafo Def Uso de um programa escrito em Java com base em cada m todo do programa e apresenta exemplos para elucidar a gera o de grafos 4 2 Gerando Grafos com a JaBUTi 42 4 2 Gerando Grafos com a JaBUTi Considerando o conjunto de instru es de bytecode Vincenzi et al VINCENZI et al 2003 descreve uma abordagem para construir o grafo de programa atrav s da leitura da instru o de bytecode de um determinado m todo tendo como par metro a an lise de fluxo de controle de bytecodes de Zhao ZHAO 1999 Para tanto Vincenzi et al em VINCENZI et al 2003 diz que G m N E s T um grafo de programa de um m todo m se para cada bloco de senten a de m existir um n n N e para cada poss vel transfer ncia de controle entre um bloco representado por n e um bloco representado por ns existir uma aresta n1 n2 E Sendo que para melhor esclarecimento N
200. rtual Retorno areturn dreturn freturn ireturn lreturn return Gerenciamento de dup dup_x1 dup_x2 dup2 dup2_x1 dup2 x2 pop pop2 Pilha swap monitorenter monitorexit Reservado breakpoint impdep1 impdep2 lt n gt representa um ndice v lido a respeito da vari vel local da matriz da estrutura corrente VINCENZI et al 2003 Atrav s das instru es de bytecode apresentadas vale mostrar um exemplo de c digo em Java obtido em LINDHOLM YELLIN 1999 ilustrado pela Figura 4 3 onde tem se um m todo denominado spin composto por uma estrutura de repeti o 4 1 Java JVM e Instru es Bytecode 41 void spin int i for i 0 i lt 100 i o corpo do la o de repeti o est vazio Figura 4 3 Exemplo de C digo em Java M todo spin Ap s a compila o do m todo ser o gerados bytecodes apresentados pela Figura 4 4 obtidos em LINDHOLM YELLIN 1999 que representam toda a estrutura de dados do m todo spin Method void sping 0 iconst 0 empilha inteiro constante O istore 1 armazena dentro da variavel local 1 i 0 oto 8 primeira vez no la o nao faz incremento jinc 1 1 incrementa vari vel local 1 por 1 i iload 1 APR sm vari vel local 1 i bipush 100 empilha inteiro constante 100 if_icmpit 5 compara e repete se menor do que i lt 100 return retorna void quando conclu do Figura 4 4 Bytecode do M todo spin Observando os bytecodes do a
201. s se baseia nos erros mais frequentes cometidos durante o processo de desenvolvimento de software DEMILLO LIPTON SAYWARD 1978 Neste trabalho ser apresentado um estudo referente a t cnica estrutural ou caixa branca que se baseia na estrutura interna do software O teste de caixa branca um 3 Teste Estrutural 23 m todo de projeto de casos de teste que usa a estrutura de controle e de dados do projeto procedimental para derivar casos de teste Utilizando o teste estrutural podem ser gerados casos de teste que garantam que todos os caminhos independentes dentro de um m dulo tenham sido exercitados pelo menos uma vez executem todas as decis es l gicas para valores falsos ou verdadeiros executem todos os la os em suas fronteiras e dentro de seus limites operacionais e que exercitem os fluxos de dados internos para garantir a sua validade RAPPS WEYUKER 1985 A seguir s o apresentados alguns exemplos de crit rios do teste estrutural e Crit rios Baseados em Fluxo de Controle utilizam informa es de fluxo de controle do programa como base para a sele o de dados de teste de tal forma que determinados tipos de estrutura do grafo do programa sejam exercitadas RAPPS WEYUKER 1985 e Crit rios Baseados em Fluxo de Dados utilizam informa es do fluxo dos da dos existentes no programa visando identificar atribui es e utiliza es das vari veis atrav s do programa gerando componentes elementares a s
202. s sequenciais de computa o Recursos representam entidades que podem ser compartilha das entre m ltiplas EUs tais como um arquivo em um sistema de arquivos Uma unidade de execu o composta por e Segmento de C digo fornece a descri o est tica para o comportamento de uma computa o e Espa o de dados o conjunto de refer ncias para recursos que podem ser aces sadas pela EU 25 Computational Environments 26 Executing Units 2 1 Mecanismos de Suporte ao C digo M vel 8 Componente Componente Componente Ambiente Computacional Ambiente Computacional Ambiente Computacional Sistema Operacional de Rede Sistema Operacional de Rede N cleo do Sistema Operacional N cleo do Sistema Operacional Sistema Operacional de Rede N cleo do Sistema Operacional Hardware Figura 2 2 Sistemas de C digo M vel FUGGETTA PICCO VIGNA 1998 Segmento de C digo Fes q Estado de Execu o BA pilha e ponteiro de instru o E Espa o de Dados Unidade de Execu o Ambiente Computacional Figura 2 3 Estrutura Interna de uma Unidade de Execu o FUGGETTA PICCO VIGNA 1998 e Estado de execu o cont m dados privados que n o podem ser compartilhados assim como as informa es de controle relacionadas ao estado da EU Em Sistemas de C digo M vel o segmento de c digo o estado de execu o e o espa o de dados de uma EU podem ser
203. s ordenados tamb m denominado de bloco Conforme Weyuker RAPPS WEYUKER 1985 um programa pode ser decomposto em uma s rie de blocos disjuntos Quando o primeiro comando de um bloco executado os comandos seguintes s o executados em ordem Complementando o primeiro comando de um bloco o nico que pode ser executado ap s outro bloco Conforme Weyuker RAPPS WEYUKER 1985 o arco denominado ramo ou aresta representa um fluxo de controle ou seja a transfer ncia de controle entre blocos Um ramo deve terminar em um n Cada n que cont m uma condi o denominado de n predicativo e possui dois ou mais ramos que saem dele Portanto o ltimo comando do n predicativo um desvio condicional Para representar um programa o grafo possuir um nico n de entrada ou inicial e poder apresentar atualmente devido s novas linguagens existentes mais de um n de sa da ou final CHAIM 1991 Rapps e Weyuker em RAPPS WEYUKER 1985 definem que um grafo com posto por v rios caminhos um caminho uma sequ ncia finita de n s Um caminho simples aquele em que todos os n s s o distintos exceto o primeiro e o ltimo Um caminho livre de la o aquele em que todos os n s s o distintos Um caminho considerado completo quando o primeiro n o n inicial e o ltimo um n final Vale 3 1 Crit rios Baseados em Fluxo de Controle 25 ressaltar que nem todo caminho completo execut ve
204. s que comp em o pacote agents Detalhes sobre a cobertura dos crit rios estruturais referentes a cada agente m vel ou seja a cada classe do pacote agents est o contidos no Ap ndice G Esta segunda fase durou 2 horas no qual 1h30min foram utilizadas para criar e aplicar os casos de teste na JaBUTi e 30 minutos para gerar um relat rio simples Isto com exce o do tempo usado para excluir os itens n o execut veis 5 2 Mobile Chat 109 Tabela 5 13 Chat Cobertura dos Crit rio Estruturais do Pacote agents por Testr een T kay Es 01 6 o o O Es SDS Pe 9 5 2 3 3 Chat 3 Fase Cobertura dos Requisitos Funcionais por Testr Nesta terceira fase com base nos conjuntos de casos de teste Tunc Testr gerados foi estipulada uma troca na cobertura ou seja agora o interesse est em avaliar a cobertura do conjunto Testr para cobrir os requisitos funcionais Vale lembrar que o conjunto Tune cobriu 100 dos requisitos funcionais Assim foram aplicados os casos de testes do conjunto Testr Ap ndice F e obteve se a cobertura apresentada pela Tabela 5 14 Tabela 5 14 Chat Cobertura dos Requisitos Funcionais por Testr REM Ow ee ee n o houve altera o na cobertura Em uma primeira an lise da Tabela 5 14 pode se deduzir que o conjunto de casos 5 2 Mobile Chat 110 de teste Testr n o foi interessante para cobrir os requisitos funcionais do Mobile Chat T
205. sage por Tfunc Thun 157 Chat Cobertura da Classe agents JoinChatSession por Tune Thune 157 1 Introdu o Em meio a tanta tecnologia f cil notar a prolifera o de sistemas baseados em computador Pois basta observar pequenas empresas que se utilizam desta tecnologia Em adi o tem se o paradigma distribu do que s veio a disseminar amplamente os sistemas computacionais agora distribu dos facilitando o acesso as informa es e popularizando o meio computacional de forma a n o haver retrocesso Com tanta tecnologia a disposi o imprescind vel a boa distribui o de tais tecnologias Assim sistemas computacionais distribu dos em larga escala requerem uma aten o maior quanto sua disponibiliza o devido as quest es de perfomance Dentro deste contexto surge o termo c digo m vel em pesquisas de sistemas operacionais distribu dos TANENBAUM STEEN 2002 Assim sistemas de c digo m vel v m oferecer uma nova forma de constru o de sistemas distribu dos com o prop sito de auxiliar e minimizar os problemas que circundam as aplica es distribu das N o obstante tais sistemas como qualquer outro precisam ser executados pre cisamente sem a ocorr ncia de erros ou falhas Em determinadas situa es o risco t o alto que n o h como desfazer de uma fase t o importante dentro do processo de desenvolvimento de software como a fase de teste Segundo Pressman PRESS
206. seguran a da linguagem Java e Execu o o interpretador interpreta cada bytecode realizando a a o especificada pelo programa A independ ncia de plataforma provida pela linguagem Java deve se M quina Virtual Java JVM A M quina Virtual Java um programa que interpreta os bytecodes contidos no arquivo class ou seja os bytecodes gerados ap s a compila o s o instru es de m quina para a JVM Conforme Chan CHAN GRIFFITH IASI 1999 cada computador pode ter seu pr prio interpretador ou seja cada plataforma possui sua pr pria implementa o da M quina Virtual Java mas todas elas s o capazes de ler bytecodes ou um arquivo class comum Tal ambiente ideal para a Internet j que um programa pode ser executado em diferentes m quinas pela Web Portanto o que deve ser comprendido que a JVM uma camada adicional entre o processador e um arquivo de bytecodes conforme ilustrado na Figura 4 2 A JVM especificamente conforme Chan CHAN GRIFFITH IASI 1999 inclui um conjunto de instru es de bytecode um conjunto de registradores uma pilha um coletor 43 As applets Java n o podem ler nem escrever arquivos do disco local n o tem ponteiros para a mem ria principal e n o podem danificar a mem ria fora de seu pr prio espa o de mem ria CHAN GRIFFITH IASI 1999 44 Java Virtual Machine 4 1 Java JVM e Instru es Bytecode Fasel Fase 2 Editor Compilador 38
207. seq 40 Roll 0 2 3 3 4 6 Placed on Sixes Kept 2 5 of a kind 0 Kept 0 X X Placed on Small seq Roll 1 4 3 3 2 4 Round 7 Kept 1 X X Roll 0 1 4 1 3 1 Round 11 Roll 2 4 6 3 2 4 Kept 0 x Roll 0 2 3 1 6 4 Kept 2 Roll 1 1 1 2 3 1 Kept 0 X Placed on Fours Kept 1 X Roll 1 4 3 1 3 6 seit Round O Roll 2 3 6 2 3 2 Kept 1 X X Roll 0 2 4 1 1 6 Round 4 Kept 2 7 7 7 7 Roll 2 3 4 3 3 Kept 0 X X Roll 0 3 1 5 5 5 Placed on Twos Kept 2 Roll 1 1 5 1 1 1 Kept 0 X X X Placed on Threes Kept 1 X X X X Roll 1 4 6 5 5 5 Round 8 Roll 2 1 6 1 1 1 Kept 1 X X X Roll 0 5 4 5 1 2 Round 12 Kept 2 7 Roll 2 4 4 5 5 5 Kept 0 Roll 0 5 4 5 4 5 Placed on Ones Kept 2 fofo Roll 1 4 5 2 2 6 Kept 0 Placed on Fives Kept 1 Roll 1 3 1 3 2 4 kk Round 1 Roll amp 2 5 6 2 2 6 Kept 1 Roll 0 2 3 5 4 3 et Round 5 Kept 2 7 7 7 7 Roll 2 2 5 1 3 5 Kept 0 X X Roll 0 1 1 1 1 3 Placed on 3 of a kind Kept 2 Roll 1 2 3 6 3 Kept 0 X X X X Placed on 5 of a kind Kept 1 X X Roll 1 1 1 1 1 3 Round 9 Roll 2 4 3 1 3 Kept 1 X X X X Roll 0 5 3 5 5 4 Kept 2 T 7 Roll 2 1 1 1 1 4 Kept 0 X CASO DE TESTE 03 Kept 1 X X X Roll 0 3 6 1 2 2 Roll 2 6 1 1 3 1 Kept 0 X X set Round O Kept 2 7 Roll 1 3 5 6 2 2 Roll 0 6 5 2 6 2 Placed on Ones
208. sos segundo Vincenzi VINCENZI et al 2003 a partir do bytecode n o h possibilidade de distinguir p uso e c uso Portanto na imple menta o do crit rio todos usos a JaBUTi assume que um uso em um n com mais de uma aresta que sai um p uso e o associa com cada uma das arestas A pr xima se o apresenta como a Ferramenta JaBUTi analisa a cobertura de um teste aplicado estabelecendo pesos de cobertura para cada n existente no grafo de um determinado m todo 4 3 A An lise de Cobertura da JaBUTi Segundo Delamaro em DELAMARO 2005 a an lise de cobertura uma das funcionalidades mais importantes que uma ferramenta de teste deve apresentar pois al m de permitir a visualiza o da cobertura da execu o dos casos de teste tamb m permite 4 3 A An lise de Cobertura da JaBUTi 48 identificar quais n s devem ser cobertos para se obter maior cobertura Vincenzi et al VINCENZI et al 2003 atribui diferentes pesos a cada n do GFC baseado em an lise de dominador e super bloco O intuito gerar um teste para cobrir a rea com o peso mais alto antes de outras reas para conseguir a m xima cobertura Assim a JaBUTi fornece informa es referente cobertura do c digo para que possa ser realizada uma atividade de teste que possua poucos casos de teste por m realiza uma ampla cobertura baseada em fluxo de controle bloco e decis o e em fluxo de dados todos usos Segundo Vincenzi et al
209. spectivos custos 5 2 Mobile Chat 95 O cliente ent o inicia um servidor cliente ClientServer na porta especificada pelo segundo par metro e se conecta ao MainServer cujo endere o foi especificado no terceiro par metro de execu o do cliente enviando uma mensagem de requisi o atrav s do agente m vel JoinChatSession contendo o apelido o endere o do usu rio e a tabela de custo gerada pela interpreta o do arquivo lido Se durante a conex o do cliente com o servidor percebe se que este ltimo migrou para um host diferente ent o o MainServer encaminha o JoinChatSession para o host onde o servidor itinerante ChatServer est localizado e notifica o cliente a respeito da nova localiza o do servidor Em seguida estando no servidor itinerante ou principal o agente JoinChat Session verifica se o apelido escolhido pelo usu rio j est sendo utilizado Caso esteja o agente retorna ao cliente avisando o do uso do apelido e requisita a escolha de outro Tal processo se repete at que o usu rio escolha um apelido v lido Ap s a verifica o do apelido o servidor gera um n mero de identifica o para o usu rio e o insere na lista de participantes do chat Esta lista mantida no servidor e cont m diversas entradas cada uma representando um participante constistu da por tr s campos o apelido o endere o IP e o n mero de identifica o do usu rio Ent o cada cliente recebe do servidor o agente Mobil
210. subse o 4 5 2 A JaBUTi usa o bytecode Java em vez do c digo fonte para coletar as informa o necess rias e executar suas atividades Esta caracter stica permite testar qualquer tipo de programa Java incluindo componentes Java Ela tamb m permite o teste estrutural de componentes Java e a identifica o de qual parte destes componentes precisam realizar mais testes ou ainda quais partes n o foram cobertas Ao executarmos a Ferramenta JaBUTi apresentada a tela do Menu Principal conforme ilustrado na Figura 4 10 A JaBUT apresenta os seguintes menus e File fornece op es para criar abrir fechar salvar um projeto e para sair da ferramenta e Tools fornece op es para escolher a ferramenta de cobertura ou ferramenta slice e Visualization fornece op es para alterar a visualiza o em tr s modos diferen tes bytecode GFC ou o c digo fonte 4 5 Funcionalidades e Sess o de Projetos de Teste 52 JaBUTi v 1 0 Eek Case Reports Properties Update Help All Uses ed All Pot Uses ed Figura 4 10 Tela Principal da Ferramenta JaBUTi e Summary fornece informa es de cobertura em diferentes n veis cobertura do projeto inteiro com respeito a cada crit rio de teste cobertura por crit rio de teste com respeito a cada classe cobertura por crit rio de teste com respeito a cada m todo e Test Case mostra a cobertura por caso de teste com respeito ao projeto inteiro e permite
211. t m dados da classe tal como nome da classe nome da superclasse informa es sobre as vari veis e constantes e as instru es bytecode para cada m todo Segundo Lindholm e Yellin LINDHOLM YELLIN 1999 Uma instru o JVM consiste de um opcode especificando a opera o a ser executada seguida por zero ou mais operandos agregando valores a serem operados Ainda em LINDHOLM YELLIN 1999 um formato de opcode deve apresentar a seguinte forma lt index gt lt opcode gt lt operandi gt lt operand2 gt lt comment gt O lt index gt o ndice de opcode da instru o no array que cont m os bytes do c digo JVM para o m todo O lt opcode gt o mnem nico para os opcodes de instru o e os lt operandN gt s o os operandos de instru o O lt comment gt opcional e dado na sintaxe de coment rio de fim de linha A JVM possui tr s opcodes reservados para uso interno de sua implementa o Dois destes com mnem nicos impdep1 e impdep2 foram planejados para prover back 4 6 doors e o terceiro com mnem nico breakpoint foi planejado para ser usado por depuradores implementando breakpoints As instru es de bytecode definidas em LINDHOLM YELLIN 1999 s o classifi cadas em 10 grupos diferentes conforme a Tabela 4 1 obtida em VINCENZI et al 2003 sendo que tais grupos possuem subgrupos apresentando um conjunto completo composto por 204 instru es Desse
212. t out float average int in v in out 0 0f int i 0 try while i lt v length out vli i out out fi catch Exception e out 0 0f i 0 finally v null print float i return out public void print float n System out print n sn Node 12 Node 15 Node 34 Node 43 Node 54 aload_O aload 1 putfield aload O fconst O putfield 10 iconst O 11 istore 2 12 goto aload O dup getfield aload_O getfield iload_2 jaload i2f fadd putfield inc load 2 aload O getfield arraylength ifLicrnplt aload_O aload O getfield load 2 i2f fdiv putfield Vetv Vet out 34 Vet out Vet Vet out 2 1 Vet yv 15 Vet out Vet out 02 goto astore_3 aload O fconst O putfield iconst O istore 2 jsr goto astore jsr aload athrow 82 astore 84 aload O a p Node 57 Node 60 Node 71 Node 74 Node 79 Node 82 85 aconst null 86 putfield 89 ret 91 aload O lt 92 iload 2 93 i2f invokevirtual Node 91 94 97 aload O Node 97 lt 98 getfield 101 fretum Exception table from to target type 44 91 wet out 82 91 Yo 82 Hd 5 Vety 5 Vet print Vet out 12 54 60 lt Class java lang Exception gt 12 57 74 lt Class all gt 60 71 74 lt Cl
213. t2 localh st 1968 localhost sage java BozoClient2 lt server gt lt this host gt xample java BozoClient2 myserver mydomain com 1968 myclient mydomain com igite o nome do usuBrio gt anda Figura 5 2 BozoClient2 iniciado le C WINNT System32 cmd exe Bozofgent gt cd C Bozohgent Bozofgent gt java cp C Jabuti bin lib mucode jar client BozoClient2 localh ost 1968 localhost java BozoClient2 lt server gt lt this host gt java BozoClient2 myserver mydomain com 1968 myclient mydomain com Digite o nome do usuBrio gt E Muberver activated on port 2000 Figura 5 3 Resultado da execu o do BozoClient2 5 1 Jogo Boz 66 Ap s a execu o do cliente criado um diret rio com o mesmo nome do jogador e neste armazenado dois arquivos um referente a todos os dados obtidos durante o jogo e outro referente pontua o obtida em cada item do placar Tal diret rio e arquivos est o ilustrados na Figura 5 4 ioi x BozofAgent Danda gt dir E O volume na unidade C Disco local O n mero de s rie do volume 64C3 9C23 Pasta de C Bozofgent Danda 7 05 2004 03 29 lt DIR gt 7 05 2004 03 29 lt DIR gt se 7 05 2004 03 29 525 dados 17 4 2004 3h29min5Bsec515 txt 7 05 2004 03 29 43 score 17 4 2004 3h29min5Bsec515 txt 2 arquivols 56 ytes 2 pasta ls 34 979 532 888 bytes dispon veis C BozofAgent Danda gt _ El Figura 5 4 Diret rio e arquivos gerados pelo Bo
214. ta Barbara Calif rnia EUA Realiza an lise de cobertura do teste de ramos em programas escritos em Fortran Prov suporte ao teste din mico via instrumenta o an lise est tica do c digo fonte gera o do grafo de chamada dos m dulos gera o do grafo de fluxo de controle dos m dulos verifica o de anomalias no c digo fonte verifica o de tipos nas chamadas de procedimentos e gera o de relat rios CHAIM 1991 TCAT Test Coverage Analysis Tool uma ferramenta comercial forne cida por Software Research Corporation San Francisco Calif rnia EUA Assegura quali dade de teste de caixa branca foi desenvolvida para guiar a gera o de conjuntos de teste avaliar o progresso do teste e dos n veis convencionais de detec o de erro TCAT um analisador de cobertura de ramo que prov capacidade para instrumenta o autom tica de programas para an lise e relat rio de n vel de cobertura de teste TCAT dispon vel para Ada C COBOL Fortran e Pascal INC 2002a CHAIM 1991 TCAT Path Path Test Coverage Analysis System uma ferramenta distribu da pela mesma empresa que distribui TCAT Faz an lise de cobertura de todos os caminhos de uma unidade Esta ferramenta faz uso de um utilit rio chamado APG que lista todos os poss veis caminhos de cada unidade e o n mero que tem sido exercitado Possui um analisador para a complexidade ciclom tica de McCabe MCCABE BUTLER 1989 instrumenta o c digo
215. te mobilidade de c digo ou seja que permitem a movimenta o de um c digo Na Se o 2 2 ser o apresentados alguns exemplos de linguagens e ambientes de programa o de c digo m vel existentes E a Se o 2 3 enfoca a API wCODE que uma API utilizada para programar c digo m vel em Java oferecendo pacotes que d o suporte mobilidade de c digo 2 1 Mecanismos de Suporte ao C digo M vel Segundo Fuggeta et al FUGGETTA PICCO VIGNA 1998 Mobilidade de c digo pode ser definida como a capacidade de modificar dinamicamente as liga es entre fragmentos de c digo e o local onde eles s o executados Esta capacidade que permite que programas possam trafegar livremente pela rede depende da tecnologia de c digo m vel empregada Tal tecnologia engloba lingua gens de programa o e seus suportes em tempo de execu o Sistemas distribu dos tradicionais s o apresentados conforme Fuggeta FUGGETTA PICCO VIGNA 1998 na Figura 2 1 A camada mais baixa acima da camada de hardware constitu da pelo N cleo do Sistema Operacional COS22 que fornece as funcionalidades b sicas do sistema operacional O suporte para servi os de comunica o n o transparentes fornecido pela camada do Sistema Operacional de Rede NOS A camada NOS utiliza os servi os fornecidos pela camada COS A transpar ncia da rede fornecida pela camada do Sistema Distribu do Verdadeiro TDS 4 Um TDS implementa uma plat
216. te foi executado com sucesso pois encontrou um erro ou seja n o foi feito tratamento de erro para a leitura de um endere o IP inexistente 5 2 Mobile Chat 105 e O caso de teste 08 visou verificar se havia o tratamento de erro no caso de infor mar um arquivo de roteamento que n o exista O caso de teste obteve xito pois encontrou um erro ou seja n o houve tratamento de erro para a leitura de um arquivo de roteamento inexistente e O caso de teste 09 preocupou se em verificar se existia o tratamento de erro no caso de informar um arquivo com o formato da especifica o de roteamento inade quado Neste caso de teste tamb m foi encontrado um erro ou seja n o foi feito tratamento para a leitura de um arquivo de roteamento com formato inadequado e O caso de teste 10 verificou se existia o tratamento de erro no caso de informar o endere o IP errado para o servidor na chamada do cliente Este caso de teste n o encontrou nenhum erro e conseguiu cobrir os requisitos funcionais 10 12 e 15 e O intuito do caso de teste 11 estava em verificar se havia o tratamento de erro no caso de informar a porta do servidor na chamada do cliente errada Aqui nenhum erro foi encontrado e os requisitos funcionais 11 e 13 foram cobertos e O caso de teste 12 teve o objetivo de verificar se havia o tratamento de erro em rela o ao comando nick no caso de informar um apelido com espa o Jo ao apenas espa o ao inv s do apelido um a
217. to o peso inicial de cada super bloco Figura 4 9 Grafo de Dominador de Super Bloco com pesos a antes da execu o de qualquer caso de teste e b ap s a execu o de um caso de teste Exemplificando a execu o do n 54 82 da Figura 4 9a requer a execu o dos n s 0 34 43 e 54 e em seguida os n s 91 e 97 tamb m ser o executados Isso significa que os n s 0 34 43 54 91 e 97 ser o cobertos pela execu o de teste que executa o n 54 82 Portanto o n 54 82 tem peso 7 pois cobri lo implica na cobertura de no m nimo 7 n s ou mais e isto depender do fluxo de controle no qual o teste ir executar Portanto a Ferramenta JaBUTi consegue mostrar ao testador qual rea do pro grama tem maior propor o de cobertura Desta forma contribui para a diminui o da gera o de casos de teste e amplifica o da cobertura do programa A se o seguinte apresenta de forma sucinta o processo de instrumenta o que a JaBUTi realiza no c digo escrito em Java 4 4 O Processo de Instrumenta o da JaBUTi 50 4 4 O Processo de Instrumenta o da JaBUTi A JaBUTi instrumenta o conjunto de instru o de bytecode de cada m todo das classes que foram escolhidas para serem instrumentadas O m todo Prober probe contido em cada n do GFC o principal respons vel por coletar informa es din micas de fluxo de dados e de controle de cada n as quais s o armazenadas em um arquivo de trace para serem
218. transferidos em diferentes CEs Acrescentando cada um desses constituintes da EU podem se mover independentemente pelos hosts Fuggeta FUGGETTA PICCO VIGNA 1998 apresenta v rios mecanismos de mobilidade para gerenciar c digo e estado e para gerenciar espa o de dados conforme ilustrado na Figura 2 4 2 1 Mecanismos de Suporte ao C digo M vel 9 Os sistemas de c digo m vel existentes oferecem duas formas de mobilidade caracterizadas pelos componentes de unidade de execu o que podem ser migrados e Mobilidade Forte a capacidade de um sistema de c digo m vel permitir a migra o de ambos o c digo e o estado de execu o de uma unidade de execu o para um ambiente computacional diferente e Mobilidade Fraca a capacidade de um sistema de c digo m vel permitir a transfer ncia somente do c digo atrav s de diferentes ambientes computacionais O c digo pode ser acompanhado por algumas informa es de inicializa o mas n o envolve a migra o do estado de execu o Mobilidade Forte Gerenciamento de C digo e Estado de Execu o Mecanismos de Mobilidade Mobilidade Fraca Remo o de Liga o Gerenciamento de Espa o de Dados Refer ncia de Rede Re liga o Por C pia Por Movimento Figura 2 4 Classifica o dos Mecanismos de 1998 Proativa Migrag o Reativa Clonagem Proativa Remota aia Sincrono C digo Aut nomo Imediato pee roa
219. uda na tela com todos os comandos oferecidos juntamente com a descri o de suas respectivas funcionali dades conforme a ilustra o da Figura 5 11 O Mobile Chat apresenta v rios comandos para facilitar seu uso e quit faz com que o cliente seja desconectado do servidor e finalizado Para tanto primeiramente verificado se o cliente est conectado e caso esteja o mesmo 5 2 Mobile Chat 87 MobileChat Ana 127 0 0 1 2000 ID O 14 59 14 59 Available Commands 14 59 14 59 quit disconnect and exit 14 59 printroutes display the server s routing table 14 59 getserver lt port requestthe server 14 59 restore send back the server to the main server 14 59 stats show the active server and the main server 14 59 nick new nick change your nick name Figura 5 11 Apresenta o do comando help desconectado do servidor Em seguida ou caso o cliente n o esteja conectado ele finalizado e printroutes exibe a tabela de custo presente no servidor e getserver lt porta gt faz com que o servidor migre para o cliente que o requisitou instalando o servidor itinerante ChatServer na porta especificada e restore envia o servidor de volta sua posi o inicial caso esteja presente na m quina do cliente ou seja estando na m quina cliente o servidor retorna para o n de origem Para isto verificado se o servidor est realmente hospedado na m q
220. ue d o suporte mobilidade de c digo os ambientes e linguagens de desenvolvimento Utiliza uma API desenvolvida em Java denominada CODE para criar os exemplos de mobilidade Descreve um estudo sobre o teste estrutural e seus crit rios enfatizando os de fluxo de dados e de controle e algumas ferramentas de teste Como aux lio atividade de teste emprega a ferramenta JaBUTi VINCENZI et al 2003 que testa programas ou componentes Java utiliza crit rios de teste estrutural e suporta o teste em c digo m vel Palavras chave C digo M vel Teste Estrutural Ferramenta de Teste TURCI Elisangela Citro Utiliza o de Teste Estrutural en C digo M vel Java 2004 x f Disserta o Mestrado em Ci ncia da Computa o Centro Universit rio Eur pides de Mar lia Funda o de Ensino Eur pides Soares da Rocha Mar lia SP 2004 ABSTRACT This work aims to present mobile code testing by using some structural test criteria and a testing support tool To such purpose the mechanisms which support code mobility the environments and the development languages will be specified An API developed in Java named Code is used to create the examples of mobility Also it will be described a study on structural test and its criteria emphasizing the data flow and control criteria and some testing tools The employed testing support tool is JaBUTi VICENZI 2003 which tests Java programs or components uses structural testing crite
221. uina local caso n o esteja uma mensagem de erro exibida ao usu rio e stats informa ao usu rio o endere o do servidor principal MainServer e o endere o do servidor ativo que pode ser diferente do principal como o caso do servidor itinerante ChatServer que migra para outros n s da rede Al m disso se o servidor estiver em execu o na m quina do cliente uma mensagem exibida na tela informando que o cliente est hospedando o servidor e nick lt novo apelido gt troca o apelido atual do usu rio pelo apelido especificado Portanto ap s executar o comando verificado se um apelido foi de fato digitado caso contr rio um erro acusado No caso do usu rio enviar uma mensagem para outros usu rios preciso pri meiro digitar a mensagem na caixa de entrada e em seguida pressionar a tecla ENTER Como foi apresentado o Mobile Chat um software de comunica o simples em rela o a sua utiliza o por m aut ntico em sua tecnologia e forma de tratamento do envio das mensagens e execu o de tarefas realizadas atrav s de seus comandos 5 2 Mobile Chat 88 A seguir apresentado um exemplo simples de uma sess o de chat para ilustrar melhor como ocorre a comunica o entre os usu rios Vale esclarecer que o servidor principal inicializado e tr s m quinas clientes s o conectadas ao mesmo com o intuito de trocarem mensagens e executarem alguns comandos A Figura 5 12 ilustra todo o process
222. ula o de chat tela do cliente para o usu rio Jos 2 2 0 90 Pacotes que comp em o Mobile Chat ccccccccccc 92 Classes que comp em o pacote agents 2 a 92 Classes que comp em o pacote chat n 6 a a 93 Classes que comp em o pacote client o o oa ee 93 Classes que comp em o pacote server ooo a a 94 2 1 3 1 4 1 5 1 5 2 5 3 5 4 5 9 5 6 5 7 5 8 5 9 5 10 5 11 5 12 5 13 5 14 xvii Lista de Tabelas Mecanismos de Gerenciamento de Espa o de Dados FUGGETTA PICCO VIGNA IOB cx aie a a pe e Gh nt sa RS haere ands Gone Tes ded 11 Conjuntos de Defini o e Uso oaoa aa 30 Conjunto de Instru es Bytecode ss ps Seep et eer GEGNELA US BE 40 Valor das posi es dos itens do placar no vetor gone 69 Boz Cobertura dos Requisitos Funcionais por Tfune cc o aaa 74 Bozo Cobertura dos Crit rios Estruturais por Testr 2 2 cics 77 Bozo Cobertura dos Requisitos Funcionais por Testr 2 78 Bozo Cobertura dos Requisitos Funcionais por Testr n s cc cc 78 Bozo Cobertura dos Requisitos Funcionais por Testr arestas cc 79 Bozo Cobertura dos Requisitos Funcionais por Testrusos lt 79 Bozo Cobertura dos Requisitos Funcionais por Testr_potUsos 79 Boz Cobertura dos Crit rios Estruturais por Tyunc ccccccccc 80 Boz Cobertura Geral dos Crit rios Estruturais por Tyunc cc cc 82 Bozo Cobertura Geral dos R
223. um erro foi encontrado e O caso de teste 03 teve o objetivo de verificar se havia o tratamento de erro no caso de informar uma porta inv lida na chamada de execu o do servidor Este caso de teste foi executado com sucesso pois encontrou um erro ou seja n o foi feito o tratamento para a leitura de uma porta inv lida e O caso de teste 04 se preocupou em verificar se havia o tratamento de erro no caso de informar mais de quatro par metros na chamada de execu o do cliente Vale esclarecer que a chamada de execu o do cliente espera receber quatro par metros Este caso de teste obteve xito pois encontrou um erro ou seja n o foi feito tratamento para a leitura de mais de quatro par metros e O caso de teste 05 visou verificar se existia o tratamento de erro no caso de in formar menos de quatro par metros na chamada de execu o do cliente j que a chamada espera por quatro Este caso de teste tamb m obteve xito pois encon trou um erro ou seja n o foi feito tratamento para a leitura de menos de quatro par metros e O caso de teste 06 teve o intuito de verificar se havia um tratamento de erro ao executar um cliente em uma porta que j estava sendo utilizada Aqui foi coberto o requisito funcional 03 e nenhum erro foi encontrado e O caso de teste 07 verificou se havia o tratamento de erro no caso de informar um endere o IP para o cliente na chamada de execu o do mesmo que n o exista Este caso de tes
224. uncional analisando quais requisitos funcionais do agente m vel foram cobertos Dando in cio ao teste foram especificados 24 requisitos funcionais Ap ndice A para o jogo Boz Os requisitos funcionais foram especificados com base nas estrat gias implementadas pelo pr prio programador por exemplo o requisito de n mero 1 im plementa uma estrat gia que se sa rem randomicamente cinco dados iguais e o placar FIVE_OF_KIND estiver livre o programa marca o e finaliza a jogada Segundo Pressman PRESSMAN 1995 o teste funcional se concentra no dom nio de informa o procurando responder as seguintes perguntas Como a validade funcional testada Quais classes de entrada constituir o bons casos de teste O sistema sens vel a certos valores de entrada Como as fronteiras de uma classe s o isoladas Quais ndices de dados e volume o sistema pode tolerar Que efeito ter o combina es espec ficas de dados sobre a opera o do sistema Respondendo as perguntas de Pressman a validade funcional ser testada atrav s da avalia o dos resultados de cada jogo identificando atrav s da cobertura dos requisitos funcionais especificados quais estrat gias foram adotadas durante a realiza o do jogo Quanto a quest o das classes de entrada estas s o constitu das pelo valor da face de cinco dados e pela escolha da marca o do item do placar Por m devido ao jogo Boz ser rand mico n o h como
225. unda rolada houver repeti es mas os placares entre ONES e SIXES correspondentes aos valores das repeti es estiverem ocupados e os placares THREE OF KIND e FOUR_OF_KIND tamb m estiverem ocupados mant m apenas os dados de maior valor entre todos mesmo que seja uma repeti o e continua jogando 16 Se for a terceira rolada sair repeti es de um determinado valor e o placar correspondente quele valor entre ONES e SIXES estiver livre marca o 17 Se for a terceira rolada de dados e existir pelo menos uma repeti o verifica se o placar THREE OF KIND ou o FOUR_OF_KIND est livre Se estiver e se a maior pontua o poss vel com os OF KINDs livres for maior do que a pontua o poss vel no placar num rico correspondente ao valor da repeti o e o CHANCE estiver ocupado ou a pontua o do OF KIND for maior do que a do CHANCE marca o OF KIND 18 Se for a terceira rolada existir pelo menos uma repeti o e n o tiver nenhum placar corres pondente aos valores das repeti es entre ONES e SIXES livre nem o THREE OF KIND ou FOUR_OF_KIND nem o CHANCE ent o descarta o primeiro placar entre ONE e SIXES que achar livre 19 Se for a terceira rolada e o CHANCE ainda estiver livre e a soma dos valores for a maior pontua o poss vel em rela o aos placares que est o livres marca o CHANCE 20 Se for a terceira rolada e n o existir nenhum placar entre ONES e SIX ES livre eo THREE OF KIND e FOUR OF KIND esti
226. unidades de execu o Objeto criado pelo programador que instanciado e cujas opera es s o automa ticamente invocadas no destino e ClassSpace durante a reconstru o do Group o sistema necessita realocar as clas ses e torn las dispon veis para a subsequente execu o do Group Handler Classes extra das de um Group precisam ser alocadas em algum name space de modo a evitar conflitos com classes reconstru das de outros Groups 214 Mobilidade de uma nica classe ou objeto 2 3 A API CODE 17 Outras abstra es s o oferecidas pelo pacote mucode abstractions que composto pelas seguintes classes Relocator RelocatorHandler e MuAgent A classe Relocator prov os seguintes m todos que permitem a reloca o de classes e threads e copyThread permite copiar uma Thread de um servidor uServer para outro e spawn Thread permite criar uma outra Thread em outro servidor uServer usando um conjunto de classes especificado pelo usu rio e shipClasses permite despachar um conjunto de classes para um class space com partilhado de outro uServer e fetchClasses permite buscar um conjunto de classes de um class space compar tilhado de outro uServer As opera es da classe Relocator permitem implementar arquiteturas que explo ram mobilidade mas n o necessariamente um agente m vel 5 A classe MuAgent pro vida pelo pacote abstractions permite a implementa o do paradigma de agentes m v
227. uso apresenta os conjuntos de defini es e usos conforme mostra a Tabela 3 1 SPOTO PERES BUENO 1995 Tabela 3 1 Conjuntos de Defini o e Uso aresta Vale mencionar que Maldonado em MALDONADO 1991 apresenta o conceito de potencial uso onde a rela o defini o uso caracterizada sem a necessidade de 3 8 Ferramentas de Teste Estrutural 31 ocorr ncia de um uso Para tanto caminhos livres de defini o para uma determinada vari vel devem ser executados independentemente da ocorr ncia de uso da vari vel em quest o em tais caminhos Para contribuir com o teste estrutural Maldonado Jino e Chaim CHAIM 1991 introduziram os Crit rios Potenciais Usos fundamentados em varia es da fam lia de crit rios apresentada por Rapps e Weyuker RAPPS WEYUKER 1985 s o eles crit rios todos potenciais usos todos potenciais du caminhos e todos potenciais usos du Nesta pr xima se o ser o apresentados alguns exemplos de ferramentas que apoiam os crit rios de teste estrutural 3 3 Ferramentas de Teste Estrutural Apesar dos esfor os da engenharia de software para melhorar o processo de de senvolvimento de software o produto final ainda fica comprometido pois o volume e a complexidade do software aumentaram e o custo da atividade de teste chega a ser conforme Pressman PRESSMAN 1995 40 do custo do desenvolvimento do software Mesmo realizando a atividade teste o software pode ser distribu do ai
228. ver tiver sua conex o inter rompida ent o o servidor principal dever ser ativado por interm dio de algum dos outros clientes conectados Em seguida o usu rio dever ser removido da lista de usu rios conectados e todos os clientes ser o notificados da localiza o do novo servidor e da partida daquele usu rio A sess o de chat prossegue 144 AP NDICE E Mobile Chat Conjunto de Casos de Teste Tyunc Neste apendice constam os casos de teste gerados com o intuito de cobrir os requisitos funcionais do Mobile Chat Sendo assim tem se que Tfunc 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 CASO DE TESTE 01 Executa o servidor corretamente sem par metros Executa um cliente com par metros corretos Executa outro cliente com par metros corretos Realiza uma troca de mensagem corretamente entre os clientes Invoca corretamente todos os comandos dispon veis help printroutes stats nick Jose getserver 2020 restore quit CASO DE TESTE 02 Executa o servidor com par metros informando uma porta v lida 2005 Executa um cliente com par metros corretos Executa outro cliente com par metros corretos Realiza uma troca de mensagem vazia ou seja s informa a tecla ENTER Realiza uma troca de mensagem com espa os em branco ou seja informa espa o e depois a tecla ENTER CASO DE TESTE 03 Executa o servidor com par metros informan
229. verem ocupados e o CHANCE tamb m estiver ocupado ent o descarta o placar que esteja livre 21 Se for a primeira ou a segunda rolada e nenhuma das regras se aplicar ent o rola novamente os dados e continua jogando 22 Se for a terceira rolada e nenhuma op o for satisfeita descarta a op o que esteja livre 23 Se o valor da soma dos 6 primeiros elementos de ONES at SIXES no placar final for maior ou igual a 63 ent o acrescentado um b nus extra de 35 pontos ao total 1 10 valor 63 corresponde a obter tr s repeti es em cada uma das entradas de ONES at SIXES Ap ndice A Boz Requisitos Funcionais 123 24 Se for a primeira ou a segunda rolada e sair qualquer sequ ncia pequena por m n o consta o valor 2 e o placar SMALL SEQ estiver livre mant m no m ximo dois dados do in cio da sequ ncia e continua jogando 124 AP NDICE B Boz Conjunto de Casos de Teste Tyunc Este ap ndice apresenta dos 150 casos de teste gerados somente os que obtiveram xito na cobertura dos requistos funcionais do jogo Boz Tais casos de teste foram os de n mero 01 02 03 54 e 61 Sendo assim tem se que Tyfunc 01 02 03 54 61 Vale esclarecer que o resultado da execu o de cada caso de teste apresentado da seguinte forma Primeiro apresentada a pontua o obtida em cada item do placar de Ones a Bonus bem como o total das pontua es obtidas Total Em seguida apresentado o resulta
230. zoClient2 5 1 2 Aspectos de Implementa o Jogo Boz O jogo Boz gera o resultado da rolagem dos dados de forma aleat ria tamb m possui uma estrat gia implementada para realizar automaticamente a escolha dos dados e a marca o do placar No jogo Boz tem se a implementa o de um cliente que utiliza um servidor para gerenciar o jogo As Figuras 5 5 5 6 e 5 7 ilustram os pacotes as classes e as interfaces pertinentes ao jogo Estas ilustra es foram criadas utilizando se a modelagem orientada a objetos UML 2 conforme BOOCH RUMBAUGH JACOBSON 2000 EM EE client bozo server Figura 5 5 Pacotes que comp em o Boz O servidor BozoServer Imp1 conforme ilustrado na Figura 5 6 fornece os m todos que efetuam as a es do jogo tais como rolar dados permitir que o cliente selecione quais dados ser o mantidos para a pr xima rolada e manter os itens do placar atualizado ap s cada jogada O servidor tamb m aguarda a conex o de um cliente e suas respectivas requisi es para ent o realizar as opera es desejadas A Figura 5 6 tamb m apresenta a 52 Unified Modeling Language 5 1 Jogo Boz 67 interface IBozoGame que possui constantes que referenciam o placar e m todos que obtem os valores para cada item do placar VBozoserver newGame Smain BozoServerlmpl gstarted boolean amp ppublicKey PublicKey GoprivateKey PrivateKey opasswVet Map oprivateVet Map alg Stri
Download Pdf Manuals
Related Search
Visualizar/Abrir visualizar barra de herramientas visualizar barra de tarefas visualizar barra de favoritos en edge visualizar barra de tareas siempre visualizar barra de ferramentas visualizar barra de herramientas excel como visualizar pdf sem abrir visualizar barra de comandos autocad visualizar barra de favoritos visualizar barra tareas visualizar barra de herramientas autocad visualizar archivos dwg visualizar arquivos ocultos visualizar arquivo dwg
Related Contents
Manual - B&K Braun TPC Catalog - international sales and marketing Catalogue Samsung Galaxy Grand Max User Manual LC-1 Manual - Innovate Motorsports NMEA 2000 to NMEA 0183 Gateway NGW-1 Multi diag user manual - rac Power Supply SNMP Interface User Manual 5M6 - B&W Group North America Service & Support Copyright © All rights reserved.
Failed to retrieve file