Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAnasofia Alberto Alterado mais de 10 anos atrás
1
Confiabilidade e Segurança MO828 – Eng. Software II Prof
Confiabilidade e Segurança MO828 – Eng. Software II Prof.- Eliane Martins Aluna: Flávia Zaroni Camargo RA: 20489
2
Programa Recovery Blocks
Classe Ordenação com os métodos BubbleSort, QuickSort e SelectionSort Classe RecoveryBlocks onde os tipos de Ordenação são chamados Classe AcceptanceTest para verificar se a ordenação foi feita de forma correta Classe SortError para exceção
3
Confiabilidade Testes com enfoque em confiabilidade;
Foi utilizado um modelo independente do tempo, baseado em semeadura de falhas; Para aplicar técnica de mutação devem ser inseridas falhas no código gerando versões mutantes; A mesma entrada é executada na versão original e na versão mutante e os resultados são comparados; O objetivo é “matar” o mutante, reproduzindo o erro esperado; Foco no Recovery Blocks para verificar a recuperação com sucesso de uma versão para outra
4
Mutante 1 – Selection Sort
Foi feita uma mutação no código do Selection Sort (a primeira versão do Recovery Block) para forçar um erro no algoritmo de ordenação e exercitar o AcceptanceTest. DE: if (array[i] < array[index]) PARA: if (array[i] > array[index]) Entrada: int[] a1 = {5,3,2,7,1};
5
Mutante 1 – Selection Sort
Resultado: matou o mutante, mas não foi o resultado esperado totalmente pois foi encontrada uma falha no mecanismo de Acceptance test. A chamada da 2a ordenação estava correta mas foi chamado o 3o sort quando não deveria. Saída gerada pelo programa mutante1: Selection Sort Bubble Sort Quick Sort
6
Mutante 1 – Selection Sort
Foi localizado o erro no Acceptance Test e executado o mutante 1 novamente com a entrada 2 na versão corrigida: {5,3,2,7,1,6,4} Na nova versão o comportamento do mutante foi conforme o esperado, podemos considerar que o mutante foi morto; Saída gerada pelo programa mutante1: Selection Sort Bubble Sort Array Sorted
7
Mutante 2 – Bubble Sort Foi feita uma mutação no código do Bubble Sort para forçar um erro no algoritmo de ordenação e exercitar o AcceptanceTest. DE: if (a[j] > a[j+1]) { PARA: if (a[j] < a[j+1]) { Entrada 1: int[] a1 = {5,3,2,7,1,6,4}; Não matou o mutante2; Não será possível matar o mutante 2 se não colocarmos o mutante1 também pois somente após acusar erro na 1a versão que é ativada a 2a versão.
8
Mutante 2 – Bubble Sort Solução = mutante1 + mutante2
Matou o mutante2, pois o algoritmo de Bubble Sort não ordenou o vetor. Conforme comportamento esperado, foi invocada a 3a versão de ordenação Quick Sort. Saída gerada pelo programa mutante1: Selection Sort Bubble Sort Quick Sort
9
Mutante 2 – Bubble Sort No teste do mutante2 foi observado mais um erro no código; Faltou fazer mais um teste final da 3a versão do Recovery Block para verificar se o vetor foi ordenado ou não utilizando AcceptanceTest, que deveria ter mostrado a mensagem Array Sorted, que não foi exibida. Após a correção o resultado obtido foi o esperado: Selection Sort Bubble Sort Quick Sort Array Sorted
10
Mutante 1, 2 e 3 - Resultados Mutante 3: aplicado ao terceiro algoritmo de ordenação similar aos mutantes 1 e 2 Contagem Total: Falhas inerentes encontradas = 2 Mutantes mortos = 3
11
Segurança Análise de perigos funcionais (FHA – Functional Hazard Assesment) Identificar funções do sistema que contribuem para os perigos identificados, atribuindo-lhes um grau de severidade
12
Análise de perigos funcionais
13
Análise de perigos funcionais
14
Análise de perigos funcionais
15
Referências A Practical System for Mutation Testing: Help for the Common Programmer, A. Jefferson Offutt Subsumption of Condition Coverage Techniques by Mutation Testing, A. Jefferson Offut, Jeffrey M.Voas
16
Obrigada! Boas férias!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.