You are on page 1of 70

单位代码: 10293 密 级:

专 业 学 位 硕 士 论 文

论文题目: 多无人机任务分配系统的测试用例生成研究

学 号 1216043129

姓 名 孙仪

导 师 张迎周

专业学位类别 工程硕士

类申请 型 全 日 制

专业(领域)
申请 软件工程

论文提交日期 二〇一九年二月
Research on Test Case Generation of Multi-UAV
Task Distribution System

Thesis Submitted to Nanjing University of Posts and


Telecommunications for the Degree of
Master of Engineering

By
Yi Sun
Supervisor: Prof. Yingzhou Zhang
17th February 2019
南京邮电大学学位论文原创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽
我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研
究成果,也不包含为获得南京邮电大学或其它教育机构的学位或证书而使用过的材料。与我一
同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
本人学位论文及涉及相关资料若有不实,愿意承担一切相关的法律责任。

研究生学号:___________ 研究生签名:____________ 日期:____________

南京邮电大学学位论文使用授权声明

本人承诺所呈交的学位论文不涉及任何国家秘密,本人及导师为本论文的涉密责任并列第
一责任人。
本人授权南京邮电大学可以保留并向国家有关部门或机构送交论文的复印件和电子文档;
允许论文被查阅和借阅;可以将学位论文的全部或部分内容编入有关数据库进行检索;可以采
用影印、缩印或扫描等复制手段保存、汇编本学位论文。本文电子文档的内容和纸质论文的内
容相一致。论文的公布(包括刊登)授权南京邮电大学研究生院办理。
非国家秘密类涉密学位论文在解密后适用本授权书。

研究生签名:____________ 导师签名:____________ 日期:_____________


摘要
随着互联网的快速发展,软件需求不断增多,系统的设计也逐渐复杂化,因此也增大了组
合测试的难度。组合测试的目的是使用尽可能少的测试用例对系统进行测试,以此检测系统可
能存在的问题。组合测试的研究热点之一就是组合测试用例的生成,即需要在满足给定组合覆
盖需求的前提下生成数量尽可能少的测试用例集。在组合测试之前,需要提取多无人机任务分
配系统中的约束关系,若软件中的约束关系提取不全,可能生成一些无效的测试用例,降低软
件测试工作的效率。由于多无人机任务分配系统中需要考虑的约束关系很多,因此在对无人机
任务分配系统测试之前,其中的约束关系提取是个重要问题。
针对上述问题,本文的主要工作如下:
(1)提出了一种基于语义推理的约束关系的提取方
法。考虑到多无人机任务分配系统在不同时刻,无人机和任务之间的约束关系可能不一样的问
题,因此使用通过语义推理总结系统中的因素的约束关系,再结合实际取值,生成需要覆盖的
组合集,减少了覆盖组合集的规模,避免产生无效组合;
(2)提出了新的基于组合覆盖的优先
级度量函数。对上一阶段生成的需要覆盖组合集中的组合进行优先级度量,选择优先级最高的
组合,使被选中的组合对其他组合的覆盖率最高;
(3)提出一种基于改进粒子群算法的测试用
例生成方法。该方法将改进的粒子群算法与 one-test-at-one-time 策略相结合,确定上一步所选
组合中的待定值,生成多无人机任务分配系统的测试用例集。改进的粒子群算法结合人工免疫
算法中的亲和度思想,采用信息熵的计算方法来评价粒子的聚集程度,从而改善了粒子群算法
在迭代前中期由于粒子多样性减少而导致“早熟”的问题,减少了生成测试用例的数量。
(4)搭
建了一个在线测试平台,能够对多无人机任务分配系统进行在线测试。使用 selenium 自动化
测试框架将生成的测试用例集转换成测试脚本,对多无人机任务分配系统进行自动化测试。
实验结果表明,本文提出的基于语义推理的约束关系提取方法,能够成功推理出多无人机
任务分配系统中无人机与任务间的隐含关系,根据约束关系得出的约束条件更加全面;提出的
改进的优先级度量方法对需要覆盖的组合集中的组合进行了优先级度量,避免随机选择,提高
了所选的组合的质量;改进的粒子群算法为所选的组合中的待确定值选择一个合适的值,为多
无人机任务分配系统生成数量少且覆盖范围广的测试用例集。

关键词: 无人机;语义推理;粒子群算法;信息熵;组合测试;测试用例生成

I
Abstract
With the rapid development of the Internet, the demand for software is increasing, and the design
of the system is gradually complicated.Therefore the difficulty of combinatorial testing are growing
up. The purpose of the combined test is to test the system with as few test cases as possible to detect
possible problems with the system. One of the research hotspots of combinatorial testing is the
generation of combinatorial test suite which is to generates as few test case sets as possible that
satisfies the given portfolio coverage requirements. Before combinatorial testing, it is necessary to
extract the constraint relationship in the system which to be tested. If the constraint relationship in
the system software is not fully extracted, some invalid test cases may be generated to reduce the
efficiency of the software test work.Because of the many constraints that need to be considered in the
multi-UAV task distribution system, the constraint relationship extraction is an important issue
before testing the UAV task allocation system.
Based on the above problems, the main work of this paper are as follows:(1) In this paper, we
propose a method of extracting constraint relations based on semantic reasoning.In the multi-UAV
task assignment system, constraints between UAV and tasks may become different at different
moments. Therefore the constraint relationship of factors in the system is summarized by semantic
reasoning, based on the actual value,the combination set that need to be covered is generated. The
size of the coverage combination set is reducing and avoid invalid combinations;(2) In this paper, we
propose a new priority measurement function based on combined coverage. The function prioritize
the combination of the combination set which needs to be covered and is generated in the first step,
and select the combination with the highest priority to make the selected combination coverage
higher. (3) In this paper, we propose a test case generation method based on improved particle swarm
optimization. The method combines the improved particle swarm algorithm with the
one-test-at-one-time strategy to determine the pending values in the selected combination of the
previous step, and generates a test case set for the multi-UAV task assignment system.
The improved particle swarm optimization algorithm combines the affinity theory of artificial
immune algorithm, and uses the information entropy calculation method to evaluate the aggregation
degree of particles. This enhances the "premature" problem of the particle swarm algorithm which is
caused by the reduction of particle diversity in the middle and early iterations, and reduces the

II
number of test cases generated. (4) In this paper, we build an online test to perform online testing of
the multi-UAV task distribution system. In the platform, we use the selenium automated test
framework to convert the test case set which are generated in the third into a test script, and test the
multi-UAV task distribution system automatically.
The experimental results show that the proposed method based on semantic reasoning can
successfully infer the implicit relationship between the UAV and tasks in the multi-UAV task
assignment system, and the constraint conditions based on the constraint relationship become
comprehensive. The proposed priority measurement function prioritize the combinations of the
Combination set that needs to be covered. The function avoids random selection and enhances the
quality of the selected combination. The improved particle swarm algorithm selects an appropriate
value for the selected combination which has the value to be determined, and can get a small number
of test case sets with a wide coverage.
Key words: UAV; Semantic Reasoning; Particle Swarm Optimization; Information
Entropy; Combinatorial Testing; Test Generation

III
目录
第一章 绪论 ............................................................................................................................................................. 1
研究意义 .................................................................................................................................................... 1
国内外研究现状 ........................................................................................................................................ 2
主要研究内容和创新点 ............................................................................................................................ 4
论文结构组织 ............................................................................................................................................ 5
第二章 相关理论 ..................................................................................................................................................... 8
组合测试的相关理论 ................................................................................................................................ 8
2.1.1 常见的约束形式 ............................................................................................................................. 8
2.1.2 覆盖强度 ......................................................................................................................................... 9
本体的相关理论 ...................................................................................................................................... 10
2.2.1 本体的描述语言 ........................................................................................................................... 10
2.2.2 Jena 推理工具的原理 .....................................................................................................................11
粒子群算法 .............................................................................................................................................. 13
2.3.1 传统粒子群算法的基本原理 ....................................................................................................... 13
2.3.2 粒子群算法的改进方法 ............................................................................................................... 15
本章小结 .................................................................................................................................................. 18
第三章 基于语义推理的约束关系提取方法 ....................................................................................................... 19
约束关系提取问题 .................................................................................................................................. 19
基于语义推理的约束关系提取过程 ...................................................................................................... 20
3.2.1 多无人机任务分配系统的本体创建............................................................................................ 21
3.2.2 多无人机任务分配系统的语义推理............................................................................................ 24
根据约束关系生成多无人机任务分配系统的需求覆盖集................................................................... 27
本章小结 .................................................................................................................................................. 29
第四章 基于改进粒子群算法的测试用例生成方法............................................................................................ 30
测试用例生成的整体框架 ...................................................................................................................... 30
基于覆盖需求的组合优先级度量方法 .................................................................................................. 32
基于信息熵的改进粒子群算法 .............................................................................................................. 35
实验结果分析 .......................................................................................................................................... 37
本章小结 .................................................................................................................................................. 39
第五章 实验及数据分析 ....................................................................................................................................... 41
实验框架 .................................................................................................................................................. 41
约束条件提取的实验结果展示 .............................................................................................................. 42
5.2.1 本体创建的实验结果 ................................................................................................................... 42
5.2.2 推理后查询结果展示 ................................................................................................................... 43
测试用例生成的实验结果对比 .............................................................................................................. 47
5.3.1 实验结果的评价指标 ................................................................................................................... 47
5.3.2 实验结果及分析 ........................................................................................................................... 48
基于 selenium 的自动化测试 .................................................................................................................. 51
本章小结 .................................................................................................................................................. 55
第六章 总结与展望 ............................................................................................................................................... 56
工作总结 .................................................................................................................................................. 56
未来与展望 .............................................................................................................................................. 57

IV
参考文献 ................................................................................................................................................................. 58
附录 1 攻读硕士学位期间申请的专利 ................................................................................................................. 60
附录 2 攻读硕士学位期间参加的科研项目 ........................................................................................................ 61
致谢 ......................................................................................................................................................................... 62

V
南京邮电大学硕士研究生学位论文 第一章 绪论

绪论

研究意义

近年来,随着计算机技术飞速发展,软件的质量问题越来越引起人们的重视,软件测试是
软件质量的一种保障方式,任何一个软件在投入使用之前,都会经过大量测试过程。在如今快
节奏的时代中,每天都有大量的软件推出,为了让自己的软件在众多软件中不被淘汰,软件开
发者必须重视软件的质量,只有在保证软件质量的同时重视用户的使用感受,才能吸引更多的
用户。在一些重要场景中,使用质量差的软件,可能会造成很严重的后果。
1983 年发生的北美防空联合司令部曾报道称美国遭到导弹袭击,但后来经检查发现是由
于当时司令部使用的反馈系统软件引发的故障,由于软件没有考虑到发生故障时的反馈问题引
发的,幸运的是司令部及时发现了这个误报,不然引发战争,后果将不可设想。1994 年,英
特尔奔腾 CPU 芯片中的浮点运算器存在进制转换问题,导致装有奔腾微处理器的计算机在计
算时出现了误算,虽然此问题对于大多数用户没有太大影响,但英特尔公司为此付出了 4 亿多
美元的代价。2009 年 google 的 Gmail 出现了用户登录不上邮箱的问题,虽然故障没有造成太
大的经济损失,但还是给 google 带来了不好的影响。2011 年的温州 7.23 动车事件也是由于其
软件设计上存在严重缺陷,系统没有做出正确的指示,导致两个列车相撞,导致人员伤亡。
这些由于软件缺陷导致的故障问题,都是发生在我们身边的真实事件,也都为此付出了沉
重的代价,但这也提醒着我们要重视软件质量问题。
2007 年 12 月 10 日,一架名为“蜂鸟”的美国的无人直升机在加尼福利亚州试飞时坠毁,
事后经调查发现,在飞行过程中,飞行传感器数据在更新过程中突然停止而导致这个事故的发
生。2011 年 9 月 17 日,在巴基斯坦某个部落发生了美国的无人机坠毁事故,目前未被证实是
武装分子击落还是故障原因导致。
上述的无人机事件都是美国无人机的坠毁事件,目前在国外无人机已经被用于很多方面,
无人机事故的主要原因分为三类:第一,人为因素,由于无人机专业性太强且缺乏训练,第二,
设备故障,也是比较常见的原因,如系统故障,通信链路故障及软件故障等。第三,天气作战
环境等原因。
目前国内的无人机的研究和发展已经有很长时间了,一直都受到极大关注。由于无人机不
需要任何飞行人员的参与,不仅减少成本,而且还为其他设备腾出更多的空间,不需要考虑人

1
南京邮电大学硕士研究生学位论文 第一章 绪论

的极限问题,可以一直执行任务。无人机机动性能优越,使用方便,能够适应各种复杂的环境,
在现代化军事战争中有很大优势,因此得到了广泛的应用。在现代化军事中,无人机常被用来
执行一些重要且危险的军事任务,比如派无人机去敌方营地附近侦查搜集敌方情报,并根据情
报执行打击任务等。
由于无人机的成本很高,因此在任务执行过程中,要考虑多种情况的发生,尽可能降低无
人机损耗的风险,减低任务执行的成本。所以无人机系统在正式投入使用之前,经过的测试,
必须考虑到各种情况的发生,并针对各种情况设计大量的测试用例进行测试。如果没有经过全
面考虑和大量的测试就投入使用,一旦发生问题就会带来无法挽回的后果。本文的课题来源于
国防项目,因此有一定的研究意义。
大量的测试需要消耗大量的人力、财力和物力,而且人长时间工作后,会出现工作效率低,
易犯错等问题,而机器测试却能避免这些问题,在减少错误的同时,可以降低测试的成本,因
此在需要进行大量的重复测试工作时,软件的自动化测试有着极大的优势。

国内外研究现状

国内外研究者对软件测试的狂潮是从 1975 年软件测试的概念被提出后开始掀起的,时至


今日,软件测试在学术界和工业界都取得了显著效果。Gelperin.D 等人提出了系统化的系统测
试和评估流程[1],卡内基梅隆大学提出了测试成熟度模型和测试支持度模型。经过不断的研究
探索,已经有一系列的软件测试方法被提出,形成了丰富的测试方法体系[2][3]。测试的分类有
多种,如按照是否依赖程序内部结构,测试可以分为白盒测试和黑盒测试;按照软件开发过程
中的不同阶段,测试可以分为单元测试,集成测试,系统测试和回归测试;按照软件的不同特
性,分为功能测试、性能测试、压力测试、安全测试和兼容性测试等;同时,还有一些特殊的
软件测试方法,如模糊测试、蜕变测试和变异测试等[4]。
在众多的测试方法中,组合测试考虑到输入参数和输出参数的关系,主要检测是否因素间
的不同组合会引发软件缺陷问题。实验设计是组合测试中的测试组合思想最早起源。20 世纪
80 年代,美国和日本的研究者最早在计算机软硬件的测试中运用了该思想,形成了组合测试
方法。经过近几十年的发展,组合测试已发展成一种独具特色和影响力的软件测试方法[4]。
组合测试研究中的一些关键问题主要分为六类[2],分别是:
(1)组合模型的抽取,主要研
究如何准确地将待测软件中的各种参数、参数的取值以及参数间的相互作用和约束关系等识别
出来[5-7](2)测试用例生成:主要研究组合测试用例的生成方法[8-10](3)测试结果的分析与评

2
南京邮电大学硕士研究生学位论文 第一章 绪论

估:对组合测试的结果进行分析评价[10](4)组合测试故障诊断[11-12](5)组合测试过程改进[13-14],
虽然组合测试的研究在这几个方面获得了一定的成功,但目前的相关研究中仍存在着一些关键
问题,本文研究主要是其中第一二类问题。
组合测试用例的生成一直以来都是组合测试研究的核心问题之一,研究者一直在不断探索
如何生成规模更小的覆盖表 [10]
。组合测试用例的生成问题已经被证明是 NP 难问题,因此启
发式算法常被用来生成近似最优的组合测试用例集[15]。CATS 方法[16]是由 Sherwood 提出的是
一种理想的贪心算法,通过对解空间进行全局搜索,来生成测试用例,这种方法在系统输入规
模较小的时候有较好效果。1997 年 Cohen 提出了 AETG 方法[17] 克服 CATS 方法的不足,该方
法引入了随机技术来生成测试用例集,虽然提高了测试用例的生成速度,但此方法的每一次结
果都是不确定的,相同的输入生成的测试用例集可能会不一样。为了解决 AETG 的不确定问
题,Y. W. Tung 等人在 2000 年提出了 TCG 方法[18],其基本思想和 AETG 类似。2004 年,C. J.
Colbourn 等人提出了 DDA 算法[19],该方法引入了全局密度和局部密度的概念,然后使用贪心
算法确定参数的赋值次序并确定该参数的具体取值。
粒子群算法具有简单易用,计算迅速快等优点,因此常被用来生成测试用例,但传统的粒
子群算法存在着容易陷入局部最优解,出现早熟等现象的缺点,因此粒子群常见的改进方法有
两种,第一种是从粒子的速度更新公式进行改进,第二种将粒子群算法中引入其他算法。
文献[20]在使用粒子群算法生成测试用例集时,根据多无人机任务分配系统的具体模型,
分别设定惯性权重、学习因子、种群大小和迭代次数四个参数的最佳取值,之后生成对应的测
试用例集。文献[21]提出一种基于群活性反馈高斯粒子群算法的测试用例生成方法,该方法根
据粒子群的优点和不足的问题,在粒子群算法中加入了群活性反馈机制(SAF)和高斯变异操
作(G),通过该操作提高种群的多样性,从而提高算法的性能。文献[22]提出了一种在传统粒
子群算法基础上引入惯性权重自适应调整策略的粒子群改进方法,根据粒子群的适应度不同采
用不同的惯性权重,从而提高算法的搜索效率。
文献[23]提出的改进方法:初始化粒子群不再是随机生成粒子,而是采用非均匀随机分布
的方式,结合全面学习粒子算法来对领域进行拓扑,速度更新操作采用收缩因子进行更新,最
终生成测试用例。文献[24]针对粒子群的“早熟”问题,提出了一种新的带主动探索意识的学习
模式来解决粒子群算法的“早熟”问题,将新的学习模式与 logistic 混沌遍历相结合。文献[25]
提出了一种混合免疫粒子群算法,该算法主要是将二进制粒子群算法和免疫粒子群算法结合,
并提出了记忆保留策略和启发式受体编辑策略对算法进行了改进。文献[26]提出了一种可以提

3
南京邮电大学硕士研究生学位论文 第一章 绪论

高解的质量的禁忌-粒子群算法,此算法在粒子群进化过程后一阶段融入了禁忌算法的禁忌运
算。
近年来,随着自动化测试的研究越来越深入,目前出现了很多自动化测试工具,国外 Sahi
和 Katalon、Testcomplete 等收费软件,虽然支持 IE 录制问题,但由于其功能的不够完善,不
支持中文,以及安全性问题,因此本文不做考虑。而 selenium 工具是一款开源工具,不仅可
以进行脚本录制,支持测试脚本的导入和导出,而且可以进行高并发处理,可以进行验证码填
充和测试截图等功能,因此本文选择 selenium 来执行测试脚本。
目前已有较多研究者针对 selenium 的使用以及功能拓展进行了研究,使得 selenium 的使
用变得十分简单方便。文献[27]在 selenium 框架的原功能基础上,对验证码的填充,IE 浏览器
中的定位问题以及分布式测试等问题进行了研究,构建了一套适合目前测试业务需求的自动化
测试平台。文献[28]介绍了基于 Selenium 与 Python 的自动化测试过程,主要从测试环境的搭
建、测试脚本编写、基于测试库框架优化测试脚本、自动化脚本多线程执行等方面进行了介绍。
目前的研究中对于约束关系的提取还存在一些不全面的问题,如约束关系提取易错,由系
统状态变化导致约束关系发生的改变以及存在一些隐含的约束关系等问题,而在组合测试用例
的生成中存在生成的测试用例太过冗余及生成测试用例的时间消耗太大等问题,因此本文提出
了一种基于语义推理的约束关系的提取方法来发现更多隐含的约束关系,并将优先级度量函数
和改进粒子群算法相结合,在生成较少数量测试用例集的同时减少消耗的时间。

主要研究内容和创新点

本文主要针对多无人机任务分配系统进行测试的相关问题研究,包括如何根据多无人机任
务分配系统的实时状态确定系统中的因素约束关系,生成需要覆盖的组合集;如何从需要覆盖
的组合集中选择出最佳的组合,并为组合中的待确定值确定最佳取值,生成对应的测试用例,
并使用自动化测试工具对多无人机任务分配系统进行自动化测试。本文的研究内容如下:(1)
利用语义推理总结出待测模块的约束关系,并结合约束关系确定多无人机任务分配系统中的因
素取值范围,根据约束条件和取值范围,生成需要覆盖的组合集;
(2)提出一种基于组合覆盖
的优先级度量函数,对需要覆盖的组合集中的组合进行优先级度量,选择优先级最高的组合,
为生成测试用例做准备。
(3)提出一种基于改进的粒子群算法的测试用例生成方法。该方法将
改进的粒子群算法与 one-test-at-one-time 策略相结合,确定上一步所选组合中的待定值,生成
多无人机任务分配系统的测试用例集。在传统的粒子群算法中,引入亲和度的思想,利用信息

4
南京邮电大学硕士研究生学位论文 第一章 绪论

熵计算粒子的亲和度,为选择的组合中待确定值选择最合适的值,生成完整的测试用例。(4)
搭建了一个在线测试平台,使用 selenium 自动化测试框架将生成的测试用例集转换为测试脚
本,对多无人机任务分配系统进行自动化测试。
本文的创新点:
(1)提出了一种基于语义推理的约束关系提取方法。本文考虑到多无人机任务分配系统
在不同时刻,因素间的约束关系可能不一样,因此提出了一种基于语义推理的约束关系的提取
方法。首先创建待测模块的本体,针对待测模块的特点设计自定义的推理规则,在生成约束条
件之前,通过查询模块中因素的约束关系,再结合实际取值,生成需要覆盖的组合集,以免组
合集中的某些组合不符合约束关系。
(2)提出了一种对覆盖集中组合的优先级度量方法。由于 one-test-at-one-time 策略从组合
集中选择组合是采用随机选择的方法,忽略了覆盖集中的组合之间有优先级问题,本文在进一
步的研究中,从组合优先级的角度考虑,当出现多个组合的优先级等级一样时,会按照两种新
的优先级度量方法进行选择,选择出优先级最高的组合。
(3)提出一种基于改进粒子群算法的测试用例生成方法。由于粒子群算法在迭代的前中
期,易出现多样性减少,陷入局部最优解的问题。因此结合人工免疫算法中的亲和度思想,采
用信息熵的计算方法来评价粒子的聚集程度,若粒子过于聚集,则随机指定粒子的取值。为第
二步选中的组合中的待确定值选择最合适的值,从而生成完整的测试用例。

论文结构组织

本文由六个章节组成,本文组织结构的示意图如图 1.1 所示:

5
南京邮电大学硕士研究生学位论文 第一章 绪论

图 1.1 论文结构示意图

本文的各章节的主要内容如下:
第一章论述了组合测试、测试用例生成方法和本体推理的国内外研究现状,总结了目前研
究中出现的问题,并简单介绍了本文的研究发方法和研究内容。
第二章介绍了组合测试和本体以及粒子群算法的理论知识。组合测试的理论知识主要介绍
了常见的几种约束关系存在的形式,以及组合测试中覆盖的基本知识。本体理论知识主要介绍
了几种常用的本体描述语言以及推理工具 Jena 的原理。还介绍了传统粒子群算法的原理,以
及常见的粒子群改进方法。
第三章主要介绍了一种基于语义推理的约束关系提取方法,并根据约束关系结合因素的具
体取值,生成多无人机任务分配系统需要覆盖的组合集。首先介绍了约束关系的提取过程,分
析系统的特征,利用 protégé工具创建本体,系统数据库中的实际数据以三元组形式存储,根
据多无人机任务分配系统的特点自定义推理规则,利用 Jena 工具进行语义推理,得出因素间
的约束关系;其次根据第一步推出的约束关系确定因素的有效取值范围;最后生成需要覆盖的
组合集。
第四章主要介绍了基于改进粒子群算法的测试用例生成方法,该方法将组合优先级度量函
数和改进粒子群算法相结合,生成测试用例。首先介绍了一种对覆盖集中组合的优先级度量方

6
南京邮电大学硕士研究生学位论文 第一章 绪论

法,对需要覆盖的组合集中的组合进行优先级度量;针对粒子群算法迭代过程中粒子多样性减
少的问题,加入了以基于信息熵的亲和度思想,对粒子群算法进行改进,并通过一个小实验的
过程介绍了测试用例的生成过程。
第五章是对第三章和第四章提出方法进行验证证明,首先通过对第三章的方法生成多无人
机任务分配系统的需求覆盖集,然后通过第四章的方法生成基于覆盖集的测试用例集,最后搭
建了在线自动化测试平台,平台中使用自动化测试框架 selenium 进行测试用例集中的测试用
例转换为测试脚本,对多无人机任务分配系统进行自动化测试,页面中也展示了测试报告以及
测试过程截图信息。
第六章首先对全文进行了总结,然后说明了研究中的不足之处以及需要进一步提高的地方,
最后提出了本文课题之后的研究方向。

7
南京邮电大学硕士研究生学位论文 第二章 相关理论

相关理论

本章首先介绍了组合测试的相关理论,介绍了常见的几种约束存在形式和组合覆盖的相关
理论;然后介绍了本体的想关理论,其中介绍了本体常用的描述语言以及 Jena 推理工具的原
理;最后介绍了粒子群的基本原理,并介绍了几种常见的改进方法。

组合测试的相关理论

2.1.1 常见的约束形式

假设多无人机任务分配系统(SUT)中有 n 个相互独立因素,这些因素都对系统有一定的
影响,这些因素就形成一个有限集合 F={f1,f2,f3,…,fn},其中第 i 个因素 fi 有 ki 个取值,其对应的
有效取值集可表示为 Di={1,2,…,ki}。因此,可以称 n 元组 test={x1,x2,…,xn},(x1∈D1,x2∈
D2,…,xn∈Di),就为 SUT 的一条测试用例。
组合测试的目的是使用尽可能少的测试用例对系统进行测试,以此检测系统可能存在的问
题。因此,在设计测试用例时,必须充分考虑因素间的关系。组合测试中的约束有多种类型,
下面列出常见的 4 种约束形式[29]:
(1)“禁止”约束:如果某些因素的有些值不可以同时出现,则这种约束就被称为“禁止约
束”。例如,若规定同一时刻只能打开一种浏览器,则浏览器之间的约束关系就称为是“禁止”
约束。
(2) “必须”约束:如果某些参数取特定值的时候,要求另外一些参数也取特定的值,则
这种约束就被称为“必须”约束。例如,当打开某个浏览器时,必须会打开某个特定网页,则浏
览器与此网页之间存在的约束关系就称为是“必须”约束。
(3) “屏蔽”约束:如果当某些参数取特定值时,使得原有参数集合中的某些参数无效,
这种条件就称为屏蔽约束。例如,当 f1,f2,f3 分别代表浏览器,网站的网址,要查询的内容时,
若 f1 取值为 off 即浏览器处于关闭状态,则 f2,f3 取任何值都是无效,因此 f1,f2,f3 之间的关系就
是“屏蔽”约束。
(4)数值约束:如果 k 个参数之间存在某些算术、关系、逻辑等关系,则可以称为数值

8
南京邮电大学硕士研究生学位论文 第二章 相关理论

约束。例如三角形要求三条边满足任意两边之和大于第三边,因此三条边之间的约束关系可以
称为是数值约束。
通过上面的描述发现,虽然各种约束的定义和描述不一样,但不同的约束之间存在相互转
换的方法,同一种约束关系,可以由“禁止”约束,“必须”约束和“数值”约束表示。
以上所述是比较常见易发现的几种约束,还有一种隐含约束,顾名思义,这种约束并不是
容易被发现的,而是由一些已有约束推理得到。隐含约束在约束关系中起着至关重要的作用,
如果在约束处理的过程中,违背了这些约束,则测试用例生成过程可能无法继续。本文的第三
章节将介绍一种基于语义推理提取约束关系的方法。

2.1.2 覆盖强度

在组合测试中,组合测试用例集通常又被称为组合覆盖表(简称覆盖表,Covering Array),
即覆盖表中的每一行对应多无人机任务分配系统的一条测试用例。组合测试的目的是使用尽可
能少的测试用例检查软件中各个参数间的相互作用对系统的影响。不同的组合覆盖标准决定了
软件测试用例集对于因素间交互作用的不同覆盖能力,也决定了不同的错误检测能力 [30]。由
于不同的软件的参数的问题也不一样,因此需要根据不同软件选择不一样的组合覆盖标准。
在组合测试中,现有的组合测试集的覆盖情况有多种,一般分为固定力度组合和可变力度
组合覆盖等两大类,下面分别对其介绍。
如果不考虑待测软件中的因素间的相互作用,则只要设计一组测试用例,使其覆盖待测软
件中每个因素的所有可能取值就可以满足要求。但在实际情况中,待测软件中的因素间不可能
毫无联系,如果多无人机任务分配系统中任意两个因素间存在相互作用,则保证覆盖任意两个
因素间的所有的取值组合即可满足要求。如果考虑的待测软件中存在相互作用关系的因素个数
在生成测试用例过程中保持不变,则称为固定力度组合覆盖,其中考虑的因素个数就是组合覆
盖的维度。三维覆盖即在生成测试用例覆盖表的过程中,要求保证多无人机任务分配系统中任
意三个因素间的所有取值都要覆盖,三维覆盖考虑的情况比较详细,但在实际使用中,如果不
考虑成本等情况下,二维组合已经包含了各种组合情况。
组合测试的关键是要了解待测软件的内部元素特征,如因素间交互力度等信息的了解,并
在此基础上利用这些信息设计测试用例 [31]。在实际软件中,因素间的交互关系错综复杂,传
统的固定力度组合测试覆盖方法不能满足这种要求,因此出现了可变力度组合覆盖方法,系统
的组合覆盖力度并不是固定的,而是根据因素间的约束关系采用不同的组合覆盖力度[30]。

9
南京邮电大学硕士研究生学位论文 第二章 相关理论

本体的相关理论

2.2.1 本体的描述语言

下面对几个常用本体语言进行介绍:
(1)RDF(Resource Description Framework)
RDF 是 Resource Description Framework 的缩写,是资源描述框架的意思,用于描述资源
信息,由 W3C 在 XML 的基础上推荐的一种标准[32]。RDF 是一种资源描述框架,能够弥补
XML 的缺点,能够表示出数据间的关系,使得计算机易理解。RDF 提出了三元组的模型来表
示任意类型的数据,这种三元组模型代表三种对象类型:资源、属性和陈述,具体的表示形式
为:<subject,predict,object>,类似于主谓宾的形式。其中 subject 和 object 通常是通过 URI 或
者文字进行命名,一般有三种取值即资源、文字和空白节点,属性一般是 URI。通过这种表述
形式,生成对应的 RDF 图。在 RDF 图中,三元组的形式则被转为:节点-边-节点。其中节点
对应的是 subject 和 object,边则对应 predict,整个 RDF 图就是通过这样一个个三元组联系起
来,组成一个能够表示所有信息关系的 RDF 图。
(2)RDFS(RDF Schema)
RDF 中可以使用的词汇并没有明确定义,因此 RDF 的模型中存在同义词和一词多意现象,
因此 W3C 组织推出了一种 RDF-Schema 来定义和规范 RDF 的词汇集,可以为 RDF 资源的属
性和类型提供词汇表。
RDFS 定义的类[33]主要有:
(1)rdfs:Resource:RDF 描述的所有内容都称为资源(2)rdfs:Class:
资源的类(3)rdfs:Literal:文字值的类(4)rdfs:Datatype:数据类型的类(5)rdfs:LangString:
语言标记的字符串值的类(6)RDFrdfs:HTML:HTML 文字值的类,是数据类型类的实例并
且是文字值类的子类(7)rdfs:XMLLiteral:XML 文字值的类,是数据类型的实例,并且是文
字值类的子类。RDFS 定义的属性也有多种,主要是:(1)rdfs:Range:用于声明属性的值是
一个或多个(2)rdfs:Domain:用于声明某个给定属性的资源是另一个或多子类的实例(3)
rdfs:type:用于声明某个资源是某个类的实例 (4)rdfs:subClassOf:用于声明某个类是另一个
类的子类(5)rdfs:subPropertyOf:用于声明属于某个属性是另一个属性的子属性(6)rdfs:label:
用于声明方便理解的资源的别名(7)rdfs:comment:用于声明方便理解的资源的描述
(3)OWL
OWL 是 Web Ontology Language 的缩写,名为 Web 本体语言,是 W3C 推荐的本体语言标
准[34],是 DAML(DARPA agent markup language)的修改扩展,同时也具有很强的关于类和属性

10
南京邮电大学硕士研究生学位论文 第二章 相关理论

的表达能力,如类的关系、等价性等。OWL 是对 RDFS 的扩展,在 RDF 框架的基础上增加了


新的语言元素[35],因此比 RDFS 具有更好的表达能力。OWL 目的是供需要处理信息内容的应
用程序使用,而不仅仅是向人类呈现信息,OWL 可以表示词汇表中术语的含义以及这些术语
之间的关系[36]。OWL 能够在 web 上表示机器可解释的内容,因此与 XML、RDF 和 RDFS 相
比,语义表达更丰富。
OWL 提供了三种子语言,分别是:OWL Lite,OWL DL 和 OWL Full[37],具体介绍如下:
(a)OWL Lite:如果用户只需要一个分类层次和简单的属性约束,则可以使用 OWL Lite。
(b)OWL DL:支持那些希望保持最大表现力同时保持计算机完整性(所有结论都保证
可计算)和可判定性(所有计算将在有限时间内完成)的用户。
(c)OWL Full:如果用户希望获得的最大表现力且 RDF 语法自由而无需计算保证,则可
以使用 OWL Full。
这三种子语言之间的关系[38]是:
①每个合法的 OWL Lite 本体都是合法的 OWL DL 本体。
②每个合法的 OWL DL 本体都是合法的 OWL Full 本体。
③每个有效的 OWL Lite 结论都是有效的 OWL DL 结论。
④每个有效的 OWL DL 结论都是有效的 OWL Full 结论。
这三种子语言与 RDF 的关系[39][40]是:
(1)OWL Full 可以看成是 RDF 的扩展;
(2)OWL
Lite 和 OWL Full 可以看成是一个约束化的 RDF 的扩展(3)所有的 OWL 文档(Lite,DL,
Full)都是一个 RDF 文档;
(4)所有的 RDF 文档都是一个 OWL Full 文档;
(5)只有一些 RDF
文档是一个合法的 OWL Lite 和 OWL DL 文档。

2.2.2 Jena 推理工具的原理

Jena 推理子系统,可以根据可选的本体信息、公理以及与推理机联系的规则,从实例数据
和类描述中推理出隐含的事实,其中本体信息和实例数据可以使用 RDFS 和 OWL 等语言进行
描述[43]。Jena 包括的内容[44]如下:一个可以对 RDF 数据读取、处理和写入的 API,其中允许
的 RDF 数据格式为 XML、N-triples 和 Turtle;一个可以处理本体的 API,本体可以用 OWL 和
RDFS 语言进行书写;一个规则推理引擎,该引擎可以对 RDF 和 OWL 数据源进行推理;一种
允许存储大量 RDF 三元组的存储机制;一种符合最新 SPARQL 的查询规范的查询引擎;一个
允许将 RDF 数据发布到其他应用程序的服务器。Jena 的体系结构如图 2.1 所示。

11
南京邮电大学硕士研究生学位论文 第二章 相关理论

图 2.1 Jena 结构图


其各部分的功能如下所示:
(1)解析与编辑器。这部分主要是解析本体,添加或删除类和属性等对本体的基本编辑
工作,其中本体支持 RDF/XML,Turtle,N-triples 和 OWL 四种格式。
(2)RDF API。RDF 是 W3C 推荐的一种描述资源的标准,Jena 通过这个接口对 RDF 文
件进行创建、读写以及查询等操作。
(3)本体 API。这部分实现了对本体的基本操作的接口,且为支持的不同文件形式的文
件系统都提供了相应的接口。
(4)SPARQL API。这部分主要提供对本体的查询,检索功能。
(5)存储 API。这部分主要实现对数据的持久化存储。通常是将数据存储到关系数据库
和三元组中。
(6)推理 API。该部分主要实现的是基于规则的推理。这部分不仅可以使用 Jena 自带的
规则,还可以使用用户根据自身需要进行自定义的规则进行推理。
Jena 是面向语义 Web 的应用开发包,包含的内容比较全面,并不是一个专门的推理工具,
推理部分只是 Jena 的一部分[45]。虽然 Jena 本身提供的推理规则都是平时比较常用的,但是 Jena
支持自定义推理规则,即用户可以根据自己的实际需要,可以针对性的设计一些推理规则来实
现推理功能。而且,Jena 的推理子系统也为其他的推理引擎提供了接口[35]。

12
南京邮电大学硕士研究生学位论文 第二章 相关理论

Jena 实现基于规则的推理的过程如下:
(1) 导入本体文件。
(2) 导入规则库,将规则与本体绑定。
(3) 将本体文件加载到本体模型。
(4) 创建推理机。
(5) 通过相应的接口处理对象模型,根据已有的事实和规则产生新事实。
(6) 根据用户的操作,将新事实展示给用户或者放入本体中。

粒子群算法

2.3.1 传统粒子群算法的基本原理

粒子群算法[46][47](particle swarm optimization,简称 PSO)在 1995 年由 Eberhart 博士和


Kennedy 博士提出,从鸟类觅食的过程中获得灵感,通过模拟鸟类群体的觅食过程中的相互协
作行为和人类决策过程提出的启发式智能寻优算法。
PSO 算法的基本思想[48]是:将特定区域内要求的最优解看成是鸟群要找寻的食物,随机
的鸟群看成是优化搜索的粒子,粒子的适应度值代表鸟与食物的距离,粒子的速度代表鸟的飞
行速度,将每个鸟本身的历史最优位置作为局部最优,鸟群中离食物最近的鸟的位置作为全局
最优,通过全局最优和局部最优实现鸟群的信息共享,不断迭代更新鸟群的本身速度和位置,
调整鸟群中鸟的位置,使其不断向食物靠近,直至找到食物。粒子群算法搜索迭代过程就类似
鸟群找食物的过程,在一个中心控制系统进行求解域内最优解的搜索。粒子群算法求解的具体
流程图如下图 2.2 所示。

13
南京邮电大学硕士研究生学位论文 第二章 相关理论

图 2.2 粒子群流程图

由上述图可知,粒子群算法的步骤主要可以分为粒子群初始化,更新全局最优和局部最优,
更新粒子速度和位置。随机生成一批初始粒子,然后根据求解模型定义适应度函数,计算每个
粒子的适应度值,比较更新全局最优粒子和局部最优粒子,最后再通过速度和位置的更新公式
计算下一代粒子的速度和位置[49]。
种群中的个体就称为粒子,代表解空间域里的可能解。种群中每个粒子搜索解时都具有一
个粒子速度,迭代到第 k 次时粒子 i 的速度可表示为:Vi(k)=(v1i,v2i,v3i, ···,vki),( vki∈[vmin , vmax]),
速度更新公式为:

𝑉𝑖 (𝑡 + 1) = 𝑉𝑖 (𝑡) + 𝑐1 𝑟1 [𝑝𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)] + 𝑐2 𝑟2 [𝑔𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)] (2.1)


上述速度更新公式中,𝑉𝑖 (𝑡)表示粒子当前速度,𝑝𝐵𝑒𝑠𝑡𝑖 (𝑡)表示粒子个体历史最优位置,
𝑔𝐵𝑒𝑠𝑡𝑖 (𝑡)表示种群最优位置。𝑐1表示自我学习因子,𝑐2 表示整体学习因子,r1 和 r2 是区间[0,1]
上的随机数。
如果算法的搜索空间是 N 维,则粒子的位置就是 N 维空间的一个点的坐标,迭代到 k 次

14
南京邮电大学硕士研究生学位论文 第二章 相关理论

时,粒子 i 的位置可以表示为:Xi(t)=(x1i,x2i,x3i, ···,xki),( x1i∈D1,x2i∈D2,x3i∈D3,···,xki∈Dk),Dk


表示搜索范围,位置更新公式为:

𝑋𝑖 (t + 1) = 𝑋𝑖 (𝑡) + 𝑉𝑖 (𝑡) (2.2)


粒子群算法实现容易,能够较快逼近最优解;在求解过程中,粒子群算法中的粒子进行信
息共享,根据全局最优粒子和当前粒子的历史最优位置进行迭代,加快粒子进化;粒子群算法
参数少。
虽然粒子群算法有很多优点,但也存在不足。粒子群算法对离散型求解优化效率低,算法
搜索效果不好;由于在迭代过程中粒子总是参考局部最优和全局最优去调整自身位置,因此种
群的多样性会减少导致搜索容易陷入局部最优解;算法在迭代后期收敛速度慢,求解精度低。

2.3.2 粒子群算法的改进方法

针对粒子群的缺点,许多国内外学者都对其进行了改进,改进主要分为两大类:第一,从
粒子本身出发,根据粒子的速度和位置更新,以及本身因素,提出改进方法。第二,将能够弥
补粒子群算法缺点的算法与粒子群算法结合,提升算法的性能。
(一)粒子参数改进
(1)惯性权重改进
1998 年 Shi.Y 和 Eberhart.R 在 IEEE 会议上通过《A modified particle swarm optimizer》提
出惯性权重这个概念[50],文中对粒子的速度更新公式做了新的改进,引入惯性权重因子ω,公
式为:

𝑉𝑖 (t + 1) = ω𝑉𝑖 (𝑡) + 𝑐1 𝑟1 [𝑝𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)] + 𝑐2 𝑟2 [𝑔𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)] (2.3)


更新公式只是在上述速度更新公式的基础上引入了参数惯性权重ω,惯性权重概念的提出
主要是为了解决基本粒子群算法存在的收敛速度过快的问题,控制算法的探索能力,使粒子群
算法能够更好地求解全局最优解。当ω较大时,粒子具有较强的全局搜索能力,但由于收敛速
度快,不易得到精确解[51];当ω比较小时,粒子局部搜索能力得到了增强,但容易陷入局部最
优解[52]。为了进一步提升算法性能,有许多研究人员都针对惯性权重进行了一系列改进,具
体的改进策略描述如下。
(a)固定惯性权重
在最初提出惯性权重中,在粒子群中全局权重的取值通常都是固定的,通常在区间[0,1]
间随机取的一个数,但对于不同的求解问题,惯性的权重的取值并不是固定的,需要针对不同

15
南京邮电大学硕士研究生学位论文 第二章 相关理论

的问题选择最佳惯性权重值有难度。并且在粒子群的迭代过程中,惯性权重取值保持不变,对
粒子的搜索能力有影响。
(b)线性递减
在优化问题求中,一般期望开始时粒子拥有较强的全局搜索能力,二在后期随着粒子向最
优解靠近,粒子多样性减少,因此此时期望粒子拥有较强的局部搜索能力,所以惯性权重的取
值应该是一个递减过程。惯性权重线性递减策略也是由 Shi.Y 和 Eberhart.R 提出[53],ω的计算
公式如下:
𝑡
𝜔𝑡 = 𝜔𝑚𝑎𝑥 − (𝜔𝑚𝑎𝑥 − 𝜔𝑚𝑖𝑛 ) ×
𝑡𝑚𝑎𝑥 (2.4)
其中,𝜔𝑚𝑎𝑥 和𝜔𝑚𝑖𝑛 分别代表惯性权重的最大值和最小值,𝑡𝑚𝑎𝑥 表示迭代的最大次数,t
表示当前迭代次数。文献[54]中实验时将𝜔设置为从 0.9 到 0.4 线性下降,因此粒子在开始时进
行全局搜索,随着𝜔逐渐减小,粒子进行局部搜索。通过这种改进方法,粒子群算法能够更好
的控制全局搜索能力和局部搜索能力,加快收敛速度,提高了算法性能。
(c)非线性递减
虽然惯性权重的线性递减策略经过不断改进,提高了基本粒子群的性能。但由于线性递减
的特征,使得算法在解决问题时,一旦进入局部极值点邻域内就无法跳出,因此为了解决这个
问题,提出了一种惯性权重的非线性递减策略。ω计算公式为:
𝑅 × (𝜔𝑚𝑎𝑥 − 𝜔𝑚𝑖𝑛 )
ω = 𝜔𝑚𝑎𝑥 − (2.5)
𝜔𝑚𝑎𝑥
其中𝜔𝑚𝑎𝑥 表示惯性权重最大值,𝜔𝑚𝑖𝑛 表示惯性权重最小值,R 表示非线性函数。
(d)随机调整
对于权重线性改变和非线性改变的方法虽然都在一定程度上解决了粒子群算法的不足,但
两者方法的后期算法都进行局部搜索,因此这种策略容易使算法在后期陷入局部最优搜索中,
导致收敛速度过慢。因此 Ratnaweera 等人认为将惯性权重设置为一个随机值,其取值只要改
变优化目标就行,并提出了一种惯性权重随机方法[20]:
0.5 + 𝑟𝑎𝑛𝑑()
ω= (2.6)
2.0
由上式可得,惯性权重的取值范围在[0.5,1.0]之间,并且黄轩等[55]对此方法进行了实验验
证,证明该方法可以加快收敛速度,并且可以避免算法陷入局部最优区域。
(2)收缩因子改进
粒 子 群 算 法 在 后 期 存 在 收 敛 精 度 不 足 的 缺 点 , 为 了 解 决 这 个 问 题 , 1999 年

16
南京邮电大学硕士研究生学位论文 第二章 相关理论

Clerc(01304845.pdf)等提出了一种含有收缩因子的粒子群算法[20](clerc typel PSO,简称 cfPSO)。


这种算法只是在原始粒子群算法速度更新的过程中加入了一种收缩因子 k,位置更新公式保持
不变,以此来增强个体的搜索能力和收敛速度,速度更新表达式变为:

𝑉𝑖 (𝑡 + 1) = 𝑘{𝑉𝑖 (t) + 𝑐1 𝑟1 [𝑝𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)] + 𝑐2 𝑟2 [𝑔𝐵𝑒𝑠𝑡𝑖 (𝑡) − 𝑋𝑖 (𝑡)]} (2.7)

其中,k=2/|2 − 𝜑 − √𝜑 2 − 4𝜑|, 𝜑 = 𝑐1 + 𝑐2,且𝜑>4。

虽然 cfPSO 依旧保证了算法的收敛性,但由于算法运行过程中收敛一直较快,所以很容
易发生早熟收敛问题。
(二)与其他算法结合的改进方法
(1)协同粒子群优化算法
Van Den 最早提出[56]的协同粒子群优化算法引入了生态系统中多种群的思想,通过多个种
群共同协作的方法来寻找最优解。其基本思想是:种群初始化时,将 n 维解向量分解成 n 个一
维解向量,搜索最优解时,让每个种群分别在不同维度上进行搜索。在每次迭代过程中,每个
种群之间不进行信息共享操作,而是相对独立地进行搜索。通过多个独立群体来完成协作搜索
操作,最终找到最优解。
这种协同粒子群优化算法在搜索过程中,大大提高了种群的多样性,在维度较小的情况下
性能较好。但这种算法在初期收敛速度较慢,且在高维度的情况下,算法容易陷入局部最优解。
(2)免疫粒子群算法
高 [57]
等人在 2004 年提出了一种免疫粒子群优化算法,该方法在粒子群算法中引入了免疫
系统中免疫信息处理机制,提出了两种粒子群优化算法,分别是基于免疫记忆和调节机制的免
疫粒子群优化算法和基于疫苗接种的免疫粒子群优化算法,第一种优化算法的基本思想是:首
先初始化 N 个粒子,将每一次迭代过程中的全局最优解记为免疫记忆粒子,在原有的粒子基
础上再生成 M 个新粒子,计算所有粒子浓度值,按照浓度值的高低顺序从 N+M 个粒子中选择
N 个粒子形成新的种群,用免疫记忆粒子替换适应度值差的粒子,重新进行迭代计算。第二种
优化算法的基本思想是:首先生成 N 个初始粒子,根据待求解问题或求解问题中的特征提取
疫苗 V,在原有的粒子基础上再生成 M 个新粒子,计算所有粒子的浓度值,按照浓度值的高
低顺序从 N+M 个粒子中选择 N 个粒子形成新的种群,从新种群中按一定比例抽取粒子,用疫
苗对其进行修改,生成新种群,在重新进行算法的迭代操作。
该算法针对粒子群算法易陷入局部最优解的问题进行了改进,改进后的算法在求解过程中
的收敛速度和精度都有了一定的提高。

17
南京邮电大学硕士研究生学位论文 第二章 相关理论

本章小结

本章主要介绍了组合测试,本体和粒子群算法的相关理论。组合测试的相关理论中介绍了
几种常见的约束存在形式以及组合测试中的覆盖强度的相关定义;本体的相关理论中,主要从
本体的描述语言和本体推理工具 Jena 的原理两个角度进行介绍;粒子群算法中,主要介绍了
算法的基本原理,并介绍了几种常见的改进方法。

18
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

基于语义推理的约束关系提取方法

软件测试用例生成中,约束问题一直是一个很重要的问题,若软件中的约束关系提取不全,
对软件测试用例的质量有很大影响。本文的待测系统是多无人机任务分配系统,无人机任务分
配的过程中,因素间的关系复杂且变化很快,仅通过简单分析提取可能会出现约束关系不全面
的问题,从而影响生成的测试用例质量,因此本章提出了一种基于语义推理的约束关系提取方
法,该方法包括三个部分:多无人机任务分配系统的本体创建,语义推理,约束关系的生成。
通过语义推理尽可能全的提取出待测系统的约束关系,并结合系统中实际取值情况,确定各因
素的取值范围,最后根据约束关系以及取值范围生成多无人机任务分配系统的覆盖组合集。

约束关系提取问题

在软件测试中,测试用例集的质量对软件测试的工作量以及测试成本有着极大的影响,如
何在满足给定覆盖标准的前提下,生成规模尽可能小的测试用例集以减少测试成本一直都是组
合测试研究的重点之一[31]。
随着人们需求的不断增加,软件系统的复杂程度也不断提高,一个软件系统的正常运行可
能会受到很多因素的影响,如系统的输入,系统的配置以及内部逻辑问题等。除了单个因素会
对系统影响外,因素间的相互作用也会对软件的正常运行有影响,因此在对软件进行测试时不
仅要考虑所有对软件测试有影响的可能因素,还要考虑这些因素间可能存在的相互关系。
在实际的应用过程中,由于约束关系非常复杂,为了方便对多无人机任务分配系统的建模,
有些测试人员会忽略多无人机任务分配系统中输入因素间的约束,虽然这样做可以减轻工作中
的负担,但是会带来负面的结果,比如生成的测试集太过冗余,测试用例中因素间存在取值矛
盾的结果,导致测试用例质量不佳,加大测试的难度。
由于系统中的约束关系并不是一成不变的,在不同的状况下,系统中约束关系可能也发生
了变化,在这种情况下如果继续使用之前的约束条件,可能会生成一些无用的测试用例。并且
从第二章中介绍可知,约束存在多种形式,且约束之间可以进行相互转换。提取约束条件的过
程会有如下问题:第一,由于不同的考虑角度,可能提取出的约束条件不一样;第二,在约束
条件的提取过程中可能会遗漏某些约束条件;第三,有些约束条件不易发现,但可以在指定了
一些约束之后,从这些已有的约束条件可能会推出另外的约束。因此提取多无人机任务分配系

19
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

统的约束关系是个非常值得重视的问题。

基于语义推理的约束关系提取过程

基于语义推理的约束关系提取的流程图 3.1 如下:

图 3.1 基于语义推理提取约束关系的流程图

从流程图中可知,主要分为六大步骤:
第一步:提取系统信息。分析多无人机任务分配系统中功能模块,明确模块间的联系,并
提取出每个功能模块所涉及的元素,分析其中的元素类型及元素间的关系,提取元素中的有用
信息并保存。
第二步:本体创建。将第一步保存的多无人机任务分配系统基本信息,结合本体构建的准
则进行转换,再利用工具创建多无人机任务分配系统的本体,并以三元组的形式保存。
第三步:数据准备。本体只是提取出待检测系统的信息,并用计算机能理解的语言表示出
来,并不包含真实数据,因此需要将系统的数据库中的数据提取出来,这样才能保证查询处理
的信息都是多无人机任务分配系统中的实际信息,以防使用的是失效信息,影响后面的约束关
系提取结果。
第四步:推理。使用常用的推理规则的同时,根据多无人机任务分配系统的特征,设计其

20
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

数据适用的推理规则,进行推理。
第五步:查询。在第四步之后,按照查询语句的书写规则,进行数据查询,如果多无人机
任务分配系统的关系图中存在隐含的数据关系,则可以通过查询,得到与查询信息想关的所有
信息。
第六步:保存查询结果。查询之后,将查询的结果保存到相关文件中,作为测试结果检查
的标准。

3.2.1 多无人机任务分配系统的本体创建

本体创建之前,需要将多无人机任务分配系统中的所有信息都提取出来,如果提取的信息
不全或者有遗漏,则可能会导致构建的本体丢失一些重要信息,对后面的推理造成影响。
本文的待测系统是一个多无人机任务分配系统。在某个场景中,有一些无人机和任务,无
人机类型有三种,分别为攻击型,巡航型和侦查型,对应的任务也有三种,分别为攻击任务,
巡航任务和侦查任务,并且还有雷达区,场景中考虑到高山,天气等因素,因此还有禁飞区。
对于不同的任务,对无人机的要求也不一样,只有符合任务要求的无人机才能执行该任务,比
如攻击任务则要求无人机必须携带武器如导弹等。在任务执行的过程中,无人机自身的状况也
会发生变化,比如在某次任务中,无人机执行攻击任务之后,携带的武器个数变为零,在未回
到始发地的情况下,此无人机只能执行巡航和侦查任务,而不能再执行攻击任务。这些情况在
进行任务分配时必须考虑到,否则很可能导致任务执行失败,造成损失。待测模块的功能图,
如下图 3.2 所示:

图 3.2 任务分配模块图

21
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

从图中可知,任务分配系统中有任务,无人机和算法三大因素,每种任务都有不同的任务
要求,并且任务之间也存在着先后顺序,因此任务与无人机之间的约束关系非常关键,否则可
能在生成测试用例时可能会生成无效测试用例,造成不必要的消耗。
本体构建需要满足如下要求和原则:
(1)能够完整描述软件的信息,将软件的所有有联系的信息都使用三元组形式描述清楚,
以免漏掉一些重要关系。
(2)本体应该具备推理能力,找到因素间的隐含关系,将因素间的约束描述的更加完善,
尽可能降低生成无效测试用例的风险。
(3)本体描述要简洁易懂,可以方便他人理解,以及具有较好的适应性。
通过上述的本体构建的要求和原则,结合多无人机任务分配系统的实际情况,生成了任务
分配的本体模型,如下图 3.3 所示:

图 3.3 任务分配本体模型

虽然本体模块图已经将表示出多无人机任务分配系统中涉及的因素,但因素的具体类型及
其值域等信息都没有做具体说明,因此还需要对上述图形进行形式化描述,将本体模型转换为
计算机能识别理解的内容进行使用。由斯坦福大学研发的 protégé工具,可以用来创建本体,
支持多种语言描述本体,支持本体上传和下载,而且带有推理功能。因此使用 protégé进行待
测模块的本体创建,为后续的推理做准备。
本文中多无人机任务分配系统本体的生成过程如下:
(1) 多无人机任务分配系统的本体构建
多无人机任务分配系统主要提取出四个类,分别是:

22
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

(a) 装备:主要描述任务要求和无人机所具备的装备条件。
(b) 任务:主要描述多无人机任务分配系统中的任务信息。
(c) 无人机:主要描述多无人机任务分配系统中的无人机信息。
(d) 航程:主要描述无人机的飞行航程。
具体信息如下四个表所述:
表 3.1 装备信息描述
装备(equipment) 备注
M 型装备 攻击型武器如火箭弹
L 型装备 侦查任务所需的装备
N 型装备 对装备无要求
表 3.2 任务信息描述
任务(task) 备注
A 型任务 攻击类型任务
B 型任务 侦查类型任务
C 型任务 巡航类型任务
表 3.3 无人机信息描述
无人机(uas) 备注
A 型无人机 攻击类型无人机
B 型无人机 侦查类型无人机
C 型无人机 巡航类型无人机
表 3.4 航程信息描述
航程(height) 备注
NO.1 航程 航程>=900km
NO.2 航程 航程>=700km
No.3 航程 航程>=500km
(2)本体模型中的属性构建
属性有对象属性(objectProperty)和数据属性(dataProperty)两种。对象属性描述
的是类之间的关系,以多无人机任务分配系统为例,其中有装备和无人机两个类,每个
无人机都带有一定的装备,则无人机类和装备类间存在 has 的对象属性关系;而数据属
性则描述的是类所具有的属性,比如无人机(uav),其具有的任何数据都属于数据属性,
如 id,无人机名,无人机速度,无人机所在位置等。
本文多无人机任务分配系统所设定的对象属性和数据属性分别用以下五个表所示。
表 3.5 对象属性列表
对象属性名 定义域(domain) 值域(range)
has uav equipment
need task equipment

23
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

表 3.6 无人机类数据属性列表
数据属性名 定义域(domain) 值域(range)
u_id uav int
u_name uav string
u_speed uav double
u_position uav double
u_oil uav double
表 3.7 任务类数据属性
数据属性名 定义域(domain) 值域(range)
t_id Task int
t_name Task string
t_position Task double
t_id Task int
t_name Task string
表 3.8 装备类数据属性
数据属性名 定义域(domain) 值域(range)
e_id equipment int
e_name equipment string
e_num equipment int

3.2.2 多无人机任务分配系统的语义推理

第二章已经对 Jena 实现基于规则的推理的过程做了具体介绍,本小节只介绍其中比较重


要的步骤。
(1)将多无人机任务分配系统的数据转换为三元组形式的数据格式
使用 Jena 进行语义合体和查询前需要做两个准备:第一,以 XML、N-triples 和 Turtle 格
式存储的 RDF 数据;第二 OWL 和 RDFS 格式的本体信息。上小节中已经使用工具将多无人
机任务分配系统的信息抽象为本体信息,只需要将创建的本体以 Jena 能识别的格式导出即可。
对于推理所需的数据信息,需要额外准备。多无人机任务分配系统的数据库中存储着该模块相
关的数据信息,由于 Jena 要求 RDF 数据格式为 XML、N-triples 和 Turtle,因此需要使用 d2rq
工具将待测模块中数据库中的数据以三元组的形式导出保存,这样就可以避免查找出失效信息
的情况,从而保证数据的实时性。
本文的数据是直接将数据库的数据直接映射到文件中,再将其中的数据根据映射文件处理
成 RDF 的三元组形式保存,过程如图 3.4 和图 3.5 所示。

24
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

图 3.4 数据库数据的映射文件

图 3.5 映射的三元组数据
图 3.4 所示的就是将数据库中数据映射的文件内容,图中是以数据库中 task 表为例,将 task
表的内容生成对应的映射文件。图 3.5 所示的是根据之前生成的映射文件将数据库中的数据转
换成 RDF 的三元组形式保存。
(2)根据多无人机任务分配系统的特点设计推理规则
对于任务而言,任务有攻击型任务,侦查型任务和巡航型任务,任务的基本信息都一致,
主要包括任务 id,任务名即任务类型,任务位置信息,但任务的类型不同,对执行任务的无人

25
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

机要求也不同,攻击型任务要求无人机必须配备有装备 M,且无人机的航程级别至少是第二
种级别;侦查型任务要求无人机必须配备有装备 L,航程级别至少是第三级别;巡航型任务只
对航程级别有要求,必须是第一种级别。
对于无人机而言,无人机也对应有攻击型,侦查型和巡航型三种类型。无人机的基本信息
都一致,主要的信息包括无人机 id,无人机名,无人机的飞行速度,无人机的位置以及无人机
的油量,无人机名代表了无人机的类型。无人机带有的装备决定着无人机能执行的任务类型,
配备有装备 M 无人机可以执行攻击型任务,配备有装备 L 的无人机可以执行侦查任务,若无人
机只带有装备 N,则无人机只能执行巡航任务,此无人机只负责巡航,为其他两种无人机做掩
护作用。
装备的类型有两种即 M 型装备和 L 型装备,装备类的信息比较少,只有装备 id,装备名
和装备的个数,其中装备名就是装备类型。M 型装备是攻击型任务执行的必须条件,若某个
无人机想要执行攻击型任务则必须在满足航程要求的前提下至少配备有装备 M,否则就算满
足任务的航程条件也无法执行攻击型任务,同理某个无人机要执行侦查型任务则必须在满足航
程要求的前提下至少配备有装备 L,若无人机要执行巡航型任务则只需要满足航程要求即可,
对配备的装备无要求。
通过分析多无人机任务分配系统中各个类之间的关系时,得出两条推理规则:第一条即无
人机与装备之间存在被动关系;第二条即任务与无人机之间存在使用关系。由上述关系分析可
知,无人机与装备之间与联系,每个无人机都配备有装备,因此无人机与装备间有主动关系,
反之也成立,某架无人机配备有某个装备,同时该装备也被此无人机所装备;任务的执行要求
无人机必须满足装备和航程要求,航程要求是无人机的油量的另一种表现形式,装备是无人机
的额外配置,只有满足任务要求的无人机才可以执行任务,因此可以通过任务的要求和无人机
的自身状况推理得出某个任务可用的无人机。
具体的推导规则如下图 3.6 所示。增加了推导规则后,对原本的本体关系进行了拓展,增
加许多新的关系,当查询资源时与此相关的隐含信息也包含在查询结果中,丰富了查询结果。

图 3.6 推导规则

26
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

根据约束关系生成多无人机任务分配系统的需求覆盖集

根据上一节提取出的约束关系,确定多无人机任务分配系统中各因素的取值范围,根据约
束关系和各因素的取值进行组合,生成需要覆盖的组合集。该方法的流程框架如图 3.7 所示:

图 3.7 基于语义推理的需求覆盖集的生成流程图
流程图中具体的实现步骤如下所述:
第一步:约束关系的提取。首先分析多无人机任务分配系统的功能,以及系统中输入和输
出的因果关系,以及因素的类型特征等,创建多无人机任务分配系统的本体,自定义推理规则
进行推理,查询推理后的本体图,总结多无人机任务分配系统中的约束关系。
第二步:分析约束关系中因素取值范围。提取多无人机任务分配系统中各因素的取值类型,
分析第一步得出的约束关系,结合约束关系确定各因素在实际测试中的有效取值范围。
第三步:需求覆盖集的生成。根据第二步确定的因素的有效取值范围,在允许取值范围内,
随机生成部分值确定的需求覆盖集。
通过多无人机任务分配系统的本体关系进行推理,可以对待测模块的本体关系图中的关系
进行丰富,完善待测模块中的关系。通过 Jena 提供的 SPARQL 查询功能,对推理后的本体关

27
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

系进行查询,分析推理后任务,无人机以及装备之间的关系,总结各个因素之间的约束关系,
根据约束关系确定各因素的有效取值范围,可以去除一些无效组合集,简化需求覆盖集。
多无人机任务分配系统的因素集合 F={f0,f1,f2,f3,f4,f5},前三个参数表示任务类型,
分别为攻击型,侦查型和巡航型,后三个参数表示无人机类型,也分别为攻击型,侦查型和巡
航型三种类型,其中 f0 和 f3 存在约束关系,以此为例。
表 3.4 因素的取值范围
因素 可选取值
f0 0,1
f3 1,2,3
表 3.4 f0 与 f3 取值组合
f0 取值 f3 取值
0 1
0 2
0 3
1 1

1 2
1 3

由于每个任务只能由一架无人机执行,因此在攻击型任务进行分配时供选择的攻击型无人
机数量必须大于等于攻击型任务数,因此前三条测试用例属于无效测试用例。因此多无人机任
务分配系统中的测试用例只要满足{(1,-,-,1,-,-),(1,-,-,2,-,-),(1,-,-,3,
-,-)}的取值组合集,组合集中的“-”表示该因素的取值待定。该组合集只表示其中一条约束
关系转换成的约束条件,由所有约束关系转换成的约束条件组成的集合就是多无人机任务分配
系统测试时要满足的所有约束条件,即需求覆盖标准。
需求覆盖集中的约束条件考虑了所有的组合情况,但实际中生成测试用例并不需要按照需
求覆盖集进行等额覆盖,且需求覆盖集中可能也包含互相覆盖的情况,因此本文在生成测试用
例前,按照需求覆盖集中的要求随机生成一定数量的含有待确定值的初始测试用例集,作为新
的需求覆盖集。

28
南京邮电大学硕士研究生学位论文 第三章 基于语义推理的约束关系提取方法

本章小结

本章介绍了一种基于语义推理的测试用例的生成方法,该方法分为三个部分:首先分析多
无人机任务分配系统的基本信息,利用工具创建其本体;其次通过分析因素间的关系,自定义
推理规则,结合实际数据查询,总结因素间的约束关系;最后根据约束关系,确定约束关系中
涉及的因素的具体取值,将约束关系转换为约束条件即初始需求覆盖集。本章提出的基于语义
推理的测试用例的生成方法等成果,已成功申请专利《一种基于 RDF 推理的测试用例约简的
方法》,见附录 1。

29
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

基于改进粒子群算法的多无人机系统测试用例生成

上一章节生成了多无人机任务分配系统需要覆盖的组合集,组合集中的每个组合包含一些
未确定值,因此本章提出了一种基于改进粒子群算法的多无人机系统测试用例生成方法,该方
法利用 one-test-at-one-time 策略生成测试用例的过程,其中使用组合优先级度量函数对需要覆
盖的组合进行优先级度量,选择优先级最高的组合,在使用改进的粒子群算法生成完整的测试
用例。本章首先介绍了基于覆盖需求的组合优先级度量方法,对优先级计算过程中可能出现的
各种情况进行了研究,并针对其中可能出现的特殊情况,定义了新的优先级度量函数;然后结
合人工免疫算法中的亲和度思想,利用信息熵计算粒子间的亲和度,对粒子群算法进行改进,
避免粒子群算法在迭代过程中多样性减少,陷入局部最优解,从而提高粒子群算法性能;并通
过一个小实验介绍该方法的实现过程。

多无人机系统测试用例生成的整体框架

固定力度组合测试的生成和可变力度组合测试的生成都已经被证明是一种 NP-C 问题,如


果想找到最优的测试用例需要花费很多时间,所以只能考虑在一定的时间范围内找到一个尽可
能好的测试用例,因此本文将 one-test-at-one-time 策略和改进的粒子群算法相结合,用于生成
可变力度的组合测试用例集,该方法即可以满足较高的需求覆盖率,也可以在最短时间内找到
最优的近似解[61]。
原始的 one-test-at-one-time 策略是在需求覆盖集中随机地选择一条组合,然后利用其它算
法将这条组合生成一条可执行的测试用例,然后在需求覆盖集中删除该条测试用例覆盖的其他
组合,更新组合集,直到组合集空停止,这种随机选择方法没有考虑到组合中的优先级问题,
若能够对组合集中的组合进行优先级排序,选择优先级较高的组合进行测试用例的生成,则可
以经过较少算法的迭代,提高算法性能,因此可以构造一个优先级度量函数,帮助组合的选择,
减少算法的时间消耗。
为了生成规模尽可能小的测试用例集,首先想到的就是贪心算法,在每一步都选择最佳的
测试用例,使其能够覆盖组合集中尽可能多组合,Schroeder[60]提出的 Greedy 方法就是基于贪
心算法的,但该方法的时间性能较差,不适合用于大规模的问题。在 one-test-at-one-time 策略

30
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

中生成一条测试用例是一个 NP-hard 问题,因此可以使用粒子群算法来求解问题。但传统的粒


子群算法在迭代前中易出现多样性减少,陷入局部搜索,后期则会出现求解精度不佳的问题,
因此本文借鉴人工免疫算法中的亲和度思想,利用信息熵计算亲和度来改进粒子群算法。
本文提出的基于改进粒子群算法的无人机系统测试用例生成方法框架图如下所示:

图 4.1 测试用例生成的整体流程
图 4.1 所展示的框架图的设计思路如下:
(1)测试的需求覆盖集是由各个有约束关系的参数所有取值生成的,在软件测试中,测
试用例要覆盖当中的约束条件,但只要求覆盖,并不需要等概率覆盖 [62],且仅从需求覆盖的
角度考虑,覆盖集中的约束条件的优先级也不一样,如果不参考优先级问题而直接等概率覆盖
生成测试用例,生成的测试用例可能太过冗余。因此本文在生成测试用例前,计算每个约束条
件的优先级,选择优先级最高的约束条件,参考 one-test-at-one-time 策略生成测试用例的思想,

31
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

利用改进粒子群算法生成测试用例,满足约束条件的前提下生成数量最小化的测试用例集。
(2)粒子群算法由于其参数少,实现简单,能够较快逼近最优解等优点,常被用来求解
NP-C 问题,但粒子群算法由于其自身特点,在迭代的前中期易出现多样性减少,陷入局部搜
索,以及在迭代后期搜索精度不足的问题,所以本文结合免疫算法的一些思想,引入了基于信
息熵的种群亲和度动态评价和粒子浓度调整策略,从而保持种群中的粒子在算法前期的多样性,
避免陷入“早熟”,从而可以使算法搜索更多的空间。
该框架的主要步骤:
第一步:生成需要覆盖的组合集 CombSet。如第三章介绍,通过分析待测模块的约束条件,
确定约束条件中涉及的因素的有效取值范围,生成部分值待定的集合 CombSet。
第二步:构造优先级度量函数。One-test-at-one-time 策略每次从 Combset 中随机选择一个
组合,这种方法太过随机,对算法的时间性能有很大影响,因此可以事先使用一个优先级度量
函数,对组合进行排序,优先级最高的一个组合,提高算法性能。
第三步:调用改进粒子群算法生成测试用例。组合测试用例的生成是个 NP-hard 问题,而
智能优化算法在解决这类问题时有一定的优势,传统的粒子群算法虽然能够较快找到近似最优
解,但也有不足,因此需要对传统粒子群算法进行改进,提高算法性能。

基于覆盖需求的组合优先级度量方法

在生成一条测试用例之前,需要从 Combset 中选择一个优先级最高的组合,利用改进的粒


子群算法为组合中的待确定值选择最佳值,生成一条完整的测试用例。对于一个给定的需要被
覆盖的组合集 Combset,最好的生成测试用例情况是:对于交互关系中的每一个覆盖需求,此
条测试用例能够覆盖 Combset 中的最多的组合,则在生成测试用例过程中,可以一次性移除多
个组合,缩小组合集 Combset 的大小,减轻计算负担。本文从组合优先级角度,提出了一种组
合优先级的度量方法。
一个组合是一条不完整的的测试用例,其中某些因素的取值可以是待定的,组合集
CombSet 中的组合都是这样的一条条缺省测试用例,这些缺省的测试用例之间存在互相包含的
关系,因此构造了一个基于组合覆盖的优先级度量函数𝑟𝑘 ,用来衡量 CombSet 中每个组合的优
先级[20],杨 [20]
从覆盖组合和因素取值两种角度,分别提出了两种优先级度量函数,本文仅介
绍覆盖组合度量方法。

32
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

𝑟𝑘 = ∑ 𝑝(𝑐𝑖 , 𝑡𝑘 ) (4.1)
𝑖=1

1, 若𝑡𝑘 包含𝑐𝑖
p(𝑐𝑖 , 𝑡𝑖 ) = { (4.2)
0, 若𝑡𝑘 不包含𝑐𝑖

其中𝑟𝑘 表示第 k 个组合的权重,𝑐𝑖 表示 Combset 中的第 i 个组合,𝑡𝑘 表示组合𝑐𝑘 所对应的


一条缺省的测试用例,s 表示集合 Combset 所包含的组合数。
当生成一条测试用例 t 后,需要用该条测试用例去删除 Combset 中被覆盖的组合,更新需
求覆盖集 Combset,由于每经过一次迭代就需要按照上述公式重新计算 Combset 中每一个组合
的优先级,这样的处理方法会消耗更多的时间。可以利用已删除的组合,计算测试用例 t 中包
含的组合,计算剩余的组合的优先级度量函数时,只需要计算剩余组合的包含集是否有已删除
的组合即可,新的优先级度量函数为。
𝑚

𝑟𝑘 (𝑛) = 𝑟𝑘 (𝑛 − 1) + ∑ 𝐸(𝑑𝑗 , 𝑡𝑘 ), 𝑛 > 1 (4.3)


𝑖=1

−1, 若𝑡𝑘 包含𝑑𝑗 (4.4)


𝐸(𝑑𝑗 , 𝑡𝑘 ) = {
0,若𝑡𝑘 不包含𝑑𝑗

该两种度量函数方法虽然降低了优先级函数的计算量,但也有不全的地方,若经过公式
4-1 和 4-2 计算,combset 中有多个组合的优先级级别一样,如何去从这些组合中选择出最佳的
组合,如果随机选择,则可能增大随机性影响。
例如,以多无人机任务分配系统为例,F={ f0,f1,f2,f3,f4,f5}为例,f0~f2 分别表示系统中攻击
型任务、侦查型任务和巡航型任务,f3~f5 分别表示攻击型无人机、侦查型无人机和巡航型无人
机。其中主要覆盖的组合集 Combset 中的情况如表 4.1 所示,对于每个组合都可以构造一条与
之对应的测试用例,其中“-”表示该因素的取值待定。
表 4.1 需覆盖组合集及对应的测试用例

编号 覆盖组合集 Combset 对应的测试用例 包含的组合


0 (f0=0,f3=1) (0,-,-,1,-,-) 0,3
1 (f0=1,f3=2) (1,-,-,2,-,-) 1,2
2 (f1=1,f3=2,f4=1) (-,1,-,2,1,-) 1,2
3 (f1=0,f3=1,f4=2) (-,0,-,1,2,-) 0,3
4 (f2=1,f3=3,f4=1,f5=1) (-,-,1,3,1,1) 4

33
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

从表中可知,对于组合(f2=1,f3=3,f4=1,f5=1),除了包含自身组合外,不包含其他 4 个组合,
如果优先选择该组合,则无法再覆盖 Combset 中的其他组合,加大算法的时间消耗。考虑极端
情况,假如 Combset 中只有这 5 条组合,除最后组合外,其余每个组合都包含 2 个组合,此时
无法确定优先选择哪条组合,因此对于这种情况,在构建另一个优先级度量函数𝑟𝑘 ′。
𝑠

𝑟𝑘 ′ = ∑ 𝑝′(𝑐𝑖 , 𝑡𝑘 ) (4.5)
𝑖=1

1, 若𝑡𝑘 绝对包含𝑐𝑖 (4.6)


𝑝′ (𝑐𝑖 , 𝑡𝑘 ) = {
0, 若𝑡𝑘 不绝对包含𝑐𝑖

其中各参数代表的意思如上。以多无人机任务分配系统为例,在上表的基础上增加绝对包
含的计算,绝对包含的含义解释为:若有 AB 两个组合,如果 A 的待定位置取任意值都可以
覆盖组合 B,则称 A 绝对包含 B。
表 4.2 需覆盖组合集及对应的测试用例
编号 覆盖组合集 Combset 对应的测试用例 绝对包含的组合数
0 (f2=1,f3=0,f4=1,f5=0) [-, -, 1, 0, 1, 0] 0,1
1 (f2=1, f4=1,f5=0) [-, -, 1, -, 1, 0] 1
2 (f3=1,f4=1,f5=2) [-, -, 1, -, 1, 1] 2
由表可知,表中每一个组合对应的包含组合数都相等,但组合{ f2=1,f3=0,f4=1,f5=0} 绝对包
含的组合数最多,则优先选择该组合可以最多覆盖 Combset 中的其他组合,但如果包含的组合
数和绝对包含的组合数一致,则把组合中待确定值的个数作为衡量的标准,组合中的待确定值
越少,改进粒子群算法在为其选择合适的值时消耗的时间越少。
表 4.3 覆盖组合集及待确定值个数

覆盖组合集 包含的 绝对包含 待确定


编号 对应的测试用例
Combset 组合 的组合 值个数
0 (f0=0,f3=1) (0,-,-,1,-,-) 0 0 4
1 (f1=1,f3=2,f4=1) (-,1,-,2,1,-) 1 1 3

上述三种衡量方法,其等级由高到低顺序依次是:包含,绝对包含,待确定值个数,对于
Combset 中的组合,首先比较各个组合的𝑟𝑘 函数值,选择𝑟𝑘 函数值最高的组合,利用改进粒子
群算法生成一条取值完整的测试用例,如果出现多个组合的𝑟𝑘 函数值相等的情况,则比较这些
组合的𝑟𝑘 ′函数值,若根据𝑟𝑘 ′函数值仍然无法选择出最佳组合,则再比较这些组合的待确定值
个数最少的组合,最终选择出最佳组合用以生成测试用例。

34
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

基于信息熵的改进粒子群算法

在粒子群算法中,每一个粒子是根据历史最优位置和全局最优位置来调整自身的速度和位
置,因此在算法前中期,种群中粒子容易向一个全局最优靠近,此时种群中的粒子就会缺少多
样性,从而导致算法就容易陷入“早熟”。为了解决多样性减少的问题,本文在基本粒子群算
法思想中引入了信息熵和亲和度的概念,使用信息熵计算算法中粒子在各个区间的分布情况,
某个区间内的信息熵的值越小,则说明此区间内的粒子表示的信息越有用,通过粒子的亲和度
计算公式,计算粒子间的聚集情况,将亲和度值与规定的阈值进行比较,当粒子间的亲和度高
于事先定的预定值时,则说明粒子间过于聚集,在该粒子允许的取值范围内随机选择一个取值,
生成新粒子,从而增加粒子多样性。
具体步骤如下:
第一步:初始化粒子。初始化设置种群的规模,迭代次数,使用随机函数生成一群位置和
速度都随机的初始粒子,并定义算法的维度,惯性权重,自我学习因子,社会学习因子以及约
束因子等初始值。
第二步:让粒子在各维度上进行迭代搜索,并将粒子覆盖的 Combset 中组合个数作为粒子
群算法中衡量优劣的标准,即适应度函数,计算每一个初始粒子的适应度值选出全局最优的测
试用例,并根据公式更新每一个粒子的速度和位置。
第三步:根据每一个粒子当前的位置和其历史最优位置,对粒子的历史最优位置进行更新,
并且将每一个粒子的历史最优位置和全局最优位置进行比较,若其适应度值大于全局最优适应
度值,则将该粒子的适应度值作为全局最优适应度值,并记录其对应的位置。
第四步:根据求解问题的特点,对取值区间进行划分,并统计各个取值对应的粒子个数,
计算其概率,使用信息熵公式求解出各粒子代表的有用值,计算区间内粒子的亲和度值。
第五步:将粒子的亲和度值与规定的阈值进行比较,如果亲和度值大于阈值,则说明粒子
过于聚集,对粒子进行操作,生成一批新粒子,跳转到第二步操作,若亲和度值小于阈值,则
说明粒子分散均匀,没有出现过于聚集的情况,则按照速度和位置更新公式进行速度和位置的
更新。
第六步:判断迭代次数是否达到结束要求,如果达到迭代次数上限,则跳转到第二步继续
执行搜索操作,执行第二步到第八步过程,否则搜索停止,输出全局最优解的位置以及全局最
优解对应的函数值。
具体算法的流程图如下图 4.3 所示:

35
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

图 4.3 改进粒子群流程图

从流程图中可以看出,改进的粒子群算法涉及两个运算:
(1)粒子的适应度值计算,主要
是通过适应度函数计算各粒子的适应度值,然后根据适应度值进行全局最优粒子和每个粒子的
历史最优解更新;
(2)亲和度值计算,根据亲和度的计算公式计算每个粒子的亲和度值,再将
粒子的亲和度值与事先设置的阈值进行比较,如果亲和度值大于阈值,则说明此次迭代中粒子
过于聚集,粒子的多样性减少,容易陷入局部最优搜索中,因此此时需要外力干扰,增加粒子
的多样性,此时为该粒子随机指定一个位置,增加粒子多样性的同时,不改变整体的收敛趋势,
重新进行迭代过程中的操作。其各自在算法中表示的含义如下所示。
(1)适应度函数
在标准的粒子群算法中,需要根据问题制定合理的适应度函数来评价各个粒子的好坏,在
测试用例生成中,主要把粒子对组合集 Combset 中的覆盖程度作为评价标准,计算每一个粒子
覆盖 Combset 中组合的个数,个数越多,则说明该粒子表示的测试用例能覆盖 Combset 中的
组合数越多,可以一次性删除的更多的组合,对组合的缩减效果最好。

36
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

(2)亲和度
本文改进粒子群算法中亲和度主要采用信息熵作为亲和度的计算方法,首先依次计算原本
空缺的位置的各个取值出现的概率,利用信息熵计算公式计算各个取值的亲和度值,将亲和度
与规定的阈值进行比较,若该值的亲和度值大于阈值,则说明该取值在该位置出现的太过频繁,
粒子太过聚集,则在该位置允许的取值范围内随机取一个值;若小于阈值则说明该位置的取值
分布均匀,不需要额外调整
改进后的粒子群算法流程如下:
算法 1:基于改进粒子群算法生成单条测试用例
输入:种群个数 k,迭代次数 t,亲和度阈值 h
输出:测试用例 gbest
M = {m1 , m2 , … , mk } //随机初始化 k 个测试用例
𝐅𝐨𝐫 i = 1 𝐭𝐨 t 𝐝𝐨

gbest i ← M 中最优的测试用例
𝐅𝐨𝐫 j = 1 𝐭𝐨 k 𝐝𝐨
pbest ij ← mj 的历史最优测试用例

mj ← update(mj , gbest i , pbest ij ) //更新mj 的位置


𝐄𝐧𝐝 𝐅𝐨𝐫

hi ← M 的亲和度
If (hi < h)
rand(M) //将 M 中某些测试用例进行重置
End If
𝐄𝐧𝐝 𝐅𝐨𝐫
𝐑𝐞𝐭𝐮𝐫𝐧 gbest

实验结果分析

以多无人机任务分配系统中侦查型任务约束关系为例,取 6 个需要被覆盖的组合,参数有
f0,f1,f2,f3,分别表示多无人机任务分配系统中侦查任务、攻击型无人机、侦查型无人机和
巡航型无人机,其中“-”表示该因素可取任何值。具体介绍基于组合优先级的度量函数以及改
进粒子群算法的执行过程。

37
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

表 4.4 需要覆盖的组合集

因素
f0 f1 f2 f3
编号
0 1 - 2 -
1 - 3 2 -

2 1 3 2 -
3 2 - - -
4 2 3 - 1
5 2 3 - -

6 条组合中,包含优先级从高到低依次为:首先是 S1,包含的组合有 6 个;其次是 S3,S4,


S5,包含的组合有 4 个;最后是 S0 和 S2,包含的组合个数为 3。绝对包含优先级从高到低依次
为:首先是 S2 和 S4,绝对包含的组合有 3 个;其次是 S5,绝对包含的组合有 2 个;最后是 S0,
S1 和 S3,绝对包含的组合有 1 个,即自身。待确定值个数的优先级从高到低依次为:首先是
S2,待确定值数有 1 个;其次是 S0,S1 和 S5,待确定值数有 2 个;最后是 S3,待确定值数有
3 个。组合的三个优先级具体情况如表 4-5 所示。
表 4.5 各个组合的三种优先级情况
优先级 包含的组 绝对包含 待确定值
编号 合 的组合 个数
0 0,1,2 0 2

1 0,1,2,3,4,5 1 2

2 0,1,2 0,1,2 1

3 1,3,4,5 3 3

4 1,3,4,5 3,4,5 1

5 1,3,4,5 3,5 2

如果仅从包含的角度考虑组合的优先级,使用改进后的粒子群算法生成测试用例的过程如
下:第一次生成的测试用例为[2, 3, 2, 1, 1, 1],删除的组合为[1, 3, 4, 5];第二次生成的测试用
例为[1, 2, 2, 15, 1, 1],删除的组合为[0];第三次生成的测试用例为[1, 3, 2, 4, 1, 1],删除的组合
为[2],最终生成 3 条测试用例,耗时 43ms。
利用本文提出的优先级度量方法,使用改进后的粒子群算法生成测试用例时,过程如下:
第一次生成的测试用例为[1, 3, 2, 24],删除的组合为[0, 1, 2];第二次生成的测试用例为[2, 3, 4,

38
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

1],删除的组合为[3, 4, 5];最终生成 2 条测试用例,耗时 216ms。


针对上述需要覆盖的组合集,使用本文提出的优先级度量函数对组合进行优先级衡量,使
用传统粒子群算法生成测试用例后时,过程如下:第一次生成的测试用例为[2, 3, 2, 14],删除
的组合为[1, 3, 5];第二次生成的测试用例为[1, 3, 2, 4],删除的组合为[0, 2];第三次生成的测
试用例为[2, 3, 1, 1],删除的组合为[4];最终生成 3 条测试用例,耗时 373ms。
上述的实验结果,用表 4.6 和表 4.7 表示,其中表 4.6 展示了基于改进后粒子群算法,分
别结合仅考虑包含优先级和本文提出的优先级度量函数生成的测试用例情况,表 4.7 展示了基
于本文提出的优先级度量函数,分别使用传统粒子群算法和改进后粒子群算法生成的测试用例
情况。
表 4.6 不同优先级度量函数测试用例生成情况

组合覆盖集规模 仅考虑包含 新的度量函数


6 3 2
表 4.7 传统粒子群算法和改进后粒子群算法成成的测试用例情况

传统粒子群算法 改进后粒子群算法
组合覆盖集规模 测试用例条数 消耗的时间 测试用例条数 消耗的时间
6 3 373ms 2 216ms

从上述实验结果可以看出:利用本文提出的优先级度量函数和改进粒子群算法生成的测试
用例条数比只考虑包含情况生成测试用例条数少;基于本文提出的优先级度量函数,分别使用
改进后粒子群算法与传统的粒子群算法生成测试用例,改进后的算法在时间上有明显优势,最
终生成的测试用例数量比传统的少。因此本文提出的测试用例生成方法是有效的。
但该实验的规模比较少,只是为了介绍利用本文提出的测试用例生成方法生成测试用例的
过程,从小实验简单证明该方法的有效性,大规模的对比实验在第五章展示。

本章小结

本章介绍了基于改进粒子群算法的多无人机系统测试用例生成方法。首先提出了一种新的
优先级度量方法,已有的优先级度量方法虽然有不错的效果,但有一些特殊情况没有考虑到,
因此本文针对这些特殊情况定义了新的度量函数,提高优先级度量函数的性能。传统的粒子群
算法在迭代的前中期会出现粒子多样性减少,陷入局部最优搜索的缺点,因此本文结合亲和度
的思想,利用信息熵计算粒子的亲和度,对算法进行改进。本文最后并通过一个小实验介绍了

39
南京邮电大学硕士研究生学位论文 第四章 基于改进粒子群算法的多无人机系统测试用例生成

多无人机系统测试用例的生成过程。本章提出的基于改进粒子群算法的多无人机系统测试用例
生成方法等成果,已成功申请专利《一种基于信息熵粒子群算法的测试用例生成方法》,见附
录 1。

40
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

实验及数据分析

本章介绍了本文的整体算法框架图,介绍了基于本体推理提取约束条件的过程,基于信息
熵的改进粒子群算法生成测试用例的算法流程,并对相关研究进行了对比实验并分析了实验结
果,并搭建了在线自动化测试平台,对平台的主要功能做了展示。

实验框架

测试用例的生成过程中,如何生成尽可能完善的约束条件对于测试用例质量有着重要关系,
因此对于约束条件的生成,本文提出了一种语义推理提取约束关系的方法,首先通过对多无人
机任务分配系统进行本体创建,针对多无人机任务分配系统的特点自定义推理规则进行语义推
理,对推理后的约束关系进行归纳总结,结合常见的约束条件存在形式,将多无人机任务分配
系统中因素间的关系转换成对应的约束条件。在 one-test-at-a-time 策略的基础上,使用组合优
先级度量函数及基于信息熵改进的粒子群算法生成测试用例集,并使用自动化测试工具按照生
成的测试用例对多无人机任务分配系统进行自动化测试。具体步骤如下所示:
第一步:约束条件的生成。分析待测模块的特征,提取其中的有用信息,创建其对应的本
体,将多无人机任务分配系统的实际数据转换成三元组的形式存储,自定义多无人机任务分配
系统适合的推理规则,三者准备齐全后,利用 Jena 工具进行推理,对经过推理后的本体进行
查询,并保存其查询结果。分析其中元素的关系,生成本文多无人机任务分配系统的约束条件,
结合常见的约束条件存在形式,确定各因素的取值范围,生成需要覆盖的组合集。
第二步:测试用例的生成。使用改进后的优先级度量函数从组合集 Combset 中选择一条优
先级最高的组合;然后利用改进后的粒子群算法为该组合中的待确定值的在取值范围内选择最
合适的取值,生成一条完整的测试用例;更新组合集 Combset,删除该条测试用例覆盖的组合。
从新的 Combset 集合中选择选择出优先级最高的组合,重复上述操作直到 Combset 为空停止。
第三步:测试用例的执行。对于第二步生成的测试用例集使用 web 自动化测试工具
selenium 对多无人机任务分配系统进行自动化测试,测试脚本除了将测试用例集中的测试用例
转换成测试代码对多无人机任务分配系统进行测试外,还在测试过程中对测试过程进行截图,
生成了 HTML 形式的测试报告,可以直接查看测试结果的同时也可以查看具体的操作过程,

41
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

并可以提供测试报告发送到指定邮箱的操作。测试脚本进行了分层封装处理,保证代码有较好
的移植性和简洁性。
测试的整体流程框架如图 5.1 所示。

图 5.1 测试整体流程框架图

约束条件提取的实验结果展示

5.2.1 本体创建的实验结果

本体的创建中包含三种属性信息,分别是类属性,对象属性和数据属性,本文待测模块对
应的本体信息如下图 5.2,图 5.3 和图 5.4 所示,图 5.2 表示的是从多无人机任务分配系统的提
取的类的信息,图 5.3 表示的是多无人机任务分配系统中各个类间的对象属性,图 5.4 表示的
是多无人机任务分配系统中各个类的数据属性。

图 5.2 本体的类属性

42
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

图 5.3 本体的对象属性

图 5.4 本体的数据属性

5.2.2 推理后查询结果展示

为了方便理解和分析,本文的实验结果只取部分数据作为展示。针对推理后的本体进行查
询操作,首先查询攻击型任务的具体特征以及其任务执行所需要的要求,查询任务自身的信息,
图 5.5 展示的是 id 为 1 的任务具体信息,图 5.6 展示的是无人机 2 的具体信息,图 5.7 展示的
是装备的具体信息。

图 5.5 任务 1 信息

43
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

图 5.6 无人机 1 信息

图 5.7 装备信息

不同类型的任务对装备的要求也不一样,攻击型任务本身的信息主要有任务 id,任务名和
任务位置,任务的执行要求是必须需要装备 M,任务名代表该任务的类型。侦查型任务的自
身信息与攻击型任务一样,但侦查型任务的执行要求是必须具备装备 L。巡航型任务没有装备
要求,只要无人机具备基本的飞行能力即可。
对于无人机而言,无人机也有攻击型,侦查型和巡航型三种类型。无人机自身的信息都一
致,主要的信息包括无人机 id,无人机名,无人机的飞行速度,无人机的位置以及无人机的油
量,无人机名代表了无人机的类型。无人机带有的装备决定着无人机能执行的任务乐行,配备
有装备 M 无人机可以执行攻击型任务,配备有装备 L 的无人机可以执行侦查任务,若无人机只
带有任何装备 N,则无人机只能执行巡航任务,此无人机只负责巡航,为其他两种无人机做掩
护作用。
查询所有任务对应的执行要求,结果如图 5.8 所示,所有无人机对应的装备信息如图 5.9
所示,图 5.10 和图 5.11 是直接通过推导规则推理后,查询的装备和任务相关信息。

44
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

图 5.8 任务执行要求

图 5.9 无人机具备的条件

图 5.10 基于推理的查询装备信息

45
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

图 5.11 基于推理的查询任务

从图 5.10 中可以看出无人机与装备之间存在主被动关系,经推理后,在查询装备的相关
信息时,多了一条装备与无人机之间的被动关系,丰富了本体间的关系。
图 5.11 中的任务的相关信息中多了任务与无人机之间的关系,图中显示无人机 1 可以执
行任务 1,无人机 1,2,3,5 可以执行任务 2,无人机 1,4,6,7,8 可以执行任务 3。为了便于分析结
果,用了三个表总结了各种类型与无人机和任务的关系。
表 5.1 任务类型及 id 的对应表
任务类型 任务 id
攻击型 1,4
侦查型 2,5
巡航型 3,6
表 5.2 无人机类型及 id 的对应表
无人机类型 无人机 id
攻击型 1,2,4
侦查型 3,5,8
巡航型 6,7
表 5.3 装备与无人机的对应表
装备类型 无人机 id
M 1
L 1,2,3,5
N 1,4,6,7
从表中可以得,具备装备 M 的无人机只有无人机 1,因此攻击型任务只能由无人机 1 执行;
具备装备 L 的无人机有无人机 1,2,3,5,因此侦查型任务只能由无人机 1,2,3,5 执行;具备装备
N 的无人机只有无人机 1,3,6,7,8,因此巡航型任务只能由无人机 1,4,6,7,8 执行。图 5.11 中三个
任务分别代表攻击型,侦查型和巡航型任务,推理结果正确。
推理结论分析发现,攻击型无人机不仅可以执行攻击型任务,也可以执行侦查型和巡航型
任务,同理侦查型无人机既可以执行侦查型也可以执行巡航型任务。

46
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

多无人机任务分配系统中原有的约束关系是:攻击型任务数与攻击型无人机有关系,侦查
型任务数与侦查型无人机数有关,巡航型无人机与巡航型无人机数有关。经推理后的约束关系
为:攻击型任务数与攻击型无人机有关系,侦查型任务数与攻击型无人机数和侦查型无人机数
有关,巡航型无人机与三种类型的无人机数都有关。
以侦查任务为例,侦查任务数取值为 1 和 2,攻击型和侦查型无人机数取值为 1 和 2,表
5.4 表示的是推理前后侦察任务的约束关系生成的组合集情况。
表 5.4 推理前后生成的组合集

攻击型无人机取 侦查型无人机取
侦查型任务取值 原始约束 推理后约束
值 值
1 1 1 √ √
1 1 2 √ √

1 2 1 √ √
1 2 2 √ √
2 1 1 × √
2 1 2 √ √
2 2 1 × √
2 2 2 √ √

推理前的侦查型任务约束为侦查型无人机数必须大于等于侦查型任务数,表中组合[2,1,1]
和[2,2,2]不成立,但推理后侦查型任务的约束为攻击型无人机和侦查型无人机数和必须大于等
于侦查型任务数,表中组合[2,1,1]和[2,2,2]在推理后的约束关系中是成立的。
上述结论证明该方法的确能够推理出多无人机任务分配系统中的隐含关系,使得生成的约
束关系更精准,且根据约束关系生成的组合更多。

测试用例生成的实验结果对比

5.3.1 实验结果的评价指标

本文的实验分为两种,一种是分别使用仅考虑包含的优先级度量函数和本文提出的优先级
度量函数,结合改进粒子群算法,生成测试用例;另一种是基于本文提出的优先级度量方法,
分别使用传统粒子群算法和改进粒子群算法生成测试用例。对于不同大小的需要覆盖的组合集,

47
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

为了防止实验结果的随机性,所有实验都都运行 30 次,计算生成的测试用例平均数 p 以及方


差σ进行评价。平均数值越小则说明生成的测试用例数量越少,方差值越小则说明算法越稳定。
表 5.5 实验一结果评判指标
平均数 方差 约简率
覆盖组合 原始优先 新的优先级 原始优先级 新的优先级 原始优先 新的优先级
大小 级度量函 度量函数 度量函数 度量函数 级度量函 度量函数
数 数
50 P1 P2 σ1 σ2 % %
500 P1 P2 σ1 σ2 % %
5000 P1 P2 σ1 σ2 % %
10000 P1 P2 σ1 σ2 % %
表 5.6 实验二结果评判指标
平均数 方差 约简率
覆盖组合 传统算法 改进后算法 传统算法 改进后算法 传统算法 改进后算法
大小
50 P1 P2 σ1 σ2 % %
500 P1 P2 σ1 σ2 % %
5000 P1 P2 σ1 σ2 % %
10000 P1 P2 σ1 σ2 % %

5.3.2 实验结果及分析

第一个对比实验,主要是使用已有的优先级度量函数和本文提出的优先级度量函数结合改
进粒子群算法,在覆盖组合数不同的大小情况下,取实验的 30 次结果作为比较。表 5.7 表示
的不同的优先级度量函数结合改进粒子群算法的实验结果。
表 5.7 不同优先级度量函数的实验结果对比

平均数 方差 约简率(%)
覆盖组合 原始优先 新的优先 原始优先 新的优先 原始优先 新的优先
大小 级度量函 级度量函 级度量函 级度量函 级度量函 级度量函
数 数 数 数 数 数
50 46.66 40.33 1.82 0.77 6.68% 19.30%

500 318.10 311.33 29.9 7.35 36.38% 37.73%

5000 3411.16 3390.96 34.04 78.755 31.76% 32.18%


10000 4396.8 4372.23 260.42 225.71 56.03% 56.27%

从表 5.7 中可以看出新的优先级度量函数生成的测试用例数量比原始的优先级度量函数

48
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

生成的测试用例集少,由于组合集和算法的随机性,但是新的优先级度量函数的效果并不是很
稳定,对于规模较小的组合集,通过新的组合优先级度量函数,效果更好,当规模较大时,两
者效果相差较小,但整体而言,还是比原始的优先级度量函数的效果好。为了更加直观的展示
实验数据,使用图 5.12 分别从测试用例规模和对组合集的约简率两个角度进行结果展示。
60%
4500条
4000条 50%
3500条
3000条 40%
2500条
2000条 30%
1500条
20%
1000条
500条 10%
0条
0%

原始优先级度量函数
新的优先级度量函数 原始优先级度量函数 新的优先级度量函数

(a)测试用例规模对比图 (b)约简率对比图

图 5.12 不同优先级度量函数实验对比图

第二个对比实验主要通过惯性权重和学习因子不同取值将传统粒子群算法与改进后的算
法进行对比,在覆盖组合数不同的大小情况下,取实验的 30 次结果作为比较。表 5.8 所示的
是惯性权重和学习因子在迭代中都取固定值的实验结果,主要是取两种算法运行 30 次的方差
值进行比较。
表 5.8 算法参数取固定值的算法结果对比
平均数 方差 约简率
覆盖组合 传统算法 改进后算法 传统算法 改进后算法 传统算法 改进后算法
大小
50 46.76 40.33 1.82 0.77 6.48% 19.34%
500 418.80 311.33 16.32 7.35 16.24% 37.73%
5000 3529.33 3390.96 15.93 6.89 29.41% 32.18%
10000 4932.73 4372.23 233.88 225.71 50.67% 56.27%
从表 5.8 中可以看出改进后的粒子群算法结合新的优先级度量函数在测试用例的生成数量
上比传统的粒子群算法有优势,为了更加直观的展示实验数据,使用图 5.13 分别从测试用例

49
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

规模对组合集的约简率两个角度进行结果展示。

4800条 60.00%
4500条
4200条
50.00%
3900条
3600条
3300条 40.00%
3000条
2700条
2400条 30.00%
2100条
1800条
1500条 20.00%
1200条
900条
600条 10.00%
300条
0条
0.00%

传统粒子群算法 改进后粒子群算法 传统粒子群算法 改进后粒子群算法

(a)测试用例规模对比图 (b)约简率对比图

图 5.13 两种算法参数取固定值时实验对比图

从图(b)中可以看出,整体而言,各种参数取固定值时,对同种规模的待覆盖的组合集,
使用本文提出的改进后粒子群算法生成的测试用例集数量少,尤其是组合集规模较小时。
粒子群算法中,参数的选择对算法的性能有很大影响,大部分的研究工作中参数的取值都
根据经验而定,没有考虑到参数对于不同模型可能需要不同的取值。
因此本文结合第二章中介绍的参数的改进方法,算法中的惯性权重取线性递减的策略进行
实验,对上表中的覆盖组合大小重新进行实验对比,取两中算法运行 30 次的方差值进行比较,
结果如表 5.9 所示。
表 5.9 算法参数改进后的算法结果对比
平均数 方差 约简率
覆盖组合 传统算法 改进后算 传统算法 改进后算 传统算法 改进后算法
大小 法 法
50 42.33 36.56 13.11 5.42 15.34% 26.88%
500 408.4 305.03 10.250 9.99 18.32% 38.99%
5000 3504.30 3341.50 112.07 80.25 29.91% 33.13%
10000 4791.30 4177.30 233.66 255.87 52.08% 58.23%
从表 5.8 中可以看出算法中的惯性权重取线性递减的策略进行改进时,改进后的粒子群算

50
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

法效果仍然比传统的算法好,如图 5.14 所示。

4500条 60.00%
4000条
3500条 50.00%
3000条
2500条 40.00%
2000条
1500条
30.00%
1000条
500条
0条 20.00%

10.00%

0.00%
50 500 5000 10000

传统粒子群算法 传统粒子群算法
改进后粒子群算法 改进后粒子群算法

(a)测试用例规模对比图 (b)约简率对比图

图 5.14 两种算法惯性权重线性递减时实验对比图约简率对比图

从图中可知,对于不同大小的覆盖组合,不论算法中参数取固定值还是惯性权重进行线性
递减改进时,传统算法生成的测试用例集数量都比改进后算法生成的测试用例数量大,且改进
后的算方法方差都比传统的算法小,改进后的算法效果比较稳定,但惯性权重改进后,实验效
果更好,由此可以说明本文提出的测试用例生成方法是有效的。

基于 selenium 的自动化测试

本文使用自动化工具 selenium 使用上节生成的测试用例对多无人机任务分配系统进行自


动化测试,并搭建了一个在线测试平台,页面的主要功能分别为:参数取值输入,运行测试脚
本,测试结果查看。本文的测试页面只提供了登录功能和任务分配和航迹规划两个模块的自动
化测试功能。具体的步骤如下所述:
第一步:明确要进行测试的功能模块,根据不同模块的要求,输入测试需要的参数数据,
以及要收到测试报告的邮箱地址。
第二步:选择要测试的模块的测试脚本进行自动化测试。
第三步:查看测试报告以及测试过程中的截图。
具体的页面流程为下图所示:

51
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

图 5.12 测试页面流程图

实际的页面展示图如图所示:

图 5.13 测试页面

52
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

如果不在页面进行任何输入操作,而是直接执行测试脚本,则脚本在执行过程中所用的所
有参数都是上一次操作输入的参数数值,因此如果需要根据特定参数进行相关模块的自动化测
试,则必须进行参数输入操作。
页面中可以查看的测试结果有两种类型,一种是测试报告,另一种是测试过程中的截图。
两种方式从不同的角度对自动化的测试结果进行了展示。测试报告是自动化测试过程中直接生
成的 html 页面,页面中包含此报告名称,报告生成的时间,报告中的测试用例执行完所消耗
的时间以及测试用例的执行结果。该测试报告不仅对测试用的执行结果进行了展示,也展示了
每个测试用例的执行细节,若测试用例执行失败,还可以查看具体的错误原因。该测试报告页
面简洁明了,包含的内容丰富。
以两个测试报告为例,分别用图 5.14 表示测试用例成功运行的结果图和图 5.15 表示含有
测试用例运行失败的结果图。

图 5.14 测试用例运行成功的报告图

图 5.15 测试用例运行失败的报告图

53
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

上面两张图展示了测试报告中对测试用例结果的展示,查看测试用例的测试结果除了查看
测试报告,也可以查看测试过程中的截图,测试截图是对测试过程中页面的具体内容进行截图,
对于测试过程中有输入操作,则可以通过查看页面截图检查测试过程中是否正确执行输入操作,
也可以间接地检查测试过程中的点击等操作是否有效等。具体如图所示:

图 5.16 页面输入操作结果图

图 5.17 页面点击后的响应图
图 5.16 中是测试过程对测试页面进行输入操作后,页面对应的响应。图 5.17 是在图 5.16
执行之后执行点击操作后,页面对应的响应。两张图分别可以检查输入操作和点击操作的运行
结果。
本文使用 selenium 对多无人机任务系统进行自动化测试时,使用两个测试用例集,分别
是待覆盖的组合集生成的测试用例和使用本文方法生成的测试用例集,测试结果表明,使用两
种测试用例集,系统都能够成功进行任务分配操作,且通过语义查询,对分配结果进行验证,
任务分配结果正确,满足系统中任务与无人机之间的约束关系。由此说明按照本文提出的方法
生成的测试用例集能够达到和原始用例集一样的测试覆盖效果,且数量更少,减少测试消耗。

54
南京邮电大学硕士研究生学位论文 第五章 实验及数据分析

本章小结

本章介绍了本文的整体算法框架图,介绍了基于本体推理提取约束条件的过程,基于信息
熵的改进粒子群算法生成单条测试用例的算法流程,并对相关研究进行了对比实验并分析了实
验结果,并使用自动化测试框架 selenium 进行自动化测试,搭建了在线自动化测试平台,对
页面中的细节也做了相关介绍。

55
南京邮电大学硕士研究生学位论文 第六章 总结与展望

总结与展望

工作总结

在真实的软件系统中,模块中的因素之间的关系十分复杂,因此如何尽可能提取出待测模
块中的约束关系对生成测试用例集质量有着极大的关系。目前生成约束条件的方法有多种,但
随着人们的需求越来付多,软件的复杂性也在不断加深,因此在提取软件中因素间的约束关系
时,易出现遗漏,并且软件中有些关系不易被发现。由于粒子群算法参数少,易实现,能有以
较快的速度逼近最优解,在求解过程中,粒子群算法能够利用全局极值和局部极值进行信息共
享,指导下一代粒子迭代,加快粒子进化等优点,因此也常被用于生成测试用例。但在粒子群
算法在运行时,前中期由于粒子的多样性的减少,易出现陷入局部最优搜索中即“早熟”,后期
易出现收敛速度慢,求解精度不精的问题,所以如何有效改进粒子群中的多样性性和精度问题,
是个亟待解决的问题。为了保证软件质量,软件在使用之前一定要经过多次测试,对于大量的
重复测试,如果选择人工测试,耗时耗力,成本开支较大,而且在测试中,由于人的极限等问
题,也易出错。
针对上述问题,本文的研究内容主要有三点,分别是:
(1)研究本体创建及本体推理的相
关知识,并基于推理找出待测模块中隐含的元素关系;
(2)研究了已有的优先级度量函数,对
已有的度量函数进行改进,尽可能解决优先级度量过程中出现的问题,避免出现随机选择组合
的情况;
(3)研究了传统粒子算法的基本原理,以及常见的改进方法,研究信息熵和亲和度原
理,并将其用于粒子群算法中,改进其迭代前中期中“早熟”问题;
(4)研究了 web 自动化测试
框架 selenium 的原理及其编码。
本文的主要工作如下:
(1)提出了一种基于推理的约束条件生成方法,通过本体推理得出
的多无人机任务分配系统中所有的元素关系,并对其中的关系进行总结归纳,结合约束关系中
因素的具体取值,生成需要覆盖的组合集;
(2)提出了一种基于组合优先级度量函数,对需要
覆盖的组合集中的组合进行优先级度量,为生成测试用例做准备;
(3)提出了一种基于信息熵
改进的粒子群生成测试用例的方法,以粒子能够覆盖组合集中组合的个数作为评价粒子好坏的
标准,生成多无人机任务分配系统的测试用例集;
(4)搭建了一个在线进行自动化测试的平台,
通过页面输入的参数,对多无人机任务分配系统进行自动化测试。
实验结果表明:该推理方法能成功推理出待测模块中的隐含关系,并将其中的关系转换成

56
南京邮电大学硕士研究生学位论文 第六章 总结与展望

约束关系,并利用改进的粒子群算法生成测试用例集,该粒子群算法与为改进的粒子群算法相
比,在生成的测试用例数量数量上取得了不错的效果。在线测试页面能够根据输入的参数进行
自动化测试,并可以在测试页面查看测试报告和测试过程中的截图。

未来与展望

本文也存在着一些不足:
(1)本文的任务执行要求略简单,可以根据无人机的具备的要求,
再深入考虑任务执行的其他要求,然后再自定义推理规则,对本体进行推理。
(2)本文提出的
生成测试用例的算法没有考虑不同覆盖要求的问题,且算法的性能还有进一步提升的空间;
(3)
本文搭建的测试页面提供的功能不全面,可以增加本体查询接口,提供在线查询操作以及测试
用例生成功能。
未来的研究方向有两个:
(1)对任务的执行要求进行扩充,增加任务执行难度;
(2)由于
粒子群算法易“早熟”,求解精度不够的问题,本文只针对“早熟”问题结合其他算法的思想进行
改进,在未来的工作中,可以将其他算法的思想用于与粒子群算法进行改进;
(3)对测试页面
的功能进行完善,尽可能将整个测试流程的工作都可以进行在线操作。

57
南京邮电大学硕士研究生学位论文 参考文献

参考文献

[1] Gelperin D, Hetzel B. The growth of software testing[J]. Communications of the ACM, 1988, 31(6):687-695.
[2] 聂长海. 组合测试研究进展[J].中国科技论文,2017,12(20):2391-2400.
[3] 聂长海. 关于软件测试的几点思考[J].计算机科学,2011,38(02):13-27.
[4] 吴化尧. 组合测试方法及其有效性研究[D].南京大学,2018.
[5] 桂明明. 基于扩展UML的软件可靠性测试模型构建方法研究[D].杭州电子科技大学,2016.
[6] 鹿 钰 若 , 王 峰 , 邓 波 . 一 种 组 合 的 Web 应 用 测 试 建 模 方 法 [J]. 解 放 军 理 工 大 学 学 报 ( 自 然 科 学
版),2013,14(06):617-622.
[7] 封亮,吴振宇. 软件系统测试中的场景建模技术应用[J].上海信息化,2013(09):50-53.
[8] 艾 华 , 宋 晓 秋 , 安 恒 . 简 单 循 环 约 减 三 三 组 合 测 试 用 例 生 成 方 法 [J]. 计 算 机 工 程 与 设
计,2018,39(12):3728-3733.
[9] 徐 鹏 ,刘 嘉 勇 ,林 波 , 孙 慧 颖 ,雷 斌 . 基 于 循 环 神 经 网 络 的 模 糊 测 试 用例 生 成 [J/OL].计 算 机 应 用 研
究,2019(10):1-3[2019-04-09].http://kns.cnki.net/kcms/detail/51.1196.TP.20180619.1517.062.html.
[10] 孙瑶. 基于UML活动图模型的测试用例自动生成方法的研究及实现[D].北京交通大学,2018.
[11] 李广林. 基于组合测试的故障定位方法研究[D].南京邮电大学,2017.
[12] 张雨. 基于组合覆盖测试的故障定位方法研究[D].哈尔滨工业大学,2018.
[13] 贾利娟. 基于正交表的条件组合覆盖方法的改进[J].电子技术与软件工程,2017(10):58-59.
[14] 李志浩. 嵌入式系统自动化测试平台研制[D].哈尔滨工业大学,2018.
[15] 邹明. 组合测试用例生成技术研究[D].重庆大学,2012.
[16] Sherwood G B, Martirosyan S S, Colbourn C J. Covering arrays of higher strength from permutation
vectors[J]. Journal of Combinatorial Designs, 2010, 14(3):202-213.
[17] Cohen D M , Dalal S R , Fredman M L , et al. The AETG System: An Approach to Testing Based on
Combinatorial Design[J]. IEEE Transactions on Software Engineering, 1997, 23(7):437-444.
[18] Tung Y W . Automating test case generation for the new generation missionsoftware system[C]// Proc. IEEE
Aerospace Conference, 2000. 2000.
[19] Colbourn C J,Cohen M B, Shi J F. A Deterministic Density Algorithm for Pairwise interaction Coverage
[C]//Proceedings of the IASTED International Conference on Software Engineering,2004:242-252.
[20] 杨亚娟. 基于改进粒子群的组合测试用例生成技术研究[D].浙江理工大学,2017.
[21] 张春蕾. 基于改进粒子群算法的软件测试用例生成方法研究[D].大连交通大学,2014.
[22] 潘烁,王曙燕,王欢. 基于改进粒子群算法的组合测试数据生成[J].西安邮电学院学报,2012,17(03):48-52.
[23] 罗思放. 基于改进粒子群算法的嵌入式软件测试用例自动生成技术[D].浙江大学,2017.
[24] 黄平. 粒子群算法改进及其在电力系统的应用[D].华南理工大学,2012.
[25] 董晓. 基于免疫粒子群算法的火电机组组合优化问题研究[D].华北电力大学,2012.
[26] 张雁. 基于禁忌粒子群算法的多目标背包问题研究[D].湖南师范大学,2012.
[27] 刘 敏 , 周 卫 星 ,陈 思 ,周 亮 .基 于 selenium 自 动 化 测 试 框 架 的 改 进 与 应 用 [J]. 电 信 工 程 技 术 与 标 准
化,2019,32(01):78-82.
[28] 姜文,刘立康. 基于Selenium的Web软件自动化测试[J].计算机技术与发展,2018,28(09):47-58.
[29] 曾梦凡. 组合测试中的约束[D].南京大学,2017.
[30] 王子元,徐宝文,聂长海. 组合测试用例生成技术[J].计算机科学与探索,2008,2(06):571-588.
[31] 罗文兵,赵亮. 组合测试技术与方法详解[J].软件和信息服务,2010(07):78-79.
[32] 王晋. 基于领域本体的专利地图研究[D].苏州大学,2011.
[33] 胡冉华. 基于本体的商业银行知识管理系统的研究与开发[D].湖南大学,2013.

58
南京邮电大学硕士研究生学位论文 参考文献

[34] 丁明伟. 基于OWL-S的语义化Web服务检索模型研究[D].重庆大学,2010.


[35] 侯天祝. 本体推理中组合推理机制的研究[D].西南交通大学,2016.
[36] 刘郑博. 基于车联网的情境感知服务系统设计与实现[D].北京邮电大学,2017.
[37] 谢俊. 电力系统异构应用信息共享和互操作理论与方法研究[D].华中科技大学,2008.
[38] 杨学明. 基于本体的数字校园系统语义化研究与设计[D].国防科学技术大学,2005.
[39] 徐彩娜. 基于本体推理的Web服务匹配研究[D].中国海洋大学,2007.
[40] 游宇. 基于本体的科技资源搜索引擎设计与实现[D].复旦大学,2008.
[41] 王昌龙. 基于描述逻辑的大规模本体推理关键技术研究[D].天津大学,2017.
[42] 向阳,王敏,马强. 基于Jena的本体构建方法研究[J].计算机工程,2007(14):59-61.
[43] 王晓慧. 本体的查询与推理及其在军事领域中的应用研究[D].重庆大学,201249
[44] Khan J A, Kumar S. OWL, RDF, RDFS inference derivation using Jena semantic framework & pellet
reasoner[C]// International Conference on Advances in Engineering & Technology Research. 2015.
[45] 吴利群. 基于语义web服务的软件可信性计算方法研究[D].浙江工业大学,2014.
[46] 贺滢. 基于改进PSO算法的测试用例自动生成方法研究[D].长沙理工大学,2015.
[47] 潘少伟,梁鸿军,李良,王家华. 改进PSO-BP神经网络对储层参数的动态预测研究[J].计算机工程与应
用,2014,50(10):52-56.
[48] 张春蕾. 基于改进粒子群算法的软件测试用例生成方法研究[D].大连交通大学,2014.
[49] 孙越泓. 基于粒子群优化算法的图像分割研究[D].南京理工大学,2010.
[50] 苗爱敏. 基于动态特征的粒子群优化算法研究[D].云南大学,2010.
[51] 尚家川. 基于遗传算法、粒子群算法和人工神经网络的RFID标签天线优化方法的研究[D].北京邮电大
学,2011.
[52] 林耿. 混合遗传模拟退火算法求解背包问题[J].河南工程学院学报(自然科学版),2012,24(03):66-69.
[53] 张桢宇. 基于GA和PSO的RFID室内定位算法研究[D].电子科技大学,2014.
[54] Abdilahi A M,Mustafa M W,Jamian J J,Usman J. Empirical study of particle swarm optimization for
economic load dispatch with valve-point effects[P]. Power Engineering and Optimization Conference
(PEOCO), 2014 IEEE 8th International,2014.
[55] 黄 轩 , 张 军 , 詹 志 辉 . 基 于 随 机 惯 量 权 重 的 快 速 粒 子 群 优 化 算 法 [J]. 计 算 机 工 程 与 设
计,2009,30(03):647-650+663.
[56] 王荣存. 基于相似性的回归测试用例约简与优先排序方法研究田[D].华中科技大学,2015.
[57] 高鹰,谢胜利. 免疫粒子群优化算法[J].计算机工程与应用,2004(06):4-6+33.
[58] Schroeder P J , Korel B . Black-box test reduction using input-output analysis[C]// Proceedings of the 2000
ACM SIGSOFT international symposium on Software testing and analysis. ACM, 2000.
[59] 王子元,钱巨,陈林,徐宝文. 基于One-test-at-a-time策略的可变力度组合测试用例生成方法[J].计算机学
报,2012,35(12):2541-2552.
[60] 程晓菊. 测试用例集约简技术研究[D].湖南大学,2011.

59
南京邮电大学硕士研究生学位论文 附录 1 攻读硕士学位期间申请的专利

附录 1 攻读硕士学位期间申请的专利

[1] 张迎周、孙仪、张灿,《一种基于 RDF 推理的测试用例约简的方法》,201711454568.0,


2017.12.28;
[2] 张 迎 周 、 孙 仪 、 高 扬 ,《 一 种 基 于 信 息 熵 粒 子 群 算 法 的 测 试 用 例 生 成 方 法 》,
201810465966.0,2018.05.05。

60
南京邮电大学硕士研究生学位论文 附录 2 攻读硕士学位期间参加的科研项目

附录 2 攻读硕士学位期间参加的科研项目

(1)基于***研究,国防科技项目,2017 年 8 月至 2018 年 7 月;

61
南京邮电大学硕士研究生学位论文 致谢

致谢

三年的研究生生活即将结束,在毕业论文完成之时,不得不感慨时间如白驹过隙,我在南
京邮电大学度过了人生重要的七年,体验了不同校区的魅力,度过了人生中既美好又充实的日
子,也完成了从本科生到研究生的转变。在这三年里,发生了很多愉快又难忘事情,留下了许
多珍贵的回忆。最感谢的就是遇到了我的导师张迎周教授以及师门的人,在这里我不仅开拓了
视野,也学到了很多知识,遇到很多志同道合的人,收获知识的同时也收获了友情。深刻的领
悟到了什么是科研和学术,也明白了做人做事要细心,持之以恒,脚踏实地,遇事要冷静,这
对即将走向工作岗位的我来说受益匪浅。
首先最感谢的就是我的导师张迎周教授,在研究生期间,老师一直悉心教导,在科研的路
上一直引导我,在张老师的帮助下明确了研究方向,并进行深入研究。本文是在老师的指导下
完成的,从开题报告,到论文的最终定稿,张老师给予了很多帮助,使得我对本体推理,粒子
群算法以及组合测试有了更深入理解和研究。张老师不仅在学术上给了我很大帮助,也锻炼了
我的动手实践能力,也让我早早的明确工作方向,从实践和理论两个方面做了充分的准备。张
老师为人谦和,以身作则,严格要求自己,对待学术更是有着精益求精,一丝不苟的品质,更
是让我明白,一定要严格要求自己,要脚踏实地,保持谦逊的态度。其次要感谢大师们的另外
三位老师,分别是张卫丰老师,王子元老师和周国强老师,研一的时候,有幸选修了张老师和
周老师的课,两位老师对学生很有耐心,热心解答我们的疑惑,学到了很多新知识;在准备论
文实验时,遇到了问题去请教王老师,王老师不仅解答了我的疑惑,还从他的角度,对我的实
验提出了建议,并给了相关的学习资料,非常感谢王老师的帮助。
其次要感谢的就是师兄师姐们,不论从科研还是生活,都给了我很多建议和指导,大家团
结友爱,互帮互助,让我感受到了师门的意义。在这里非常感谢我的各位同门们,以及我的师
弟师妹们,还要感谢我的舍友们,以及三年中认识的每一位朋友,因为与大家的相遇,我的平
淡生活中,留下了很多美好的记忆。
最后非常感谢我的家人和好朋友们,谢谢他们一路以来对我的帮助,在我低沉时支持和鼓
励我,在我迷茫时开导我,他们的支持和鼓励是我前进的动力,让我能够专心学习,完成自己
的学业,希望未来的我依旧做一个、谨言慎行、认真踏实、心怀梦想的南邮人。

62

You might also like