Macario Polo

Macario Polo
  • PhD in Computer Science
  • Professor (Associate) at University of Castilla-La Mancha

About

150
Publications
38,949
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,482
Citations
Current institution
University of Castilla-La Mancha
Current position
  • Professor (Associate)

Publications

Publications (150)
Book
Full-text available
Libro de interés para profesionales, académicos y estudiantes interesados en el mantenimiento del software en sentido amplio.
Article
When applied to mobile software, mutation testing is particularly costly due to the deployment of the app under test onto the device: if one deployment is made for each generated mutant, the execution time becomes unapproachable. This paper analyses how the combination of different cost reduction techniques improves the execution time of mutation t...
Conference Paper
Full-text available
This paper presents the Talavera Manifesto for quantum software engineering and programming. This manifesto collects some principles and commitments about the quantum software engineering and programming field, as well as some calls for action. This is the result of the discussion and different viewpoints of academia and industry practitioners who...
Research Proposal
Full-text available
This paper presents the Talavera Manifesto for quantum software engineering and programming. This manifesto collects some principles and commitments about the quantum software engineering and programming field, as well as some calls for action. This is the result of the discussion and different viewpoints of academia and industry practitioners who...
Book
Full-text available
En este libro se persiguen los siguientes objetivos: + Presentar de forma clara y resumida los conceptos fundamentales relacionados con el mantenimiento y la evolución del software. + Ofrecer un tratamiento sistemático de los estándares internacionales relacionados con el proceso de mantenimiento y la mantenibilidad del software. + Analizar las téc...
Article
Along the life cycle, testing activities are needed time and time again: during the initial development, to detect and fix errors in the first release, and later, depending on the maintenance type, both to detect possible errors introduced in new functionalities and to check that the previous version remains stable after the maintenance interventio...
Article
We study the simultaneous test effectiveness and efficiency improvement achievable by Strongly Subsuming Higher Order Mutants (SSHOMs), constructed from 15,792 first order mutants in four Java programs. Using SSHOMs in place of the first order mutants they subsume yielded a 35%-45% reduction in the number of mutants required, while simultaneously i...
Conference Paper
We study the simultaneous test effectiveness and efficiency improvement achievable by Strongly Subsuming Higher Order Mutants (SSHOMs), constructed from 15,792 first order mutants in four Java programs. Using SSHOMs in place of the first order mutants they subsume yielded a 35%-45% reduction in the number of mutants required, while simultaneously i...
Article
Full-text available
This article gives a short overview of the main characteristics of mutation tools. If a test suite finds all the artificial errors inserted in the mutants and finds no fault in the original, it's likely that the program under test is free of them. Obviously, the validity of this affirmation depends on the nature of the artificial fault: some of the...
Article
Mutation testing is a very effective testing technique that creates mutants in order to design test cases that will kill the mutants. One problem of mutation testing is high costs: creating mutants, executing mutants and calculating the mutation score. This paper empirically analyzes the effect of covering mutants through the mutant schema improved...
Article
Testing systems with many variables and/or values is often quite expensive due to the huge number of possible combinations to be tested. There are several criteria available to combine test data and produce scalable test suites. One of them is pairwise. With the pairwise criterion, each pair of values of any two parameters is included in at least o...
Article
This paper presents a new approach for testing third-party components using aspect-oriented programming. The idea consists in developing mutation operators as pointcuts that trap the code under test and manipulate its behavior.
Article
Mutation is a testing technique that, after many years of application in the academic and research environments, has recently started to be applied in industry. The main obstacle for its industrial adoption has been the high costs associated to its three stages: mutant generation, execution of tests cases against mutants and result analysis. In the...
Article
The research community has broadly recognized the importance of the validation of non-functional properties including performance and dependability requirements. However, the results of a systematic survey we carried out evidenced the lack of a standard notation for designing non-functional test cases. For some time, the greatest attention of Model...
Conference Paper
This paper describes a genetic algorithm based on mutation testing to generate test cases for classes with multiple states. The fitness function is based on the coverability and the killability of the individuals. The paper includes a small empirical section that shows evidences of the ability of the algorithm to generate good test cases.
Conference Paper
When modernizing systems there are big risks concerning functional and non-functional properties. It is expected that the functionality, the performance and the dependability are the same (or better) in the new version. Therefore, the preventive workload simulation (to verify non-functional properties) is crucial to guarantee the success of the mod...
Article
Despite the existing techniques to reduce the costs of mutation analysis, the computational cost to apply mutation testing with large applications can be very high. One effective technique to improve the efficiency of mutation without losing effectiveness is parallel execution, where mutants and tests are executed in parallel processors, reducing t...
Article
Mutation analysis has been applied to many testing problems, including numerous programming languages, specifications, network protocols, web services, and security policies. Program mutation, where mutation analysis is applied to programs, has been applied to the unit level (functions and methods), integration of pairs of functions, and individual...
Article
Mutation has been recognized to be an effective software testing technique. It is based on the insertion of artificial faults in the system under test (SUT) by means of a set of mutation operators. Different operators can mutate each program statement in several ways, which may produce a huge number of mutants. This leads to very high costs for tes...
Article
ContextSoftware development time has been reduced with new development tools and paradigms, testing must accompany these changes. In order to release software products in a timely manner as well as to minimise the impact of possible errors introduced during maintenance interventions, testing automation has become a central goal. Whilst research has...
Article
Full-text available
Testing is a destructive task in which the goal is to find relevant defects as early as possible. It requires automation to reduce cost and ensure high regression, thus delivering determined quality. This article reviews technologies for test automation.
Article
One of the main challenges during testing is to design good oracles. An oracle is one or more statements in a test that evaluate the behavior of the system. This paper presents a tool, BacterioORACLE, based on mutation testing that helps testers to write good oracles. The tool generates oracle suggestions automatically analyzing information obtaine...
Conference Paper
Model-driven Testing (MDT) refers a model-based testing that follows Model Driven Engineering paradigm, i.e., the test cases are automated generated using models extracted from software artifacts through model transformations. In previous work, we developed a model to model transformation that takes as input UML 2.0 sequence diagrams, and automatic...
Conference Paper
Mutation testing is one of the most effective techniques to evaluate the quality of a test suites. Due to its tasks and its costs, a tool to automate and reduce costs of mutation testing is required, in order to perform mutation analyses. Bacterio is a Java mutation testing tool that automates the tasks to perform mutation analyses and that impleme...
Conference Paper
Full-text available
Mutation testing is a very effective testing technique that creates mutants (copies of the original system with small syntactic changes) in order to design test cases that kill the mutants (identifying the syntactic changes). The main disadvantage of mutation testing is its high costs: creating mutants, executing mutants and calculating the mutatio...
Conference Paper
This article proposes an algorithm for reducing the size of test suites, using the mutation score as the criterion for selecting the test cases while preserving the quality of the suite. Its utility is also checked with a set of experiments, using benchmark programs and industrial software.
Article
Software Product Lines (SPLs) are not intended to create one application, but a number of them: a product family. In contrast to one-off development, SPLs are based on the idea that the distinct products of the family share a significant amount of assets. This forces a change in how software is developed. Likewise, software testing should mimic its...
Conference Paper
Testing has a very important role in Software development, implying about a half of the total cost. Its automation tries to minimize these costs and increase the productivity. Whilst there are many well-known solutions for some tasks (such as test case execution), test case and test data generation in information systems which use databases is part...
Conference Paper
This article describes an approach for test case generation in Software Product Lines, using Model Driven. Our proposal defines a set of metamodels, models and algorithms, all of them organized and managed in a 5-step process, which are implemented in a tool specifically developed for this goal, Pralíntool.
Article
Testing has an important role within the development of a software system; the automation of testing tasks has been largely used with the goal of minimizing costs and increasing productivity. For some of those tasks -as it is the execution of test cases- well-known solutions already exist as the industry adopted them many years ago. This is not the...
Conference Paper
Full-text available
This article describes a model-driven approach for test case generation in software product lines. It defines a set of metamodels and models, a 5-step process and a tool called Pralíntool that automates the process execution and supports product line engineers in using the approach.
Conference Paper
This work presents a model based testing approach to be used in Model Driven Development and Software Product Lines projects. The approach uses OMG standards and defines model transformations from design models to test models. The approach was implemented as a framework using existing modelling tools in the market and QVT transformations.
Conference Paper
Full-text available
A Software Product Lines (SPL) is "a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way". Variability is a central concept that permits the generation of different products of...
Conference Paper
Service-Oriented Computing allows building applications by reusing web-accessible services. However, current approaches still involve a large effort both at discovery of services and their successful integration. This paper presents a novel approach to help developers to easily deal with discovery, selection and integration of services, and it is b...
Conference Paper
Full-text available
Software development project management has a poor reputation in terms of avoiding cost and schedule overruns. The cause of this situation is based on the feature of the software development process that is characterized by quickly growing complexity and change. Therefore, there are many uncertainties to define exactly the necessary time to complet...
Article
Since the 1970s, researchers have widely used mutation as a testing technique, applying mainly it to validate test suites, as well as to validate test case strategies and test data generation. Mutation today is sufficiently mature for industrial applications. Although mutation's three main steps (mutant generation, test case execution, and result a...
Conference Paper
Full-text available
Mutation analysis has been applied to many testing problems, including functional programs in numerous languages, specifications, network protocols, web services, and security policies. Program mutation, where mutation analysis is applied to programs, has been applied to the unit level (functions and methods), integration of pairs of functions, and...
Conference Paper
Recovering the behavior of a class in Object Oriented programming usually consists in the instrumentation either of the source or the compiled code by means of additional instructions which leave a trace of its execution. This work describes a set of algorithms to recover the behavior of a class with no modifying neither its code nor its execution...
Article
Software components have emerged to ease the assembly of software systems. However, updates of systems by substitution or upgrades of components demand careful management due to stability risks of deployed systems. Replacement components must be properly evaluated to identify if they provide the expected behaviour affected by substitution. To addre...
Article
In previous works, an automated testing framework was defined. The framework follows Model Driven Engineering principles applied to testing and can be used both in Software Product Line development and in tradicional development projects. The test models are generated from UML design models using the model transformation languge Query/View/Transfor...
Article
This paper describes an approach for model-based testing which is completely based on standards, what constitutes an essential factor for its implantation in industrial software tools. The inputs of the process are models described in UML 2.0, whereas the outputs consist of artefacts of the UML Testing Profile. The transformation process is based o...
Conference Paper
This paper describes a model-based method for the automatic generation of test cases in software product lines. The approach is completely based on well-known standards, such as UML 2.0, the UML Testing Profile and the QVT Language. To reach the goal, it is essential to maintain the traceability between different abstraction levels, as well as betw...
Article
Although powerful, mutation is a computationally very expensive testing technique. In fact, its three main stages (mutant generation, mutant execution and result analysis) require many resources to be successfully accomplished. Thus, researchers have made important efforts to reduce its costs. This paper represents an additional effort in this sens...
Conference Paper
Full-text available
This paper proposes an extension to the UML testing profile to manage variability in testing artifacts for software product lines. The proposed extension has two main points: (i) Defining an extended architecture for the UML testing profile to deal with variability in the test models, and (ii) Defining the behavior to include variation points in th...
Article
Full-text available
Replacing pieces of component-based systems carries a serious risk on the expected stability. Substitutability of components must then be carefully identified. With this intent, this paper presents a process to evaluate replacement components by complementing the conventional compatibility analysis with component testing criteria. Functions of data...
Conference Paper
Nowadays, organizations may have Web portals tailoring several websites where a wide variety of information is integrated. These portals are typically composed of a set of Web applications and services that interchange data among them. In this setting, there is no way to find out how the quality of the interchanged data is going to evolve successiv...
Conference Paper
This paper describes a method to automatically generate test cases with oracle in software product lines, where the management of variability and traceability are two indispensable requirements. These characteristics may be quite useful for the processing and automatic addition of the oracle to test cases, which is one of the main problems found, n...
Conference Paper
Full-text available
Software product lines constitute a new paradigm where industrial production techniques are adapted and ap- plied to software development. Reuse and the maintenance of traceability between the different artefacts in the line are fundamental requirements in this paradigm, articulating the best practices for software development in an environment tha...
Conference Paper
This paper presents an approach for the modeling and handling of time management features in a software project scheduling framework. It is achieved in two main steps. The first one is an automatic features extraction process with the aim of defining the elements involved in a software project. This knowledge is represented by means fuzzy sets and...
Conference Paper
There is a real need for SOA principles, such as those offering software as services, in the software industry. In this effort, databases (one of the most important artifacts in information systems) can be also seen as a set of services offering access to the stored information. This paper presents PRECISO, a reverse engineering tool to discover an...
Conference Paper
This paper investigates the relationships between the test cases generated from state machines and their ability to find faults in the implementation of the class proceeding from the state machine. Many research works have proposed strategies to generate test cases for different kinds of software artefacts. To our best knowledge, the "traceability"...
Article
Full-text available
The automatic generation of test cases from design models in Software Product Lines requires defining testing mechanisms for managing variability and traceability to other development artifacts. In our proposal, test cases are generated using the transformation language QVT from extended sequence diagrams representing the variability in the SPL. Tr...
Article
Full-text available
This article presents an algorithm for reducing JUnit test suites, as well as a tool (implemented as an Eclipse plugin) that realizes it. The tool can be downloaded from http://geclipsetesting.sourceforge.net/. With test suite reduction, the test engineer may get smaller test suites that, however, keep the same coverage that the original one. The a...
Article
Software product lines constitute a new paradigm where industrial production techniques are adapted and applied to software development. Reuse and the maintenance of traceability between the different artefacts in the line are fundamental requirements in this paradigm, articulating the best practices for software development in an environment that...
Conference Paper
Updating component-based systems demand a careful treatment due to stability risks. Replacement components must be analysed on behaviour equivalence for the provided functionality. Our proposal complements the conventional compatibility analysis with black-box testing criteria as a support for substitutability. The aim is to analyse functions of da...
Conference Paper
Updating systems assembled from components demand a careful treatment due to stability risks. Replacement components must be properly evaluated to identify the required similar behaviour. Our proposal complements the regular compatibility analysis with black-box testing criteria to reinforce reliability. The aim is to analyze functions of data tran...
Conference Paper
Nowadays, software technology is evolving very quickly according to new trends in technology, such as SOA (service oriented architecture) and web services. The SOA paradigm claims (1) to develop software as a set of services and (2) to handle legacy applications and artefacts using standardized technology, exposing their functionalities as services...
Article
This article presents the technical and functional descriptions of a tool specifically designed for database re-engineering. As is well known, re-engineering is the process of (1) applying reverse engineering to a software product to obtain higher-level specifications and (2) using these specifications as the starting point for the development of a...
Article
SUMMARY This article presents two tools to generate test cases, one for Java programs and one for .NET programs, as well as a structured testing process whereby such tools can be used in order to help in process automation. The main innovation in this work is the joint use of diverse techniques and technologies, which have been separately applied t...
Conference Paper
Today, software engineering is evolving from source code to the model realm. As objects have been considered "atomic units" in software development and maintenance, models are becoming first order citizens in the well-known MDA paradigm. New languages and metamodel families are appearing to support the management of models and the new capabilities...
Conference Paper
Databases are one of the most important components of information systems, since they keep all the information of organizations. Although new standards in databases have appeared in the last years, most databases are still based on SQL-92, and are thus true legacy systems. Most of the services offered by information systems are based on the informa...
Article
Full-text available
This paper presents an empirical study analysing the relationship between a set of metrics for Fourth-Generation Languages (4GL) programs and their maintainability. An analysis has been made using historical data of several industrial projects and three different approaches: the first one relates metrics and maintainability based on techniques of d...
Conference Paper
This work is related to the area of Component-based Software Development, particularly to largely distributed systems as Pervasive Computing Environments. We are focused on the automation of a Component Integration Process as a support for run-time adjustments of applications when the environment involves highly dynamic changes of requirements. Suc...
Conference Paper
Database reverse engineering in general has only been used to recover the conceptual schema employed during its construction. To the best of our knowledge, none of this work has made use of that static structure to perform a deep analysis to infer functionality, or in other words, services over data that could be offered via Web services. Our work...
Article
This chapter presents a new testing technique called "test-case mutation." The idea is to apply a set of specific mutation operators to test cases for object-oriented software, which produces different versions of the original test cases. Then, the results of the original test case and of its corresponding mutants are compared; if they are very sim...
Conference Paper
This paper presents a tool specifically designed for database reengineering. As is well known, reengineering is the process of (1) applying reverse engineering to a software product to get higher-level specifications, and (2) using these specifications as the starting point for the development of a new version of the system. Thus, the complete proc...
Conference Paper
We aim at automating an integration process for component-based systems. Hence we describe a reference model where its first phase (qualification) is our current work. We intend to compare components data by semantic analysis, i.e. interoperability at a semantic level. Assessment is based on meta-data added to components: their context, assertions,...
Conference Paper
This work is related to the area of Ubiquitous Systems and it focuses on a Component-based Integration process. This implies the evaluation of whether components may or may not satisfy a given set of requirements. We propose a framework for such process and consider related concepts like Assessment and Adaptation. The Assessment procedure is based...
Conference Paper
Pervasive Computing Environments should support the feeling of con- tinuity on user's daily tasks. This concept relies on the availability of differe nt resources (in this work that will mean availability of applications). We propo se a framework for a component-based integration process, centred on the concept of composing/adapting applications at...
Chapter
Documentation is one of the key issues in Component-Based System Development that emphasizes the creation of models of testing information. Hence, testing based on these models might point out missing entities — such as methods — or inconsistencies in the treatment of entities for testing. Documentation influences component specification as well as...
Conference Paper
This work is related to the area of component-based software development. We intend to automate a component integration process as a support for run-time adjustments of applications, when the environment involves highly dynamic changes of requirements. This implies to evaluate components against a given set of requirements. We propose a framework f...
Article
Full-text available
New challenges in Software Testing arise from evaluating Pervasive Computing Systems, which are a special type of component-based software. Transparent interconnection of components becomes highly important when users need to switch between operative contexts. Dynamic assembly requires evaluating components to ensure they conform to the updated sys...
Conference Paper
This article presents a method to generate web applications based on EJB distributed components from databases. The method first reverse-engineers the database to obtain a class model representing the possible conceptual scheme used during the database construction; then, the class model is automatically restructured into a new class model, now com...
Article
Full-text available
Component-based Development is a challenging paradigm, though Pervasive Computing Environments, as a special case of such systems, carry even more complications. Applications must be kept available for users anytime, anywhere no matter the user location. This implies transparency on interconnection of components at run-time. Since components may no...
Conference Paper
New challenges in Software Testing arise from evaluating Pervasive Computing Systems, which are a special type of component-based software. Transparent interconnection of components becomes highly important when users need to switch between operative contexts. Dynamic assembly requires evaluating components to ensure they conform to the updated sys...
Chapter
The Internet is an extremely important new technology that is changing the way in which organizations conduct their business and interact with their partners and customers. To take advantage of the Internet open architecture, most companies are applying business reengineering with the aim of moving from hierarchical centralized structures to networ...

Network

Cited By