首页> 外文OA文献 >Generación de Casos de Prueba en Programación Orientada a Objetos = Test Case Generation in Object-Oriented Programming
【2h】

Generación de Casos de Prueba en Programación Orientada a Objetos = Test Case Generation in Object-Oriented Programming

机译:面向对象编程中的测试案例生成=面向对象编程中的测试案例生成

摘要

Las pruebas de software (Testing) son en la actualidad la técnica más utilizada para la validación y la evaluación de la calidad de un programa. El testing está integrado en todas las metodologías prácticas de desarrollo de software y juega un papel crucial en el éxito de cualquier proyecto de software. Desde las unidades de código más pequeñas a los componentes más complejos, su integración en un sistema de software y su despliegue a producción, todas las piezas de un producto de software deben ser probadas a fondo antes de que el producto de software pueda ser liberado a un entorno de producción. La mayor limitación del testing de software es que continúa siendo un conjunto de tareas manuales, representando una buena parte del coste total de desarrollo. En este escenario, la automatización resulta fundamental para aliviar estos altos costes. La generación automática de casos de pruebas (TCG, del inglés test case generation) es el proceso de generar automáticamente casos de prueba que logren un alto recubrimiento del programa. Entre la gran variedad de enfoques hacia la TCG, esta tesis se centra en un enfoque estructural de caja blanca, y más concretamente en una de las técnicas más utilizadas actualmente, la ejecución simbólica. En ejecución simbólica, el programa bajo pruebas es ejecutado con expresiones simbólicas como argumentos de entrada en lugar de valores concretos. Esta tesis se basa en un marco general para la generación automática de casos de prueba dirigido a programas imperativos orientados a objetos (Java, por ejemplo) y basado en programación lógica con restricciones (CLP, del inglés constraint logic programming). En este marco general, el programa imperativo bajo pruebas es primeramente traducido a un programa CLP equivalente, y luego dicho programa CLP es ejecutado simbólicamente utilizando los mecanismos de evaluación estándar de CLP, extendidos con operaciones especiales para el tratamiento de estructuras de datos dinámicas. Mejorar la escalabilidad y la eficiencia de la ejecución simbólica constituye un reto muy importante. Es bien sabido que la ejecución simbólica resulta impracticable debido al gran número de caminos de ejecución que deben ser explorados y a tamaño de las restricciones que se deben manipular. Además, la generación de casos de prueba mediante ejecución simbólica tiende a producir un número innecesariamente grande de casos de prueba cuando es aplicada a programas de tamaño medio o grande. Las contribuciones de esta tesis pueden ser resumidas como sigue. (1) Se desarrolla un enfoque composicional basado en CLP para la generación de casos de prueba, el cual busca aliviar el problema de la explosión de caminos interprocedimiento analizando de forma separada cada componente (p.ej. método) del programa bajo pruebas, almacenando los resultados y reutilizándolos incrementalmente hasta obtener resultados para el programa completo. También se ha desarrollado un enfoque composicional basado en especialización de programas (evaluación parcial) para la herramienta de ejecución simbólica Symbolic PathFinder (SPF). (2) Se propone una metodología para usar información del consumo de recursos del programa bajo pruebas para guiar la ejecución simbólica hacia aquellas partes del programa que satisfacen una determinada política de recursos, evitando la exploración de aquellas partes del programa que violan dicha política. (3) Se propone una metodología genérica para guiar la ejecución simbólica hacia las partes más interesantes del programa, la cual utiliza abstracciones como generadores de trazas para guiar la ejecución de acuerdo a criterios de selección estructurales. (4) Se propone un nuevo resolutor de restricciones, el cual maneja eficientemente restricciones sobre el uso de la memoria dinámica global (heap) durante ejecución simbólica, el cual mejora considerablemente el rendimiento de la técnica estándar utilizada para este propósito, la lazy initialization". (5) Todas las técnicas propuestas han sido implementadas en el sistema PET (el enfoque composicional ha sido también implementado en la herramienta SPF). Mediante evaluación experimental se ha confirmado que todas ellas mejoran considerablemente la escalabilidad y eficiencia de la ejecución simbólica y la generación de casos de prueba. ABSTRACT Testing is nowadays the most used technique to validate software and assess its quality. It is integrated into all practical software development methodologies and plays a crucial role towards the success of any software project. From the smallest units of code to the most complex components and their integration into a software system and later deployment; all pieces of a software product must be tested thoroughly before a software product can be released. The main limitation of software testing is that it remains a mostly manual task, representing a large fraction of the total development cost. In this scenario, test automation is paramount to alleviate such high costs. Test case generation (TCG) is the process of automatically generating test inputs that achieve high coverage of the system under test. Among a wide variety of approaches to TCG, this thesis focuses on structural (white-box) TCG, where one of the most successful enabling techniques is symbolic execution. In symbolic execution, the program under test is executed with its input arguments being symbolic expressions rather than concrete values. This thesis relies on a previously developed constraint-based TCG framework for imperative object-oriented programs (e.g., Java), in which the imperative program under test is first translated into an equivalent constraint logic program, and then such translated program is symbolically executed by relying on standard evaluation mechanisms of Constraint Logic Programming (CLP), extended with special treatment for dynamically allocated data structures. Improving the scalability and efficiency of symbolic execution constitutes a major challenge. It is well known that symbolic execution quickly becomes impractical due to the large number of paths that must be explored and the size of the constraints that must be handled. Moreover, symbolic execution-based TCG tends to produce an unnecessarily large number of test cases when applied to medium or large programs. The contributions of this dissertation can be summarized as follows. (1) A compositional approach to CLP-based TCG is developed which overcomes the inter-procedural path explosion by separately analyzing each component (method) in a program under test, stowing the results as method summaries and incrementally reusing them to obtain whole-program results. A similar compositional strategy that relies on program specialization is also developed for the state-of-the-art symbolic execution tool Symbolic PathFinder (SPF). (2) Resource-driven TCG is proposed as a methodology to use resource consumption information to drive symbolic execution towards those parts of the program under test that comply with a user-provided resource policy, avoiding the exploration of those parts of the program that violate such policy. (3) A generic methodology to guide symbolic execution towards the most interesting parts of a program is proposed, which uses abstractions as oracles to steer symbolic execution through those parts of the program under test that interest the programmer/tester most. (4) A new heap-constraint solver is proposed, which efficiently handles heap-related constraints and aliasing of references during symbolic execution and greatly outperforms the state-of-the-art standard technique known as lazy initialization. (5) All techniques above have been implemented in the PET system (and some of them in the SPF tool). Experimental evaluation has confirmed that they considerably help towards a more scalable and efficient symbolic execution and TCG.
机译:软件测试(Testing)是当前用于验证和评估程序质量的最广泛使用的技术。测试已集成到所有实用的软件开发方法中,并且在任何软件项目的成功中都扮演着至关重要的角色。从最小的代码单元到最复杂的组件,将它们集成到软件系统中以及将它们部署到生产中,必须先对软件产品的所有部分进行全面测试,然后才能将软件产品发布到产品中。生产环境。软件测试的最大局限性在于它仍然是一组手动任务,占总开发成本的很大一部分。在这种情况下,自动化对于减轻这些高成本至关重要。自动测试用例生成(TCG)是自动生成可实现较高程序覆盖率的测试用例的过程。在各种各样的TCG方法中,本文着重于结构化白盒方法,更具体地讲,是当今最常用的一种技术,即符号执行。在符号执行中,被测程序以符号表达式作为输入参数而不是具体值来执行。本论文基于针对面向对象命令式程序(例如Java)的自动生成测试用例的通用框架,并基于约束逻辑编程(CLP)。在该通用框架中,被测命令式程序首先被转换为等效的CLP程序,然后使用标准CLP评估机制象征性地执行所述CLP程序,并扩展了用于处理动态数据结构的特殊操作。改善符号执行的可伸缩性和效率是一项重大挑战。众所周知,由于必须探索大量的执行路径以及必须操纵的限制量,因此符号执行是不切实际的。此外,当将符号执行应用于中型或大型程序时,通过符号执行生成测试用例往往会产生不必要的大量测试用例。论文的主要工作概括如下。 (1)开发了一种基于CLP的组合方法来生成测试用例,该方法旨在通过分别分析被测程序的每个组件(例如方法)来减轻过程间路径爆炸的问题,结果并逐步重用它们,直到获得整个程序的结果为止。还针对符号路径查找器(SPF)符号执行工具开发了基于程序专业化(部分评估)的组合方法。 (2)提出了一种方法,该方法使用有关被测程序资源消耗的信息来将符号执行引导到满足特定资源策略的程序部分,从而避免探索违反所述策略的程序部分。 (3)提出了一种通用方法,将符号执行引导到程序中最有趣的部分,该方法使用抽象作为跟踪生成器,根据结构选择标准来指导执行。 (4)提出了一种新的约束解析器,该解析器可有效处理符号执行过程中对全局动态内存(堆)使用的约束,从而大大提高了为此目的使用的标准技术(即“延迟初始化”)的性能。 “(5)所有提议的技术均已在PET系统中实现(合成方法也已在SPF工具中实现)。通过实验评估,已证实所有这些技术均大大改善了符号执行的可扩展性和效率,并且生成测试用例ABSTRACT Testing是当今用于验证软件和评估其质量的最常用技术,它已集成到所有实用的软件开发方法中,并且对于任何软件项目的成功都起着至关重要的作用。编码最复杂的组件并将它们集成到软件系统中就业在发布软件产品之前,必须对软件产品的所有组件进行全面测试。软件测试的主要局限在于它仍然是一项手动任务,占总开发成本的很大一部分。在这种情况下,测试自动化对于减轻如此高的成本至关重要。测试用例生成(TCG)是自动生成测试输入的过程,该输入可实现对被测系统的高度覆盖。在各种各样的TCG方法中,本文重点研究结构(白盒)TCG,其中最成功的使能技术之一是符号执行。在符号执行中,被测程序以其输入参数为符号表达式而非具体值的方式执行。本文基于先前开发的用于命令式面向对象程序(例如Java)的基于约束的TCG框架,在该框架中,被测命令式程序首先被翻译为等效的约束逻辑程序,然后该翻译后的程序通过以下方式象征性地执行:依赖于约束逻辑编程(CLP)的标准评估机制,并且对动态分配的数据结构进行了特殊处理。改善符号执行的可伸缩性和效率是一项重大挑战。众所周知,由于必须探索大量的路径和必须处理的约束的大小,因此符号执行很快变得不切实际。而且,基于符号执行的TCG在应用于中型或大型程序时往往会产生不必要的大量测试用例。论文的主要工作总结如下。 (1)开发了一种基于CLP的TCG的组合方法,该方法通过分别分析被测程序中的每个组件(方法),将结果存储为方法摘要,并逐步重用它们以获得完整程序,从而克服了过程间路径爆炸结果。还为最新的符号执行工具Symbolic PathFinder(SPF)开发了一种类似的依赖于程序专业化的合成策略。 (2)建议使用资源驱动的TCG作为一种方法,该方法使用资源消耗信息来将符号执行朝被测程序的那些符合用户提供的资源策略的部分执行,从而避免探索那些违反程序的部分这样的政策。 (3)提出了一种通用的方法,将符号执行引导到程序中最有趣的部分,该方法使用抽象作为预言机来引导符号执行通过被测程序中最受程序员/测试人员关注的那些部分。 (4)提出了一种新的堆约束求解器,它可以在符号执行期间有效处理与堆相关的约束和引用的别名,并且大大优于最新的标准技术(称为惰性初始化)。 (5)以上所有技术均已在PET系统中实现(其中一些已在SPF工具中实现)。实验评估已经证实,它们极大地有助于实现更可扩展和高效的符号执行和TCG。

著录项

  • 作者

    Rojas Siles Jose Miguel;

  • 作者单位
  • 年度 2013
  • 总页数
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号