Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing

El testing de un sistema de software consiste en ejecutarlo sobre un conjunto de datos de input conveniente y chequear que el output producido es el esperado. El testing es ampliamente usado para mejorar la calidad del software, y específicamente, para descubrir errores inevitablemente introducidos...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Marré, Martina
Formato: Tesis Doctoral
Lenguaje:Español
Publicado: 1997
Acceso en línea:https://hdl.handle.net/20.500.12110/tesis_n2966_Marre
Aporte de:
id todo:tesis_n2966_Marre
record_format dspace
institution Universidad de Buenos Aires
institution_str I-28
repository_str R-134
collection Biblioteca Digital - Facultad de Ciencias Exactas y Naturales (UBA)
language Español
orig_language_str_mv Español
description El testing de un sistema de software consiste en ejecutarlo sobre un conjunto de datos de input conveniente y chequear que el output producido es el esperado. El testing es ampliamente usado para mejorar la calidad del software, y específicamente, para descubrir errores inevitablemente introducidos durante el proceso de desarrollo del software. Uno de los problemas más difíciles en testing es saber cuándo detener el proceso de prueba. Por un lado, no es posible en general dar una respuesta a si un test suite garantiza la ausencia de defectos. Por otro lado, necesitamos una manera de limitar el costo del testing. Por consiguiente, es útil tener criterios para determinar cuándo se ha testeado "suficientemente" un programa. Idealmente, el proceso de testing se debe planear de antemano. Sin embargo, en la práctica se incorporan los tests de a uno, hasta se satisface algún criterio de terminación o criterio de adecuación. En particular, se pueden usar diferentes cubrimientos para determinar cuándo se ha probado un programa lo suficiente. La idea es garantizar que cada instrucción, decisión, u otra parte de un programa se ha ejecutado por lo menos una vez bajo la prueba realizada. Un problema mayor es que el testing emplea una cantidad considerable del tiempo y recursos gastados en la producción de software (9). Por consiguiente, sería útil: 1. Reducir el costo del testing, y 2. Estimar el costo del testing. En particular, el número de tests a ser ejecutados impacta fuertemente en el costo del testing. De hecho, el tiempo y los recursos necesarios para realizar el testing aumenta con el número de casos de prueba. Entonces, para reducir el costo del testing, el número de casos de prueba generados para satisfacer un criterio de selección de casos debe ser lo más pequeño posible. Además, una cota en el número de tests que tienen que ser ejecutados para satisfacer una estrategia de selección de casos de test puede ser usada por gerentes y testers para estimar el esfuerzo necesario para llevar a cabo la ejecución de los tests. En práctica, un criterio de testing define una colección de requisitos que deben cumplirse. En el caso de criterios de cubrimiento estructurales, estos requisitos se mapean en un conjunto de entidades del flowgraph (o grafo del flujo de control) del programa, que se deben cubrir cuando se ejecutan los datos de test. En este trabajo presentamos un método para reducir y estimar el número de tests necesarios para satisfacer criterios de cubrimiento estructurales, basado en el concepto nuevo de spanning sets of entities o conjunto expandido de entidades. Este concepto se basa en la observación de que un test generalmente cubre más de una entidad. Sin embargo, este hecho tradicionalmente no se considera cuando se mide el cubrimiento de los tests y se identifica las entidades no cubiertas, o cuando se seleccionan más tests para aumentar el cubrimiento. Los métodos existentes para seleccionar tests generan un dato para cubrir una entidad seleccionada en forma arbitraria, y considerada en forma aislada a las otras entidades. Si el dato de test generado también ejecuta otras entidades, se considerarán cubiertas a posteriori. Pero no se realiza ningún esfuerzo para generar a priori datos de test que satisfagan varios requisitos simultáneamente. Nuestro método supera estos inconvenientes, ya que identifica mediante análisis estático un subconjunto de entidades mínimo con la propiedad de que cualquier conjunto de tests que cubre este subconjunto cubre toda entidad en el programa. Llamamos a este subconjunto mínimo un "spanning set of entities". En este trabajo, primero definimos los conjuntos de entidades que se asocian con cada criterio en una familia entera de criterios de cubrimiento de test, muy populares. Luego presentamos un método generalizado para identificar un spanning set of entities para los criterios considerados. Nuestro método puede ser automatizado. Una vez que ha sido incluido en el proceso de testing, la información puede ser usada para: Evaluar la adecuación del testing más efectivamente. Reducir el costo del testing. Estimar el costo del testing. Generar test suites. En esta tesis presentamos nuestro estudio del uso de spanning sets of entities en testing.
format Tesis Doctoral
author Marré, Martina
spellingShingle Marré, Martina
Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
author_facet Marré, Martina
author_sort Marré, Martina
title Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
title_short Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
title_full Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
title_fullStr Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
title_full_unstemmed Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing
title_sort análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de testing
publishDate 1997
url https://hdl.handle.net/20.500.12110/tesis_n2966_Marre
work_keys_str_mv AT marremartina analisisdelflujodeprogramasparareduciryestimarelcostodeloscriteriosdecubrimientodetesting
_version_ 1782028024256921600
spelling todo:tesis_n2966_Marre2023-10-03T12:35:03Z Análisis del flujo de programas para reducir y estimar el costo de los criterios de cubrimiento de Testing Marré, Martina El testing de un sistema de software consiste en ejecutarlo sobre un conjunto de datos de input conveniente y chequear que el output producido es el esperado. El testing es ampliamente usado para mejorar la calidad del software, y específicamente, para descubrir errores inevitablemente introducidos durante el proceso de desarrollo del software. Uno de los problemas más difíciles en testing es saber cuándo detener el proceso de prueba. Por un lado, no es posible en general dar una respuesta a si un test suite garantiza la ausencia de defectos. Por otro lado, necesitamos una manera de limitar el costo del testing. Por consiguiente, es útil tener criterios para determinar cuándo se ha testeado "suficientemente" un programa. Idealmente, el proceso de testing se debe planear de antemano. Sin embargo, en la práctica se incorporan los tests de a uno, hasta se satisface algún criterio de terminación o criterio de adecuación. En particular, se pueden usar diferentes cubrimientos para determinar cuándo se ha probado un programa lo suficiente. La idea es garantizar que cada instrucción, decisión, u otra parte de un programa se ha ejecutado por lo menos una vez bajo la prueba realizada. Un problema mayor es que el testing emplea una cantidad considerable del tiempo y recursos gastados en la producción de software (9). Por consiguiente, sería útil: 1. Reducir el costo del testing, y 2. Estimar el costo del testing. En particular, el número de tests a ser ejecutados impacta fuertemente en el costo del testing. De hecho, el tiempo y los recursos necesarios para realizar el testing aumenta con el número de casos de prueba. Entonces, para reducir el costo del testing, el número de casos de prueba generados para satisfacer un criterio de selección de casos debe ser lo más pequeño posible. Además, una cota en el número de tests que tienen que ser ejecutados para satisfacer una estrategia de selección de casos de test puede ser usada por gerentes y testers para estimar el esfuerzo necesario para llevar a cabo la ejecución de los tests. En práctica, un criterio de testing define una colección de requisitos que deben cumplirse. En el caso de criterios de cubrimiento estructurales, estos requisitos se mapean en un conjunto de entidades del flowgraph (o grafo del flujo de control) del programa, que se deben cubrir cuando se ejecutan los datos de test. En este trabajo presentamos un método para reducir y estimar el número de tests necesarios para satisfacer criterios de cubrimiento estructurales, basado en el concepto nuevo de spanning sets of entities o conjunto expandido de entidades. Este concepto se basa en la observación de que un test generalmente cubre más de una entidad. Sin embargo, este hecho tradicionalmente no se considera cuando se mide el cubrimiento de los tests y se identifica las entidades no cubiertas, o cuando se seleccionan más tests para aumentar el cubrimiento. Los métodos existentes para seleccionar tests generan un dato para cubrir una entidad seleccionada en forma arbitraria, y considerada en forma aislada a las otras entidades. Si el dato de test generado también ejecuta otras entidades, se considerarán cubiertas a posteriori. Pero no se realiza ningún esfuerzo para generar a priori datos de test que satisfagan varios requisitos simultáneamente. Nuestro método supera estos inconvenientes, ya que identifica mediante análisis estático un subconjunto de entidades mínimo con la propiedad de que cualquier conjunto de tests que cubre este subconjunto cubre toda entidad en el programa. Llamamos a este subconjunto mínimo un "spanning set of entities". En este trabajo, primero definimos los conjuntos de entidades que se asocian con cada criterio en una familia entera de criterios de cubrimiento de test, muy populares. Luego presentamos un método generalizado para identificar un spanning set of entities para los criterios considerados. Nuestro método puede ser automatizado. Una vez que ha sido incluido en el proceso de testing, la información puede ser usada para: Evaluar la adecuación del testing más efectivamente. Reducir el costo del testing. Estimar el costo del testing. Generar test suites. En esta tesis presentamos nuestro estudio del uso de spanning sets of entities en testing. Testing a software system consists of executing it over a suitable sample of input data and then checking if the output produced matchs what was expected. Testing is widely used to enhance software quality, and, specifically, to uncover bugs that are inevitably introduced during the software development process. One of the most difficult problems in testing is knowing when to stop the testing process. On the one hand, it is not possible in general to give an answer to whether a test suite guarantees the absence of faults. On the other hand, we need a way to limit the cost of testing. Therefore, it is useful to have criteria to determine when a program has been tested "enough". Ideally, the testing process should be planned in advance. However, in practice the tests are incorporated little by little, until some adequacy criterion is satisfied. In particular, different coverages can be used to determine when the program has been tested enough. The idea is to guarantee that each statement, decision or other feature of the program has been executed at least once under some test. A major problem is that testing takes a considerable amount of the time and resources spent on producing software [9]. Therefore, it would be useful to have ways 1. to reduce the cost of testing, and 2. to estimate this cost. In particular, the number of tests to be ezecuted impacts heavily on the cost of testing. In fact, the time and resources needed for testing increase as the number of test cases increases. Hence, to reduce the cost of testing, the number of test cases generated to satisfy a selected test criterion should be as small as possible. Moreover, a bound on the number of tests that have to be performed to satisfy a selected test strategy can be used by managers and testers to estimate the effort needed to carry out the tests. A test criterion in practice sets a collection of requirements to be fulfilled. For structural coverage criteria, these requirements are mapped onto a set of entities in the program flowgraph that must be covered when the tests are executed. In this work we present a method for reducing and estimating the number of tests needed to satisfy structural coverage criteria, based on the new concept of spanning sets of entities. This concept is based on the observation that one test generally covers more than one entity. However, this fact is not traditionally considered when coverage is measured and not covered entities are identified, or when more tests have to be selected in order to aug~nent coverage. Methods for selecting tests generate a test datum for covering one entity selected arbitrarily and considered in isolation from the other entities. If the generated test datum also exercises other entities, these will then be considered as covered a-posteriori. But no effort is made to generate a-priori test data that satisfy multiple requirements. Our method overcomes these drawbacks by identifying with static analysis a minimum subset of entities with the property that any set of tests covering this subset covers every entity in the program. We call this minimum subset a "spanning set of entities". In this work, we fist define the sets of entities that are associated with a whole family of popular test coverage criteria. Then we present a generalized method of identifying a spanning set of entities for the criteria considered. Our method can be automated. Once it has been included in the software testing process, this information can be used for evaluating test adequacy more effectively; reducing the cost of testing; estimating the cost of testing; generating test suites. In this thesis we present our study of the use of spanning sets of entities in coverage testing. Fil: Marré, Martina. Universidad de Buenos Aires. Facultad de Ciencias Exactas y Naturales; Argentina. 1997 Tesis Doctoral PDF Español info:eu-repo/semantics/openAccess https://creativecommons.org/licenses/by-nc-sa/2.5/ar https://hdl.handle.net/20.500.12110/tesis_n2966_Marre