面向软件错误检测与定位的测试优化算法研究

来源 :华东理工大学 | 被引量 : 0次 | 上传用户:dandanCracker
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
在软件产品的开发和维护过程中,因移除软件内在缺陷、完善已有功能、重构已有代码或提高运行性能等,需要不断的对程序代码进行修改,回归测试也成为了软件演化过程中最重要的活动之一。随着软件演化频率的提高,回归测试变得更加频繁。由于测试资源和时间的限制,在回归测试中执行全部的测试用例显然是不现实的,因此,如何利用测试用例的子集尽早地发现更多的错误是本文研究的重点之一。同时,软件调试作为软件开发的重要组成部分,是排除软件错误的重要手段,但它也是软件开发过程中最为复杂与耗时的部分,据统计,软件开发中50%~75%的工作都集中在减少软件错误上。错误定位技术以定位错误在程序中的位置为目标,利用已执行的测试用例的执行信息(路径,结果等),并结合相应的算法,对程序代码中存在错误的可能性进行评估。显然,测试用例的选取直接影响了错误定位的精度。因此,如何选择合适的测试用例以提高错误定位效率也是本文研究的重要课题之一。  本文主要研究在软件测试的两个重要活动——错误检测与错误定位过程中,测试用例的使用对错误检测和错误定位效率的影响。针对回归测试活动频繁、测试资源受限的问题,研究通过对测试用例的优先排序,达到使用较少的测试用例尽快地检测出程序中较多错误的目标。在确定程序中存在错误之后,需进一步定位出错误的位置,本文基于现有的错误定位技术,研究通过约简测试用例及优先排序测试用例,尽快的定位错误的位置,提高错误定位的效率。  本文的主要研究成果如下:  (1)提出了一个结合聚类和调度算法的测试用例优先排序算法,用以提高回归测试中错误检测的效率。该算法基于相同或相似属性的测试用例具有相同或相似的错误检测能力的特性,使用凝聚层次的聚类算法对具有相似覆盖轨迹的测试用例进行聚类分组。在分配测试用例执行优先级时,算法基于测试用例的历史错误检测能力和已执行的测试用例的反馈信息,采用动态优先级调整策略和超时响应机制相结合的方式,选择一个最优的测试用例执行。实验结果表明,该方法能有效提高回归测试中错误检测的效率。  (2)提出了一个基于程序改变和方法调用关系的测试用例优先排序算法,用以提高回归测试中错误检测的效率。该算法首先通过静态代码分析,获取程序中被修改的代码以及方法间的调用关系,进而预估每个方法中包含错误且错误会发生的风险。根据测试用例的动态执行轨迹,分析测试用例在整个程序上检测错误的能力,最后将测试用例优先排序问题转换为一个整数线性规划问题,对问题求解得到测试用例的执行序列。实验结果表明,该方法能显著提高回归测试中错误检测的效率。  (3)提出了一个基于覆盖相似性的测试用例约简方法,用以提高错误定位的效率。该方法突出失败测试用例在定位错误上的重要影响,单独考虑每一类具有不同覆盖轨迹的失败测试用例,为每一类失败测试用例选择与其覆盖轨迹最为相似的成功测试用例并构成其相似测试集,利用现有的基于语句覆盖的错误定位方法和各个相似测试集提供的覆盖信息,最终定位出程序中错误的位置。实验结果表明,该方法不仅可以减小测试用例的规模,而且可以有效提高错误定位的效率。  (4)提出了一个面向错误定位的测试用例优先排序方法。该方法作用于回归测试中,其最终目标是在测试用例未执行的情况下,通过对测试用例的优先排序,提高错误定位的效率。该算法基于测试用例对语句可疑值排序的影响对测试用例排序。首先利用测试用例的历史执行信息,计算语句的初始可疑值排名,然后从剩余的待排序测试用例中依次选取能使高可疑语句的可疑值排名提高最多的测试用例。实验结果表明,在未取得准确测试信息的情况下,该方法依然能有效提高错误定位的效率。
其他文献
高性能计算与资源共享一直是计算机应用的重要问题,这两个问题的基本解决途径是构造大型分布式系统.随着人们求解问题领域的不断扩展,所遇到的问题越来越复杂,而且规模越来越
计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序
随着软件再工程时代的到来,基于框架的软件定制生产的兴起,如何通过再工程活动使得软件定制生产能够充分重用成熟的既存系统已经成为一个非常有价值的课题.有重用价值的成熟
智能主体(Agent)是分布式人工智能领域中的一个重要应用,其主要目的是减轻人们的负担,以增强软件的友好性,最大限度地提高工作效率。智能主体是指能在某一环境中运行,并能响应环境
数字化后的视频和音频信息的数据量非常大,它给信息的存储和传输造成较大的困难,成为阻碍人类有效地获取和使用信息的瓶颈。有效的数据压缩编码方法,以压缩的形式存储和传输这些
企业中各个系统使用各自不同的编程语言和系统平台工作,数据存在于一个个信息孤岛中,无法实现数据的共享和交换。怎样将这些独立的应用集成起来,在平台和操作系统之间实现无缝互
因特网规模的不断扩大使得移动计算成为一个重要的研究领域.在该领域内,代码安全性问题(code safety)受到学者的广泛关注.移动代码的特点是异地编写,该地执行.这种代码的来源
计算机日益广泛的应用,促使整个计算机科学技术领域发展的日新月异,并且对当今整个社会的发展都起着重大的推动作用。作为计算机科学技术中的核心和重要内容之一的软件技术的发
随着计算机技术特别是网络技术的迅猛发展,新的计算机病毒的产生和传播速度越来越快,危害也越来越大.现有的反病毒技术主要是基于特征码匹配的方法,对于已知病毒可以准确快速
智能人机接口技术尤其是虚拟人脸合成成为近年来国外的一个热点研究领域.该项技术也被称为多模态(Multimodal),视觉语音(Visual Speech),说话头(Talking Head).这种技术将语