Você está na página 1de 16

Confiabilidade e Segurana MO828 Eng. Software II Prof.

- Eliane Martins

Aluna: Flvia Zaroni Camargo RA: 20489

Programa Recovery Blocks


Classe Ordenao com os mtodos BubbleSort, QuickSort e SelectionSort Classe RecoveryBlocks onde os tipos de Ordenao so chamados Classe AcceptanceTest para verificar se a ordenao foi feita de forma correta Classe SortError para exceo

Confiabilidade

Testes com enfoque em confiabilidade; Foi utilizado um modelo independente do tempo, baseado em semeadura de falhas; Para aplicar tcnica de mutao devem ser inseridas falhas no cdigo gerando verses mutantes; A mesma entrada executada na verso original e na verso mutante e os resultados so comparados; O objetivo matar o mutante, reproduzindo o erro esperado; Foco no Recovery Blocks para verificar a recuperao com sucesso de uma verso para outra

Mutante 1 Selection Sort

Foi feita uma mutao no cdigo do Selection Sort (a primeira verso do Recovery Block) para forar um erro no algoritmo de ordenao e exercitar o AcceptanceTest.

DE: if (array[i] < array[index]) PARA: if (array[i] > array[index])

Entrada: int[] a1 = {5,3,2,7,1};

Mutante 1 Selection Sort

Resultado: matou o mutante, mas no foi o resultado esperado totalmente pois foi encontrada uma falha no mecanismo de Acceptance test. A chamada da 2a ordenao estava correta mas foi chamado o 3o sort quando no deveria. Sada gerada pelo programa mutante1: Selection Sort 7 5 3 2 1 Bubble Sort 1 2 3 5 7 Quick Sort 1 2 3 5 7

Mutante 1 Selection Sort

Foi localizado o erro no Acceptance Test e executado o mutante 1 novamente com a entrada 2 na verso corrigida: {5,3,2,7,1,6,4} Na nova verso o comportamento do mutante foi conforme o esperado, podemos considerar que o mutante foi morto;

Sada gerada pelo programa mutante1: Selection Sort 7 6 5 4 3 2 1 Bubble Sort 1 2 3 4 5 6 7 Array Sorted

Mutante 2 Bubble Sort

Foi feita uma mutao no cdigo do Bubble Sort para forar um erro no algoritmo de ordenao 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}; No matou o mutante2;

No ser possvel matar o mutante 2 se no colocarmos o mutante1 tambm pois somente aps acusar erro na 1a verso que ativada a 2a verso.

Mutante 2 Bubble Sort

Soluo = mutante1 + mutante2 Matou o mutante2, pois o algoritmo de Bubble Sort no ordenou o vetor. Conforme comportamento esperado, foi invocada a 3a verso de ordenao Quick Sort.

Sada gerada pelo programa mutante1: Selection Sort 7 6 5 4 3 2 1 Bubble Sort 7 6 5 4 3 2 1 Quick Sort 1 2 3 4 5 6 7

Mutante 2 Bubble Sort

No teste do mutante2 foi observado mais um erro no cdigo; Faltou fazer mais um teste final da 3a verso do Recovery Block para verificar se o vetor foi ordenado ou no utilizando AcceptanceTest, que deveria ter mostrado a mensagem Array Sorted, que no foi exibida. Aps a correo o resultado obtido foi o esperado: Selection Sort 7 6 5 4 3 2 1 Bubble Sort 7 6 5 4 3 2 1 Quick Sort 1 2 3 4 5 6 7 Array Sorted

Mutante 1, 2 e 3 - Resultados
Mutante 3: aplicado ao terceiro algoritmo de ordenao similar aos mutantes 1 e 2
Contagem Total: Falhas inerentes encontradas = 2 Mutantes mortos =3

Segurana
Anlise de perigos funcionais (FHA Functional Hazard Assesment) Identificar funes do sistema que contribuem para os perigos identificados, atribuindo-lhes um grau de severidade

Anlise de perigos funcionais


Funo Defeito / Perigo 1.No ordena vetor Fase de Operao Chamada pelo mecanismo de recovery(R) Efeitos Classifi- Contracao medidas Catastr Garantir fica que o mecanism o de Recovery Blocks chame a prxima Catastr verso de fica ordena oe recupere os valores iniciais Verifica o rvore de Falhas do Mecanis mo Ordenao Do Vetor 1.Vetor no ordenado e o resultado diferente do esperado

2.Altera os valores do vetor de maneira incorreta(ex, perda de algum valor, ou dos valores do vetor)

2. Vetor perde os valores iniciais no apresentando os valores esperados

Anlise de perigos funcionais


Funo Defeito / Perigo Teste de 1.No verifica Aceitao ordenao corretamente Fase de Operao Verificar se o vetor realmente esta ordenado ou no a cada verso chamada no Recovery 2. No verifica Blocks algum possvel erro causado pela ordenao, por exemplo ter um elemento a menos Efeitos Classificao 1.Ordenao Crtica pode no ter sido feita e o mecanismo no chama outra verso Contramedidas Aplicar testes de injeo de falhas no mecanismo visando garantir sua confiabilidade. Acrescentar teste de conferencia dos dados iniciais desordenados contra os dados finais ordenados, verificando se dados no foram perdidos Verificao rvore de Falhas do Mecanismo

2.Teste de aceitao retornar sucesso na ordenao, quando na verdade ela perdeu algum dos valores a ordenar

Crtica

Anlise de perigos funcionais


Funo Defeito / Perigo Recovery 1.Mecanismo Blocks para chamada de outra verso falha quando a primeira verso apresentou erro Fase de Operao Faz chamadas de verses diferentes de ordenao de vetores e teste de aceitao verificando se a ordenao foi feita adequadamente Efeitos Classificao 1.Ordenao Catastrno fica executada com sucesso Contramedidas 1.Aplicar testes de injeo de falhas no mecanismo visando garantir sua confiabilidade. 2. Valor Crtico 2. Aplicar apresentado reviso no como cdigo do resposta mecanismo e pode no teste com estar injeo de odenado falhas no mecanismo. 3.Armazenar 3. No Catastr- o vetor haver como fica passado ordenar o inicialmente e vetor atribuir o valor passado inicial ao vetor inicialmente a ser ordenado ao inicio de cada Verificao Arvore de Fahas do Mecanismo

2. Mecanismo no faz chamada para verificao do resultado recebido pelas verses adequadamente 3. Mecanismo no consegue recuperar o valor inicial do vetor para executar segunda verso de ordenao

Referncias
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

Obrigada! Boas frias!

Você também pode gostar