18 research outputs found

    Assessment of C++ object-oriented mutation operators: A selective mutation approach

    Get PDF
    Mutation testing is an effective but costly testing technique. Several studies have observed that some mutants can be redundant and therefore removed without affecting its effectiveness. Similarly, some mutants may be more effective than others in guiding the tester on the creation of high‐quality test cases. On the basis of these findings, we present an assessment of C++ class mutation operators by classifying them into 2 rankings: the first ranking sorts the operators on the basis of their degree of redundancy and the second regarding the quality of the tests they help to design. Both rankings are used in a selective mutation study analysing the trade‐off between the reduction achieved and the effectiveness when using a subset of mutants. Experimental results consistently show that leveraging the operators at the top of the 2 rankings, which are different, lead to a significant reduction in the number of mutants with a minimum loss of effectiveness

    Assessment of Class Mutation Operators for C++ with the MuCPP Mutation System

    Get PDF
    Context: Mutation testing has been mainly analyzed regarding traditional mutation operators involving structured programming constructs common in mainstream languages, but mutations at the class level have not been assessed to the same extent. This fact is noteworthy in the case of C++ despite being one of the most relevant languages including object-oriented features. Objective: This paper provides a complete evaluation of class operators for the C++ programming language. MuCPP, a new system devoted to the application of mutation testing to this language, was developed to this end. This mutation system implements class mutation operators in a robust way, dealing with the inherent complexity of the language. Method: MuCPP generates the mutants by traversing the abstract syntax tree of each translation unit with the Clang API, and stores mutants as branches in the Git version control system. The tool is able to detect duplicate mutants, avoid system headers, and drive the compilation process. Then, MuCPP is used to conduct experiments with several open-source C programs. Results: The improvement rules listed in this paper to reduce unproductive class mutants have a significant impact in the computational cost of the technique. We also calculate the quantity and distribution of mutants generated with class operators, which generate far fewer mutants than their traditional counterparts. Conclusions: We show that the tests accompanying these programs cannot detect faults related to particular object-oriented features of C++. In order to increase the mutation score, we create new test scenarios to kill the surviving class mutants for all the applications. The results confirm that, while traditional mutation operators are still needed, class operators can complement them and help testers further improve the test suite

    Coverage-based quality metric of mutation operators for test suite improvement

    Get PDF
    The choice of mutation operators is a fundamental aspect in mutation testing to guide the tester to an effective test suite. Designing a set of mutation operators is subject to a trade-off between effectiveness and computational cost: a larger mutation population might uncover more faults, but will take longer to analyse. With the aim of resolving this trade-off, several authors have defined an assortment of metrics to determine the most valuable operators. In this work, we extend an existing quality metric by incorporating an additional source of data and coverage information and therefore investigate the extent to which mutants that are often covered but rarely killed can improve the evaluation of mutation operators for the refinement of the test suite. As a case study, we analyse C++ class-level operators based on the new coverage-based quality metric to assess whether the original metric is enhanced. The results when selecting the best-valued operators show that this metric has great potential to help the tester in finding effective mutation operators. In comparison with the metric from which it is derived, the use of coverage data allows to reduce the number of mutants but often loses fewer test cases and, in addition, retains those that seem hard to design

    Mutation Testing Advances: An Analysis and Survey

    Get PDF

    Aplicación de la prueba de mutaciones a composiciones de servicios web en WS-BPEL para la generación de casos de prueba de calidad

    No full text
    La prueba de mutaciones ha sido objeto de múltiples trabajos de investigación durante los últimos 30 años; sin embargo, aún hoy día sigue presentando algunos problemas que no están resueltos, como la determinación de los programas semánticamente equivalentes, el coste computacional implicado en la generación y ejecución del gran número de mutantes producidos frente a los casos de prueba, la generación de casos de prueba, etc. Durante estas tres décadas se han propuesto técnicas para intentar vencer estos problemas. Esta tesis aborda el problema de la generación automática de los casos de prueba, empleando para ello una técnica evolutiva. Los algoritmos genéticos han sido ampliamente utilizados en la generación de casos de prueba empleándose principalmente un criterio estructural, pero también han sido aplicados a los sistemas de mutaciones. A estos últimos también se han aplicado variantes de los algoritmos genéticos conocidas como algoritmos bacteriológicos y algoritmos inmunológicos. El enfoque que se propone en esta tesis está basado en un algoritmo genético que adopta algunas de las características de los algoritmos bacteriológicos. Como objeto de esta investigación se han escogido las composiciones de servicios web en el lenguaje WS-BPEL~2.0. Las arquitecturas orientadas a servicios, los servicios web y el lenguaje WS-BPEL permiten automatizar los procesos de negocio; además, el impacto económico de las composiciones de servicios web en WS-BPEL ha crecido de forma considerable en los últimos años, por lo que se considera imprescindible profundizar en la prueba de este tipo de aplicaciones. Todas las razones anteriores nos han llevado a aplicar la prueba de mutaciones, una técnica que ha sido previamente aplicada a multitud de lenguajes, al lenguaje WS-BPEL y a definir una técnica de generación de casos de prueba que tengan como objetivo matar a los mutantes producidos para una composición WS-BPEL. 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 los operadores de mutación, desarrollo de una herramienta de generación y ejecución automática de los mutantes, evaluación y mejora de los operadores definidos y, por último, definición de la técnica de generación de casos de prueba y desarrollo de un generador de casos de prueba que nos permita aplicarla a las composiciones WS-BPEL. Para la evaluación de los operadores de mutación se han propuesto unas métricas de calidad que nos pueden permitir, además, definir una técnica de reducción del coste computacional de la prueba de mutaciones de composiciones WS-BPEL mediante la disminución del número de operadores aplicados, descartando aquellos que obtengan valores bajos para las métricas de calidad propuestas. El trabajo de investigación desarrollado ha permitido alcanzar todos los objetivos propuestos

    Sistemas operativos. Conceptos fundamentales

    No full text
    Un elemento esencial en todo sistema de computación es el sistema operativo. En este capítulo veremos cuál es su función y objetivo principal: abstraer el hardware para ofrecer un conjunto de servicios a los usuarios. Con el fin de comprender mejor los distintos elementos que componen un sistema operativo contemporáneo y sus objetivos, veremos como a lo largo de la historia se han ido introduciendo innovaciones para aumentar el rendimiento del sistema

    Sistemas operativos. Conceptos fundamentales

    No full text
    Centro de Informacion y Documentacion Cientifica (CINDOC). C/Joaquin Costa, 22. 28002 Madrid. SPAIN / CINDOC - Centro de Informaciòn y Documentaciòn CientìficaSIGLEESSpai

    Quantitative Evaluation of Mutation Operators for WS-BPEL Compositions

    No full text
    corecore