• Nenhum resultado encontrado

Controle automático de parâmetros para algoritmo de otimização extrema aplicado à geração automática de casos de teste

N/A
N/A
Protected

Academic year: 2021

Share "Controle automático de parâmetros para algoritmo de otimização extrema aplicado à geração automática de casos de teste"

Copied!
101
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL DE CAMPINAS INSTITUTO DE COMPUTAÇÃO

ARISTIDES DE ALMEIDA NETO

CONTROLE AUTOMÁTICO DE PARÂMETROS PARA ALGORITMO DE OTIMIZAÇÃO EXTREMA APLICADO À GERAÇÃO AUTOMÁTICA DE CASOS

DE TESTE

Campinas 2018

(2)

ARISTIDES DE ALMEIDA NETO

CONTROLE AUTOMÁTICO DE PARÂMETROS PARA ALGORITMO DE OTIMIZAÇÃO EXTREMA APLICADO À GERAÇÃO AUTOMÁTICA DE CASOS

DE TESTE

Dissertação apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos exigidos para obtenção do título de Mestre em Ciência da Computação.

Orientadora: Prof. Dra. Eliane Martins

ESTE EXEMPLAR CORRESPONDE À VERSÃO FINAL DA DISSERTAÇÃO DEFENDIDA PELO ALUNO ARISTIDES DE ALMEIDA NETO E ORIENTADO PELA PROF. DRA. ELIANE MARTINS

Campinas 2018

(3)
(4)

FOLHA DE APROVAÇÃO

COMISSÃO EXAMINADORA

Prof. Dra. Eliane Martins Orientadora

Prof. Dr. Fábio Luiz Usberti Membro Titular

Prof. Dr. Márcio Eduardo Delamaro Membro Titular

A ATA DA DEFESA, ASSINADA PELOS

MEMBROS DA COMISSÃO

EXAMINADORA, CONSTA NO

PROCESSO DE VIDA ACADÊMICA DO ALUNO.

(5)

DEDICATÓRIA

Аоs meus pais, irmãos, minha esposa Karen, minha orientadora Eliane е a toda minha família que, cоm muito carinho е apoio, nãо mediram esforços para que eu chegasse аté esta etapa dе minha vida.

(6)

AGRADECIMENTOS

Gostaria de agradecer a minha família que sempre esteve comigo, sempre apoiando e motivando meu crescimento, superando todas as dificuldades, sem deixar me abater. Uma família muito especial, graças a minha mãe Nilma, meu pai Junior, que estão cuidando de mim a 33 anos, meus irmãos Ricardo e Fernando, minha cunhada Natália e a mais nova a fazer parte da família, minha amada esposa Karen.

Foram muitas e muitas horas, dias, semanas e meses dedicados para a realização desse trabalho, que seriam insuportáveis se não fosse a paciência e compreensão de todos a minha volta, tanto família quanto amigos. Em especial da minha esposa, foram vários finais de semana e noites ao meu lado, sempre apoiando e motivando, mesmo com a correria do mestrado e o nosso casamento que ocorreram ao mesmo tempo.

Obrigado a Unicamp pela oportunidade de adquirir tanto conhecimento, em especial a professora Eliane, que com muita paciência e conhecimento guiou o desenvolvimento desse trabalho. Agradeço aos amigos de estudo do IC, com destaque para o Leonardo, que ajudaram as buscar referências e tecnologias aqui aplicadas.

Agradeço também à Honda, pelo apoio ao meu crescimento profissional e por depositar tanta confiança no meu trabalho.

(7)

RESUMO

Ao longo do desenvolvimento de um sistema, o teste de software é responsável pelo controle de qualidade, tendo por finalidade garantir que o software está abrangendo todas as funções esperadas e que essas estão exercendo da maneira prevista seus objetivos. Nessa fase, são encontrados problemas que não podem ser resolvidos com técnicas tradicionais da Engenharia de Software, entretanto, eles podem ser modelados matematicamente e resolvidos por meio da otimização matemática, principalmente com uso de metaheurísticas. Nesse contexto, surgiu um recente campo denominado Search-based Software Engineering (SBSE), que trata da resolução de problemas de Engenharia de Software por meio de técnicas de otimização. Dada a importância da fase de teste de Software, uma subárea denominada Search-Based Software Testing (SBST) se destaca no campo. Um problema comum é a dificuldade na utilização dos algoritmos de otimização pelos usuários finais de testes, isso dependendo de uma série de tentativas para ajustar os parâmetros desses algoritmos (taxa de mutação, cross over e etc.) e conseguir os resultados desejados. Este estudo objetiva apresentar uma solução de automação para o problema de determinação dos parâmetros necessários para a execução das metaheurísticas baseadas em algoritmos evolutivos. Para isso, descreve a metaheurística utilizada na StateMutest, uma ferramenta que permite ao usuário a automação de testes baseados em modelo, na qual é possível criar modelos de máquina de estados, gerar automaticamente casos de teste para eles, avaliar os conjuntos de casos de teste baseado no critério de análise de mutantes, além da execução dos testes no modelo. Em seguida, apresenta técnicas de controle adaptativo de parâmetros para determinação automática dos parâmetros necessários pelo processo de otimização utilizado. Uma série de experimentos é feita para comparar os diferentes métodos de ajuste de parâmetros utilizando funções matemáticas conhecidas e modelos de problemas reais. A partir dos resultados, é possível mostrar a eficiência dessa técnica, adicionando essa implementação à ferramenta StateMutest, facilitando e promovendo assim o uso desta.

Palavras-Chaves: Testes baseados em busca; StateMutest; Geração de casos de teste; Controle Adaptativo de Parâmetros; Teste baseado em modelos; GEO; Otimização Extrema; Algoritmos baseados na natureza;

(8)

ABSTRACT

Throughout the development of a system, the software testing is responsible for quality control in order to ensure that the software is covering all the expected functions and that these are working as intended. In this phase of Software Test, there are problems that can't be solved with traditional techniques of Software Engineering, however these can be mathematically modeled and solved through optimization, mainly with the use of metaheuristics. In this context, a recent field called Search-based Software Engineering (SBSE) has emerged. It addresses the problem solving of Software Engineering through optimization techniques. Given the importance of the Software Test phase, a sub-area called Search-Based Software Testing (SBST) excels in the field. A common problem is the difficulty in using the optimization algorithms by the test developer, depending on a series of attempts to adjust the parameters of these algorithms (mutation rate, cross over and etc) and achieve the desired results. This study aims to present an automation solution to the problem of parameter determination necessary for the execution of metaheuristics based on evolutionary algorithms. To do so, we will describe the metaheuristics used in StateMutest, a tool that allows the user to automate model-based tests, in which it is possible to create state machine models, automatically generate test cases for them, evaluate case sets test based on the criterion of analysis of mutants, besides clear of the execution of the tests in the model. Next, techniques of adaptive control of parameters will be presented for automatic determination of the parameters required by the optimization process used. A series of experiments are conducted to compare the different methods of parameter setting using known mathematical functions and models of real problems. From the results, we can show the efficiency of this technique, adding this implementation to the StateMutest tool, facilitating and promoting its use.

Key Words:Search-based tests; StateMutest; Generation of test cases; Adaptive Parameters Control; Test based on models; GEO; Extreme Optimization; Nature-Based Algorithms;

(9)

LISTA DE FIGURAS

Figura 1. Busca aleatória no domínio de entrada e objetivo do teste ... 19

Figura 2. Fitness landscape. ... 20

Figura 3. Hill Climb indo em direção a um ótimo local ... 20

(10)

LISTA DE QUADROS

Quadro 1. Principais etapas da abordagem MOST ... 30

Quadro 2. Lista de parâmetros da MOST. ... 33

Quadro 3. Passos do algoritmo ARPC. ... 45

(11)

LISTA DE GRÁFICOS

Gráfico 1. Histograma de Tau com o MGEOvsl utilizando a técnica de AP na função de De Jong 1. ... 43 Gráfico 2. Distribuição de Probabilidade de mutação x Tau... 67 Gráfico 3. Número de avaliações para chegar no mínimo da função De Jong 1, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 71 Gráfico 4. Número de avaliações para chegar no mínimo da função De Jong 2, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 73 Gráfico 5. Número de avaliações para chegar no mínimo da função De Jong 3, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 74 Gráfico 6. Número de avaliações para chegar no mínimo da função Griewangk, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 76 Gráfico 7. Resultado com as avaliações das diferentes funções de testes e os métodos para definição automática de parâmetros (gráfico box-and-whisker)... 78 Gráfico 8. Resultado consolidado com as avaliações e os métodos para definição automática de parâmetros (gráfico box-and-whisker) ... 79 Gráfico 9. Valor da Função Objetivo 1 e Função Objetivo 2 do Teste 1 com modelo ATM, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 81 Gráfico 10. Valor da Função Objetivo 1 e Função Objetivo 2 do Teste 2 com modelo ATM, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. ... 82 Gráfico 11. Valor da Função Objetivo 1 e Função Objetivo 2 do Teste 1 com modelo Fuel Pump, utilizando 5 abordagens: Tau Manual e média de AP, ARPC, EARPC e RCPC. 84 Gráfico 12. Valor da Função Objetivo 1 e Função Objetivo 2 do Teste 2 com modelo Fuel

(12)

LISTA DE SIGLAS E ABREVIATURAS

AE Algoritmos Evolutivos

APC Adaptive Parameter Control

AP Adaptive Pursuit

ARPS Adaptive Range Parameter Selection DMAB Dynamic Multi-Armed Bandit

GRASP Greedy Randomized Adaptive Search Procedure IC Instituto de Computação

MBT Model Based Testing

MEF Máquina de Estado Finito

MEFE Máquina de Estado Finito Estendida

MGEOvsl Multi-Objective Generalized Extremal Optimization with variable string length

MOST Multi-Objective Search-based Testing approach from EFSM SBSE Search Based Software Engineering

SBST Search-Based Software Testing EFSM Extended Finite State Machine

ATM Automated Teller Machine (em português, caixa eletrônico)

SOC Self Organized Criticality (em português, criticalidade

(13)

SUMÁRIO 1. INTRODUÇÃO ... 15 2. FUNDAMENTAÇÃO TEÓRICA ... 18 2.1. O PROBLEMA DE OTIMIZAÇÃO ... 18 2.1.1. Os métodos de busca local... 19 2.1.2. Os métodos de busca global ... 21 2.1.3. Ajuste de parâmetros em algoritmos de otimização ... 26

2.2. TESTE BASEADO EM MODELO ... 26

3. ARQUITETURA STATEMUTEST E SEUS PARÂMETROS CONFIGURÁVEIS . 28 3.1. ARQUITETURA DA STATEMUTEST... 28

3.2. PARÂMETROS NECESSÁRIOS ... 31

4. CONTROLE AUTOMÁTICO DE PARÂMETROS ... 38

4.1. ADAPTIVE PURSUIT (AP) ... 40

4.2. ADAPTIVE RANGE PARAMETER CONTROL (ARPC) ... 44

4.3. ENTROPY-BASED ADAPTIVE RANGE PARAMETER CONTROL (EARPC) ... 47

4.4. REACTIVE CHOICE PARAMETER CONTROL (RCPC) ... 49

4.5. FERRAMENTAS PARA DESENVOLVIMENTO ... 52 4.5.1. StateMutest – ferramenta para execução dos modelos ... 52 4.5.2. Netbeans (Java) – Desenvolvimento dos testes em Java ... 52 4.5.1. Git e Bitbucket – controle de versão e repositório de código... 53 5. MODELOS IMPLEMENTADOS PARA OS EXPERIMENTOS ... 54 5.1. ESTUDO EXPLORATÓRIO DA ABORDAGEM ... 54 5.2. PREPARAÇÃO DOS EXPERIMENTOS ... 55 5.3. FUNÇÕES MATEMÁTICAS ... 56

(14)

5.4. FUNÇÕES MATEMÁTICAS SELECIONADAS ... 56 5.5. MODELO DE MÁQUINA DE ESTADO PARA TESTES ... 59 5.5.1. Modelo ATM ... 59 5.5.2. Modelo Protocolo de Transporte Classe 2 ... 62 5.5.3. Modelo Fuel Pump ... 65 5.6. DISTRIBUIÇÃO DE PROBABILIDADE DE TAU ... 67 6. RESULTADOS E ANÁLISES DOS EXPERIMENTOS ... 69 6.1. EXPERIMENTOS COM FUNÇÕES MATEMÁTICAS ... 70 6.1.1. Função De Jong 1 ... 71 6.1.2. Função De Jong 2 ... 72 6.1.3. Função De Jong 3 ... 74 6.1.4. Função Griewangk ... 76 6.2. ANÁLISE DOS RESULTADOS UTILIZANDO AS FUNÇÕES DE TESTE ... 77 6.3. EXPERIMENTOS UTILIZANDO GERAÇÃO DE CASOS DE TESTE ... 80 6.3.1. Modelo ATM ... 81 6.3.2. Modelo Fuel Pump ... 83 6.3.3. Modelo Class 2 Protocol ... 85 6.4. ANÁLISE DOS RESULTADOS UTILIZANDO GERAÇÃO DE CASOS DE TESTE ... 87 6.5. AMEAÇAS À VALIDADE ... 89 7. TRABALHOS RELACIONADOS ... 90 8. CONCLUSÕES ... 93 REFERÊNCIAS BIBLIOGRÁFICAS ... 95

(15)

1. INTRODUÇÃO

Things don't have to change the world to be important.

Steve Jobs

O teste de software é responsável pelo controle de qualidade, tem por finalidade garantir que o sistema abrangerá todas as funções esperadas, exercendo da maneira prevista seus objetivos. O profissional de testes deve compor um time de desenvolvimento e participar do projeto em sua totalidade, pois além de ratificar as novas funcionalidades, também deve validar o design, a utilização e o desempenho. Um teste é bem-sucedido quando detecta falhas ao exercitar o software com os casos de teste. Entretanto, a utilização de todo o domínio de entrada de dados é irrealizável, considerando aspectos funcionais e operacionais de um sistema, cabendo ao profissional escolher os valores que provem a maior cobertura possível. Consequentemente, a atividade de teste é apontada como uma das mais onerosas no desenvolvimento de novos softwares (MYERS, 1979; BERTOLINO, 2007). Portanto, a implantação de técnicas de teste eficazes e de baixo custo é de suma importância, compondo uma das principais direções para a pesquisa na área de teste de software.

Para Bertolino (2007), um dos desafios mais importantes na pesquisa de teste de software é a geração automática de casos de teste, sendo promissora sua conexão com técnicas baseadas em busca, empregadas no processo de geração. Outro desafio citado pelo autor é o teste baseado em modelos, cujo objetivo é usar uma representação do sistema durante o desenvolvimento para sustentar o processo de teste, permitindo assim a sua execução antes mesmo da implementação, trabalhando apenas com modelos de estado.

A utilização de técnicas de otimização para gerar casos de teste consiste em otimizar um dado de entrada de acordo com a avaliação do teste, expressa por meio de uma função de fitness. A área de pesquisa que investiga o uso de técnicas de otimização na geração de casos

(16)

de teste é conhecida como SBST (Search Based Software Testing). Neste contexto, há trabalhos que investigam SBST para o teste baseado em modelos, utilizando também a Máquina de Estado Finito Estendida (MEFE) (YANO, 2011), na qual os casos de teste são gerados a partir dos modelos de estado, ao contrário do código fonte, e são aplicados para garantir que a elaboração está de acordo com a especificação. Logo, em vez da exploração exaustiva do espaço de estados, é possível aplicar a otimização de busca durante a geração automática dos casos de testes para atingir uma maior cobertura.

A abordagem estudada nesse trabalho é denominada MOST (Multi-Objective Search-based Testing approach from EFSM), que, segundo Yano (2011), aplica os conceitos de SBST no teste baseado em modelo. Ela utiliza uma otimização multiobjetivo que avalia tanto a cobertura de uma determinada transição quanto o tamanho da sequência de testes gerada. Para guiar a busca são usadas informações sobre as dependências de controle do modelo, permitindo que o fluxo de dados das variáveis seja verificado. Para possibilitar essa estratégia, foi desenvolvido o MGEOvsl (Multi-Objective Generalized Extremal Optimization with variable string length), um algoritmo evolutivo de otimização extrema e fundamentado em princípios da natureza.

Posteriormente, foi criado um aplicativo com interface amigável chamado StateMutest (CARDOSO, 2015), que contém a MOST e outras ferramentas, no qual é possível criar modelos de máquina de estados, gerar automaticamente casos de teste, avaliar os conjuntos de casos de teste com o critério de análise de mutantes, além da execução dos testes no modelo e geração relatórios. É, portanto, uma ferramenta única, agregando diversas tecnologias diferentes de maneira fácil para o usuário final.

O problema tratado neste trabalho é a definição automática dos parâmetros necessários para o MGEOvsl que são solicitados ao usuário pela StateMutest, o que acaba gerando dificuldade na utilização desse aplicativo, exigindo muitos experimentos de tentativa e erro e consumindo tempo para encontrar valores aceitáveis dos parâmetros para determinado cenário de teste. O estudo teórico desta dissertação é composto principalmente pela análise de abordagens para o controle automático de parâmetros da metaheurística de otimização extrema durante a geração automática de casos de teste. A contribuição prática desta pesquisa vai além da geração de teste, uma vez que o controle automático dos parâmetros pode ser aproveitado em qualquer aplicação que utilizar algoritmos de otimização. A contribuição acadêmica também é importante, visto que o controle automático de parâmetros para algoritmos de

(17)

otimização extrema não é um tema comum na literatura, o que possibilita o desenvolvimento cientifico da temática estudada. Importante ressaltar que esse trabalho gerou uma publicação, o artigo “An Adaptive Multi-Objective Heuristic Search for Model-Based Testing” foi aceito como full paper no International Conference on the Quality of Information and Communications Technology (QUATIC 2018).

O objetivo geral do presente trabalho é investigar o controle automático de parâmetros para metaheurística de otimização. A partir do geral, cabe destacar também os seguintes objetivos específicos:

a) Avaliar as técnicas de ajuste de parâmetros existentes e verificar quais as mais indicadas para o algoritmo de MGEOvsl;

b) Implementar as técnicas selecionadas na MOST;

c) Atualizar a ferramenta StateMutest com a versão da MOST atualizada, a qual não requer do usuário o preenchimento dos parâmetros, que serão definidos automaticamente.

(18)

2. FUNDAMENTAÇÃO TEÓRICA

Este capítulo, de caráter reflexivo e introdutório, apresenta os principais tópicos conceituais relacionados aos fundamentos de: Técnica de Teste Baseada em Busca (SBST); métodos de otimização; definição automática de parâmetros e teste baseado em modelos; com o objetivo de buscar contribuições enriquecedoras para o conhecimento científico e para a estruturação do presente trabalho acadêmico.

A primeira publicação conhecida sobre SBST foi divulgada em 1976, por Webb Miller e David Spooner (1976). A abordagem do trabalho consistia em uma técnica simples para a geração de entradas de dados do tipo float, destacando-se na época por não trabalhar a execução simbólica com uso de restrições. Nessa abordagem, dados de teste eram “buscados” executando uma versão do software, com essas execuções sendo guiadas em direção aos dados requeridos por meio do uso de uma “função de custo” (doravante referida como função de fitness, termo normalmente relacionado a função de custo de algoritmos evolutivos) juntamente com um processo simples de otimização. As entradas que geravam execuções próximas de um caminho desejado eram recompensadas com valores de custo mais baixos, enquanto as entradas com valores de custo mais elevados eram descartadas. Atualmente a ideia base dessa área de pesquisa se mantém a mesma, entretanto novas abordagens foram desenvolvidas para a execução dos testes e para o processo de otimização, como a MOST apresentada na seção 3.1.

2.1. O problema de otimização

O processo de otimização é caracterizado pelo objetivo de maximizar ou minimizar uma função matemática a partir de coeficientes e variáveis. Estas variáveis podem conter restrições definidas em um conjunto de equações, que fazem parte do modelo do problema a ser solucionado (FREITAS et al., 2010). O termo “busca” refere-se às estratégias de técnicas de otimização que são conhecidas como algoritmos de busca.

(19)

2.1.1. Os métodos de busca local

A forma mais simples de um algoritmo de otimização, e o mais fácil de desenvolver, é a busca aleatória. Na geração de dados de teste, entradas são criadas aleatoriamente até que o objetivo do teste (por exemplo, a cobertura de uma determinada declaração do programa ou ramo) seja cumprido. Essa abordagem é muito pobre para encontrar soluções quando essas ocupam uma pequena parte do espaço global de pesquisa, como pode ser visto na Figura 1.

Figura 1. Busca aleatória no domínio de entrada e objetivo do teste

Fonte: autoria própria

Em vez de uma busca aleatória, a entrada desejada pode ser descoberta de maneira muito mais eficiente utilizando orientações. Para pesquisas metaheurísticas, essas orientações podem ser fornecidas na forma de uma função de fitness específica do problema, que pontua diferentes pontos do espaço de pesquisa no que diz respeito à sua "qualidade" ou à sua aptidão para resolver o problema em questão. A Figura 2 mostra um gráfico de uma função de fitness chamada fitness landscape, que mostra como entradas mais próximas dos dados de teste necessários para executar a estrutura de interesse são recompensadas com valores de fitness maiores do que os que estão mais longe. Tal informação de fitness pode ser utilizada pelos algoritmos de otimização, tais como o Hill Climbing (HARMAN, MCMINN, 2007). Esses algoritmos são descritos como uma abordagem de busca "local", porque consideram apenas uma solução de cada vez, e fazem movimentos na vizinhança dessas soluções.

Domínio de entrada = entradas geradas aleatoriamente

(20)

Figura 2. Fitness landscape.

Fonte: Autoria própria.

O Hill Climbing começa em um ponto aleatório no espaço de busca, em seguida os pontos no espaço de busca vizinhos são avaliados pela função de fitness. Quando uma solução candidata melhor é encontrada, o algoritmo se move para esse novo ponto, e avalia a nova vizinhança dessa solução. Este passo é repetido até que a vizinhança do ponto atual no espaço de busca não ofereça soluções melhores: é o chamado “ótimo local”. Se o ótimo local não é o ótimo global, como mostrado na Figura 3, a pesquisa pode se beneficiar de uma reinicialização, realizando uma subida a partir de uma nova posição no espaço de busca, como pode ser visto na Figura 4.

Figura 3. Hill Climb indo em direção a um ótimo local

Domínio de entrada

Fi

tn

es

s

Domínio de entrada

Fi

tn

es

s

(21)

Fonte: autoria própria.

Figura 4. Hill Climb indo em direção ao ótimo global

Fonte: Autoria própria.

2.1.2. Os métodos de busca global

Os métodos tradicionais de otimização, como busca aleatória, hill climbing, métodos baseados em gradiente, fazem uma busca local no espaço das soluções viáveis. Ou seja, eles encontram mínimos locais, o que significa que não há certeza de que a solução encontrada seja a melhor. De fato, em problemas de engenharia reais, o espaço de projeto pode se apresentar bem mais difícil do que o desejável para ser tratado eficientemente pelos métodos determinísticos de busca local. Além de apresentar múltiplos mínimos e poder ser composto por um conjunto de variáveis contínuas, inteiras e/ou discretas, frequentemente as derivadas analíticas da função objetivo e as restrições não estão disponíveis. Outra característica presente em muitos problemas reais é uma severa não linearidade da função objetivo e das restrições. Embora todas essas dificuldades possam ser de certa forma contornadas por meio de artifícios numéricos, ou aproximações, elas podem levar os métodos determinísticos de busca local a apresentarem um desempenho muito pobre (SOUSA, 2003).

Para evitar que durante o processo de otimização a busca não saia de um mínimo local, foram desenvolvidos vários métodos que realizam uma busca global pelo ponto ótimo no

Domínio de entrada

Fi

tn

es

(22)

espaço do problema (GRAY et al., 1997). Alguns desses métodos consistem na criação de metaheurísticas guiadas por fenômenos que ocorrem na natureza, ou seja, elas abordam os problemas de otimização por meio de mecanismos matemáticos que tentam imitar os fenômenos naturais. Desse grupo, se destacam os algoritmos genéticos, desenvolvidos e aplicados a diversos de problemas de otimização, tanto na ciência como na engenharia.

Na Figura 5 é apresentado um fluxograma para mostrar, de uma forma categorizada, vários métodos de otimização disponíveis para serem utilizados na solução de problemas (SOUSA, 2003). Dentre os métodos para busca global inspirados pela natureza apresentados abaixo, está destacado o método da otimização extrema, que é utilizado pela MOST, conforme descrito na seção 4.1.

Figura 5. Métodos de Otimização

(23)

2.1.2.1. A metaheurística dos algoritmos evolutivos

Os algoritmos evolutivos são baseados em uma gama de mecanismos da evolução biológica presentes na natureza, sendo um método empregado para a resolução de problemas de otimização (HARMAN, 2001). O funcionamento da metaheurística se resume basicamente no emprego de duas operações genéticas: o crossover, no qual as informações estruturais de duas soluções são cruzadas a fim de gerar duas outras novas; e a mutação, processo pelo qual algumas alterações aleatórias podem acontecer nas soluções geradas. Após isso, as soluções atuais são avaliadas para a determinação de quais continuam para a próxima iteração. Dessa forma, elas são selecionadas mediante o desempenho em relação à função de fitness. Com as novas soluções oriundas das que foram selecionadas, o processo evolui com o intuito de gerar soluções cada vez melhores. Para que o processo não gere necessariamente as mesmas soluções e para que o processo explore vários espaços de busca, a operação de mutação é aplicada com uma pequena taxa sobre as soluções. Uma visão gráfica dos principais passos de um algoritmo genético pode ser vista na Figura 6.

Figura 6. Visão geral das principais etapas de um algoritmo genético

Fonte: Mcminn (2011).

Em geral, existem dois requisitos que precisam ser cumpridos a fim de aplicar essa técnica para um problema de testes (HARMAN, 2007):

(24)

1. Representação. As soluções candidatas para o problema em questão devem ser capazes de serem codificadas de modo que possam ser manipuladas pelo algoritmo de busca – geralmente por meio de sequências de elementos –, como cromossomos no caso de um algoritmo genético.

2. Função de fitness. A função de fitness orienta a busca para áreas promissoras do espaço de busca, avaliando soluções candidatas. Essa função é específica do problema e precisa ser definida a cada novo problema.

Os engenheiros de software normalmente já têm uma representação adequada de seu problema (HARMAN, 2007). Esse é o caso para a geração de dados de teste, em que o domínio de entrada ou as sequências de entradas para o software sob teste pode ser otimizada diretamente. Muitos engenheiros de software naturalmente trabalham com métricas de software (HARMAN; CLARK, 2004) que podem formar a base de funções de fitness, sendo assim é exigido apenas selecionar uma metaheurística para a otimização a fim de aplicar uma abordagem baseada em busca.

2.1.2.2. O método da otimização extrema

O método dos algoritmos evolutivos apresentados na seção anterior consiste em uma pesquisa estocástica global. Ou seja, a busca do ótimo global é feita por meio de um processo estocástico, que é orientado pelo ajuste de parâmetros livres, como as probabilidades de seleção e o tamanho da população, cruzamento e mutação. Assim, ela exige que um grande número de avaliações da função objetiva seja efetivo. Em problemas nos quais o custo computacional das avaliações é alto, ela pode tornar-se impraticável (SOUSA, 2003). Logo, uma nova abordagem para uma metaheurística para problemas difíceis de otimização foi proposta por Boettcher e Percus (2001), que utilizaram um tratamento diferente para a evolução das espécies, dando origem ao método da OE (Otimização Extrema).

O método OE tem como base a teoria da Criticalidade Auto-Organizada ou Self Organized Criticality (SOC, sigla em inglês), segundo a qual os sistemas complexos que têm muitos elementos que interagem uns com os outros evoluem naturalmente para um estado crítico no qual uma pequena mudança em um deles gera avalanches que podem alcançar

(25)

qualquer um dos outros elementos que fazem parte do sistema (BAK; CHEN, 1991). Nesse modelo, as espécies são colocadas lado a lado (Figura 7) e a menos adaptada é forçada a sofrer uma mutação. A mudança no índice de adaptabilidade das espécies menos adaptadas significa para os seus vizinhos que eles terão que se adaptar a um novo competidor local e, assim, eles também são forçados a sofrer mutação, mesmo se seus índices de adaptabilidade forem altos. Depois de algumas iterações, a população evolui para um estado crítico em que todas as espécies têm um índice de adaptabilidade acima de um determinado valor, chamado de valor crítico. A partir deste momento, a dinâmica do sistema torna possível que o índice de adaptabilidade de um certo número de espécies caia para valores abaixo do limiar crítico, na forma de avalanches que podem atingir todas as espécies. Portanto, o método OE com uma busca dinâmica que apresenta características de SOC possibilita o aparecimento de soluções ótimas rapidamente, sistematicamente modificando as espécies menos adaptadas da população, ao mesmo tempo em que pode escapar de mínimos locais por meio de avalanches, modelando os bits das variáveis como as espécies (SOUSA, 2003).

Figura 7. Ecossistema de espécies

Fonte: Sousa (2003).

Figura 8. Representação de uma variável para algoritmo de OE

(26)

2.1.3. Ajuste de parâmetros em algoritmos de otimização

Os parâmetros dos algoritmos evolutivos (ou otimização extrema) afetam diretamente a performance dos mesmos. Entretanto, os usuários não têm conhecimento ou tempo para encontrar os valores ideais para seu problema (ALETI; MOSER, 2013). Ou seja, antes de poder utilizar esses algoritmos, uma série de parâmetros têm de ser informados da maneira correta para o problema específico, tais como:

• Determinismo da pesquisa; • Tamanho da população; • Número de filhos; • Processo de seleção; • Taxa de mutação; • Taxa de Crossover.

De acordo com Eiben et al. (2007), existem várias técnicas para configuração automática de parâmetros. É importante destacar, de início, a distinção entre o ajuste de parâmetros e o controle de parâmetros: o ajuste aborda como escolher os valores de parâmetros antes de executar um algoritmo de busca; enquanto o controle de parâmetros consiste em como alterar os valores dos parâmetros durante a execução da busca, sendo esse o foco deste trabalho. Esses algoritmos de controle pertencem à classe de técnicas de Probability Matching (THIERENS et al, 2005), nas quais a probabilidade de aplicação de um valor de um parâmetro é proporcional a qualidade do mesmo. Essas técnicas são descritas em detalhes no capítulo 4.

2.2. Teste Baseado em Modelo

Os testes têm como objetivo mostrar que os comportamentos esperados e os comportamentos atuais de um sistema não diferem. Ou seja, o objetivo do teste é a detecção de falhas: diferenças observáveis entre os comportamentos de implementação e os que são

(27)

esperados com base na especificação. O teste baseado em modelo, MBT (Model Based Testing), é uma variante que se baseia em modelos de comportamento explícitos, que codificam o comportamento pretendido de um sistema e, possivelmente, o comportamento do seu ambiente. Os pares de entrada e saída do modelo da implementação são os casos de teste, sendo que a saída do modelo é a saída esperada do sistema (YANO, 2011). Esses modelos são utilizados no desenvolvimento de sistemas complexos, pois permitem abstrair a implementação do sistema, possibilitando uma melhor exposição e diálogo entre os participantes, e também a análise, a ratificação e a documentação dos sistemas (UTTING, 2011).

A MEF (Máquina de Estado Finito) é um importante método formal para a representação de especificações de sistema. Contudo, MEFs habituais representam apenas o fluxo de controle e não fornecem mecanismos para modelar um importante aspecto comportamental do sistema, como o fluxo de dados. Assim, MEFs estão susceptíveis ao problema de expansão de estados para representar o sistema, pois o número de estados pode crescer rapidamente devido ao domínio dos dados. Dessa maneira, tem-se utilizado a Máquina de Estado Finito Estendida (MEFE), que permite representar os pontos de controle e o comportamento de dados de um sistema, descrevendo ações e condições com parâmetros e variáveis (MOORE, 1956).

(28)

3.

ARQUITETURA STATEMUTEST E SEUS

PARÂMETROS CONFIGURÁVEIS

3.1. Arquitetura da StateMutest

A StateMutest é uma ferramenta de automação de testes baseados em modelo. É uma realização da Universidade Estadual de Campinas (UNICAMP) em parceria com membros da Universidade Federal de São Carlos (UFSCar) e do Instituto Nacional de Pesquisas Espaciais (INPE). Com essa ferramenta é possível criar modelos de máquina de estados, gerar casos de teste para eles, avaliar os conjuntos de casos de teste com base no critério de análise de mutantes e aplicar esses casos gerados contra um modelo. Uma vez indicados os objetivos de um teste, a execução e a geração são feitas automaticamente (CARDOSO, 2015).

Figura 9. Edição gráfica de um modelo de estados, identificação das transições ativas

(29)

Figura 10. Visão Geral Arquitetura StateMutest

Fonte: Autoria própria.

Conforme o esquema apresentado na Figura 10, o número 1 representa as duas funções objetivo definidas pela MOST (Multi-Objective Search-based Testing approach from EFSM), que são utilizadas no processo de otimização. Estas funções foram determinadas para orientar o MGEOvsl na geração de teste a partir de MEFE, são elas: cobertura da transição alvo e dependentes (Função Objetivo 1) e tamanho da sequência de entrada (Função Objetivo 2) (YANO, 2011). As soluções geradas significam um balanço entre F1 e F2, visando encontrar uma sequência de entrada de tamanho mínimo, mas longa o suficiente para cobrir o máximo das transições alvo, sendo essas informadas pelo usuário, indicando quais as transições que ele deseja que sejam cobertas pelos testes, aplicando a fronteira de Pareto (ZITZLER et al., 2004). Este conceito é utilizado com a otimização multiobjectivo, pois representa um conjunto com as soluções que não são dominadas por nenhuma outra solução.

O número 2 representa o Modelo de Estados que foi criado pelo usuário contendo todos os estados e as regras de transição (ver Figura 9). O Motor da Máquina de Estados é capaz de executar um Modelo de Estados sem que seja necessário implementar o programa representado. Já o número 3 mostra que esse Motor é utilizado pelo MGEOvsl a cada iteração para avaliar os parâmetros de entrada gerados e verificar quais transições do modelo foram sensibilizadas de acordo com as regras de transições definidas. Esse processo iterativo é guiado

s

StateMutest

s

s

MOST – Geração automáticas de casos de testes

s MEFE Motor da Máquina de Estados Teste de Mutantes

MGEOvsl Casos de Teste

Função Objetivo 1 Função Objetivo 2 Gerador de Mutantes Transições Alvo Modelo de Estados 1 2 3 4 5

(30)

pelos princípios da Otimização Extrema do MGEOvsl e repetido até que se atinja os critérios de parada e encontre o melhor conjunto de casos de testes, avaliados através das funções objetivos FO1 e FO2.

Sousa (2003) desenvolveu o algoritmo de otimização GEO (Generalized Extreme Optimization), que deu origem ao MGEOvsl (Multi-Objective Generalized Extremal Optimization with variable string length), elemento número 4 do gráfico acima. Trata-se de uma nova abordagem de otimização baseada na teoria da Criticalidade Auto-Organizada (Self-Organized Criticality – SOC), e destina-se a ser utilizada em problemas que apresentem características complexas, como um espaço de projeto disjunto ou não convexo, a existência de múltiplas soluções sub-ótimas, severas não linearidades na função objetivo ou nas restrições e a combinação de variáveis contínuas, inteiras ou discretas.

O número 5 recebe os casos de teste gerados, além de outros que o usuário tenha criado, aplicando um Gerador de Mutantes para criar variações do modelo original. Os testes são executados e é medida sua eficiência em identificar esses mutantes. Contudo, vale lembrar que a geração de mutantes não faz parte do escopo deste estudo científico, visto que o principal objetivo é o algoritmo de otimização MGEOvsl.

As principais etapas da abordagem MOST estão no Quadro 2 e na Figura 11:

Quadro 1. Principais etapas da abordagem MOST

PASSO DESCRIÇÃO

1 Modelar uma MEFE M a partir da especificação

2 Obter o modelo executável e validar M

3 Instrumentar o modelo executável

4 Analisar as dependências

5 Gerar sequências de entrada e avaliar o caminho de transições percorrido

6 Retornar os casos de teste

(31)

Figura 11. Abordagem MOST.

Fonte: Yano (2011).

3.2. Parâmetros necessários

Nesta seção serão elucidados todos os parâmetros requisitados ao usuário atualmente pelo MGEOvsl, expostos através das telas de configuração da MOST, com o intuito de verificar quais podem ser automatizados, facilitando assim a utilização da ferramenta por parte do usuário. Existem quatro abas de parametrização, com várias informações obrigatórias, cada uma destas será avaliada e descrita a seguir.

(32)

Figura 12. Parâmetros requisitados pela MOST ao usuário

Fonte: Autoria própria.

Na Figura 12 podemos verificar 7 parâmetros, descritos detalhadamente no Quadro 3:

(33)

Quadro 2. Lista de parâmetros da MOST.

Parâmetro Descrição

1 N. of Experiments

Indica quantas vezes vai executar o método de geração de teste. Para cada experimento todo o intervalo de Tau é coberto, indo do Tau inicial para o Tau final.

2 N. of Runs

Para cada Tau o MGEOvsl é executado esse número de vezes. Ou seja, são três multiplicações que ocorrem:

(𝑁. 𝑜𝑓 𝑅𝑢𝑛𝑠)×(𝑁. 𝑜𝑓 𝐸𝑥𝑝𝑒𝑟𝑖𝑚𝑒𝑛𝑡𝑠)× (𝐹𝑖𝑛𝑎𝑙 𝑇𝐴𝑈 − 𝐼𝑛𝑖𝑡𝑖𝑎𝑙 𝑇𝐴𝑈) 0.25

3 Initial TAU

Define o valor inicial do Tau, que vai ser incrementado em 0.25 até chegar ao valor do Final Tau. Se o Initial Tau for 1 e o Final Tau for 2, serão feitas 4 execuções completas do algoritmo:

Tau = {1.0, 1.25, 1.5, 1.75, 2.0}

4 Final TAU Define o valor Final do Tau.

5 N. of Evaluations

Número de avaliações máximo feito pelo algoritmo de otimização. Cada avaliação inclui gerar sequências de entrada e avaliar o caminho de transições percorrido. Esse é um critério de parada para o MGEOvsl, quanto maior o número de avaliações mais chances de encontrar as melhores soluções. Porém, existe a relação direta com o tempo de execução da geração, se esse valor for muito alto a otimização pode levar dias para ser concluída.

6 Independent Runs

Durante a execução do MGEO esse parâmetro indica quantas vezes as variáveis (ranking, matriz de domínio e parâmetros) são reinicializadas a fim de evitar que o algoritmo de otimização fique preso em ótimos locais. No exemplo da Figura 11, com o valor 100 e N. of Evaluations 200.000, a cada 20.000 avaliações ocorre essa reinicialização.

7 N. of Variables

Utilizado a fronteira de Pareto para avaliar o tamanho do teste, o N. of

Variables indica o número máximo de transições que o compõem. Nesse

exemplo, um teste deve ter menos de 350 passos, caso contrário será descartado.

Fonte: Autoria própria.

Os parâmetros 1, 2, 5, 6 do Quadro 2 são informações que não estão relacionadas com o domínio/modelo do usuário, são parâmetros técnicos necessários para o algoritmo de otimização. A análise também apontou que diversos parâmetros têm funções semelhantes e podem ser consolidados, como no caso dos utilizados para controlar os laços de repetição e o número de testes gerados. Neste sentido, os parâmetros que serão mantidos são: N. of Experiments, N. of Evaluations e N. of Variables, sendo que esse último indica a quantidade máxima de passos do teste, e, portanto, será renomeado para Max. Transitions per Test.

(34)

Sousa (2002) estabelece que 𝜏 (Tau) é um parâmetro do MGEOvsl que indica a taxa de determinismo da pesquisa. Durante o processo de otimização, para evitar que o algoritmo pare em um mínimo local, esse possui um mecanismo que ordena as N variáveis de forma que a de menor índice de adaptabilidade é a primeira, e a mais bem adaptada tem índice

N. Seguindo a lógica do autor, para 𝜏 → 0, o algoritmo torna a busca pelo ótimo totalmente

aleatória (random walk), sendo que todas as variáveis têm a mesma probabilidade de serem escolhidas para sofrer mutação. Já para 𝜏 → ∞ a variável menos adaptada é sempre escolhida para sofrer mutação e a busca se torna determinística. De fato, para um dado valor de 𝜏 não próximo dos seus valores extremos, qualquer variável pode ser escolhida para sofrer mutação, embora aquelas com menor índice de adaptabilidade sejam as mais prováveis de serem selecionadas. A cada avaliação, a variável para sofrer mutação é eleita de acordo com a seguinte distribuição de probabilidades dos k índices:

𝑃(𝑘) = 𝑘FG 1 ≤ 𝑘 ≤ 𝑁

As demais abas de parâmetros mostradas nas Figuras 13, 14 e 15, que se encontram abaixo, estão relacionadas ao modelo criado pelo usuário e são necessárias para a geração dos testes. Sendo assim, esses parâmetros serão mantidos, uma vez que não é possível defini-los automaticamente, pois dependem do cenário que o usuário pretende testar.

(35)

Figura 13. Usuário deve indicar as transições alvo para execução

Fonte: Autoria própria.

Na figura 13, são exibidas as transições alvo indicadas pelo usuário, as quais devem obrigatoriamente estar presentes nos testes gerados. É, portanto, um critério para excluir os casos de testes que não passarem por tais transições.

(36)

Figura 14. Usuário indica quais as transições dependentes desejadas

Fonte: Autoria própria.

Na Figura 14 é dada ênfase às transições dependentes selecionadas pelo usuário, indicando quais podem estar opcionalmente presentes nos testes gerados. É importante ressaltar que, diferente das transições alvo, essas não são obrigatórias e, por conseguinte, não fazem parte do critério de eliminação de casos gerados. Todavia, a Função Objetivo 1 da MOST, apresentada na arquitetura do sistema (item 4.1), busca justamente otimizar essa cobertura de teste, de modo que o máximo possível das transições dependentes sejam atingidas.

(37)

Figura 15. Usuário indica o domínio de cada parâmetro dos eventos do modelo

Fonte: Autoria própria.

Conforme Figura 15, o usuário deve informar o domínio para cada parâmetro de evento, e o limite máximo e mínimo do domínio, pois ele será respeitado pelo gerador de valores no momento que estiver empregando os valores no processo da criação dos dados. Então, os eventos do modelo são acionados pelo teste para navegar através das transições utilizando esses valores como input para a máquina de estados.

Após a avaliação das telas, foi conduzida uma análise no código fonte do MGEOvsl visando checar se haveriam mais parâmetros que não estavam expostos na interface com o usuário. A conclusão dessa análise mostrou que não existe nenhum parâmetro adicional oculto, corroborando, assim, o conceito criado por Sousa (2002) referente à concepção de um algoritmo de otimização minimalista, com uma lista enxuta de parâmetros.

(38)

4. CONTROLE AUTOMÁTICO DE

PARÂMETROS

A performance dos algoritmos de otimização está ligada aos seus parâmetros de configuração, como no caso das metaheurísticas de algoritmos evolutivos (ou otimização extrema), que dependem de parâmetros como taxa de mutação, recombinação, entre outros. É correto argumentar que a definição de um valor fixo para um parâmetro não garante a performance ótima do algoritmo, uma vez que diferentes estágios do processo de otimização podem ter valores ideais distintos (BACK, 1992; STEPHENS et al., 1998). Intuitivamente, o processo de otimização tem um comportamento dinâmico, que se inicia com uma busca global mais difusa, necessitando de valores de parâmetros que permitam uma maior exploração do espaço, e vai até uma busca focada nos melhores valores locais, dependendo assim de parâmetros que levem para a convergência do algoritmo. Na técnica de Controle de Parâmetros (ARCURI; FRASER, 2011), a principal vantagem é a determinação automática dos valores ótimos para os parâmetros sem que seja necessário um tempo para que os especialistas experimentem diversas combinações manualmente, buscando obter a melhor performance para cada instância do problema. Segundo Arcuri e Fraser (2011), o controle de parâmetros é uma área promissora de pesquisa, mas pouco inexplorada na área de SBSE - Search-Based Software Engineering.

A caracterização dos diferentes tipos de Controle de Parâmetros está na maneira como os valores são adaptados durante o processo de busca. Segundo Aleti e Moser (2016), existem três categorias para essa adaptação: Determinístico, Auto-adaptativo e Controle Adaptativo de Parâmetros (EIBEN et al., 2007). O controle Determinístico escolhe as configurações de parâmetros ideais com base no tempo, sem usar o feedback da busca (MEZURA, 2009). O problema dessa abordagem está na elaboração do cronograma de mudança com base no número total de iterações que o algoritmo de otimização terá de executar para convergir, sendo muito difícil de prever esse número. O controle Auto-adaptativo combina a busca pelos parâmetros ótimos com a busca das soluções ótimas, isto é, implementado e codificando os parâmetros dentro do genótipo das soluções, assim ambas evoluem de maneira

(39)

simultânea (FARMANI; WRIGHT, 2003; DEB; BEYER, 2001). Contudo, incluir o espaço de parâmetros na busca amplia o tamanho da solução e aumenta a complexidade do problema de otimização, exigindo mais iterações e interferindo na convergência dos valores. Além disso, a procura de parâmetros ótimos pode estar sujeita a uma convergência prematura, que é um problema comum enfrentado pela busca de soluções (CERVANTES; STEPHENS, 2009). O Controle Adaptativo de Parâmetros separa a busca por soluções ótimas da busca por valores de parâmetro ideais(THIERENS, 2005; LOBO; GOLDBERG, 2007). Esse método monitora as propriedades da execução do algoritmo, como, por exemplo, a qualidade das soluções. A mudança nas propriedades do algoritmo é usada como um guia para ajustar os valores dos parâmetros nas iterações seguintes. Ao contrário do controle Auto-adaptativo, o mecanismo de atualização e a seleção dos valores dos parâmetros ideais não fazem parte do ciclo de otimização, não afetando os valores da busca. Nesse sentido, é possível concluir que o método mais indicado para o MGEOvsl é o Controle Adaptativo de Parâmetros, cujo modelo conceitual pode ser visto na Figura 16.

Figura 16. Um modelo conceitual de controle de parâmetros adaptativos em algoritmos evolutivos

Fonte: Aleti e Moser (2016)

De acordo com Aleti e Moser (2016), após avaliar mais de 152 trabalhos na área de Controle Adaptativo de Parâmetros, os principais algoritmos dessa categoria são os que trabalham com probabilidade de seleção de um parâmetro baseado no feedback. Fundamentado nesses trabalhos, os seguintes algoritmos foram selecionados e implementados:

(40)

• Adaptive Pursuit (AP) (THIERENS et al., 2005): Possui um mecanismo que garante que valores ótimos ganhem um valor de probabilidade de seleção mais alta; • Adaptive Range Parameter Selection (ARPC) (ALETI, 2009): Nesse algoritmo os parâmetros contínuos são divididos em dois intervalos iguais. A cada iteração o melhor intervalo é subdividido no meio, enquanto o intervalo pior é fundido com os demais vizinhos ruins. Assim os melhores valores vão sendo concentrados em intervalos cada vez menores;

• Entropy-based Adaptive Range Parameter Control (EARPC): Esse algoritmo clusteriza o valor dos parâmetros por performance e subdivide os intervalos de acordo com esses clusters de maneira que a entropia desses intervalos seja a menor possível. Como esse processo é repetido a cada iteração, caso um parâmetro bom seja penalizado, isso não tem um efeito além da iteração subsequente;

• Reactive Choice Parameter Control (RCPC): Nesse caso, a probabilidade de seleção de um determinado valor é calculada a partir da média da qualidade das soluções obtidas utilizando esse valor, sendo avaliada a cada iteração.

Nas seções seguintes cada uma dessas técnicas é descrita em detalhes, com a exposição da sua base teórica e dos respectivos algoritmos.

4.1. Adaptive Pursuit (AP)

Os algoritmos de perseguição são uma classe de programas que convergem rapidamente, eles perseguem os valores dos parâmetros que têm a melhor recompensa, aumentando a sua probabilidade de seleção, enquanto as probabilidades dos demais são reduzidas.

Podemos definir a como um operador que possui um vetor de valores possíveis chamado V com tamanho K. Sendo P(t) o vetor de probabilidade dos valores do operador na iteração t, onde Pi(t) é a probabilidade do valor Vi ser selecionado na próxima iteração t+1. O vetor Q(t) indica a qualidade estimada para cada valor de a, onde o valor com a melhor

(41)

qualidade estimada é a*. De acordo com Thierens (2005), o algoritmo de perseguição aumenta a probabilidade de seleção Pa* (t) e diminui a probabilidade de seleção dos demais valores Pa(t),

∀a≠a*, selecionando o operador de maneira proporcional ao P(t) e subsequentemente atualizando a qualidade do operador corresponde Qa(t). Para a próxima iteração, o melhor operador a* é selecionado e sua probabilidade de seleção é aumentada de acordo com a taxa de aprendizado β:

𝑎∗ = 𝑎𝑟𝑔𝑚𝑎𝑥

Q[𝑄Q(𝑡 + 1)] 𝑃Q∗(𝑡 + 1) = (1 − 𝛽)𝑃Q∗(𝑡)+ 𝛽

Os demais operadores têm sua probabilidade diminuída: ∀a ≠ a ∗∶ 𝑃Q∗(𝑡 + 1)= (1 − 𝛽)𝑃Q(𝑡)

Quando um operador é selecionado repetidas vezes como o melhor, sua probabilidade converge para 1, enquanto a probabilidade dos demais valores converge para 0, sendo que nessa circunstância o operador não é mais aplicado. No caso de seleção de parâmetros, onde o ótimo varia ao longo da execução, essa abordagem torna-se problemática ao excluir operadores por conta da probabilidade 0. Para corrigir esse ponto devemos considerar uma probabilidade mínima Pmin e uma probabilidade máxima Pmax onde 0 < Pmin < Pmax < 1. Assim, o cálculo da probabilidade se torna:

𝑃Q∗(𝑡 + 1)= 𝑃Q∗(𝑡)+ 𝛽[𝑃XQY− 𝑃Q∗(𝑡)]

∀a ≠ a ∗∶ 𝑃Q∗(𝑡 + 1)= 𝑃Q(𝑡)+ 𝛽(𝑃XZ[ + 𝑃Q(𝑡))

A probabilidade máxima é calculada dado um valor de Pmin, de maneira que a soma das probabilidades Pa seja 1, ou seja, 𝑃XZ[ = ]\ :

𝑃XQY = 1 − (𝐾 − 1)𝑃XZ[

(42)

Figura 17. Algoritmo Adaptive Pursuit

Fonte: Lobo et. al. (2007).

Um exemplo escolhido para testar esse algoritmo foi a função matemática De Jong 1 (seção 5.2), otimizando o parâmetro Tau do algoritmo MGEOvsl com o AP para controle automático desse parâmetro. Por se tratar de uma função convexa, quanto maior o valor do Tau, mais determinística se torna a busca, chegando assim mais rapidamente à solução ótima. Por esse motivo é possível observar que, apesar do AP passar por todos os elementos do intervalo de Tau, a maioria das vezes são selecionados valores maiores (entre 5 e 8) por conta do melhor fitness. No Gráfico 1 é apresentado o histograma do parâmetro Tau ao longo da execução do algoritmo Adaptive Pursuit:

(43)

Gráfico 1. Histograma de Tau com o MGEOvsl utilizando a técnica de AP na função de De Jong 1.

Fonte: Autoria própria. 0 500 1000 1500 2000 0.25 0.75 1.25 1.75 2.25 2.75 3.25 3.75 4.25 4.75 5.25 5.75 6.25 6.75 7.25 7.75 Nú m er o de v ez es u til iz ad o Tau

Histograma Tau

(44)

4.2. Adaptive Range Parameter Control (ARPC)

O algoritmo AP, demonstrado na seção anterior, atribui a probabilidade de seleção individualmente aos possíveis valores de um parâmetro, de acordo com a qualidade obtida durante o processo de otimização. Já o algoritmo ARPC divide o intervalo de valores do parâmetro em dois subintervalos de acordo com a qualidade média dos valores contidos: quanto melhor a qualidade, maior é a probabilidade atribuída ao intervalo todo. Então, considerando essa probabilidade, um intervalo é escolhido e dentro dele um elemento é selecionado (Aleti et al, 2012). A cada N avaliações da otimização os espaços são ajustados, sendo o intervalo de maior qualidade divido em 2 e a metade adjacente unida ao de pior qualidade, voltando para o número inicial de dois intervalos. Esse processo faz com que o intervalo de maior probabilidade tenha menos elementos, consequentemente aumentando a probabilidade de que algum desses valores sejam selecionados. No Quadro 3 é exposta a representação desse processo:

(45)

Quadro 3. Passos do algoritmo ARPC.

Passo do processo Representação

1 Inicialmente, o intervalo de valores é dividido em 2 com probabilidades iguais.

2

Um dos intervalos é sorteado, levando em consideração a probabilidade, e

subsequentemente um de seus elementos é sorteado. A qualidade desse elemento, baseada no feedback da execução, é utilizada para posteriormente recalcular a qualidade média dos intervalos.

3

A cada N execuções, o intervalo com melhor qualidade tem a probabilidade aumentada e o de pior qualidade reduzida proporcionalmente a média dos feedbacks de seus elementos.

4 O intervalo melhor é divido em dois.

5

O intervalo criado no passo 4 é unido com o intervalo adjacente atualizando sua probabilidade.

6

Os passos 2, 3, 4 e 5 são repetidos a cada iteração, atualizando a probabilidade com base no feedback da qualidade.

A B

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !# !$ !% !& !' !( !) A B

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !# !$ !% !& !' !( !) A B

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !# !$ !% !& !' !( !) A1 B

Intervalo dos valores do parâmetro

Pr ob ab ili da de A2 !" !# !$ !% !& !' !( !) A1 B + A2

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !# !$ !% !& !' !( !)

(46)

Fonte: Autoria própria.

Segue na Figura 18 o algoritmo que expressa o método descrito no Quadro 3:

Figura 18. Algoritmo de ARPC e algoritmo auxiliar (AdjustBins) para ajuste dos intervalos e probabilidades.

(47)

4.3. Entropy-based Adaptive Range Parameter Control (EARPC)

Durante a utilização do ARPC, é observado que intervalos de alto desempenho são, por vezes, absorvidos em intervalos muito grandes, tornando difícil para o algoritmo restabelecer pequenas áreas promissoras dentro desses últimos. A fim de mitigar essa limitação, foi desenvolvido o algoritmo EARPC (Aleti et al, 2013), baseado no ARPC, que muda a maneira como os intervalos são divididos. Nesse caso, os valores do parâmetro são agrupados de acordo com a qualidade obtida a cada iteração, criando dois grupos utilizando uma técnica de clustering. Uma vez que a cada valor é atribuído a um cluster, são criados dois intervalos de maneira que se obtenha o menor valor de uma medida baseada em entropia. Em seguida, a qualidade média é calculada para cada intervalo e também a probabilidade proporcional. Segue no Quadro 4 a representação desse processo:

(48)

Quadro 4. Passos do algoritmo EARPC.

Passo do processo Representação

1 O algoritmo de clusterização divide os valores em 2 grupos de acordo com a qualidade.

2 Os valores são atribuídos aos respectivos grupos dentro do intervalo.

3

Utilizando uma medida de entropia, é feita a escolha de onde se dará a divisão do intervalo de maneira que a entropia seja mínima.

4

A qualidade média de cada intervalo é calculada e assim a probabilidade proporcional é definida.

5

É feita uma seleção de intervalo,

considerando a probabilidade do passo 4. Um elemento então é aleatoriamente obtido desse intervalo selecionado.

6

Os passos 1 a 5 são repetidos a cada iteração, atualizando a qualidade com base no

feedback.

Fonte: Autoria própria

Segue na Figura 19 o algoritmo que expressa o método descrito no Quadro 4:

A B

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !#!$ !% !& !' !( !) !) A B

Intervalo dos valores do parâmetro

Pr ob ab ili da de !" !# !$ !% !& !' !( !) !)

Intervalo dos valores do parâmetro

!" !# !$ !% !& !' !( !) !* Cluster 1 Cluster 2 !" !# !$ ! % !& !' !( !) !*

Intervalo dos valores do parâmetro

!" !# !$ !% !& !' !( !) !*

(49)

Figura 19. Algoritmo EARPC, cálculo de entropia (InfoEntropy), ajuste dos intervalos (AdjustRange) e agrupamento (Cluster).

Fonte: Aleti et al. (2013).

4.4. Reactive Choice Parameter Control (RCPC)

O método de controle de parâmetros Reactive Choice é baseado no trabalho de Prais et al. (2000) e pode ser utilizado para determinar a seleção do valor de um determinado parâmetro dentro um intervalo discriminado. Seguindo o mesmo modelo conceitual dos algoritmos anteriores (figura 15), a probabilidade de seleção de um determinado valor é calculada a partir da média da qualidade das soluções obtidas utilizando esse valor. Essa probabilidade é avaliada a cada iteração da seguinte maneira:

(50)

Assim, os valores que produzem soluções melhores têm uma qualidade 𝑞Z maior, consequentemente aumentando a probabilidade 𝑝Z associada a ele. De acordo com Usbert et al. (2011), esta equação não expressa bem a diferença relativa entre as médias dos custos quando essas têm valores próximos. Uma melhoria proposta pelos autores para amplificar o efeito da diferença das médias na probabilidade associada foi realizar a seguinte modificação:

Sendo 𝐶XZ[̅ e 𝐶XQY̅ a média mínima e máxima, enquanto o cálculo de 𝑝Z permanece o mesmo. Sendo 𝑃XQY e 𝑃XZ[ as probabilidades associadas ao melhor custo e ao pior custo respectivamente, temos então que 𝑃XQY = 𝑚𝑃XZ[, melhorando assim a distribuição de probabilidade, garantindo que o melhores parâmetros terá m vezes mais chance de serem escolhidos do que o piores parâmetros.

(51)

Figura 20. Algoritmo Reactive Choice.

Fonte: Usbert et al. (2011).

Entrada: 𝐶 ={𝑐̅\, … , 𝑐̅X}, média dos custos das soluções para cada

valor do parâmetro. 𝑁 ={𝑛\, … , 𝑛X}, número de vezes que esse parâmetro foi

selecionado.

Saída: 𝑖 ={1, … , 𝑚}, índice dos valores dos parâmetros procedure ReactiveChoice (C,N)

(52)

4.5. Ferramentas para desenvolvimento

4.5.1. StateMutest – ferramenta para execução dos modelos

Conforme descrito na seção 3.1, a StateMutest é utilizada para a execução e desenvolvimento dos modelos que serão utilizados nos experimentos.

Figura 21. Desenvolvimento de modelo na StateMutest.

Fonte: Autoria própria.

4.5.2. Netbeans (Java) – Desenvolvimento dos testes em Java

O desenvolvimento dos algoritmos desse trabalho é feito na linguagem Java, sendo assim compatível nativamente com o desenvolvimento da StateMutest, que também é em Java. Trata-se de uma linguagem que segue o paradigma de programação orientada a objetos, independe da plataforma de desenvolvimento e do sistema operacional, é gratuita e possui código aberto. Além disso, essa linguagem é amplamente utilizada na área acadêmica e comercial, facilitando, assim, o entendimento e a reutilização do código desenvolvido nesse trabalho. A IDE (Integrated Development Environment) utilizada para desenvolvimento foi o Netbeans (https://netbeans.org/).

(53)

Figura 22. Código fonte na IDE Netbeans.

Fonte: Autoria própria.

4.5.1. Git e Bitbucket – controle de versão e repositório de código

O Git é um sistema de gerenciamento de conteúdo e rastreamento desenvolvido por Linus Torvalds, criador do Linux. Inclui um diretório que muda continuamente à medida que os códigos são adicionados ao longo do desenvolvimento de aplicativos ou sites, permitindo assim o controle de revisão disponível em todas as plataformas de desenvolvimento convencional (SPINELLIS, 2012). É uma ferramenta gratuita e está disponível sob a GNU General Public License (GPL) versão 2. O Bitbucket é um serviço de hospedagem de repositório de controle de versão baseado na web, indicado para código fontes e projetos de desenvolvimento que utilizam tecnologia a Git. Assim, este trabalho utilizou o Bitbucket com Git para o controle e publicação do código desenvolvido.

(54)

5. MODELOS IMPLEMENTADOS PARA

OS EXPERIMENTOS

5.1. Estudo exploratório da abordagem

Esta seção apresenta as etapas da abordagem adotada para realizar os estudos e obter os resultados experimentais, sendo que a descrição detalhada de cada etapa está nos próximos capítulos. Dessa maneira, os passos para avaliar os métodos para definição automática dos parâmetros consistem em:

1. Avaliar a arquitetura da StateMutest e isolar o algoritmo de Otimização Extrema MGEOvsl, permitindo um melhor controle dos parâmetros de teste e o resultado para estudo. Avaliar os parâmetros necessários para execução do algoritmo, identificando para que servem e qual o impacto dos seus valores;

2. Modelar problemas conhecidos da matemática para avaliar a eficiência do MGEOvsl em função de seus parâmetros. São implementadas as funções De Jong 1, De Jong 2, De Jong 3 e Griewangk. Para isso é necessário definir as funções objetivo, as variáveis do problema e os respectivos domínios para cada uma dessas funções. São utilizados também problemas reais com modelos de estado para essa avaliação (ATM, Class 2 Protocol, Pump); 3. Implementar as técnicas selecionadas de controle automático dos

parâmetros, sendo elas: Adaptive Pursuit (AP), Adaptive Range Parameter Control (ARPC), Entropy-based Adaptive Range Parameter Control (EARPC) e o Reactive Choice Parameter Control (RCPC);

4. Utilizar as técnicas do passo 3 no MGEOvsl, juntamente com as funções e problemas do passo 2, a fim de realizar os experimentos e coletar os resultados. Como é um algoritmo de otimização, o MGEOvsl deve encontrar os parâmetros de cada função que levam ao seu valor mínimo;

(55)

5. Avaliar o resultado com a análise dos dados obtidos no passo 4, medindo a eficiência do MGEOvsl em cada um dos problemas. Para as funções matemáticas do passo 2, nas quais o mínimo global é conhecido, a eficiência é calculada por meio do número médio de avaliações necessário para atingir o ponto mínimo de cada função. Enquanto para os problemas reais, com modelos de estado, a medida utilizada é a qualidade dos casos de teste encontrado (base funções objetivo da MOST);

6. Implementar na MOST o algoritmo de controle automático de parâmetros, para que a geração de casos de testes peça ao usuário apenas o número mínimo necessário. Por fim, atualizar a StateMutest com a última versão da MOST e simplificar a interface com o usuário, removendo então os parâmetros desnecessários.

5.2. Preparação dos experimentos

Dois tipos de experimentos devem ser feitos para que seja possível comparar os diferentes métodos de Controle de Parâmetros. O primeiro tipo é realizado utilizando as clássicas funções de testes De Jong1, De Jong 2, De Jong 3 e Griewangk, as quais são implementadas como casos de testes, com apenas uma função objetivo a ser avaliada, calculada a partir da função e suas variáveis. As variáveis e suas respectivas restrições de limites também são codificadas no caso de testes, exatamente como seria solicitado para um usuário que estivesse tentando utilizar a MOST para gerar casos de testes para seu modelo. O segundo tipo de experimento é levado a cabo utilizando-se modelos de estados para a geração de casos – ATM, Pump e Class 2 Protocol – para avaliar os algoritmos. Consiste em um caso de uso real que passa por todas as funcionalidades, desde o motor da máquina de estados, que gera a versão executável do modelo, até, por fim, as avaliações do MGEOvsl e a geração dos casos de teste.

Referências

Documentos relacionados

For additional support to design options the structural analysis of the Vila Fria bridge was carried out using a 3D structural numerical model using the finite element method by

Não tentarei sintetizar a interpretação de Armindo de Sousa sobre o parlamento medieval, dado que as suas propostas mais fraturantes foram já evidenciadas, de forma incisiva, por

Próximo à desembocadura e seguindo pelo estuário inferior, no estuário médio bem como em grande parte do estuário superior se observa, igualmente, a concentração de areias

Por exemplo, a nível das novas áreas (em particular a AP) não é fácil porque pede muito mais trabalho dos professores e pede uma nova postura da parte do professor (que passa a

Embora os resultados demonstrem que os profissionais estudados apresentam boas condições emocionais (dedicação), a redução observada nas dimensões vigor, absorção e escore

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...