Navegación

Búsqueda

Búsqueda avanzada

Diseño de operadores de mutación para características de sensibilidad al contexto en aplicaciones móviles

Este artículo presenta el diseño arquitectónico de un conjunto de operadores de mutación. Este diseño mejora el tiempo y coste de implementación de nuevos operadores respecto de la experiencia previa de los autores en el desarrollo de otras herramientas de mutación. El diseño, además, se está utilizando para la creación de operadores específicamente diseñados para reproducir artificialmente errores sobre las características de sensibilidad al contexto de aplicaciones móviles.

Hacia la automatización de pruebas funcionales y de rendimiento en Android con algoritmos basados en búsqueda

Actualmente existen millones de aplicaciones para smartphone que deben ejecutarse correctamente en entornos software, hardware y de conectividad muy variados y cambiantes. El testing de dichas aplicaciones es por tanto un reto importante, para el que ligeras mejoras de la productividad suponen grandes beneficios para usuarios y desarrolladores. Este artículo presenta una primera aproximación de trabajo en curso para la la automatización de pruebas funcionales y de rendimiento en aplicaciones android usando algoritmos basados en búsqueda. La viabilidad de la propuesta se ha validado aplicándola a dos aplicaciones simples. Generando casos de pruebas que detectan cierres abruptos en la aplicación y maximizan el tiempo de ejecución.

Generacio?n de pruebas del sistema en el desarrollo del proyecto ADAGIO mediante la aplicacio?n de NDT

La ingenieri?a guiada por modelos (MDE) se ha utilizado en los u?ltimos an?os para promover mejores resultados en el desarrollo de aplicaciones web, en el campo que se ha denominado ingenieri?a web guiada por modelos (MDWE). Una de las ventajas de aplicar MDWE es que ofrece una solucio?n para reducir el coste de las pruebas sin afectar su ejecucio?n ni la calidad de las mismas. Navigational Development Techinques (NDT), es una metodologi?a que proporciona soporte para todas las fases del ciclo de vida del desarrollo de un proyecto de software, proponiendo transformaciones automa?ticas entre dichas fases, sin embargo, en este trabajo, aunque se describe brevemente co?mo se ha hecho uso de NDT para la definicio?n de las fases de requisitos y ana?lisis, se hace hincapie? en el uso de la metodologi?a para la definicio?n de la fase de pruebas de un proyecto real denominado ADAGIO. La aplicacio?n de esta metodologi?a, proporciona un mayor i?ndice de cobertura de pruebas del sistema, y, consecuentemente, un incremento en la calidad del producto.

Tool Demonstration: Testing JSON Web Services Using Jsongen (Demostración)

This article describes a tool, jsongen, which permits testing behavioural aspects of Web Services that communicate using the JSON data format. Provided a characterisation of the JSON data as a JSON schema, the jsongen tool will:(i) automatically derive a QuickCheck (the property-based testing tool)generator which can generate an infinite number of JSON values that validate against the schema, and (ii) provides a generic QuickCheck state machine which is capable of following the (hyper)links documented in the JSON schema, to automatically explore the web service. The default behaviour of the state machine can be easily customized to include web service specific checks. The approach is demonstrated by applying it to the task of testing a simplified web service for banking.

ARTICULO RELEVANTE:IoT–TEG: Test event generator system

Internet of Things (IoT) has been paid increasingly attention by the government, academe and industry all over the world. 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. Given that processing the data is crucial, testing the IoT systems that will manage that information is required. In order to test IoT systems, it is necessary to generate a huge number of events with specific structures and values to test the functionalities required by these systems. As this task is very hard and very prone to error if done by hand, this paper addresses the automated generation of appropriate events for testing. For this purpose, a general specification to define event types and its representation are proposed and an event generator is developed based on this definition. Thanks to the adaptability of the proposed specification, the event generator can generate events of an event type, or events which combine the relevant attributes of several event types. Results from experiments and real-world tests show that the developed system meets the demanded requirements.Journal of Systems and Software, JSS Special Issue on Software Reliability EngineeringImpact factor: 2,444 (Q1)Available online 20 June 2017DOI: https://doi.org/10.1016/j.jss.2017.06.037

Mapas de navegación para la automatización de pruebas de aceptación en aplicaciones móviles

Para que el proceso de pruebas del software resulte eficaz es habitual que tanto la parte proveedora como la parte aceptante colaboren. Esto es especialmente cierto en el nivel de las pruebas de aceptación, donde la responsabilidad principal recae en la parte aceptante. Aunque se ha avanzado mucho en herramientas que facilitan de forma automática la generación de casos de prueba y la ejecución de los mismos, estas están normalmente pensadas para desarrolladores con avanzados conocimientos en programación. Este trabajo presenta un componente, denominado Graph2Test, que pretende facilitar la comunicación entre la parte aceptante y la parte desarrolladora en base a la representación mediante un diagrama de estados de los mapas de navegación de la aplicación objeto de las pruebas. A partir de este mapa de navegación se generan casos de prueba en texto plano (lenguaje Gherkin), que posteriormente se transforman en scripts de prueba utilizando la tecnología Cucumber. El componente está especializado en la prueba de aplicaciones móviles Android y autocompleta parcialmente estos scripts de prueba con instrucciones del entorno de automatización Espresso.

Test Case Prioritization of Configurable Cyber-Physical Systems with Weight-Based Search Algorithms

El paper fue publicado en julio de 2016 en la conferencia GECCO (The Genetic and Evolutionary Computation Conference), que es un congreso de clase 2 del ranking SCIE de congresos relevantes. Hasta la fecha, según google scholar, ha recibido un total de dos citas. Cyber-Physical Systems (CPSs) can be found in many sectors (e.g., automotive and aerospace). These systems are usually configurable to give solutions based on different needs. The variability of these systems is large, which implies they can be set into millions of configurations. As a result, different testing processes are needed to efficiently test these systems: the appropriate configurations must be selected and relevant test cases for each configuration must be chosen as well as prioritized. Prioritizing the order in which the test cases are executed reduces the time for detecting faults in these kinds of systems. However, the test suite size is often large and exploring all the possible test case orders is infeasible. Search algorithms can help find optimal solutions from a large solution space. This paper presents an approach based on weight-based search algorithms for prioritizing the test cases for configurable CPSs. We empirically evaluate the performance of the following algorithms with two case studies: Weight-Based Genetic Algorithms, Random Weighted Genetic Algorithms, Greedy, Alternating Variable Method and Random Search (RS). Our results suggest that all the search algorithms outperform RS, which is taken as a baseline. Local search algorithms have shown better performance than global search algorithms.

A Tool for Black-Box Testing in a Multilanguage Verification Platform (Trabajo en progreso)

In the context of the multilanguage verification platform CAVI-ART, we have defined an Intermediate Representation (IR) to which all the source languages are translated. This IR contains both the code and the assertions given by the programmer. Its primary purpose was automatically generating and proving, in a source language independent way, the verification conditions ensuring the program correctness. The logical formulas are sent by the platform to an SMT solver which checks their validity.

In this paper we present a new use of the IR: we transform it into an executable language (that it turns out to be Haskell) and also transform the assertions into executable (Haskell) code. Thanks to that, tests can be run on the transformed program, and bugs can be detected either in the specification assertions or in the code. Moreover, we use the assertions to generate black-box test-cases from them, and also as test oracles. In this way, given the IR of a program, all the process —namely, test-case generation, test running, and test correctness checking— is completely automatic. So, thousands of tests can be run with little or none effort. The only burden for the programmer is providing the precondition and the postcondition of the code under test, which anyway should have been provided in advance, since the primary goal was to verify the program.

We discuss the problems we have encountered while implementing this idea, and how we have solved them. In particular, we report on the use of Haskell resources such as GADTs, efficient data structures, and specialized libraries.

Type Checking and Testing of SPARQL Queries (Trabajo en progreso)

In this paper we describe a property-based testing tool for SPARQL. The tool randomly generates test cases in the form of instances of an ontology. The tool checks the well typed-ness of the SPARQL query as well as the consistency of the test cases with the ontology axioms. With this aim, a type system has been defined for SPARQL. Test cases are after used to execute queries. The output of the queries are tested with a Boolean property which is defined in terms of membership of ontology individuals to classes. The testing tool reports counterexamples when the Boolean property is not satisfied.

Testing Temporal Logic on Infinite Java Traces

This paper summarizes an approach for testing reactive and concurrent Java programs which combines model checking and runtime monitoring. We use a model checker for two purposes. On the one hand, it analyzes multiple program executions by generating test input parameters. On the other hand, it checks each program execution against a linear temporal logic (LTL) property. The paper presents two methods to abstract the Java states that allow efficient testing of LTL. One of this methods supports the detection of cycles to test LTL on potentially infinite Java execution traces. Runtime monitoring is used to generate the Java execution traces to be considered as input of the model checker. Our current implementation in the tool TJT uses Spin as the model checker and the Java Debug Interface (JDI) for runtime monitoring. TJT is presented as a plug-in for Eclipse and it has been successfully applied to complex public Java programs.