李建波
(91404部队,河北 秦皇岛 066000)
在软件测试领域,配置项测试和系统测试都将文档审查列为一项必测的测试类型[1-3]。通过审阅文档,测试人员审查文档的完整性、一致性及准确性[4]。测试人员通常借助Word审阅功能进行文档审查[5],发现文档问题时,即在原文上进行批注,在批注规范的情况下,一条批注代表一条文档问题[6]。批注模式在文档审查时虽然方便,但审阅后文档问题的入库工作十分繁琐,不仅需要人工将文档审查过程中发现的问题从Word批注中逐条摘录入库,为了使问题描述清晰明确,还需为每条问题添加其在文档中的定位描述[7-8]。
为解决此问题,本文探索一种文档审阅批注自动导出方法,基于VSTO技术对MS Office Word进行功能扩展,新增一项插件功能,结合提出的批注筛选定位算法,实现对Word文档中批注的分类识别和自动导出,导出批注的同时为其自动生成定位描述,生成的批注描述可供测试人员在问题入库时直接粘贴复制。
Word自身也有一些实现批注批量导出的方法和技巧[9],主要有以下3种:1)对批注后的文档选择“单个文件网页”格式进行另存为,所有的批注在文末被统一列出,但仅列出了批注的作者和内容这2项信息,采用超链接跳转的方式实现批注定位;2)点击Word“审阅-审阅窗格”按钮,打开“审阅窗格”面板,面板中列出了Word文档中所有的批注,也是采用超链接跳转的方式实现批注定位;3)采用虚拟打印的方式,将打印设置中的文档属性选择为“标记列表”,打印输出的PDF文档内容实际和Word“审阅窗格”面板中的内容一致。上述3种方法虽然均能在一定程度上实现Word文档批注的列表和导出,但是导出的批注信息有限,且均不能生成批注的定位描述,不能满足文档问题入库对批注描述的定制化需求。
VSTO(Visual Studio Tools for Office)是一套用于创建自定义MS Office应用程序的Visual Studio工具包。VSTO封装了各类对象模型,提供丰富的类库供用户上层调用,并通过主互操作程序集(PIA)实现与Office应用程序的底层交互。基于VSTO用户可实现3类Office应用程序开发:插件应用程序(Add-in)、文档(Document)及文档模板(Template)。通过进行插件应用程序开发,可扩展Office应用程序的功能,实现自定义功能需求[10]。
Word应用程序的功能扩展开发主要基于Microsoft.Office.Interop.Word类库。在VSTO中,Word被抽象为一个Word对象模型,其层次结构如图1所示。Word对象模型主要包含5大对象:Application,Document,Selection,Range及Bookmark。其中,Application对象代表Word应用程序,系统中只有一个Word进程,管理着所有打开的Word文档,Application对象是Word应用程序开发的入口;Document对象代表一个Word文档,新建空文档或打开一个已有文档,系统都将创建一个Document对象,并添加到Application对象的文档列表中;Selection对象代表当前的选择区域,没有选择区域时则代表当前光标点;Range对象代表一个连续的区域,由开始字符位置和结束字符位置确定;Bookmark对象代表文档中的一个标签[11]。
图1 Word对象模型层次结构图
Word对象模型中的5大对象,既相互包含又部分重叠[12],程序开发时需要结合具体场景正确使用。Document对象作为Word文档的抽象类,其成员和方法是Word程序扩展开发的重点处理对象,可通过Document对象获得Word文档的段落列表(Paragraphs)、表列表(Tables)、批注列表(Comments)等各类重要数据,以完成相关开发。
鉴于VSTO灵活丰富的功能支持[13-16],本文基于VSTO进行Word功能扩展,实现用户自定义的批注自动导出功能,满足软件测试活动中文档审查及文档问题入库的定制化需求。
为了简化文档问题入库过程,自动生成的审阅批注描述应尽可能详细完备,便于测试人员入库时直接使用。根据这一需求,本章首先制定审阅报告模板,统一规范审阅批注导出的内容要素及描述格式。再结合文档的结构,详细介绍6类批注的定位及描述规则,并基于此给出批注筛选定位算法。
文档问题描述主要关注2项信息:问题的具体描述和问题的定位描述。因此以审阅批注形式体现的文档问题,其描述主要关注3项信息:批注选择的原文、批注的内容描述以及批注在文档中的位置信息。因此,本文制定了图2所示的审阅报告模板,该报告主要有2个列表:批注列表和统一描述列表。批注列表以表格的形式逐条描述各条批注的定位描述、原文及批注内容。批注原文和批注描述取决于审阅者,定位描述则由本文的方法构造生成。统一描述列表,将各条批注的3项信息按表中给出的描述规则进行组合描述,统一描述列表中的内容可供测试人员直接粘贴复制进行文档问题入库。
图2 文档审阅报告模板
根据GJB-438B要求,一份软件文档主要由:封面、目录(包括插图目录、表格目录)、标题、正文、图、表,以及页眉和页脚等几大要素组成[17]。根据日常实践习惯,文档审阅时,页眉和页脚一般不会添加批注,Word亦不支持此批注,封面和目录可能存在少量批注,批注主要存在于正文、标题、图和表。
在构造生成批注定位信息时,本文在Word对象模型提供的基本位置属性的基础上,进一步实现批注的筛选定位,不仅能定位批注的页码和段号信息,还可按封面、目录、正文、标题、图及表共6类情况进行分类识别。
表1 6类批注描述格式
序号位置原文批注内容1封面批注选择的原文批注内容描述2目录目录/插图目录/表格目录批注内容描述3第X页标题标题3.2.1 XXX批注内容描述4第X页图图4XXX批注内容描述5第X页表表5XXX[,单元格内容]批注内容描述6第X页第X段正文原文(仅摘录前30个字符)批注内容描述
下面详细介绍6类批注的定位规则及其在批注列表中的描述格式。如表1所示,“位置”和“原文”这2项信息的组合可辅助用户对批注进行定位,批注内容栏则记录批注的具体内容描述。
1)作用于封面的批注:本文约定目录页前所有页面上的批注,都统一视为作用于封面的批注;通过获取当前批注的页面属性,并判断其是否在目录页之前已识别封面批注;封面批注的描述格式如表1第1条所示,“位置”栏存储标签“封面”,“原文”栏存储批注选择的原文。
因为一般情况下文档目录页前的页数并不多且内容相对简单,上述存储的“位置”和“原文”这2项信息可实现批注的定位。
2)作用于目录的批注:本文约定作用于文档目录、插图目录及表格目录的批注均视为作用于目录的批注,且约定用户在目录处进行批注时,只允许批注在“目录”“插图目录”及“表格目录”目录标题上;通过识别批注原文是否为“目录”“插图目录”或“表格目录”实现识别及定位;其描述格式如表1第2条所示,“位置”栏存储标签“目录”,“原文”栏存储批注选择的原文。
3)作用于标题的批注:本文约定用户在文档各级标题上进行批注时,需要选择完整的标题内容;识别时,首先获取文档的标题列表,获得批注原文后,通过与标题列表进行比对实现识别及定位;其描述格式如表1第3条所示,“位置”栏存储标签“标题”,并添加页码定位信息,“原文”栏存储批注选择的完整标题内容。
4)作用于图的批注:由于文档中的插图均是不可编辑的,因此本文约定,用户对图标题或插图内容需要进行批注时,均批注在图标题上,且选择完整的图标题内容;识别时,首先获取文档的图标题列表,再获取批注原文,通过与图标题列表进行比对实现识别及定位;其描述格式如表1第4条所示,“位置”栏存储标签“图”,并添加页码定位信息,“原文”栏存储批注选择的图标题。
5)作用于表的批注:文档中表的批注有2种情况:一种是直接批注于表标题;另一种是批注于表单元格。表标题批注,其识别、定位和描述类似于图标题的处理。
表单元格批注,首先识别判断批注原文“是否在表格中”的属性,若是,则识别为表单元格批注,再获取单元格信息及其所属表格信息。表批注的描述格式如表1第5条所示,表标题批注,其“原文”栏仅描述表标题;表单元格批注,其“原文”栏除描述表标题外,还描述单元格内容。
6)作用于正文的批注:正文批注主要作用于正文中的段落,有以下3种情况:批注原文为段落的部分内容,批注原文为某一整个段落,批注原文为多段内容。正文批注在3种情况下都定位到段落,第一种情况定位到原文所在的段落,第三种情况定位到原文第一个段落。正文批注的描述格式如表1第6条所示,“位置”栏存储标签“正文”,并添加页码和当前页段号这2项定位信息,“原文”栏存储批注选择的原文,对于原文字符较多的情况截取前30个字符,剩余部分用“……”代替。
基于上述6类批注的定位和描述规则,下面给出批注筛选定位算法,如图3所示:1)首先构造获取原文档的几项基本信息供后续判断中使用:标题列表、图标题列表、表标题列表及目录页页码;2)获取原文档的批注列表,并遍历该列表,逐条处理每条批注:①获取批注的原文、所在页页码及“是否在表格中”的属性isInTable;②isInTable为真,则识别为表单元格批注;③若为否,则依次识别其他各类批注,并进行相应的导出处理。
基于上述导出原理,本文采用VSTO技术进行Word插件应用程序开发,实现一个“生成审阅报告”Word插件功能项。开发部署后,Word启动时自动加载该插件,如图4所示。文档审阅完毕后,点击“辅助工具-生成审阅报告”按钮,即可完成审阅报告的一键生成,按审阅报告模板导出批注。
图3 批注筛选定位算法
表2和表3分别是一份自动生成的审阅报告实例中的批注列表和统一描述列表,各条批注的描述均符合前文制定的描述规则,问题描述清晰明确。
在审查文档时,只要测试人员规范合理地选择批注原文及描述批注内容,统一描述列表中组合描述的各条文档问题,其语义亦比较合理,并且可供测试人员直接粘贴复制以完成文档问题入库。在该自动工具的辅助下,测试人员审查文档时可以将主要精力集中在文档审阅和批注描述上,无须顾虑后续的文档问题入库,对测试人员仔细审查文档能起到很大的促进作用。
图4 “生成审阅报告”Word插件功能项
基于文档审查时文档问题入库的实践需求,本文探索并实现了一种文档审阅批注自动导出方法。批注的自动批量导出解决了文档问题入库时人工逐条摘录的问题,定位描述的自动生成解决了人工添加定位描述的问题。制定的审阅报告模板规范了导出的审阅批注的内容要素及描述格式,在测试人员文档批注规范合理的情况下,生成的审阅报告中审阅批注的描述清晰明确,自动生成的“统一描述列表”中的文档问题描述可供测试人员直接粘贴复制,很大程度上简化了测试人员文档审查后文档问题的入库工作,具有较大的实践意义。
表2 审阅报告中“批注列表”实例
序号位置原文批注内容1封面文档标识文档标识项无具体内容2目录目录目录未及时更新3目录插图目录插图目录页码索引失败4目录表格目录表格目录页码索引失败,目录未更新5第10页标题1.2 系统概述建议完善丰富系统概述中系统组成部分的描述,将系统描述清楚6第10页第3段正文系统包括由YY、YY组成表述混乱,请重新组织文字7第11页图图1 XXX系统组成结构图图中文字字体太小,建议适量增加8第12页表表2XXX系统软件功能表建议将软件功能按划分的组成模块分开描述9第12页表表2 XXX系统软件功能表,ZZ功能文档和软件不一致,此功能在软件中未体现…
表3 审阅报告中“统一描述列表”实例
批注:1、封面,“文档标识”,文档标识项无具体内容;2、目录,“目录”,目录未及时更新;3、目录,“插图目录”,插图目录页码索引失败;4、目录,“表格目录”,表格目录页码索引失败,目录未更新;5、第10页标题,“1.2 系统概述”,建议完善丰富系统概述中系统组成部分的描述,将系统描述清楚;6、第10页第3段正文,“系统包括由YY、YY组成”,表述混乱,请重新组织文字;7、第11页图,“图1 XXX系统组成结构图”,图中文字字体太小,建议适量增加;8、第12页表,“表2 XXX系统软件功能表”,建议将软件功能按划分的组成模块分开描述;9、第12页表,“表2 XXX系统软件功能表,ZZ功能”,文档和软件不一致,此功能在软件中未体现;…
参考文献:
[1] Kaner C, Falk J, Nguyen H Q. 计算机软件测试[M]. 北京:机械工业出版社, 2004:11-23.
[2] Glenford J M. 软件测试的艺术[M]. 张晓明,黄琳译. 北京:机械工业出版社, 2016.
[3] 杜源. 软件测试技术的应用及其发展趋势[D]. 成都:四川大学, 2005.
[4] 杨万君,伍滨. 软件文档审查的基本要求[J]. 中国军转民, 2013(2):49-50.
[5] 邓雯,刘林霞. 批注功能在审稿流程中的应用浅析[J]. 湖北师范学院学报(自然科学版), 2016(3):214.
[6] 季超英,宋晓秋. 软件文档质量的度量方法研究[J]. 计算机工程与设计, 2007(17):4068-4071.
[7] 张巍. 软件缺陷库管理系统[D]. 长春:吉林大学, 2015.
[8] 陈艳. 软件缺陷管理技术研究与实现[D]. 成都:电子科技大学, 2014.
[9] 王国胜. Office实战技巧精粹辞典[M]. 北京:中国青年出版社, 2015.
[10] McGrath K. VSTO开发指南[M]. 李永伦译. 北京: 机械工业出版社, 2009.
[11] 刘永富. VSTO开发入门教程[M]. 北京:清华大学出版社, 2017.
[12] 陈建丽. 基于Word对象模型的Word文档编程[J]. 电脑编程技巧与维护, 2014(8):31-32,38.
[13] 张印. 基于VSTO的高校毕业论文格式化处理软件的设计与实现[D]. 北京:北京邮电大学, 2012.
[14] 张未未,吴宇峰,刘仁权,等. 基于VSTO技术的Office计时器插件的设计与实现[J]. 电子设计工程, 2016(11):31-34,37.
[15] 周顺,朱成彪,辛皓炜. 一种基于VSTO的Office操作题自动评分算法[J]. 电子制作, 2015(8):102-103.
[16] 刘艳平. 基于VSTO的Word文档格式检查插件的开发与研究[J]. 电脑知识与技术, 2016(26):106-108.
[17] 中国人民解放军总装备部. GJB 438B-2009, 军用软件开发文档通用要求[S].