首页> 外文期刊>Automated software engineering >Program-input generation for testing database applications using existing database states
【24h】

Program-input generation for testing database applications using existing database states

机译:程序输入生成,用于使用现有数据库状态测试数据库应用程序

获取原文
获取原文并翻译 | 示例

摘要

Testing is essential for quality assurance of database applications. Achieving high code coverage of the database applications is important in testing. In practice, there may exist a copy of live databases that can be used for database application testing. Using an existing database state is desirable since it tends to be representative of real-world objects' characteristics, helping detect faults that could cause failures in real-world settings. However, to cover a specific program-code portion (e.g., block), appropriate program inputs also need to be generated for the given existing database state. To address this issue, in this paper, we propose a novel approach that generates program inputs for achieving high code coverage of a database application, given an existing database state. Our approach uses symbolic execution to track how program inputs are transformed before appearing in the executed SQL queries and how the constraints on query results affect the application's execution. One significant challenge in our problem context is the gap between program-input constraints derived from the program and from the given existing database state; satisfying both types of constraints is needed to cover a specific program-code portion. Our approach includes novel query formulation to bridge this gap. We incorporate the data-instantiation component in our framework to deal with the case that no effective program input values can be attained. We determine how to generate new records and populate them in the new database state such that the code along the path can be covered. We also extend our approach of program-input generation to test database applications including canonical queries and group-by queries. Our approach is loosely integrated into Pex, a state-of-the-art white-box testing tool for .NET from Microsoft Research. Empirical evaluations on two real database applications show that our approach assists Pex to generate program inputs that achieve higher code coverage than the program inputs generated by Pex without our approach's assistance.
机译:测试对于保证数据库应用程序的质量至关重要。在测试中,实现数据库应用程序的高代码覆盖率很重要。实际上,可能存在活动数据库的副本,可用于数据库应用程序测试。使用现有数据库状态是可取的,因为它倾向于代表现实世界对象的特征,从而帮助检测可能导致现实世界设置失败的故障。但是,为了覆盖特定的程序代码部分(例如,块),还需要为给定的现有数据库状态生成适当的程序输入。为了解决这个问题,在本文中,我们提出了一种新颖的方法,该方法可以生成程序输入,以在给定现有数据库状态的情况下实现数据库应用程序的高代码覆盖率。我们的方法使用符号执行来跟踪程序输入如何在出现在已执行的SQL查询中之前进行转换,以及查询结果的约束如何影响应用程序的执行。在我们的问题上下文中,一项重大挑战是,从程序派生的程序输入约束与给定的现有数据库状态之间的差距。需要满足两种约束条件才能覆盖特定的程序代码部分。我们的方法包括新颖的查询公式来弥合这种差距。我们将数据实例化组件合并到我们的框架中,以处理无法获得有效程序输入值的情况。我们确定如何生成新记录并在新的数据库状态下填充它们,以便可以覆盖沿路径的代码。我们还将程序输入生成的方法扩展到测试数据库应用程序,包括规范查询和分组查询。我们的方法被松散地集成到Pex中,Pex是Microsoft Research提供的用于.NET的最先进的白盒测试工具。对两个实际数据库应用程序的经验评估表明,与没有我们的方法协助的Pex生成的程序输入相比,我们的方法可帮助Pex生成的程序输入具有更高的代码覆盖率。

著录项

  • 来源
    《Automated software engineering》 |2015年第4期|439-473|共35页
  • 作者

    Kai Pan; Xintao Wu; Tao Xie;

  • 作者单位

    Outlook Service of Applications and Services Group, Microsoft Corporation, Redmond, WA 98052, USA;

    Department of Computer Science and Computer Engineering, University of Arkansas at Fayetteville, Fayetteville, AR 72701, USA;

    Department of Computer Science, University of Illinois at Urbana-Champaign, Urbana, IL 61801, USA;

  • 收录信息
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

    Database application testing; Test generation; Dynamic symbolic execution;

    机译:数据库应用程序测试;测试生成;动态符号执行;

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号