3 research outputs found

    渭Akka: Mutation Testing for Actor Concurrency in Akka Using Real-World Bugs

    Full text link
    Actor concurrency is becoming increasingly important in the real-world and mission-critical software. This requires these applications to be free from actor bugs, that occur in the real world, and have tests that are effective in finding these bugs. Mutation testing is a well-established technique that transforms an application to induce its likely bugs and evaluate the effectiveness of its tests in finding these bugs. Mutation testing is available for a broad spectrum of applications and their bugs, ranging from web to mobile to machine learning, and is used at scale in companies like Google and Facebook. However, there still is no mutation testing for actor concurrency that uses real-world actor bugs. In this paper, we propose Akka, a framework for mutation testing of Akka actor concurrency using real actor bugs. Akka is a popular industrial-strength implementation of actor concurrency. To design, implement, and evaluate Akka, we take the following major steps: (1) manually analyze a recent set of 186 real Akka bugs from Stack Overflow and GitHub to understand their causes; (2) design a set of 32 mutation operators, with 138 source code changes in Akka API, to emulate these causes and induce their bugs; (3) implement these operators in an Eclipse plugin for Java Akka; (4) use the plugin to generate 11.7k mutants of 10 real GitHub applications, with 446.4k lines of code and 7.9k tests; (5) run these tests on these mutants to measure the quality of mutants and effectiveness of tests; (6) use PIT to generate 26.2k mutants to compare Akka and PIT mutant quality and test effectiveness. PIT is a popular mutation testing tool with traditional operators; (7) manually analyze the bug coverage and overlap of Akka, PIT, and actor operators in a previous work; and (8) discuss a few implications of our findings. Among others, we find that Akka mutants are higher quality, cover more bugs, and tests are less effective in detecting them

    Automatic Generation of Cases in Event Processing using EPL

    Get PDF
    https://prezi.com/ikn8ub6nth1u/generacion-automatica-de-casos-en-procesamiento-de-eventos-con-epl/ (presentaci贸n)La aplicaci贸n en diversas 谩reas de Internet de las Cosas (IoT) ha ido en aumento en los 煤ltimos a帽os. Uno de los principales inconvenientes que tienen los sistemas IoT es la cantidad de informaci贸n que tienen que manejar. Esta informaci贸n llega en forma de eventos, cuyo receptor ha de tomar las decisiones correctas, en tiempo real, seg煤n los datos recibidos. A ra铆z de estos nuevos sistemas, surgen nuevas herramientas, dispositivos, lenguajes y mecanismos para obtener, procesar y transmitir esta informaci贸n. Entre estas novedades se destacan los lenguajes de programaci贸n "Event Processing Language" (EPL), que se desarrollaron para detectar las situaciones de inter茅s sobre un dominio concreto en tiempo real. Estos lenguajes utilizan patrones para describir las situaciones en las que se quiere filtrar la informaci贸n, para realizar las actuaciones correctas. Los lenguajes EPL procesan y analizan grandes cantidades de datos (eventos) en tiempo real, por lo que cualquier fallo de programaci贸n podr铆a afectar gravemente en la toma de decisiones. Viendo la relevancia que tiene el procesado de esta informaci贸n, resulta fundamental analizar y probar programas escritos en estos lenguajes de programaci贸n, detectando los posibles fallos m谩s comunes que los programadores pueden cometer. Para poder hacer cualquier tipo de prueba en sistemas que utilicen EPL, se necesita una gran cantidad de eventos con estructuras y valores espec铆ficos. Conseguir estos eventos de forma manual puede ser una tarea muy costosa y propensa a errores. Esta tesis aborda el problema de la generaci贸n autom谩tica de los casos de prueba proponiendo y empleando un m茅todo para la generaci贸n autom谩tica de eventos, el cual se comparar谩 con los sistemas de generaci贸n de eventos disponibles. El m茅todo incluye una propuesta de especificaci贸n para la definici贸n de tipos de eventos y un generador de eventos basado en la especificaci贸n anterior. Con este m茅todo se obtienen casos de prueba, que van a permitir evaluar situaciones cr铆ticas de las aplicaciones, ya que los eventos pueden ser generados con valores concretos que ayuden a simularlas. Adicionalmente, para validar el m茅todo propuesto, se escoge el lenguaje de consulta EPL de la empresa EsperTech y se aplica la prueba de mutaciones en programas que lanzan este tipo de consultas. Entre los motivos de la elecci贸n del lenguaje EPL de EsperTech se destaca que es de c贸digo abierto y que su sintaxis se aproxima bastante al lenguaje SQL (ampliamente conocido). Por otro lado, se escoge la prueba de mutaciones ya que esta ha sido aplicada con 茅xito a una gran variedad de lenguajes de programaci贸n y mostramos que es una t茅cnica de prueba adecuada para verificar y validar estos programas. Se generan multitud de variantes del programa a probar que representan los fallos m谩scomunes de programaci贸n. Para poder aplicar la prueba de mutaciones se requiere de una gran cantidad de casos de prueba. Dado que la prueba de mutaciones no hab铆a sido aplicada anteriormente a este lenguaje, esta tesis afronta el proceso completo de aplicaci贸n de esta t茅cnica a un lenguaje: definici贸n de operadores de mutaci贸n, desarrollo de una herramienta de generaci贸n y ejecuci贸n autom谩tica de los mutantes y evaluaci贸n de los operadores definidos (comprobando su frecuencia de aplicaci贸n en casos de estudio).Internet of Things (IoT) has increasingly become popular in diferent areas. One of the main drawbacks of the IoT systems is the amount of information they have to handle. This information arrives as events that need to be processed in real-time in order to make correct decisions. As a consequence, new ways (tools, devices, mechanisms...) of obtaining, processing and transmitting information have to be put into action. It is worth mentioning the "Event Processing Languages" (EPL), which were created to detect, in real-time, interesting situations in a particular domain. These languages use patterns to filter the information (good knowledge of the EPL languages is needed). A huge amount of data is processed and analysed by EPLs, so any programmer error could seriously affect the outcome because of a poor decision-making system. Given that processing the data is crucial, testing and analysing programs that run any EPL language is required. The most common mistakes that programmers could make have to be detected. A large number of events with specific values and structures are needed to apply any kind of testing in programs which use EPL. As this is a very hard task and very prone to error if done by hand, this dissertation addresses the automated generation of test cases; a method to automatically generate events has been proposed and used. Moreover, it will be compared to existing event generation systems. This method includes a general definition of what is an event type and its representation is proposed. Additionally, an event generator is developed based on this definition. Test cases to evaluate critical situations the EPL programs may suffer are obtained following this method. The proposed method allows the generation of events with specific values and structures, which will simulate these critical situations. In order to validate the proposed method, the EPL of EsperTech company is selected to apply mutation testing to programs which run the EsperTech EPL queries. EsperTech EPL language has been selected because it is open source and its syntax is very similar to SQL language (very popular programming language). Mutation testing is the chosen testing technique because it has been successfully applied to various programming languages. Mutation testing is a suitable testing technique to verify and validate these programs. Several variations of the original program are generated, which include "typical" programming errors. In order to apply mutation testing, a huge amount of data is required. Due to mutation testing has not been applied to EsperTech EPL language before, this dissertation faces the complete process of applying the mutation testing technique toa programming language: mutation operators definition, development of a tool which automatically generates and executes mutants and evaluation of the defined operators (checking their application frequency in studies cases).Documento PDF de 328 p谩ginas https://dialnet.unirioja.es/servlet/tesis?codigo=71530 https://www.researchgate.net/profile/L_Gutierrez-Madronal/publication/318394697_Generacion_Automatica_de_Casos_en_Procesamiento_de_Eventos_con_EPL_Automatic_Generation_of_Cases_in_Event_Processing_using_EPL/links/59675223458515e9af9e9e55/Generacion-Automatica-de-Casos-en-Procesamiento-de-Eventos-con-EPL-Automatic-Generation-of-Cases-in-Event-Processing-using-EPL.pd
    corecore