基于变异测试的测试用例生成工具的设计和实现

来源 :北京大学 | 被引量 : 0次 | 上传用户:lixiang1336
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件测试作为保证软件质量和可靠性的一种重要技术,在整个软件开发成本中占有重大比例,提高软件测试的效率对于降低软件维护成本具有重要的意义。而在软件测试的过程中,测试数据的生成是比较困难并且代价较高的技术难题之一。如何有效地生成测试数据,以减轻测试人员的繁琐劳动,已经成为软件测试领域面临的一个重要问题。   利用变异测试去提高测试用例的有效性正在引起越来越多研究人员的关注。基于变异测试的测试用例生成技术以变异体杀死率作为测试用例生成的目标。然而传统的基于变异测试的测试用例生成技术很难有效的对实际程序生成测试用例进行变异体的杀死。   本文提出一种利用动态符号执行(Dynamic Symbolic Execution,一种最新的基于代码覆盖的测试用例生成技术)进行变异体杀死的测试用例生成技术-PexMutator。PexMutator首先基于一组转换规则,将被测程序插桩为一个包含所有变异体杀死约束的程序母体。然后,PexMutator基于动态符号执行对程序母体进行测试用例的生成。程序母体中插入的变异体杀死约束会引导动态符号执行技术生成测试用例自动地杀死变异体。   我们已经将PexMutator实现为Pex(微软里得蒙研究院开发的一个基于动态符号执行的测试用例生成引擎)的扩展,现在PexMutator1.1版本已经在我们的项目主页上开源发布。经过在5个.NET平台实验对象上的初步实验验证,PexMutator能自动生成测试用例有效杀死实验对象的80%以上的变异体。并且PexMutator生成的测试用例能比Pex生成的测试用例杀死更多的变异体而同时能达到和Pex生成的测试用例相同的代码覆盖效果。
其他文献
随着软件开发的工业化,软件建模越来越成为开发过程中一个不可缺少的环节。MDA的出现将软件开发的重点转向了模型,模型成为了软件开发的核心制品。如何有效的进行自动化的模
由于信息技术的快速发展,越来越多的新兴网络多媒体服务应运而生,例如网络视频和可视电话等。而这些多媒体服务具有数据量大,传输比率高,实时性强等特点。传统的信息表达以及传输
学位
随着信息技术的飞速发展,信息已成为全社会的重要资源,而网络检索正是我们获取信息或资源的重要手段。以Google为代表的第二代搜索引擎搜索的出现使网络检索变得非常方便,然
程序员在日常编写和维护代码时,常常需要参考一些文档和其他代码。特别是在近来软件外包和人员流动日趋普遍的情况下,新接手项目的程序员需要花费大量时间来寻找需要参考的文
随着计算机性能的日益提高,以及数字化技术的飞速发展,越来越多的研究者,把关注的目光投向了多媒体文件的存储和应用。近年来,由于电影工业的飞速发展,每年都有数以千计的影
学位
随着信息技术的不断发展,软件的应用领域愈加宽广,软件规模日益扩大,企业内部的遗产系统和散布于互联网上的开源项目也在不断增加。为了降低软件项目的开发成本,提高软件的开发效
随着近10年来的迅速发展,计算机已经深入人们生活的方方面面。其中,计算机辅助教学(CAI)已经极大地改变了传统的教育教学方式,提高了教师的教学效果和学生的学习兴趣。但是传统
粒子群优化算法是一种模拟鸟类群体行为的智能优化算法,现已成为进化算法的一个新的重要分支。粒子群算法思想直观、实现简单而且具有很高的执行效率,自提出以来,受到国内外
一个城市的供水系统中如果发生了污染事件会给社会带来巨大的损失。管网中发生的污染事件能使其中自来水的水质指标变化发生明显的异常。在供水管网中部署传感器网络能够实时
软件复用是解决软件危机的有效途径。实现软件复用的一种可行办法是在特定的应用领域内组织实施可复用资产的生产活动,即领域工程。特征建模是领域工程中捕获可复用需求的一种