国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Java EE組合測(cè)試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2018-07-12 09:37李瑞徐家喜盧迪周濤春
電腦知識(shí)與技術(shù) 2018年14期

李瑞 徐家喜 盧迪 周濤春

摘要:在軟件測(cè)試中,利用組合測(cè)試技術(shù)可以生成規(guī)模小且覆蓋率高的測(cè)試用例,得以提高測(cè)試的效率和質(zhì)量。在對(duì)現(xiàn)有的組合測(cè)試算法研究后,設(shè)計(jì)出基于Java EE的組合測(cè)試系統(tǒng),該系統(tǒng)使用eclipse作為開(kāi)發(fā)工具,選擇MySQL作為數(shù)據(jù)庫(kù),結(jié)合已有的組合測(cè)試算法設(shè)計(jì)出可以實(shí)現(xiàn)數(shù)據(jù)建模、參數(shù)展示、測(cè)試用例覆蓋表的生成、項(xiàng)目測(cè)試用例管理、測(cè)試用例以報(bào)表形式導(dǎo)入輸出等功能的平臺(tái)。借助這樣一個(gè)系統(tǒng)可以使組合測(cè)試技術(shù)更加簡(jiǎn)易而有效地為人所有,并且提高測(cè)試效率。

關(guān)鍵詞:Java EE ;組合測(cè)試;Hibernate;覆蓋表;測(cè)試用例生成

中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 背景

目前軟件產(chǎn)品迭代的頻率快速和功能的強(qiáng)大給軟件測(cè)試帶來(lái)了壓力,是否具有覆蓋率高的測(cè)試用例在測(cè)試中就顯得尤為重要。組合測(cè)試是一種充分考慮各種因素及其相互作用的科學(xué)實(shí)用的軟件測(cè)試方法,能設(shè)計(jì)一組較少的測(cè)試用例檢測(cè)各種影響因素及其組合對(duì)軟件產(chǎn)生的影響[1],是軟件測(cè)試的研究熱點(diǎn)之一。

然而并不是每一個(gè)測(cè)試人員都能掌握組合測(cè)試技術(shù)的概念和算法,為了使組合測(cè)試技術(shù)的科學(xué)理論更好地應(yīng)用于實(shí)踐,更加貼近于測(cè)試人員的使用,該系統(tǒng)使用Java EE技術(shù),結(jié)合組合測(cè)試方法,設(shè)計(jì)出更加易于使用的組合測(cè)試系統(tǒng)。

通過(guò)對(duì)測(cè)試流程的了解和對(duì)組合測(cè)試的研究,將為該系統(tǒng)設(shè)計(jì)以下功能:SUT(Software Under Testing)建模、測(cè)試用例生成、約簡(jiǎn)以及覆蓋率統(tǒng)計(jì)等,實(shí)現(xiàn)了各類(lèi)數(shù)據(jù)靈活地存取,并能以報(bào)表的形式輸入輸出,這些功能能夠滿足測(cè)試人員在實(shí)際測(cè)試過(guò)程的需求。本文將對(duì)該系統(tǒng)的功能設(shè)計(jì)和關(guān)鍵技術(shù)進(jìn)行闡述。

2 模塊設(shè)計(jì)

由于該組合測(cè)試系統(tǒng)的主要面向用戶是測(cè)試人員,因此,其功能主要體現(xiàn)在以下四個(gè)模塊中:建模模塊、測(cè)試用例生成模塊、數(shù)據(jù)展示模塊、用戶管理模塊。

測(cè)試人員在測(cè)試過(guò)程中會(huì)根據(jù)系統(tǒng)的需求設(shè)置測(cè)試數(shù)據(jù),為了保證測(cè)試人員能夠靈活的創(chuàng)建測(cè)試數(shù)據(jù),該系統(tǒng)在建模模塊設(shè)置數(shù)據(jù)建模功能和模型展示功能。數(shù)據(jù)建模功能幫助用戶創(chuàng)建測(cè)試數(shù)據(jù)模型,模型展示功能方便用戶對(duì)數(shù)據(jù)進(jìn)行查看和修改操作。

測(cè)試用例生成模塊需要完成獲取建模數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,再交由組合測(cè)試算法生成測(cè)試用例的功能。

數(shù)據(jù)展示模塊的主要功能是將生成的測(cè)試用例展示給用戶,并提供覆蓋表約簡(jiǎn)和展示功能。

用戶管理模塊分為用戶信息管理和用戶項(xiàng)目管理。用戶信息管理功能是用來(lái)操作用戶個(gè)人信息,用戶項(xiàng)目管理功能則是便于用戶查看歷史測(cè)試數(shù)據(jù)及生成的測(cè)試用例,同時(shí)提供筆記功能實(shí)現(xiàn)備注。該模塊也包括幫助文檔功能,可以幫助用戶更快熟悉系統(tǒng)的使用。

3 相關(guān)技術(shù)

3.1 Hibernate

Hibernate是一個(gè)面向Java環(huán)境的、全自動(dòng)的ORM(Object Relational Mapping,對(duì)象關(guān)系映射)框架,它對(duì)JDBC(Java DataBase Connectivity,java數(shù)據(jù)庫(kù)連接)進(jìn)行了非常輕量級(jí)的對(duì)象封裝,將實(shí)體類(lèi)與數(shù)據(jù)庫(kù)表建立映射關(guān)系[2],Hibernate可以自動(dòng)生成SQL語(yǔ)句,自動(dòng)執(zhí)行,使得Java程序員可以使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。該系統(tǒng)中使用Hibernate來(lái)實(shí)現(xiàn)數(shù)據(jù)持久化。

3.2 Highcharts

Highcharts 是一個(gè)用純Java腳本編寫(xiě)的一個(gè)圖表庫(kù),它能夠簡(jiǎn)單便捷的在Web網(wǎng)站或是web應(yīng)用程序中添加有交互性的圖表,具有兼容性高、輕量、動(dòng)態(tài)等多種特性[3]。他可以在支持多種圖表類(lèi)型:曲線圖、直線圖、餅圖等,該系統(tǒng)在對(duì)生成的測(cè)試用例進(jìn)行覆蓋表展示時(shí)使用了Highcharts的直線圖類(lèi)型。在使用前需要引入jQuery和Highcharts 庫(kù),然后為該圖表配置標(biāo)題、X軸數(shù)據(jù)、Y軸數(shù)據(jù)等。

4 系統(tǒng)核心功能實(shí)現(xiàn)

組合測(cè)試系統(tǒng)的核心流程是獲取參數(shù)、根據(jù)參數(shù)生成測(cè)試用例、展示結(jié)果,這部分流程主要由SUT建模功能、測(cè)試用例生成功能、結(jié)果展示功能完成,下面對(duì)這關(guān)鍵的三部分功能進(jìn)行闡述。

4.1 SUT建模功能

該功能集中于對(duì)SUT參數(shù)的分析錄入以及維度的選取,在建模頁(yè)面上(如圖2),按照?qǐng)D3展示的流程對(duì)測(cè)試數(shù)據(jù)進(jìn)行建模:

建模部分的實(shí)現(xiàn)步驟分為三步:

1)讀取數(shù)據(jù):獲取用戶在Web頁(yè)面輸入的數(shù)據(jù);

2)數(shù)據(jù)分析:對(duì)SUT進(jìn)行分析,確定參數(shù)個(gè)數(shù)以及參數(shù)取值,該過(guò)程使用正則表達(dá)式和Javascript技術(shù)對(duì)用戶輸入多個(gè)參數(shù)進(jìn)行校驗(yàn),確保參數(shù)的正確性,關(guān)鍵代碼如下:

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代碼中,先獲取輸入的參數(shù)名和參數(shù)值,“/\s+/g”這句使用正則表達(dá)式,作用是獲取全局中所有空格,然后使用JavaScript的replace()方法將參數(shù)值中的空格全部去除,去除空格后以“,”為分隔符將參數(shù)值放到數(shù)組中,再判斷該數(shù)組中是否存在空值。

3)建立模型:輸入的參數(shù)經(jīng)過(guò)處理后顯示在“參數(shù)展示表”中,“修改”按鈕和“刪除”按鈕分別提供對(duì)參數(shù)的修改和刪除操作。確認(rèn)參數(shù)以后,將數(shù)據(jù)傳到后臺(tái)服務(wù)器相應(yīng)的數(shù)據(jù)表中。

4.2 測(cè)試用例生成功能

該系統(tǒng)提供多種算法生成測(cè)試用例,用戶依據(jù)已建立的參數(shù)模型,選擇相應(yīng)的算法生成測(cè)試用例。生成的測(cè)試用例在Web頁(yè)面展示(如圖4)的同時(shí)也被存儲(chǔ)到數(shù)據(jù)庫(kù)中。用戶還可以對(duì)無(wú)效測(cè)試用例進(jìn)行約減。比如:粒子群算法(PSO)生成組合測(cè)試用例,算法的關(guān)鍵偽代碼如下[4]:

其中it表示當(dāng)前的迭代次數(shù),it_max是一個(gè)預(yù)先設(shè)定的最大上限值,輸入內(nèi)容為參數(shù)個(gè)數(shù)n,各參數(shù)取值v,待覆蓋組合S,輸出內(nèi)容為測(cè)試用例gBest:

it = 0,gBest = NULL

for (每個(gè)粒子 pi)

隨機(jī)初始化位置 xi 和速度 vi

while (it < it_max)

for(每個(gè)粒子pi)

計(jì)算適應(yīng)值 fitness(pi)

if(fitness(pi) = = C(n,t))

return pi

種群中具有最大適應(yīng)值的粒子作為 gBest;粒子 i 的歷史最優(yōu)位置作為 pBesti

for (每個(gè)粒子 pi)

更新粒子的速度和位置;最大速度和邊界處理

it++

return gBest

該系統(tǒng)中調(diào)用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 seed = new ArrayList();

ALG.FormatData();

StandardPSO pso = new StandardPSO(sut.getPara_num(),sut.getVal_num(), sut.getTway(), ALG.pso_config);

pso.PSOEvolve();

上述代碼中首先新建SUT對(duì)象,然后將從session中獲取的參數(shù)和覆蓋維度放入SUT對(duì)象中進(jìn)行實(shí)例化操作。獲取的參數(shù)是將建模中的參數(shù)模型經(jīng)過(guò)格式處理后的String類(lèi)型值,這個(gè)值里面包括多組由參數(shù)名、參數(shù)個(gè)數(shù)、參數(shù)值組成的數(shù)據(jù),每組數(shù)據(jù)之間用分號(hào)進(jìn)行分隔。再實(shí)例化之后的SUT對(duì)象作為參數(shù)對(duì)StandardPSO對(duì)象進(jìn)行實(shí)例化,最后調(diào)用StandardPSO對(duì)象的PSOEvolve()方法對(duì)最初的參數(shù)模型利用組合測(cè)試算法生成測(cè)試用例。

下面是用電子商務(wù)系統(tǒng)做了一個(gè)例舉,該系統(tǒng)的狀態(tài)受到5個(gè)參數(shù)的影響,前三個(gè)參數(shù)有兩個(gè)不同取值,后兩個(gè)參數(shù)有兩個(gè)不同取值,如表1所示[4]:

首先將表1中的參數(shù)通過(guò)該組合測(cè)試系統(tǒng)的建模功能進(jìn)行建模并傳送到系統(tǒng)后臺(tái),經(jīng)過(guò)PSO算法生成的測(cè)試用例再傳到Web頁(yè)面進(jìn)行展示,該頁(yè)面展示內(nèi)容分為四部分:測(cè)試用例集展示、算法信息展示、測(cè)試結(jié)果及分析,其中測(cè)試用例集展示如圖4所示,圖中的p1,p2,p3等類(lèi)似表示參數(shù)的默認(rèn)名,括號(hào)中的數(shù)字代表該參數(shù)的取值個(gè)數(shù):

4.3 結(jié)果展示模塊

結(jié)果展示模塊是用來(lái)展示生成的測(cè)試用例及其相關(guān)內(nèi)容。測(cè)試用例經(jīng)過(guò)后臺(tái)處理后會(huì)以列表的形式顯示在頁(yè)面上,用戶可以查看所有生成的測(cè)試用例。在該頁(yè)面會(huì)提供三個(gè)功能按鈕。

1)“排除組合”按鈕可以跳轉(zhuǎn)至參數(shù)列表來(lái)進(jìn)行排除參數(shù)的操作。

2)“更換視圖”按鈕可以在使用默認(rèn)參數(shù)名列表和自定義參數(shù)名列表之間來(lái)回切換視圖。

3)“評(píng)估”按鈕會(huì)顯示測(cè)試用例覆蓋率折線圖,如圖5所示:

在上圖中,圖表的橫軸表示測(cè)試用例覆蓋數(shù),縱軸表示覆蓋率,圖中的一條折線表示在某一維度下,覆蓋率與覆蓋數(shù)的關(guān)系。不同維度的折線圖在同一張圖表中會(huì)用不同顏色進(jìn)行區(qū)分。

這里的覆蓋率折線圖的實(shí)現(xiàn)使用了Highcharts插件,將后臺(tái)計(jì)算出的數(shù)據(jù)傳到前臺(tái),使用該插件并結(jié)合JavaScript將數(shù)據(jù)用圖表的形式進(jìn)行展示。生成覆蓋表的關(guān)鍵代碼如下:

$('#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}]

});

首先設(shè)置圖表的類(lèi)型為直線圖,然后設(shè)置圖表的標(biāo)題為“各維度下覆蓋率”,接著設(shè)置圖表的X軸與Y軸和圖表要展示的數(shù)據(jù)。

5 結(jié)束語(yǔ)

基于JavaEE的組合測(cè)試系統(tǒng)使用Hibernate實(shí)現(xiàn)對(duì)數(shù)據(jù)的增刪改查,利用組合測(cè)試算法生成數(shù)量小且覆蓋率高的測(cè)試用例,并借助Highcharts生成測(cè)試用例覆蓋表。該系統(tǒng)能夠?qū)崿F(xiàn)從建模到測(cè)試用例生成并展示測(cè)試用例覆蓋表的完整操作,幫助測(cè)試人員更便捷地使用了組合測(cè)試技術(shù)生成測(cè)試用例的方法。該組合測(cè)試系統(tǒng)的操作簡(jiǎn)單易懂,滿足了可用性和易用性原則。借助該系統(tǒng),可以提高測(cè)試的效率和質(zhì)量,為測(cè)試人員節(jié)省時(shí)間成本。該系統(tǒng)在開(kāi)發(fā)過(guò)程中關(guān)注于功能實(shí)現(xiàn),沒(méi)有完善用戶體驗(yàn),所以會(huì)存在一些不合理的設(shè)計(jì),且有小部分功能暫未開(kāi)發(fā),但保留了接口,后期會(huì)對(duì)這些地方進(jìn)行改進(jìn)。

參考文獻(xiàn):

[1] 聶長(zhǎng)海. 組合測(cè)試研究進(jìn)展[J]. 中國(guó)科技論文, 2017, 12(20): 2391-2400.

[2] 歐陽(yáng)宏基, 葛萌. 基于Struts2與Hibernate框架的Java Web應(yīng)用研究[J]. 自動(dòng)化技術(shù)與應(yīng)用, 2016(2): 48-52.

[3] 張建軍, 劉虎, 倪芳英. 基于SSH和Highcharts整合結(jié)構(gòu)的Web應(yīng)用研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2013(9): 245-247.

[4] 吳化堯, 聶長(zhǎng)海. 覆蓋表生成的粒子群算法:參數(shù)優(yōu)化和自適應(yīng)算法[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2012, 33(10): 2259-2267.

[5] 周曉宇, 聶長(zhǎng)海, 徐寶文, 等. 兩兩組合覆蓋測(cè)試數(shù)據(jù)自動(dòng)生成集成工具的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)科學(xué), 2005(1): 118-119, 154.

[6] 王子元, 聶長(zhǎng)海, 徐寶文, 等. 相鄰因素組合測(cè)試用例集的最優(yōu)生成方法[J]. 計(jì)算機(jī)學(xué)報(bào), 2007(2): 200-211.

[7] 趙亮, 王建民, 孫家廣. 一種J2EE服務(wù)器端軟件測(cè)試用例的復(fù)用框架研究[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2006, 27(4): 663-667.

[8] 肖德芳, 劉卓. 基于JavaWeb的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2017(27): 69-70.

[9] 郝平. 基于Java EE的學(xué)生社團(tuán)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息與電腦, 2018(3): 103-104, 10.

[10] 耿壯. 基于JavaEE的信息管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2012(23): 5523-5524.

锡林浩特市| 大化| 南澳县| 红原县| 玉溪市| 鄂州市| 彩票| 泰州市| 定日县| 长子县| 舟山市| 乡城县| 专栏| 南汇区| 慈溪市| 邛崃市| 铜梁县| 桂林市| 宜昌市| 南乐县| 平度市| 胶州市| 鸡东县| 五台县| 崇礼县| 广汉市| 双鸭山市| 格尔木市| 确山县| 泾川县| 富阳市| 罗平县| 韶关市| 长白| 宁国市| 武穴市| 罗定市| 秦安县| 嘉义县| 新龙县| 东平县|