1
6° Workshop do Projeto ATIFSINPE
Doutoranda: Regina Lúcia de Oliveira Moraes
Orientadora: Profa. Dra. Eliane Martins
Estratégia para Testes de Componentesutilizando Injeção de Falhas
2
IC - CESET / UNICAMP
Índice
Contribuições, Conclusões e Trabalhos Futuros
Injeção de Falhas
Ferramenta de Injeção de Falhas - Jaca
Estudo de Caso
Estratégia Proposta
Aplicação dos Testes
Resultados
IC - CESET / UNICAMP
Injeção de Falhas
3
IC - CESET / UNICAMP
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 sistemaErro (error) - uma falha levará a uma modificação no estado do sistema, estado este denominado erroDefeito (failure) - um erro levará o sistema a apresentar um defeito (difere do especificado)
IC - CESET / UNICAMP
Terminologia Utilizada
Validação - processo no qual verifica-se se foram retiradas as falhas do sistema e se avalia medidas deconfiabilidade, 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
4
IC - CESET / UNICAMP
Tipos de Injeção de Falhas
Nesse trabalho foi utilizado Injeção de Falhas por Software
IC - CESET / UNICAMP
Modelo FARM
Caracteriza os principais atributos da Injeção de Falhas / Erros.� ������������� �
������������� ������������ �� �� ����� �
��������� ��� ����������� ��� ���
� ����������� ��
������������� ������������ �������� ���
������������� ��������������� �
5
IC - CESET / UNICAMP
Jaca
IC - CESET / UNICAMP
Esquema
Interface
Controlador
GerenciadorInjetor
GerenciadorMonitor Ativador
InjetorLógico
InjetorLógico
MonitorLógico
MonitorLógico… …
InjetorFísico
MonitorFísico
………….
Meta Nível
Nível BaseAplicação
Lista de Falhas
Arquivo de Log
Lista de Classes
Javassist
Jaca
7
IC - CESET / UNICAMP
Defeitos provocados por falhas de software
Seleção dos Objetos
Injetar nos Módulos ou Objetos de Maior Risco para a Aplicação
Módulos / Objetos propensos à falhas introduzidas pelos desenvolvedores
IC - CESET / UNICAMP
Seleção dos Objetos
Módulos / Objetos propensos à falhas introduzidas pelos desenvolvedores
Complexidade do móduloCriticidade da função do módulo
Freqüência de utilização do módulo
8
IC - CESET / UNICAMP
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 valoresEscolha as classes que não estejam dentro dos limitesEscolha as classes que tenham uma interação direta com o componente
IC - CESET / UNICAMP
Seleção dos Objetos
Calcule métricas de complexidade para cada método público das classes escolhidasEscolha os métodos que excedam os limitesPara 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
IC - CESET / UNICAMP
Seleção dos Objetos
Quando código fonte não está disponível:Tome o diagrama de classes do softwareConte as associações de cada classe do diagramaEscolha as classes que tenham os maiores números de associações com outras classesEscolha as classes que tenham uma interação direta com o componenteEscolha classes com número alto de ancestrais ou descendentes diretos
IC - CESET / UNICAMP
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.
10
IC - CESET / UNICAMP
Conjunto F
����� ��� �!
��"�������#�����������������$����� ���� �#$� �%��%���
���&�'� ��� �!
��"���(������������� ����������(������ �������$�� �
IC - CESET / UNICAMP
Conjunto F
�)� ���� ��� �!
�*������� ����� ���"������������ ����� � �+���� %+����%������
�����&����&,'��� � ��� �!
�*�� ���
� ��������
�-� �����
11
IC - CESET / UNICAMP
Conjunto A
Forma de Validação Dinâmica
�������&� ���������� ����� � ��&������$���(�� ��� �� ��� �� ������ � �
IC - CESET / UNICAMP
Conjunto A
���%�����.���� ������/ ����� ��������� ��� ��"����0�./���1
�/���� �2�3�����������4
�%��� �(��-�%�� ����./����5���������� ���
12
IC - CESET / UNICAMP
Conjunto R
� � ������� 6� ���
� ���$��� ������� ���7
� ���� �����.���� ���
�% �������%��$����8�9����8���$����� �� ���7
� ���� ��� ���� ���
�������� ������������8��� �������������(�8���$�����% �:�����7
� ���� �����/���� �2
� ��%�����9���(��� ������� ��� �� �7
IC - CESET / UNICAMP
Conjunto M
� �% ����������;�������(��� ���� ���
����% � �(��������%�����9���(��0���������'��� �� ���� ��� 8���������� �(������ ����������17
����%��� �������%��%��� ����� �
�<(�� %�������9��(�����%�����%��%��� ��7�
��%�������9��(�����%�����%��%��� ��7�
�<(�� %������9��(���%��%��� ����(����� ����%�� � �7
��%�������9��(���%��%��� ����(����� ����%�� � �7
13
IC - CESET / UNICAMP
Estudo de Caso
IC - CESET / UNICAMP
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 transacionalObjetos são programados segundo a sintaxe da linguagem de programação
14
IC - CESET / UNICAMP
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 RMIObjetos “proxy” são utilizados para controlar os objetos no cliente.
IC - CESET / UNICAMP
Wisconsin OO7
Id_doc = 345título = “documento #27”coment = “documento # 27 armazena informações”
Id = 248590tipo = “tipoNum3”data = 3587341documentação
15
IC - CESET / UNICAMP
Wisconsin OO7
Conjunto Básico
idtipodatamanualraíz_proj Texto do objeto Manual
Conjunto Complexo
Biblioteca de Projeto
IC - CESET / UNICAMP
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 <(� ��� ���
16
IC - CESET / UNICAMP
Métodos das classes
�#������*>"������� �� ����"����
*>"�����<�� * �:����I
-�%�-�%���������
���%�9�� �������J���
K� ��#�������%����!
/���� �2 �%� <(���J �� ����� �$�������* �����
�$�I�����$LM ��� �I ��<(���J
<(���J<(���JN��$
BBBB
<(�������
��4E� �� � �%� <(���J ���-������ ����-9������� ��9�
9I�����$9IN��$9I�����$�<(���J�<(���J�<(���J
<(���J<(���J<(���J�����$N��$�����$
BBBBBB
<(�<(�<(�<(�<(�<(�
IC - CESET / UNICAMP
Valores Injetados
������������� ����������� �%� �(�������6 � �% � � ���(�
��� �I ������ �I�/���� �2 �%� ��� �OP� ��� ���5�B
��� �OP� ��� ��Q�B
��� �OP� ��� ��5�CG4RD0� ����������% � ��������1
��� �OP� ��� ��Q�CG4RD0� ����������% � ��������1
��� �OP� ��� ��S�D0� ������������% � ����#�����1
17
IC - CESET / UNICAMP
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� % � � ������ �� �������'��� ������"����
IC - CESET / UNICAMP
Resultados
18
IC - CESET / UNICAMP
Avaliação de Desempenho
Média do Desempenho das Funcionalidades do Benchmark
0
10000
20000
30000
Sem JacaCom JacaCom Injeção
Sem Jaca 13312 1757 20640
Com Jaca 13557 1883 20009
Com Injeção 13562 1927 19060
Criar BD Query Match Query Traversal
IC - CESET / UNICAMP
Observação do Comportamento do Ozone
Testes Efetuados na Primeira Campanha para 18 Pontos de Injeção
0
20
40
60
80
100
Nº TestsNº Defects
Nº Tests 90 90 90 90 90
Nº Defects 5 0 5 5 0
1 2 3 4 5
19
IC - CESET / UNICAMP
Observação do Comportamento do Ozone
Injeções Efetuadas na Classe de Maior Complexidade (BenchmarkImpl)
40%
60%Corretos
Defeitos
IC - CESET / UNICAMP
Contribuições, Conclusões e Trabalhos Futuros
20
IC - CESET / UNICAMP
Contribuições e Conclusões
� ������������� ������ ��$�J��� �&�� ������� ��� "���� ��� ���� ��� 7
���� �����%���� � �� ��������� ��� ������/���� �2�������$�� � ����(��&������� � ������������6��7
�����%���:��� �� �U � ��(��%���� ������+��$�������% � �� 6�� �����(���������%��� � 7
�K� ���� �#$� �% � ������%��� ���(����� �� ������������ �� � �� � 7
IC - CESET / UNICAMP
Contribuições e Conclusões
���" �9����% ����������%����� �� ���%� � ��� �(��� �U � 7
������%��� ������ �U � � �����;���%����� ����% � � ���������% � ������%������ ������%���� ���7
���������'��� �����6���% � ������%� �� �&� � ������������8��(��$ � ������� ������� ����������'��� 7
� ���� ����������$������ �� ������%���� �(��� �U � 7
21
IC - CESET / UNICAMP
Trabalhos Futuros
����%���� �� �U � �% � ������������%������ ���7
�= ��� �� ���� ��� ������6 ���� ���� ������ ��$�J��� 7
�= ��� �����6���� 6��������������� �������$���� ����� � �� ������% ����������������� � %��� �(�7
�= ��� �� ���� ����(������6���% � ������� �� ������(���� ��� �;��%��%��� ����� �7
IC - CESET / UNICAMP
Trabalhos Futuros
�-�� �����6������ �%� � ���� �������"��� �� 6��������(������ �U � 7
������ �� ���� �#$� ������6 �����#���� ��� �J�������$�� �� �% � ��� ������ �� ���%���� �������� ���������(�7
Top Related