基于银行关键字的Lucene测试用例检索系统
郭超年
(福建省农村信用社联合社 科技服务中心,福建 福州 350001)
摘 要:组织级测试用例管理是银行测试资产管理的重要环节,而在大量测试用例中进行关键字快速检索对测试人员具有重要意义。大多数银行引入惠普测试管理软件进行测试用例的垂直式管理,这对于单项目的建设有利,但对于全行级的案例归档与检索不利甚至无法实现。因此,提出了基于一般测试管理软件和Lucene框架规范,实现了对测试用例的批量抽取、规则化、存储及检索的实现方案,并与普通数据库检索进行了实验对比。实验结果表明,基于Lucene的关键字检索的时效高于普通数据库检索。
关键词:测试用例;检索;Lucene;Java;银行关键字
中图分类号:TP3 文献标识码:A 文章编号:1003-9767(2017)08-140-04
Lucene Test Case Searching System based on Banking Keywords
Guo Chaonian
(Science and Technology Service Center, Fujian Rural Credit Union, Fujian Fuzhou 350001, China) Abstract: Organizational test case management is an important part of a bank’s management of testing assets, and quick keyword searching in large amounts of cases is of great significant for the testers. Most banks use the HP testing management software to manage their testing assets, which is a top-down and efficient way for a single project; however, it is difficult and sometimes even impossible to archive and search test cases across all the projects of a particular bank. Aiming at the problem, in this paper, based on normal testing management software and the Lucene framework, we propose a way to extract, normalize, store and search the test cases. According to experimental comparison, the speed of the Lucene test case searching is also faster as compared to that of a normal database search.
Key words: test case; searching; lucene; java; banking keywords
1 引言
测试资产管理是测试体系建设中的重要一环,而测试用例是一项重要的测试资产。QC[1]是测试用例管理使用最为广泛的平台[2],能很好地满足单项目的测试管理需求。但是,QC无法完成跨项目的测试管理,尤其是无法完成大量测试用例的统一归档和搜索。在银行的测试管理中,测试人员往往有这
样的需求:根据银行关键字搜索相关测试用例,这些测试用例分散在哪些业务系统,以便其完成相关测试用例查询、测试覆盖和影响范围分析。
Lucene[3]是Apache软件基金会支持的、由Java语言编写的开源项目。很多系统引入Lucene作为全文检索的核心,并加以改进和应用,如各行业应用[4-6]、影像媒体检索[7]、全文检索技术研究[8-12]以及Web应用[13-16]等。本文引入一种基于Lucene的测试用例搜索平台,为测试人员提供跨业务系统的测试用例搜索服务,较好地支持全业务系统测试用例的关键字搜索。cf英雄
本文后续部分的结构如下:第2节简要介绍银行关键字及测试用例等基本概念;第3节详细阐述系统结构、设计与实现;第4节结合大量测试用例的搜索,与传统数据库搜索进行比较分析,验证系统优势;第5节为结语。
word参考文献标注2 银行关键字及测试用例等概念
基于客户资金和信息安全的高保密性,银行对软件的质量要求较高。银行是经营货币的金融机构,这一属性使其系统软件的测试具有一定的专有性,体现为测试关键字,如图1所示,为信用社业务关键字的一种分类。银行系统的测试离不开关键字,对测试用例的描述也常常依据这些关键字进
作者简介:郭超年(1984-),男,福建龙岩人,硕士研究生,中级工程师。研究方向:质量管理、密码学与信息安全。
行分类,以便测试资产分类归档和检阅。
图1 银行关键字分类
测试用例是为了某个特殊目标而编制的一组测试输入、执行步骤以及预期结果,以便测试某个程序或核实是否满足某个需求。测试用例包括测试目的、用例名称、用例描述、前置条件、测试步骤及预期结果等字段,表1为测试用例的片段。测试人员将通过在这些字段中搜索关键字等方式,快速查询相关测试用例,以便进一步测试用例的分析和相关系统的影响分析。
表1 测试用例片段
用例名称
步骤步骤描述预期结果异常流程-验证账号下已有卡时按账号开有折卡
失败
1输入正确文件名称、选择开户类型有折卡输入成功
2
选择卡种类:1126选择成功,卡种类显示为1126-XXX-复合卡
3优先选择已有卡号:
XXX 输入成功4输入代理人证件类型、代理人证件号码回显代理人姓名5
输入建立代理关系:1否,
回车提交
批量开户失败
3 系统设计与实现分析
适合天气冷发的朋友圈带图片基于前文对银行关键字的分析及测试用例概念及字段的分析,该节详细分析该系统架构,并描述系统索引构建过程和检索查询过程。3.1 系统架构
该系统结构如图2所示,分为展现、控制、业务逻辑和数据存储几个层次,包含检索核心、原始数据、规则化数据等模块。系统基于Java Spring 框架,应用了Lucene 的analysis 、index 、search 三个核心模块
[17]
及queryParser 、
document 和store 相关模块。其中,analysis 模块完成切分词,index 模块提供库的读写接口,search 模块提供主要的检索接口。核心检索模块分为数据抽取、查询引擎、文本分析和创建索引模块。原始数据为测试管理平台QC 的数据库。规则化数据为经过测试用例域定义后入库的规则化数据和索引化后的索引文件。四大名绣是指
图2 测试用例搜索系统结构
3.2 数据抽取
在QC 系统中,对评审完成后的测试用例进行基线化,并根据入库测试用例的结构六元组(测试用例序号,测试用例名称,被测系统名称,模块名称,功能名称,用例描述)构造一个Document 文档对象,类似关系型数据库的记录行,七元组的每个元素相当于关系型数据库的每一列。定义好文档对象后,从QC 原始数据库定期调度批量抽取作业,抽取QC 测试计划里所有基线版本的测试用例,构建成规则化的测试用例数据,存储到数据库中作入库。3.3 索引构建
入库完成后,对规则化后的测试用例的“测试用例名称”“被测系统名称”“模块名称”“功能名称”4个重要域进行分词,同时存储主键“测试用例序号”和用例的详细描述“用例描述”字段,并对六元组的所有域进行索引。具体地,通过Index 插入到索引库中。
添加索引库的代码片段如下:
Directory dir = new SimpleFSDirectory(new File(FTPUtil.LUCENE_PATH));
IndexWriter writer=newIndexWriter(dir, newStandardAnalyzer (Version.LUCENE_30), !exist, IndexWriter.MaxFieldLength.LIMITED);
Document doc = newDocument();
doc.add(new Field(ID, TcId(), Field.Store.YES,Field.Index.NOT_ANALYZED)); //测试用例序号doc.add(new Field(TC_TITLE, TcTitle(),Field.Store.NO,
Field.Index.ANALYZED)); //测试用例名称
doc.add(new Field(TC_TEST_SYSTEM, TcTestSystem (), Field.Store.NO,
Field.Index.ANALYZED)); //被测系统名称
doc.add(new Field(TC_MODULE_NAME, TcModuleName(), Field.Store.NO,
Field.Index.ANALYZED)); //模块名称
doc.add(new Field(TC_FUNCTION_NAME, TcFunction Name(), Field.Store.NO,
Field.Index.ANALYZED)); //功能名称
doc.add(new Field(ALL_CONTENT, disposeData(test), Field.Store.YES,
Field.Index.NOT_ANALYZED)); //用例描述
writer.addDocument(doc);
3.4 索引查询
在构建完成索引库后,需构建一个测试人员查询入口。测试人员根据测试需要输入各种关键字,系统返回相关查询结果。查询结果包含(测试用例序号,测试用例名称,被测系统名称,模块名称,功能名称,用例描述)六元组序列,并将这些结果分页显示。当用户点击某一行查询结果时,系统展示测试用例具体信息。
检索的实现主要基于Lucene的IndexSearcher、MultiField QueryParser、TopDocs类。IndexSeacher为索引搜索器,根据索引文件存储目录实例化。MultiFieldQueryParser是查询解释器,负责解析用户提交的查询关键字,根据查询域以及关键字建立查询对象。TopDocs是一系列排好序的查询结果的集
合,元素是Documents。IndexSearcher的search方法以MultiFieldQueryParser解释器对象为参数执行索引的检索,最后通过Document的get方法获取查询返回的测试用例内容。
检索索引库的代码片段如下:
如何查询四级准考证Directory dir = newSimpleFSDirectory(new File(path));
Searcher searcher = newIndexSearcher(dir);
Analyzer analyzer = newStandardAnalyzer(Version. LUCENE_30);
Query query = MultiFieldQueryParser.parse(Version. LUCENE_30, queryString,QUERY_FIELD, QUERY_FLAGS, analyzer);
TopDocs docs = searcher.search(query, first + max);
for(inti=0; i<docs.length();i++){
Document doc = docs.doc(i);
id = (“ID”);
title = (“TC_TITLE”);
tc_system = (“TC_TEST_SYSTEM”);
module_name = (“TC_MODULE_NAME”);
function_name =
<(“TC_FUNCTION_NAME”);
content = (“ALL_CONTENT”);
…
}
4 平台搜索结果比较和分析
目前,平台完成了10万多个测试用例的积累,并进行了6个常用主题关键字的搜索实验对比。针对这些关键字的搜索结果和记录数,如表2、图3所示,“贷款”“柜员”“中间业务”“凭证”“有效证件”“内部账”等关键字,Lucene的搜索平均时间为237 ms,SQL的平均搜索结果为1 066 ms。根据结果可知,基于L
ucene的关键字搜索比SQL 搜索在目前10万多条记录的库中快了近4.5倍,实现了快速搜索的目的。
表2 Lucene与SQL
搜索结果
关键字贷款柜员中间业务凭证有效证件内部帐Lucene328250187266188203
SQL 1 012 1 245956 1 190990 1 007
记录数 2 612 3 47540 2 365122413
图3 Lucene和SQL关键字搜索结果对比
5 结 语
通过对QC各项目测试用例的抽取、规则化转换、存储和Lucene搜索,该平台实现了测试用例积累和快速查询,为测试人员的查阅和学习提供了良好平台。后续,随着信息系统的建设和测试用例数量的增加,规则化的用例库将形成大数据。彼时,Lucene在大数据搜索中的优势将更明显,也将根据目前的搜索进行深度优化,以适应大数据及测试人员个性化搜索的需求。
参考文献
[1]惠普公司.Quality Center质量中心即测试管理平台[EB/OL].[2017-03-16].www.hp.
[2]IDC.2012年测试软件市场占有率分析报告[EB/OL]. [2017-03-17].www.idc.
[3]Lucene.Apache Lucene Core[EB/OL].[2017-03-19]. /java/docs/index.html.
[4]夏天,黄文,马骏涛,等.Lucene全文检索软件及其在学科
(下转第145页)
此外,它功能全面,在众中拥有较高的可信度。经济效益面前,它不仅提高了部分企业的收益,也大大促进了国家经济建设的发展。
本系统不仅结构层次合理,还具有良好的可读性,适用简单,且编码字典的联机使得汉字输入栏更为方便快捷。
由于此系统应用了代码、数据接口标准化、程序通用化、输出打印规范化等技术,所以兼容性能非常可观,系统运行安全、保险,可以全国范围使用。
4 结 语
在经济发展的时代,交通先行是重点。此系统融入高端科技,充分发挥了计算机网络系统的作用,大大提高了企业收益,也促进了国家经济的快步发展。
参考文献
[1]庞春辉.基于Web企业管理系统的设计[D].大连:大连理工大学,2008.
[2]潘凯华,邹天思.PHP开发实战宝典[M].北京:清华大学出版社,2010.
[3]邹天思,孙鹏.PHP从入门到精通[M].北京:清华大学出版社,2008.
[4]卜佳旭.基于MVC模式企业信息管理系统设计与实现[D].大连:大连理工大学,2008.
[5]刘高原,张国平.基于MVC模式的WEB管理系统的实现[J].华东交通大学学报,2006,23(1):87-90.
(上接第142页)
信息服务平台中的应用[J].图书馆情报工作,2011,5(21):106-109.
[5]黄奎,朱兴动.基于Lucene的ITEM系统检索器的设计与实现[J].微计算机信息,2011,27(12):88-89.
[6]黄江平,黄里灿,徐玲.基于Lucene的PDF文档的全文检索的实现[J].工业控制计算机,2012,25(5):103.
[7]姜鑫,余平.基于Lucene的音视频资源检索系统的研究与实现[J].计算机应用与软件,2011,28(11):245-248.
[8]郑榕增,林世平.基于Lucene的中文倒排索引技术的研究[J].计算机技术与发展,2010,20(3):80.
[9]彭焕峰.基于Lucene的中文分词器的设计与实现[J].微型机与应用,2011,30(18):62-64.
[10]吴代文,杨文琦.Lucene在数据库全文检索中的性能研究[J].计算机工程,2012,38(22):279-282.
[11]冯汝伟,谢强,丁秋林.基于文本聚类与分布式Lucene的知识检索[J].计算机应用,2013,33(1):186-188.
[12]马健,张太红,陈燕红.中文搜索引擎分块倒排索引存储模式[J].计算机应用,2013,33(7):2031-2036.
[13]唐铁兵,陈林,祝伟华.基于Lucene的全文检索构件的研究与实现[J].计算机应用与软件,2010,27(2):197-199.
[14]丁兆贵,金敏.基于Lucene的个性化搜索引擎研究与实现[J].计算机技术与发展,2011,21(2):105-108.
雅思复议[15]王婧,王新房,基于内容的中文文本检索方法[J].计算机系统应用,2012,21(9):214-216.
[16]邹燕飞,于成尊,赵亮.基于Lucene的文本搜索引擎的设计与实现[J].计算机与现代化,2011,193(9):40-42.
[17]HATCHER E,GOSPODNETICO.Lucene in Action[M]. Shelter Island NY: Manning Publications Co.,2005.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论