面向对象程序分析与测试技术研究

面向对象程序分析与测试技术研究

论文摘要

在软件生命周期过程中,软件测试是保证软件质量的关键环节之一。面向对象方法学在软件工程中的引入极大地方便了软件的设计、开发和维护,为创建高可靠性的软件系统提供了重要保证,但面向对象程序的封装、继承、多态和异常处理机制等新特性却给测试带来新的挑战。一方面需要调整、改进传统的测试策略和方法;另一方面探索出适应面向对象程序特征的测试理论与技术也尤为必要。面向对象软件测试分为方法级、类级、类簇级和系统级四个级别。就方法级测试而言,类中的方法与传统程序中的过程(或函数)并无太大区别,所以用于传统程序的控制流或数据流等结构性测试方法可以调整用于类中方法内或方法间的测试,其中的分支覆盖准则被实践证明是其中性价比最高的一种策略。运用DD图表示程序的控制流,并在此基础上分析程序的依赖关系及DD图的性质,提出了一种近似求解控制依赖关系中非约束边集的算法FindSemiUE,虽然精度有所降低,但该方法简便、快捷且适合于大规模程序的处理。基于非约束边集,对DD图进行正(逆)向广度(深度)优先搜索形成生成树并用逆邻接表表示,给出了一种以较小的时空开销生成分支测试路径用例集的简化算法GeneratePathSet。类是面向对象程序的基本单元,只有对类进行充分的测试才能确保高层测试简便且可信,从而降低整个测试过程的代价。统计测试方法由于简便、快捷和低成本等特性已被广泛用于测试活动中,并被实践证明较确定性测试方法有更强的缺陷暴露能力。针对面向对象程序特征和不同的理解视角,从方法级和对象级运用统计测试技术对类程序进行测试。方法级统计结构性测试主要是在分析类控制流图的基础上,通过执行能统计覆盖程序路径的用例集来揭示类中语句的逻辑错误。对象级统计功能性测试则是利用类程序需求和操作剖面进行建模,再运行由方法序列构成的用例来检查错误的实现和遗漏缺陷等。最后,将两个级别的测试有机地结合在一起形成一个混合统计测试框架。类间测试序的确定是类簇级测试中的一个难点。对传统的对象关系图进行扩展,运用EORD图和WORD图对类间的继承、聚集和关联三种关系进行建模表示,以“生成的存根数目最少”为优化目标,利用成环权重、边向因子和联系强度等启发式规则,给出了一种高效、准确的类间测试序确定算法ICTO。该算法具有递归次数少、能降低测试桩(存根)的生成代价以及稳定性好等优点。面向对象技术为构件的实现提供了基本技术支持,对构件软件的测试可以看作是面向对象程序测试的扩展和延伸。由于对构件内部结构及其变更信息缺乏了解,使得构件使用者测试构件软件系统异常困难,对回归测试来讲则更为突出。其主要原因是难以选择出与变更相关的用例用于测试由新版构件构建的系统。分析已有回归测试技术的不足,基于方便构件使用者获取构件结构及其变更信息的思路,提出了两种改进的构件软件回归测试策略:一种是基于增强的构件版本变更信息的方法;另一种则是基于内建式测试设计的方法。通过对几个实例程序的实验分析,证实了所提出的方法在实际应用中的可行性与有效性。软件测试应是“理论+技术+辅助工具+管理”的结合体,辅助测试工具在其中起着举足轻重的作用。以目前普遍使用的C/C++程序作为测试对象,实现了一个能进行方法级、类(簇)级和系统级三个级别测试的原型系统CppTest:基于程序CFG图分析、探针插装和I/O重定向等技术,实现方法级结构性测试;按照需求规约运用EFSM对类的状态转换行为进行建模,并依此自动生成测试用例集,实现基于状态的类测试;在系统级别上,运用等价类划分、边界值分析等常规策略进行黑盒测试。此外,运用聚类技术对失效执行进行聚类分析,并从中抽样出典型的测试执行用例用于指导程序的进一步诊断。CppTest具备多级别测试、测试项目化管理、自动化/可视化程度高、扩展性好等优点。

论文目录

  • 摘要
  • Abstract
  • 1 绪论
  • 1.1 软件测试的意义
  • 1.2 面向对象程序测试研究现状
  • 1.3 面向对象程序构建的构件软件的测试
  • 1.4 软件测试标准、工具及研究机构
  • 1.5 本文的研究内容与组织
  • 2 类单元分支测试中测试用例的简化生成
  • 2.1 方法(间)控制流及依赖性分析
  • 2.2 非约束边集的计算
  • 2.3 测试路径用例的简化生成
  • 2.4 小结
  • 3 类级统计测试策略与技术
  • 3.1 程序测试充分性理论
  • 3.2 统计测试技术及其充分性
  • 3.3 类统计测试技术
  • 3.4 小结
  • 4 类簇级测试中类间测试序确定算法
  • 4.1 类间关系及建模表示
  • 4.2 典型的类间测试序确定算法
  • 4.3 改进的类间测试序确定算法
  • 4.4 小结
  • 5 构件软件回归测试用例选择策略
  • 5.1 构件软件测试研究基础
  • 5.2 构件及其变更的建模表示
  • 5.3 基于增强的变更信息的用例选择技术
  • 5.4 基于内建式测试设计的用例选择技术
  • 5.5 测试过程实现与实例分析
  • 5.6 小结
  • 6 测试工具原型CppTest 的设计与实现
  • 6.1 系统总体框架
  • 6.2 结构性测试的实现
  • 6.3 基于状态的类测试的实现
  • 6.4 测试结果分析技术
  • 6.5 小结
  • 7 全文总结及展望
  • 7.1 主要工作总结及创新
  • 7.2 未来的研究方向
  • 致谢
  • 参考文献
  • 附录1 攻读博士学位期间发表的学术论文
  • 附录2 攻读博士学位期间主要的科研经历
  • 相关论文文献

    • [1].新工科电子商务专业面向对象课程体系教学改革[J]. 辽宁科技学院学报 2020(03)
    • [2].基于电表的面向对象与面向对象协议设计方法应用[J]. 价值工程 2019(04)
    • [3].浅析关于面向对象协议试点工作内容[J]. 中国仪器仪表 2018(02)
    • [4].面向对象技术在微波通信电路设计中的应用[J]. 科技与创新 2016(11)
    • [5].那面向对象技术与软件工程分析[J]. 电脑迷 2017(06)
    • [6].面向对象软件测试技术研究[J]. 现代职业教育 2017(03)
    • [7].面向对象程序设计语言的哲学思考[J]. 魅力中国 2017(05)
    • [8].面向对象主流切片表示法的比较研究[J]. 计算机工程与设计 2008(05)
    • [9].一种面向对象继承复杂性的综合度量[J]. 计算机工程与应用 2008(20)
    • [10].在软件易变性上下文中类规模对面向对象度量的影响分析[J]. 计算机应用研究 2017(08)
    • [11].基于面向对象技术的图书管理系统研究[J]. 中外企业家 2016(14)
    • [12].基于面向对象技术的空间数据库设计和实现[J]. 电子测试 2015(09)
    • [13].高等职业教育“面向对象”教学模式之构建[J]. 职业教育研究 2011(02)
    • [14].面向对象仿真初探[J]. 硅谷 2011(05)
    • [15].面向对象基本概念的研究[J]. 内蒙古民族大学学报 2011(02)
    • [16].面向对象设计方法学探讨[J]. 网络与信息 2011(04)
    • [17].面向对象分类方法在全国第二次土地调查中的应用[J]. 测绘技术装备 2009(02)
    • [18].面向对象分类方法在第二次土地调查中的应用研究[J]. 遥感信息 2009(06)
    • [19].面向语言编程——面向对象之后的革命[J]. 程序员 2008(05)
    • [20].浅谈博弈和面向对象理念在铁路体系管理中的应用[J]. 郑铁科技 2016(03)
    • [21].基于面向对象分类法和高分一号影像的露天矿区分类技术研究[J]. 青海大学学报 2018(01)
    • [22].基于面向对象技术的飞行仿真研究[J]. 计算机技术与发展 2010(07)
    • [23].面向对象与数据库技术结合发展现状研究[J]. 科技资讯 2009(03)
    • [24].基于面向对象技术药品管理系统开发[J]. 现代计算机(专业版) 2009(08)
    • [25].面向对象技术在学生管理系统设计中的应用[J]. 电脑与信息技术 2009(05)
    • [26].备件模型管理的面向对象技术方式的实现[J]. 科技广场 2008(12)
    • [27].面向对象协议计量设备的应用与分析[J]. 宁夏电力 2019(04)
    • [28].基于案例驱动的面向对象技术课程教学改革与实践[J]. 软件 2017(11)
    • [29].基于面向对象分类方法的低效用地信息提取研究——以福建省晋江市为例[J]. 科技创新导报 2018(03)
    • [30].基于内部视角的C++面向对象教学实践[J]. 中国校外教育 2010(08)

    标签:;  ;  ;  ;  ;  ;  ;  ;  

    面向对象程序分析与测试技术研究
    下载Doc文档

    猜你喜欢