12 research outputs found

    Mejoras al testing exhaustivo acotado

    Get PDF
    Tesis (Doctor en Cs. de la Computación)--Universidad Nacional de Córdoba, Facultad de Matemática, Astronomía y Física, 2015.El Testing consiste en ejecutar una pieza de software con diferentes entradas para luego chequear si el resultado obtenido se corresponde con el resultado esperado. Se estima que esta actividad ocupa más de la mitad del costo total del desarrollo de software, por lo que es fundamental su automatización. La construcción automática de entradas para probar el software bajo análisis reduce significativamente los costos de hacer testing. El testing exhaustivo acotado es una técnica muy efectiva para encontrar errores, que consiste en generar automáticamente todas las entradas válidas dentro de ciertas cotas, y posteriormente usar estas entradas para probar el código bajo análisis. La efectividad de los conjuntos de entradas producidos, crece a medida que las cotas crecen, pero además, el tiempo consumido durante la generación y posterior ejecución del programa bajo las entradas producidas, se incrementa de manera exponencial cuando las cotas crecen, y como consecuencia, muchas veces, esta tarea resulta inviable. En este trabajo se presentan un grupo de técnicas destinadas a disminuir el tiempo empleado para realizar testing exhaustivo acotado, para lo cual, se propone reducir el tiempo de generación de entradas, así como también el tiempo de ejecución de las mismas mediante la reducción `adecuada' del tamaño de los conjuntos producidos

    Criterios de cobertura sobre RepOK para reducir test suites exhaustivas acotadas: estudio de casos

    Get PDF
    La generación exhaustiva acotada de casos de test es una técnica de generación de entradas para programas que consiste en construir todas las posibles entradas válidas hasta cierta cota dada. Aunque el tamaño de la test suite generada está ligado a la cota provista, inclusive para cotas muy pequeñas las test suites obtenidas resultan considerablemente grandes, haciendo al uso de las mismas algo prohibitivo. En este trabajo revisaremos, adicionando nuevos casos de estudios, un enfoque para reducir el tamaño de las test suites generadas exhaustivamente presentado previamente. Este enfoque está basado en el uso de criterios de cobertura de código sobre el invariante de representación de la estructura sobre la cual la test suite es producida. La implementación de este invariante es utilizada para decidir cuándo dos entradas válidas pueden ser consideradas equivalentes, lo cual sucede si éstas ejercitan el código del invariante de representación de manera similar de acuerdo algún criterio de cobertura de código de caja blanca. Esta relación de equivalencia entre las entradas válidas es aprovechada para descartar casos de test que cubren clases de equivalencias ya cubiertas por algún otro caso de test presente en la suite. En este trabajo, se adicionan nuevos casos de estudios que muestran que, a medida que las cotas crecen, reducir las test suites exhaustivas aplicando la técnica presentada, produce resultados similares a las test suites exhaustivas, en cuanto a habilidad para matar mutantes.Eje: Workshop Ingeniería de Software (WIS).Red de Universidades con Carreras en Informática (RedUNCI

    Detección de objetos espurios en generación automática de entradas

    Get PDF
    En el contexto de testing, el uso de entradas generadas de manera automática, sobre las cuales se va a ejecutar el programa bajo prueba, es una práctica cada vez más común. En el caso particular de tipos de datos complejos, como los encontrados en programación orientada a objetos, una de las técnicas utilizadas se basa en el uso de mecanismos de reflexión provistos por el lenguaje, y especificaciones para evitar la generación de entradas inválidas. Sin embargo, cuando las especificaciones son débiles pueden llevar a construir objetos espurios, es decir, inválidos o no construibles por la API asociada al tipo del objeto. Estos objetos pueden llevar a falsos negativos: tests que fallan cuando no existe un bug e incrementan el trabajo del tester que deberá filtrar los tests que efectivamente evidencian un bug de aquellos que fallan solo por una entrada inválida; y falsos positivos: tests que deberían fallar pero que no lo hacen debido a que la entrada inválida enmascara el bug. En este trabajo evidenciaremos el problema mediante un ejemplo y delinearemos los componentes y pasos necesarios para construir una técnica que detecte cuando un objeto es inválido con respecto al API.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Hacia la construccion de drivers eficientes en bounded model checking mediante deteccion automatica de builders

    Get PDF
    Las técnicas que permiten mejorar la calidad del software producido son de vital importancia, sobre todo en sistemas críticos. Entre ellas, contamos con técnicas de verificación acotada de software, como el model checking de software, que permiten explorar exhaustivamente todas las ejecuciones posibles del software con entradas de tamaño acotado, y reportar fallas encontradas durante el proceso. Para llevar a cabo la verificación acotada, los model checkers de software se basan en la definición de drivers: combinaciones de métodos que permiten construir las entradas con las que se ejecutará el programa. En este trabajo se observa que la selección de los métodos empleados en la definición del driver es de vital importancia para la verificación. Intuitivamente, es deseable seleccionar un conjunto de métodos tan pequeño como sea posible (para mayor eficiencia en el análisis), cuyas combinaciones permitan construir todas las estructuras acotadas para el módulo (para analizar el software con todas las entradas posibles). Esta selección de métodos, que usualmente se lleva a cabo de forma manual, no es una tarea fácil: requiere un análisis exhaustivo de las rutinas disponibles en el módulo y una comprensión profunda de la semántica de las mismas. En este trabajo se propone utilizar una herramienta automática para seleccionar un subconjunto de métodos relevantes de un módulo para la construcción de drivers eficientes para bounded model checking. Además, se evalúa el enfoque propuesto en el análisis de una propiedad particular del modulo Apache NodeCachingLinkedList, empleando el model checker Java PathFinder (JPF). Los resultados muestran que el enfoque de construcción de drivers presentado permite incrementar la eficiencia y la escalabilidad a estructuras de mayor tamaño en el análisis usando JPF.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Detección de objetos espurios en generación automática de entradas

    Get PDF
    En el contexto de testing, el uso de entradas generadas de manera automática, sobre las cuales se va a ejecutar el programa bajo prueba, es una práctica cada vez más común. En el caso particular de tipos de datos complejos, como los encontrados en programación orientada a objetos, una de las técnicas utilizadas se basa en el uso de mecanismos de reflexión provistos por el lenguaje, y especificaciones para evitar la generación de entradas inválidas. Sin embargo, cuando las especificaciones son débiles pueden llevar a construir objetos espurios, es decir, inválidos o no construibles por la API asociada al tipo del objeto. Estos objetos pueden llevar a falsos negativos: tests que fallan cuando no existe un bug e incrementan el trabajo del tester que deberá filtrar los tests que efectivamente evidencian un bug de aquellos que fallan solo por una entrada inválida; y falsos positivos: tests que deberían fallar pero que no lo hacen debido a que la entrada inválida enmascara el bug. En este trabajo evidenciaremos el problema mediante un ejemplo y delinearemos los componentes y pasos necesarios para construir una técnica que detecte cuando un objeto es inválido con respecto al API.XVI Workshop Ingeniería de Software.Red de Universidades con Carreras en Informátic

    Efñcient Test Generation Guided by Field Coverage Gritería

    Get PDF
    Field-exhaustive testing is a testing criterion that requires suites to contain enough test inputs to cover all feasible valúes for fields within a certain input-size bound. While previous work shows that field- exhaustive suites can be automatically generated, the generation tech- nique requires a formal specification of the inputs that can be subject to SAT-based analysis. Moreover, this constraint together with the resfrie- tion of producing all feasible valúes for input fields makes test generation costly, and field-exhaustive testing difficult to generalize to further testing domains. In this paper, we deal with field. coverage as testing criteria that measure the degree to which a program is tested by examining to what extent the valúes of inputs’ fields are covered. We show that this notion generalizes field-exhaustive testing, withdrawing the need for a SAT-analyzable formal specification, and thus can be combined with any test generation technique to produce smaller test suites, reducing testing time. In particular, we consider field coverage: (i) in combination with test generation based on symbolic execution, to produce underapproximations of all testing sequences; (ii) as a relaxation of bounded-exhaustive testing, producing smaller suites using the Korat tool; and (iii) in combination with random testing, producing smaller test suites and even serving as a termination criterion for generation. As we show, in all these cases field coverage helps producing significantly smaller suites, thus contributing to testing time, while retaining the effectiveness of the corresponding original techniques, in terms of test suite quality.Sociedad Argentina de Informática e Investigación Operativ

    ProgEnv: un entorno para la enseñanza de la programación

    Get PDF
    El curso de Ingreso Universitario en carreras de computación, es para muchos estudiantes, el primer contacto con la disciplina y por ello es de gran importancia el desarrollo de actividades que permitan introducir los conceptos básicos, favoreciendo la participación de los estudiantes a través de consignas que estimulen la creatividad y el interés por las ciencias de la computación, en particular por la programación. La complejidad de las actividades abordadas es sin duda un factor determinante para promover el aprendizaje de conceptos asociados a la programación, siendo muchas veces motivo de frustración para alumnos que se inician en esta práctica. En este contexto, la elección de las herramientas y lenguajes de enseñanza adecuados juegan un rol fundamental, permitiendo desarrollar nociones complejas con un alto grado de abstracción de manera simple y clara. En este trabajo presentaremos un entorno de desarrollo visual para la enseñanza de la programación, al que llamamos ProgEnv por Programming Environment, su utilización en el dictado del módulo “Introducción a la Programación” que forma parte de las actividades de ingreso a las carreras Analista en Computación, Profesorado y Licenciatura en Ciencias de la Computación de la Facultad de Ciencias Exactas de la Universidad Nacional de Río Cuarto y los resultados obtenidos en dicha experiencia.VIII Workshop Innovación en Educación en Informática.Red de Universidades con Carreras en Informátic

    ProgEnv: un entorno para la enseñanza de la programación

    Get PDF
    El curso de Ingreso Universitario en carreras de computación, es para muchos estudiantes, el primer contacto con la disciplina y por ello es de gran importancia el desarrollo de actividades que permitan introducir los conceptos básicos, favoreciendo la participación de los estudiantes a través de consignas que estimulen la creatividad y el interés por las ciencias de la computación, en particular por la programación. La complejidad de las actividades abordadas es sin duda un factor determinante para promover el aprendizaje de conceptos asociados a la programación, siendo muchas veces motivo de frustración para alumnos que se inician en esta práctica. En este contexto, la elección de las herramientas y lenguajes de enseñanza adecuados juegan un rol fundamental, permitiendo desarrollar nociones complejas con un alto grado de abstracción de manera simple y clara. En este trabajo presentaremos un entorno de desarrollo visual para la enseñanza de la programación, al que llamamos ProgEnv por Programming Environment, su utilización en el dictado del módulo “Introducción a la Programación” que forma parte de las actividades de ingreso a las carreras Analista en Computación, Profesorado y Licenciatura en Ciencias de la Computación de la Facultad de Ciencias Exactas de la Universidad Nacional de Río Cuarto y los resultados obtenidos en dicha experiencia.VIII Workshop Innovación en Educación en Informática.Red de Universidades con Carreras en Informátic

    ProgEnv: un entorno para la enseñanza de la programación

    Get PDF
    El curso de Ingreso Universitario en carreras de computación, es para muchos estudiantes, el primer contacto con la disciplina y por ello es de gran importancia el desarrollo de actividades que permitan introducir los conceptos básicos, favoreciendo la participación de los estudiantes a través de consignas que estimulen la creatividad y el interés por las ciencias de la computación, en particular por la programación. La complejidad de las actividades abordadas es sin duda un factor determinante para promover el aprendizaje de conceptos asociados a la programación, siendo muchas veces motivo de frustración para alumnos que se inician en esta práctica. En este contexto, la elección de las herramientas y lenguajes de enseñanza adecuados juegan un rol fundamental, permitiendo desarrollar nociones complejas con un alto grado de abstracción de manera simple y clara. En este trabajo presentaremos un entorno de desarrollo visual para la enseñanza de la programación, al que llamamos ProgEnv por Programming Environment, su utilización en el dictado del módulo “Introducción a la Programación” que forma parte de las actividades de ingreso a las carreras Analista en Computación, Profesorado y Licenciatura en Ciencias de la Computación de la Facultad de Ciencias Exactas de la Universidad Nacional de Río Cuarto y los resultados obtenidos en dicha experiencia.VIII Workshop Innovación en Educación en Informática.Red de Universidades con Carreras en Informátic

    RepOK-based reduction of bounded exhaustive testing

    No full text
    While the effectiveness of bounded exhaustive test suites increases as one increases the scope for the bounded exhaustive generation, both the time for test generation and the time for test execution grow exponentially with respect to the scope. In this article, a set of techniques for reducing the time for bounded exhaustive testing, by either reducing the generation time or reducing the obtained bounded exhaustive suites, is proposed. The representation invariant of the software under test's input, implemented as a repOK routine, is exploited for these reductions in two ways: (i) to factor out separate representation invariants for disjoint structures of the inputs; and (ii) to partition valid inputs into equivalence classes, according to how these exercise the repOK code. The first is used in order to split the test input generation process, as disjoint substructures can be independently generated. The second is used in order to reduce the size of a bounded exhaustive test suite, by removing from the suite those tests that are equivalent to some tests already present in the suite.Fil: Bengolea, Valeria Susana. Universidad Nacional de Río Cuarto. Facultad de Ciencias Exactas Fisicoquímicas y Naturales. Departamento de Computación; Argentina. Consejo Nacional de Investigaciones Científicas y Técnicas; ArgentinaFil: Aguirre, Nazareno Matias. Consejo Nacional de Investigaciones Científicas y Técnicas; Argentina. Universidad Nacional de Río Cuarto. Facultad de Ciencias Exactas Fisicoquímicas y Naturales. Departamento de Computación; ArgentinaFil: Marinov, Darko. University of Illinois at Urbana; Estados UnidosFil: Frias, Marcelo Fabian. Instituto Tecnológico de Buenos Aires. Facultad de Ingeniería. Departamento de Informática; Argentina. Consejo Nacional de Investigaciones Científicas y Técnicas; Argentin
    corecore