Abstract:
RESUMO: A computação tem sido utilizada para apoio à solução de problemas nas mais diversas áreas de conhecimento, tais como medicina, biologia, matemática, mecânica, administração, economia, etc. Inúmeras aplicações têm sido desenvolvidas para auxiliar o ser humano na realização de tarefas que antes eram realizadas de forma manual, tais como, aplicações para identificação de anomalias em imagens médicas (medicina), aplicações para previsão de valores de ações no mercado financeiro (economia), aplicações para gestão patrimonial (administração), dentre outras. Entretanto, para garantir a confiabilidade das aplicações para solução de tais problemas é preciso que elas passem por uma etapa essencial no processo de desenvolvimento de software, o Teste de Software. O Teste de Software é uma das atividades que se concentra na gestão da qualidade de software, e pode ser definido como um conjunto de tarefas, planejadas e executadas sistematicamente com o propósito de descobrir erros cometidos durante a implementação dos softwares. Uma das tarefas mais complexas e custosas relacionada ao Teste de Software é o mecanismo popularmente conhecido como Oráculo de Testes. Dada uma determinada entrada para uma aplicação, a difícil tarefa de distinguir o comportamento correto para o comportamento potencialmente incorreto da aplicação é chamado de “Problema do Oráculo de Teste”. Geralmente, essa atividade é realizada de forma manual por um desenvolvedor ou testador da aplicação, tornando-se um gargalo na realização de testes de software. Considerando esse contexto, é proposto neste trabalho uma abordagem, para automação do mecanismo de oráculo de testes. Essa proposta traz consigo a inovação na forma como a atividade é realizada e torna-se uma alternativa para as pesquisas já existentes dessa área. Este trabalho está relacionado a um projeto maior com a intenção de aplicar teste de regressão de forma contínua em softwares em ambiente de produção. A ideia é construir uma abordagem para automação do mecanismo de oráculo de teste que possa ser utilizada de forma não intrusiva nas aplicações em ambiente real. Após a realização de um estudo da área, foi proposta uma nova abordagem para automação do oráculo de teste. Foram realizadas quatro avaliações experimentais com o intuito de analisar a eficácia da abordagem na solução do problema do oráculo de teste. Os experimentos apresentaram resultados que sugerem que a ideia aqui apresentada é relevante para a solução do problema abordado. ABSTRACT: The computing has been used to support problem-solving in a wide range of fields such as medicine, biology, mathematic, mechanic, administration, economy and others. Numerous applications have been developed to assist the human being in performing tasks that were previously performed manually, such as applications for identification of anomalies in medical images (medicine), applications for predicting stock values in the financial market (economy), applications for patrimonial management (administration), among others. However, to ensure the reliability of applications for solving such problems, it must pass by an essential step in the software development process, the Software Testing. The Software Testing is one of the activities that focus on software quality management and can be defined as a set of tasks, planned and executed systematically with the purpose of discovering errors made during software implementation. One of the most complex and costly tasks related to Software Testing is the mechanism popularly known as Test Oracle. Given a particular input to an application, the difficult task of distinguishing the correct behavior for the potentially incorrect behavior of the application is called “Test Oracle Problem”. Generally, this task is performed manually by a developer or application tester, making it a bottleneck in performing of the software testing. Considering this context, it’s proposed in this work an approach for automation of the test oracle mechanism. This proposal brings with it the innovation in the way the activity is performed and becomes an alternative for existing research in this area. This work is related to a larger project with the intention of applying regression testing continuously in software in the production environment. The idea is to build an approach to automation of the test oracle engine that can be used non-intrusively in real-world applications. After a study of the area, a new approach was proposed for automation of the test oracle. Four experimental evaluations were performed in order to analyze the effectiveness of the approach in solving the test oracle problem. The experiments presented results with suggest that the idea presented here is relevant to the solution of the problem addressed.