标题 | 基于Java EE组合测试系统的设计与实现 |
范文 | 李瑞 徐家喜 卢迪 周涛春 摘要:在软件测试中,利用组合测试技术可以生成规模小且覆盖率高的测试用例,得以提高测试的效率和质量。在对现有的组合测试算法研究后,设计出基于Java EE的组合测试系统,该系统使用eclipse作为开发工具,选择MySQL作为数据库,结合已有的组合测试算法设计出可以实现数据建模、参数展示、测试用例覆盖表的生成、项目测试用例管理、测试用例以报表形式导入输出等功能的平台。借助这样一个系统可以使组合测试技术更加简易而有效地为人所有,并且提高测试效率。 关键词:Java EE ;组合测试;Hibernate;覆盖表;测试用例生成 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)14-0062-04 Abstract:In software testing, using Combinatorial Testing technology can generate small scale and high coverage test cases to improve the efficiency and quality of the test.After studying the Combinatorial Testing, a Combinatorial Testing System Based on Java EE was designed.With using Eclipse as tool and Mysql as database,a platform with modeling parameter ,showing parameter,generating test case coverage table,managing test project,importing or exporting data in Excel was designed.With such a system, Combinatorial Testing technology can be made easier and more effective for everyone, and testing efficiency can be improved. Key words:Java EE; Combinatorial Testing; Hibernate; coverage table; test case generation 1 背景 目前软件产品迭代的频率快速和功能的强大给软件测试带来了压力,是否具有覆盖率高的测试用例在测试中就显得尤为重要。组合测试是一种充分考虑各种因素及其相互作用的科学实用的软件测试方法,能设计一组较少的测试用例检测各种影响因素及其组合对软件产生的影响[1],是软件测试的研究热点之一。 然而并不是每一个测试人员都能掌握组合测试技术的概念和算法,为了使组合测试技术的科学理论更好地应用于实践,更加贴近于测试人员的使用,该系统使用Java EE技术,结合组合测试方法,设计出更加易于使用的组合测试系统。 通过对测试流程的了解和对组合测试的研究,将为该系统设计以下功能:SUT(Software Under Testing)建模、测试用例生成、约简以及覆盖率统计等,实现了各类数据灵活地存取,并能以报表的形式输入输出,这些功能能够满足测试人员在实际测试过程的需求。本文将对该系统的功能设计和关键技术进行阐述。 2 模块设计 由于该组合测试系统的主要面向用户是测试人员,因此,其功能主要体现在以下四个模块中:建模模块、测试用例生成模块、数据展示模块、用户管理模块。 测试人员在测试过程中会根据系统的需求设置测试数据,为了保证测试人员能够灵活的创建测试数据,該系统在建模模块设置数据建模功能和模型展示功能。数据建模功能帮助用户创建测试数据模型,模型展示功能方便用户对数据进行查看和修改操作。 测试用例生成模块需要完成获取建模数据并对数据进行标准化处理,再交由组合测试算法生成测试用例的功能。 数据展示模块的主要功能是将生成的测试用例展示给用户,并提供覆盖表约简和展示功能。 用户管理模块分为用户信息管理和用户项目管理。用户信息管理功能是用来操作用户个人信息,用户项目管理功能则是便于用户查看历史测试数据及生成的测试用例,同时提供笔记功能实现备注。该模块也包括帮助文档功能,可以帮助用户更快熟悉系统的使用。 3 相关技术 3.1 Hibernate Hibernate是一个面向Java环境的、全自动的ORM(Object Relational Mapping,对象关系映射)框架,它对JDBC(Java DataBase Connectivity,java数据库连接)进行了非常轻量级的对象封装,将实体类与数据库表建立映射关系[2],Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以使用对象编程思维来操纵数据库。该系统中使用Hibernate来实现数据持久化。 3.2 Highcharts Highcharts 是一个用纯Java脚本编写的一个图表库,它能够简单便捷的在Web网站或是web应用程序中添加有交互性的图表,具有兼容性高、轻量、动态等多种特性[3]。他可以在支持多种图表类型:曲线图、直线图、饼图等,该系统在对生成的测试用例进行覆盖表展示时使用了Highcharts的直线图类型。在使用前需要引入jQuery和Highcharts 库,然后为该图表配置标题、X轴数据、Y轴数据等。 4 系统核心功能实现 组合测试系统的核心流程是获取参数、根据参数生成测试用例、展示结果,这部分流程主要由SUT建模功能、测试用例生成功能、结果展示功能完成,下面对这关键的三部分功能进行阐述。 4.1 SUT建模功能 该功能集中于对SUT参数的分析录入以及维度的选取,在建模页面上(如图2),按照图3展示的流程对测试数据进行建模: 建模部分的实现步骤分为三步: 1)读取数据:获取用户在Web页面输入的数据; 2)数据分析:对SUT进行分析,确定参数个数以及参数取值,该过程使用正则表达式和Javascript技术对用户输入多个参数进行校验,确保参数的正确性,关键代码如下: var n = document.getElementById("inName").value; var v = document.getElementById("inValue").value; v = v.replace(/\s+/g,""); var arrv = v.split(","); for (var i = 0; i < arrv.length; i++) { if (arrv[i] == "") { alert("输入不能为空"); return false;}} 在上述JavaScript代码中,先获取输入的参数名和参数值,“/\s+/g”这句使用正则表达式,作用是获取全局中所有空格,然后使用JavaScript的replace()方法将参数值中的空格全部去除,去除空格后以“,”为分隔符将参数值放到数组中,再判断该数组中是否存在空值。 3)建立模型:输入的参数经过处理后显示在“参数展示表”中,“修改”按钮和“删除”按钮分别提供对参数的修改和删除操作。确认参数以后,将数据传到后台服务器相应的数据表中。 4.2 测试用例生成功能 该系统提供多种算法生成测试用例,用户依据已建立的参数模型,选择相应的算法生成测试用例。生成的测试用例在Web页面展示(如图4)的同时也被存储到数据库中。用户还可以对无效测试用例进行约减。比如:粒子群算法(PSO)生成组合测试用例,算法的关键伪代码如下[4]: 其中it表示当前的迭代次数,it_max是一个预先设定的最大上限值,输入内容为参数个数n,各参数取值v,待覆盖组合S,输出内容为测试用例gBest: it = 0,gBest = NULL for (每个粒子 pi) 随机初始化位置 xi 和速度 vi while (it < it_max) for(每个粒子pi) 计算适应值 fitness(pi) if(fitness(pi) = = C(n,t)) return pi 種群中具有最大适应值的粒子作为 gBest;粒子 i 的历史最优位置作为 pBesti for (每个粒子 pi) 更新粒子的速度和位置;最大速度和边界处理 it++ return gBest 该系统中调用PSO算法的核心代码如下: SUT sut = null; String raw = (String) session.get("rawData"); int way = Integer.parseInt((String) session.get("tway")); sut = new SUT(raw, way); sut.FormatData(); ArrayList ALG.FormatData(); StandardPSO pso = new StandardPSO(sut.getPara_num(),sut.getVal_num(), sut.getTway(), ALG.pso_config); pso.PSOEvolve(); 上述代码中首先新建SUT对象,然后将从session中获取的参数和覆盖维度放入SUT对象中进行实例化操作。获取的参数是将建模中的参数模型经过格式处理后的String类型值,这个值里面包括多组由参数名、参数个数、参数值组成的数据,每组数据之间用分号进行分隔。再实例化之后的SUT对象作为参数对StandardPSO对象进行实例化,最后调用StandardPSO对象的PSOEvolve()方法对最初的参数模型利用组合测试算法生成测试用例。 下面是用电子商务系统做了一个例举,该系统的状态受到5个参数的影响,前三个参数有两个不同取值,后两个参数有两个不同取值,如表1所示[4]: 首先将表1中的参数通过该组合测试系统的建模功能进行建模并传送到系统后台,经过PSO算法生成的测试用例再传到Web页面进行展示,该页面展示内容分为四部分:测试用例集展示、算法信息展示、测试结果及分析,其中测试用例集展示如图4所示,图中的p1,p2,p3等类似表示参数的默认名,括号中的数字代表该参数的取值个数: 4.3 结果展示模块 结果展示模块是用来展示生成的测试用例及其相关内容。测试用例经过后台处理后会以列表的形式显示在页面上,用户可以查看所有生成的测试用例。在该页面会提供三个功能按钮。 1)“排除组合”按钮可以跳转至参数列表来进行排除参数的操作。 2)“更换视图”按钮可以在使用默认参数名列表和自定义参数名列表之间来回切换视图。 3)“评估”按钮会显示测试用例覆盖率折线图,如图5所示:
在上图中,图表的横轴表示测试用例覆盖数,纵轴表示覆盖率,图中的一条折线表示在某一维度下,覆盖率与覆盖数的关系。不同维度的折线图在同一张图表中会用不同颜色进行区分。 这里的覆盖率折线图的实现使用了Highcharts插件,将后台计算出的数据传到前台,使用该插件并结合JavaScript将数据用图表的形式进行展示。生成覆盖表的关键代码如下: $('#container').highcharts({ chart: {type: 'line'}, title: {text: '各维度下覆盖率' }, xAxis: {categories:a3}, yAxis: {title: { text: '覆盖率%' } }, yAxis: {tickPositions: [0,0.25,0.5,0.75,1]}, tooltip: {shared: true}, series: [{name: '维度为<%=way%>',data:a2}] }); 首先设置图表的类型为直线图,然后设置图表的标题为“各维度下覆盖率”,接着设置图表的X轴与Y轴和图表要展示的数据。 5 结束语 基于JavaEE的组合测试系统使用Hibernate实现对数据的增删改查,利用组合测试算法生成数量小且覆盖率高的测试用例,并借助Highcharts生成测试用例覆盖表。该系统能够实现从建模到测试用例生成并展示测试用例覆盖表的完整操作,帮助测试人员更便捷地使用了组合测试技术生成测试用例的方法。该组合测试系统的操作简单易懂,满足了可用性和易用性原则。借助该系统,可以提高测试的效率和质量,为测试人员节省时间成本。该系统在开发过程中关注于功能实现,没有完善用户体验,所以会存在一些不合理的设计,且有小部分功能暂未开发,但保留了接口,后期会对这些地方进行改进。 参考文献: [1] 聂长海. 组合测试研究进展[J]. 中国科技论文, 2017, 12(20): 2391-2400. [2] 欧阳宏基, 葛萌. 基于Struts2与Hibernate框架的Java Web应用研究[J]. 自动化技术与应用, 2016(2): 48-52. [3] 张建军, 刘虎, 倪芳英. 基于SSH和Highcharts整合结构的Web应用研究[J]. 计算机技术与发展, 2013(9): 245-247. [4] 吴化尧, 聂长海. 覆盖表生成的粒子群算法:参数优化和自适应算法[J]. 小型微型计算机系统, 2012, 33(10): 2259-2267. [5] 周晓宇, 聂长海, 徐宝文, 等. 两两组合覆盖测试数据自动生成集成工具的设计与实现[J]. 计算机科学, 2005(1): 118-119, 154. [6] 王子元, 聂长海, 徐宝文, 等. 相邻因素组合测试用例集的最优生成方法[J]. 计算机学报, 2007(2): 200-211. [7] 赵亮, 王建民, 孙家广. 一种J2EE服务器端软件测试用例的復用框架研究[J]. 小型微型计算机系统, 2006, 27(4): 663-667. [8] 肖德芳, 刘卓. 基于JavaWeb的科研项目管理系统的设计与实现[J]. 电脑知识与技术, 2017(27): 69-70. [9] 郝平. 基于Java EE的学生社团管理系统的设计与实现[J]. 信息与电脑, 2018(3): 103-104, 10. [10] 耿壮. 基于JavaEE的信息管理系统设计与实现[J]. 电脑知识与技术, 2012(23): 5523-5524. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。