收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

面向方面软件的单元测试方法研究

顾海波  
【摘要】: 面向方面开发在继承面向对象开发方法的基础之上,采用方面单元对问题领域中的横切关注点进行了模块化封装,提高了系统的可理解性和可维护性,降低了开发成本。但是,面向方面软件仍然由人工实现并可能存在缺陷,需要有效的面向方面测试技术来找出软件中存在的缺陷。与面向对象技术不同,面向方面语言增加了新的语言部件,面向方面软件的行为具有多量化等特征,对面向方面程序的测试研究提出了新的挑战。围绕面向方面软件的方面单元测试技术,重点对方面单元内的介入点进行了相关的测试研究。从单元缺陷类型、介入点的谓词模型、缺陷检测条件和测试充分性准则、测试方法以及测试实现和支持工具等五个方面对方面单元测试技术进行了系统探讨。 缺陷模型能够提供测试的目标。由于通过测试来证明被测程序行为的正确性存在理论上的困难,因此有效的测试技术几乎都与一定的缺陷模型有关,可以称为面向缺陷模型的测试。面向缺陷模型的测试,是为了检测特定类型的缺陷是否存在于被测程序之中。测试的有效性很大程度上取决于缺陷模型定义的合理性。缺陷模型中各种缺陷类型按照缺陷位置和特征进行分类,从每种缺陷类型的特征、外部表现,测试可行性分析三个角度进行了深入研究,分离出在单元测试阶段能够检查的缺陷类型,为后续的单元可测模型的构造提供了可靠的基础。 被测对象的可测表示是提出测试技术的依据。介入点测试是面向方面程序单元测试的核心问题之一。介入点的语义是在程序的连接点全集中筛选一个预期的连接点子集,因而采用谓词模型给出了介入点的可测表示,包括介入点规约的谓词表示和介入点实现的谓词表示。介入点规约表示为一个预期匹配的连接点集合,则非预期连接点集合等于规约对应连接点集合的补集。介入点实现表示成以连接点属性匹配函数为布尔原子项的布尔表达式,包括介入点的积项和与和项积。介入点的谓词模型支持介入点的静态测试和动态测试。 缺陷检测的充要准则和测试用例生成的充分准则是测试方法的理论基础。静态介入点测试采用穷尽测试策略;动态介入点测试采用选择测试策略。穷尽测试策略依赖于缺陷检测的充要准则;选择测试策略依赖于测试用例生成的充分性准则。基于介入点的可测谓词模型,经过证明的缺陷检测充要条件构成了穷尽测试的基础,动态测试域约简的相关定理的证明为约简测试域提供了可靠依据,而测试用例生成的充分性准则指导着动态测试域的选择测试。 将介入点划分为静态介入点和动态介入点,并分别进行测试。在静态介入点的测试过程中,首先把被测介入点的规约表示为介入点定义形式,然后与被测介入点实现进行逻辑组合产生测试用例,接着调用面向方面语言编译器执行编译织入完成测试执行,最后通过对织入后字节码的分析获得静态介入点的匹配结果。动态介入点的测试需要对织入后模块进行动态测试,其难度在于动态测试域太大。为了解决这个问题,对动态介入点采用两阶段测试方法:第一阶段进行介入点的静态部分测试并且基于提出的连接点流图采用静态分析获得约简后的动态测试域,其代价较小;第二阶段是在动态测试域内执行动态测试,并通过基于连接点流图的结点覆盖、边覆盖和路径覆盖等充分性准则指导测试用例生成。通过实验表明测试方法具有适用性和有效性。 基于AspectJ程序的单元测试原型工具AJUTester提供了对方面单元的测试支持。AJUTester支持介入点测试和通知测试。用户提供被测介入点的介入点规约的表示后,AJUTester可以自动执行静态介入点的测试,可以自动约简介入点的动态测试域,并基于连接点流图对约简后测试域中的测试输入进行覆盖度测量,从而辅助测试人员优化测试用例集。对通知的测试类似于对方法模块的测试。实验表明支持工具AJUTester具有一定实用性。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 ;网站动态[J];程序员;2005年10期
2 王雪男;;给程序员补上单元测试这一课[J];程序员;2005年02期
3 李海涛;欧全;;浅析单元测试在项目开发中的应用[J];科技信息(学术研究);2007年20期
4 蔡高亮;;软件单元测试[J];信息技术与标准化;2008年Z1期
5 金朝阳;;软件单元测试实战[J];电脑编程技巧与维护;2010年15期
6 陈晶晶;;软件单元测试浅议[J];赤峰学院学报(自然科学版);2010年11期
7 杨学红;;自动化单元测试概述[J];信息通信技术;2012年01期
8 陈娟;;嵌入式系统下如何提高单元测试有效性的分析研究[J];电脑知识与技术;2013年35期
9 李言平;晏海华;柳永坡;;一种C++单元测试支持工具的研究与设计[J];计算机与数字工程;2006年10期
10 吴高峡;王芙蓉;;单元测试的自动化实践[J];计算机与数字工程;2007年01期
11 董威;;单元测试及测试工具的研究与应用[J];微型电脑应用;2008年05期
12 苏春莉;;软件单元测试[J];科技信息;2009年10期
13 ;七个改变世界的Java项目[J];硅谷;2011年16期
14 刘烨;;基于退火遗传算法的自动化单元测试方法分析[J];计算机光盘软件与应用;2013年11期
15 范明,钱松荣,杨明,张根度;客户机—服务器计算环境及其在单元测试中的应用[J];计算机工程;1996年S1期
16 董宁;;ASP.NET WebForms项目单元测试方法设计[J];电子设计工程;2014年06期
17 陈站华;软件单元测试[J];无线电通信技术;2003年05期
18 张巍;尹海波;孙立财;;软件的单元测试方法[J];光电技术应用;2006年02期
19 黄承慧;陈火炎;陈必泉;;面向对象的单元测试自动化技术的分析[J];华南金融电脑;2006年06期
20 陈凌鹤;毛晓光;雷晏;王承松;;方面单元测试框架的设计与实现[J];计算机工程与应用;2009年01期
中国重要会议论文全文数据库 前7条
1 郑斯祥;;浅谈病理学目标教学的单元测试[A];中国病理生理学会中专教育委员会第七次学术交流会论文汇编[C];1999年
2 王晶;孙越强;陶鹏;;空间环境监测软件单元测试方法探讨[A];中国空间科学学会空间探测专业委员会第十七次学术会议论文集[C];2004年
3 方惠如;陈义群;杨亮;姜婷婷;鲍庆嘉;刘朝阳;;单元测试在核磁共振波谱仪软件开发中的应用[A];第十五届全国波谱学学术会议论文摘要集[C];2008年
4 郭雯;;Java单元测试方案的设计与实现[A];2007通信理论与技术新发展——第十二届全国青年通信学术会议论文集(上册)[C];2007年
5 沈思阳;;单元测试代码生成器的设计与实现[A];促进企业信息化进程——第十届中国Java技术及应用大会文集[C];2007年
6 周傲;王雅文;宫云战;;基于区间缩减的自动化打桩技术研究[A];第十四届全国容错计算学术会议(CFTC'2011)论文集[C];2011年
7 潘玲;袁兆山;朱雷;;Mock Objects在JUnit单元测试中的运用[A];计算机技术与应用进展·2007——全国第18届计算机技术与应用(CACIS)学术会议论文集[C];2007年
中国博士学位论文全文数据库 前1条
1 顾海波;面向方面软件的单元测试方法研究[D];华中科技大学;2008年
中国硕士学位论文全文数据库 前10条
1 许峰兵;面向方面编程在单元测试中的研究与应用[D];华东师范大学;2006年
2 郭帅;基于切面织入技术的单元测试有效性检测系统的设计与实现[D];华中科技大学;2012年
3 刘媛媛;飞行控制软件单元测试的实施[D];北京邮电大学;2010年
4 蔡纬政;自动化单元测试录制框架的研究与实现[D];华南理工大学;2010年
5 吴皋;视频监控软件单元测试的实施[D];华南理工大学;2011年
6 李坤宁;单元测试和持续集成在企业级软件开发中的设计与实现[D];电子科技大学;2011年
7 陈和平;面向对象的自动化单元测试[D];武汉理工大学;2004年
8 綦建;面向数据库的单元测试框架的设计与实现[D];北京工业大学;2006年
9 林侃;网管系统单元测试的研究和实现[D];北京邮电大学;2007年
10 周傲;单元测试中自动打桩技术的研究与实现[D];北京邮电大学;2012年
中国重要报纸全文数据库 前6条
1 从江县第三民族中学 段浩;数学教学复习法初探[N];贵州民族报;2012年
2 小柯;《初中快车道:双解一试》[N];中国图书商报;2003年
3 山西省柳林县柳林一中教师 车建华;考试可以“活”起来[N];人民日报;2007年
4 本报记者 齐兴福 通讯员 丁述成;陈泽鹏:成败系毫发[N];甘肃日报;2011年
5 中国CIO成长交流平台发起人 许忠;如何盘活失败的ERP[N];中国计算机报;2009年
6 张莉;在Linux和Mac OS上开发.Net应用[N];计算机世界;2007年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978