6 Workshop do Projeto ATIFS INPE Doutoranda: Regina Lúcia de Oliveira Moraes Orientadora: Profa. Dra. Eliane Martins Estratégia para Testes de Componentes utilizando Injeção de Falhas 1
Índice Injeção de Falhas Ferramenta de Injeção de Falhas - Jaca Estratégia Proposta Estudo de Caso Aplicação dos Testes Resultados Contribuições, Conclusões e Trabalhos Futuros Injeção de Falhas 2
Terminologia Utilizada Especificação - descrição da função ou serviço esperado do sistema Falha (fault) - causa suposta ou constatada de um erro do sistema Erro (error) - uma falha levará a uma modificação no estado do sistema, estado este denominado erro Defeito (failure) - um erro levará o sistema a apresentar um defeito (difere do especificado) Terminologia Utilizada Validação - processo no qual verifica-se se foram retiradas as falhas do sistema e se avalia medidas de confiabilidade, eficiência dos diversos mecanismos envolvidos. Verificação - tem o objetivo de diagnosticar e eliminar o maior número possível de falhas de projeto/ implementação existente. Avaliação - tem o objetivo de obter medidas da eficiência dos mecanismos de tolerância à falhas do sistema 3
Tipos de Injeção de Falhas Nesse trabalho foi utilizado Injeção de Falhas por Software Modelo FARM Caracteriza os principais atributos da Injeção de Falhas / Erros. 4
Jaca Esquema Lista de Falhas Gerenciador Injetor Interface Controlador Gerenciador Monitor Arquivo de Log Lista de Classes Ativador J a c a Injetor Lógico Injetor Lógico Monitor Lógico Monitor Lógico Injetor Físico Monitor Físico Meta Nível Aplicação. Nível Base Javassist 5
Interface Gráfica Estratégia 6
Seleção dos Objetos Injetar nos Módulos ou Objetos de Maior Risco para a Aplicação Defeitos provocados por falhas de software Módulos / Objetos propensos à falhas introduzidas pelos desenvolvedores Seleção dos Objetos Módulos / Objetos propensos à falhas introduzidas pelos desenvolvedores Complexidade do módulo Criticidade da função do módulo Freqüência de utilização do módulo 7
Seleção dos Objetos Quando código fonte está disponível: Calcule métricas de complexidade (CK) Compare as métricas obtidas com os padrões de valores Escolha as classes que não estejam dentro dos limites Escolha as classes que tenham uma interação direta com o componente Seleção dos Objetos Calcule métricas de complexidade para cada método público das classes escolhidas Escolha os métodos que excedam os limites Para cada método escolhido, escolha os parâmetros e valores de retorno de chamada de métodos (locais de injeção) Para cada local de injeção, de acordo com seu tipo, faça uma especificação de injeção para cada valor crítico. 8
Seleção dos Objetos Quando código fonte não está disponível: Tome o diagrama de classes do software Conte as associações de cada classe do diagrama Escolha as classes que tenham os maiores números de associações com outras classes Escolha as classes que tenham uma interação direta com o componente Escolha classes com número alto de ancestrais ou descendentes diretos Seleção dos Objetos Escolha os métodos públicos e com tipos compatíveis, das classes selecionadas. Para cada método escolhido, escolha os parâmetros e valores de retorno de chamada de métodos (locais de injeção). Para cada local de injeção, de acordo com seu tipo, faça uma especificação de injeção para cada valor crítico. 9
Conjunto F! " # $ #$%% &'! " ( ( $ Conjunto F )! * " +%+% & &,'! * - 10
Conjunto A Forma de Validação Dinâmica & & $( Conjunto A %. / " 0./1 / 234 %(-%./5 11
Conjunto R 6 $ 7. % %$ 8 9 8$ 7 8 (8$%: 7 / 2 % 9 ( 7 Conjunto M % ;( %( % 9 (0 ' 8 ( 17 % %% <(% 9 ( % %% 7 % 9 ( % %% 7 <(% 9 ( %% ( % 7 % 9 ( %% ( % 7 12
Estudo de Caso Ozone Gerenciador de Base de Dados Orientado a Objetos (SGBDOO) Projeto de código aberto (Open Source) distribuído sob a licença LGPL Possibilita a persistência de objetos implementados em Java num ambiente transacional Objetos são programados segundo a sintaxe da linguagem de programação 13
Ozone Baseado numa arquitetura de ativação central (objetos nunca deixam o servidor) Aplicações do cliente conectam-se ao banco de dados usando sockets Clientes referenciam objetos do servidor utilizando um processo análogo ao RMI Objetos proxy são utilizados para controlar os objetos no cliente. Wisconsin OO7 Id = 248590 tipo = tiponum3 data = 3587341 documentação Id_doc = 345 título = documento #27 coment = documento # 27 armazena informações 14
Wisconsin OO7 id tipo data manual raíz_proj Texto do objeto Manual Conjunto Complexo Conjunto Básico Biblioteca de Projeto Classes do Wisconsin OO7 3 < - < ( =" %! %>"! / 2 % @A BC B D 4E % BD BD B D 4E % F F B D 4E % 4 4 B D 4E $" % 4 4 B @ 4E % 4 4 G D <( 4E% * % BB BB G D <( 4E/ "H % A A C D <( 4E% 9 "H C C C D <( % 4E "H % A A G G <( 4E* % BC BC G D <(? %! 15
Métodos das classes " *>" < #*>" *: I -% -% / 2 % <(J $I$LM <(J I <(J $ * <(J N$ 4E % <(J - - 9 9 9I$ 9IN$ 9I$ <(J <(J <(J <(J <(J <(J $ N$ $ % 9 J BB B B B B B B B B K# %! <( <( <( <( <( <( <( Valores Injetados I I/ 2 % % (6% ( OP 5B OP QB OP 5CG4RD 0 % 1 OP QCG4RD 0 % 1 OP SD 0%#1 16
Dados Coletados N 6 - % % %( " " 9 0 (% 6 1 <> %6 <> " 6 % ) H <> " T ) H- / 2" - % 9( U 9 (% %( $6 ;& 6 & 9 > 6 $U % ( 6 * & # & 0 1% '" Resultados 17
Avaliação de Desempenho Média do Desempenho das Funcionalidades do Benchmark 30000 20000 10000 Sem Jaca Com Jaca Com Injeção 0 Criar BD Query Match Query Traversal Sem Jaca 13312 1757 20640 Com Jaca 13557 1883 20009 Com Injeção 13562 1927 19060 Observação do Comportamento do Ozone Testes Efetuados na Primeira Campanha para 18 Pontos de Injeção 100 80 60 40 20 0 1 2 3 4 5 Nº Tests 90 90 90 90 90 Nº Defects 5 0 5 5 0 Nº Tests Nº Defects 18
Observação do Comportamento do Ozone Injeções Efetuadas na Classe de Maior Complexidade (BenchmarkImpl) 40% Defeitos 60% Corretos Contribuições, Conclusões e Trabalhos Futuros 19
Contribuições e Conclusões K #$% % ( 7 $J& " 7 %:U(% +$ %6 ( %7 % / 2 $ (& 6 7 Contribuições e Conclusões $ % (U7 '6 % % & 8($ '7 "9% % % (U7 % U ; % % %% % 7 20
Trabalhos Futuros % U%% 7 = 6 $J7 =6 6 $ % %(7 = (6 % ( ;%% 7 Trabalhos Futuros - 6 %" 6 (U7 #$6# J $% % (7 21
Agradecimento Obrigada pela Atenção de Todos! 22