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

?

基于蘊含關(guān)系的場景測試法路徑優(yōu)化方法研究

2015-06-15 23:15:34嚴(yán)悍等
現(xiàn)代電子技術(shù) 2015年12期
關(guān)鍵詞:斷言代價結(jié)點

嚴(yán)悍等

摘 要: 針對場景測試法中多場景切換代價優(yōu)化問題,在復(fù)合狀態(tài)分析、邏輯蘊含概念基礎(chǔ)上,從測試場景結(jié)構(gòu)分解的角度,給出狀態(tài)蘊含和場景蘊含關(guān)系的定義及推論,由場景蘊含形成場景蘊含圖SIG,然后采用圖論方法求解優(yōu)化路徑。給出系統(tǒng)化處理方法,并與其他方法比較。最后實例驗證該方法的有效性。

關(guān)鍵字: 場景測試法; 蘊含關(guān)系; 路徑優(yōu)化; 場景蘊含圖; 狀態(tài)蘊含

中圖分類號: TN911?34; TP311 文獻標(biāo)識碼: A 文章編號: 1004?373X(2015)12?0118?05

0 引 言

場景測試法[1](Scenario Test)也稱為用例測試法(Use Case Test),是一種軟件黑盒測試方法,廣泛用于復(fù)雜交互式軟件測試,尤其適用于嵌入式軟件的分布式測試。分布式測試中人員、設(shè)備和測試對象都具有特定的地理分布要求,導(dǎo)致測試場景的構(gòu)建和撤銷代價較大。如何通過減少場景數(shù)量、避免重建場景、優(yōu)化場景切換路徑來減少代價,提高測試效率,已成為一個重要且亟待解決的問題。場景測試法依據(jù)測試需求形成多個不同測試場景。測試實施中先建立場景、執(zhí)行測試用例、撤銷場景,再建下一個場景,如此循環(huán)直到完成所有場景。對于多場景執(zhí)行次序目前缺乏科學(xué)有效的定義和方法指導(dǎo)。多場景執(zhí)行次序如果選擇不當(dāng),將導(dǎo)致重復(fù)建設(shè)和浪費。當(dāng)測試失敗時往往需要重建多個場景后重測,代價更大。

Jacobson在文獻[2?3]中提出用例驅(qū)動的軟件工程思想,在此基礎(chǔ)上IBM Rational公司在RUP2000中提出場景測試法。該方法未說明多場景執(zhí)行的次序。文獻[4]采用用例行為矩陣度量場景的優(yōu)先級,通過該優(yōu)先級對多個場景進行排序和路徑合并,從而減少測試代價。文獻[5]先依據(jù)用例事件流建立事件有向樹,然后對該樹進行路徑搜索,最后合并子路徑,提高場景重用率。文獻[6]依據(jù)業(yè)務(wù)流選擇部分場景優(yōu)先測試,減少測試代價的同時保證功能可用性。以上研究大多側(cè)重于測試場景的行為特征,而忽視場景結(jié)構(gòu)特性。本文通過研究測試場景結(jié)構(gòu)、復(fù)合狀態(tài)分析、邏輯蘊含概念,通過狀態(tài)蘊含和場景蘊含關(guān)系,探索一種新思路來減少多場景切換代價。

1 測試場景的構(gòu)成與場景蘊含

首先分析場景簡單切換的問題,給出狀態(tài)蘊含和場景蘊含的關(guān)系。

1.1 測試場景的簡單切換

在一般場景測試法中,測試一個場景s1前構(gòu)建該場景,測試完成后需撤銷該場景。場景切換就是撤銷前一個場景并構(gòu)建下一個場景的過程,如圖1所示。

圖1中假設(shè)場景s1的構(gòu)建代價為b1,撤銷代價為d1,場景s2的構(gòu)建代價為b2,撤銷代價為d2,那么在由s1切換到s2時,切換代價可量化為d1+b2,由s2切換到s1時,代價為d2+b1。這種切換稱為簡單切換。這種切換可能導(dǎo)致重復(fù)構(gòu)建/撤銷。以s1切換到s2為例,如果s1中的部分對象在s2中也要使用,那么切換時就額外增加了撤銷和重建的代價。

簡單切換的好處是可在任意兩個場景之間進行切換,缺點是代價高。

將場景作為結(jié)點,簡單切換作為有向邊,切換代價作為邊權(quán)值,就可形成一個賦權(quán)有向圖,而且該圖是有向完全圖?;谠搱D選擇任何路徑都無法得到優(yōu)化,原因是簡單切換邊不能表示場景之間內(nèi)在的蘊含關(guān)系。

1.2 場景和狀態(tài)蘊含關(guān)系

定義1:測試場景。一個測試場景s是針對一個或幾個用例的測試需求,由一組語境對象組成的執(zhí)行環(huán)境,這些對象具有特定的類型、個體及其狀態(tài)的要求。場景s的語境對象的集合記為c(s)。

圖2表示測試場景中的語境對象的性質(zhì)。

圖2 測試場景的構(gòu)成

圖2中一個測試場景包含一個或多個語境對象,而且每個語境對象都具有類型、個體及其狀態(tài)的限定。語境對象按類別可劃分為:測試人員、測試設(shè)備、測試對象。其中,測試對象可能是一套受測軟件,或者一組構(gòu)件,或者一組對象,或者單個對象(最簡單場景)。

由定義1可知,兩個測試場景之間的差別就是其語境對象之間的差別,即對象類型、對象個體及其狀態(tài)的差別。下面分析對象狀態(tài)之間關(guān)系及其對測試用例(test case,下稱測例)執(zhí)行的作用機制。

UML狀態(tài)機定義了一個對象的2個狀態(tài)s1s2之間可能具有子狀態(tài)的復(fù)合關(guān)系。假設(shè)s1是s2的一個子狀態(tài),若處于s1態(tài)則必處于s2態(tài),反之不然[7]。

定義2:狀態(tài)蘊含。設(shè)一個語境對象有狀態(tài)s1和s2,若s1是s2的一個子狀態(tài),則s1s2有狀態(tài)蘊含關(guān)系,記作s1→s2。

直觀理解,若s1→s2,則s2態(tài)表示較簡單場景,s1態(tài)較復(fù)雜且具有更多屬性限制要求,即針對s1態(tài)測試的判定斷言比針對s2更多。

推論1:一個測例tc對s1s2態(tài)分別測試,有s1→s2,若s2測試失敗,則s1也失敗,記為fail(tc,s2)→fail(tc,s1)。

直觀理解,若較簡單場景測試失敗,則較復(fù)雜場景也失敗。

證明,因s1→s2,s1驗證需要比s2更多判定斷言,且增加的斷言(記為s1.newAssert)都以合取式出現(xiàn)。假設(shè)s2的斷言為s2.assert,那么s1的斷言式為s2.assert∧s1.newAssert。若s2測試失敗,則s2.assert為假,此時s1的斷言式也為假,故s1測試也失敗,證畢。

該推論的逆否形式也成立,若s1測試成功,則s2也成功,記為success(tc,s1)→succss(tc,s2)。

推論2:一個測例tc在s1s2兩個狀態(tài)分別測試,且有s1→s2,則應(yīng)先創(chuàng)建s2場景測試,再切換到s1場景測試。

這是推論1的一個簡單延伸。先測試簡單場景s2,后測試較復(fù)雜場景s1。若s2測試成功,再測試s1。若s2測試失敗,由推論1知,s1也推定失敗而無需再切換到更復(fù)雜場景,從而減少代價。該推論為多場景測試提供了優(yōu)化依據(jù):從較簡單到復(fù)雜場景逐步測試,若測試成功則進入子狀態(tài)來測試更復(fù)雜場景,而未撤銷任何語境對象,直接減少代價;若測試失敗則可立即斷定從成功場景到失敗場景的新加斷言失敗,范圍小易分析原因,也減少測試代價。

推論3:設(shè)有兩個不同測例tc1,tc2,若tc1需測試狀態(tài)s1,tc2需測試狀態(tài)s2,且有s1→s2,則只需狀態(tài)s1就能滿足tc1和tc2的測試要求。

實際上,tc2測試s1與測試s2具有相同的判定斷言的結(jié)果。

證明:因tc2針對s2態(tài)測試,故tc2僅持有s2的判定斷言s2.assert。而tc1持有斷言為s2.assert∧s1.newAssert。由推理1,success(tc2,s1)→succss(tc2,s2),即tc2測試s1若成功,則測試s2也成功。若tc2測試s1失敗,則其斷言s2.assert判定為假,故此測試s2也失敗。兩者斷言判定結(jié)果相同,證畢。

由推論3可能將兩個測試場景合并為一個,能同時滿足多個測例需求,減少測試場景數(shù)量,也就減少測試代價。

1.3 場景蘊含關(guān)系

定義3:場景差。設(shè)s1,s2是2個測試場景,場景差是從場景s1切換到s2的語境對象的差別,記為c(s2)-c(s1)。

定義4:場景蘊含。設(shè)s1,s2是兩個測試場景,c(s2)-c(s1)=M,若M=[?],或M非空,且M僅包含新建對象;或至少一個語境對象從場景s1到s2轉(zhuǎn)換為其一個子狀態(tài),即有狀態(tài)蘊涵;前兩種情形兼有,則稱場景s2蘊含s1,記為s2→s1。

若c(s1)-c(s2)=[?],表示2個場景具有相同的對象類別、數(shù)量和狀態(tài),此時2個場景s1s2互相蘊含,語義上表示從測試等價類角度看,這2個場景屬于同一類。

直觀理解,兩個場景之間的蘊含關(guān)系有4種情形:

(1) 相互蘊含;

(2) 后場s2加入新對象;

(3) 后場s2中一個或多個語境對象轉(zhuǎn)入其子狀態(tài),往往添加屬性值或關(guān)聯(lián);

(4) 情形(2)、(3)并存。

推論4:場景蘊涵關(guān)系是一種偏序關(guān)系。

證明:

(1) 自反。對于任一個場景s1,s1蘊含s1,即s1→s1成立,證明略。

(2) 反對稱。對于任意2個不同場景s1和s2,若s1→s2,則s2→s1不成立。

證明:反證法,假設(shè)s1→s2成立時,s2→s1也成立,則由定義4可得c(s2)-c(s1)=M,c(s1)-c(s2)=M,則c(s1)=c(s2),s1與s2是相同場景,與前提矛盾,證畢。

(3) 傳遞性。對于任意3個不同場景s1、s2和s3,若s1→s2,s2→s3,則s1→s3。

證明:由定義4,可得c(s1)-c(s2)=M1,c(s2)-c(s3)=M2,兩式相加,得c(s1)-c(s3)=M1+M2,M1+M2滿足定義4中M的條件(子狀態(tài)的復(fù)合關(guān)系有傳遞性),故s1→s3成立。

2 路徑優(yōu)化方法

定義5:場景蘊含圖SIG(Scenario Implication Graph)。一個場景蘊含圖G={V,E}是一個有向圖,其中V是場景集合,E是有向邊集合,若e=∈E,當(dāng)且僅當(dāng)s2→s1且s1≠s2成立。

場景蘊含圖中有向邊表示兩個場景之間的逆蘊含關(guān)系,直觀理解為從較簡單場景指向較復(fù)雜場景,但圖中取消了自反所導(dǎo)致的自回路。

推論5:場景蘊含圖不存在回路。

證明:由推論4,場景蘊含關(guān)系是一種偏序關(guān)系,在取消自回路的前提下,場景蘊含圖是哈斯圖,哈斯圖無回路[8]。

推論6:一個場景蘊含圖作為有向無環(huán)圖,若存在一條哈密爾頓路徑[8](Hamilton Path,簡稱H路徑),則該路徑就是優(yōu)化的場景切換路徑。

證明:

(1) 由H路徑定義可知,覆蓋所有場景一次且僅一次;

(2) H路徑從簡單場景到復(fù)雜場景,由推論2可知,沿該路徑測試無論成功或失敗,場景切換代價都可控制到最低。

一個場景蘊含圖不一定存在H路徑。若不連通則不存在H路徑。即便連通也不一定存在H路徑。對于一個有向無環(huán)圖,難以簡單求解H路徑。文獻[9]給出一種復(fù)雜的求解方法。

因此本文主張,對有向無環(huán)圖先求其最長路徑,嘗試覆蓋盡可能多的場景結(jié)點。若能覆蓋所有結(jié)點則得到一條H路徑;若不能覆蓋,所得到的最長路徑也可作為次優(yōu)解。

推論7:場景蘊含圖中存在入度為0的場景結(jié)點。證明略。

選擇入度為0的一個或多個場景作為起始結(jié)點,尋求最長路徑,再判斷處理。

如果圖中只有一個入度為0的結(jié)點,則作為單源最長路徑求解;如果有多個入度為0的結(jié)點,則分別作為源結(jié)點求最長路徑,然后在多條路徑中選擇最長路徑。

下面算法是對無環(huán)有向圖求單源最長路徑,采用廣度優(yōu)先搜索。然后找出最長路徑。算法如下:

(1) 根據(jù)廣度優(yōu)先算法標(biāo)記每一個結(jié)點到源結(jié)點的距離并按距離的大小形成隊列。具體過程略。

(2) 從距離最大的結(jié)點開始按距離遞減順序搜索父結(jié)點,直至到源結(jié)點,形成路徑。

輸入:排序后的場景隊列,按開始場景的距離降序排列;

輸出:最長路徑。

過程:path(R)

1. P := [?]

2. ENQUEUE(P,R.first)

3. d := R.first.d

4. for each vertex u in R

5. d := d-1

6. if u.d == d && u == P.last.super then

7. ENQUEUE(P,u)

8. end if

9. end for

10. return P

3 討論與比較

對一個場景蘊含圖G的系統(tǒng)化處理方法如下:

情形1,不連通。有2種方案可選:

方案1:子圖分割,形成多個連通子圖,再分別對各連通子圖按情形2處理。

方案2:在圖中添加第2.1節(jié)討論的簡單切換邊,每條邊添加邊權(quán)值,邊權(quán)值表示切換代價,蘊含邊的權(quán)值是新建對象和轉(zhuǎn)入子狀態(tài)操作的代價,形成一個賦權(quán)有向圖,再求解貨郎擔(dān)問題,即遍歷所有場景一次且僅一次,而且路徑邊權(quán)之和最小。

情形2,連通。求最長路徑P,然后在圖G中去掉P中結(jié)點和邊,剩下子圖若連通則繼續(xù)求最長路徑,若不連通則按情形1的子圖分割處理。

與其他相關(guān)方法進行比較見表1。

4 實例驗證

將該方法應(yīng)用于一個軟件測試實例,被測功能是開發(fā)人員持續(xù)上傳新版本移動應(yīng)用程序,使移動用戶能持續(xù)更新版本。

功能需求:對于一個移動應(yīng)用程序,服務(wù)器僅保留最新版本,包括一個apk文件,一個xml文件記錄當(dāng)前版本號以及版本說明。apk的版本號應(yīng)與xml中版本號一致。開發(fā)人員上傳新版本時,應(yīng)在頁面上輸入新版本號及版本說明,然后上傳apk文件。頁面輸入信息將記錄到xml文件中。

根據(jù)以上功能需求可識別該測試的基本流與備選流,描述如表2所示。

將基本流和備選流組合形成9個測試場景,如表3所示。分析場景間蘊含關(guān)系,形成場景蘊含圖,如圖3所示。為展示清楚,省略一些間接蘊含關(guān)系。對圖3計算最長路徑:場景6→場景5→場景7→場景1→場景4→場景8→場景9。該路徑未覆蓋場景3和2。根據(jù)第3節(jié)討論應(yīng)構(gòu)建賦權(quán)有向圖。

先確定權(quán)值量化規(guī)則如下:

(1) 添加或修改一個頁面屬性權(quán)值為1;

(2) 打包apk權(quán)值為5;

(3) 設(shè)置網(wǎng)絡(luò)權(quán)值為3。

然后構(gòu)建賦權(quán)有向圖,如圖4所示。

對圖4再計算路徑:場景6→場景5→場景7→場景1→場景4→場景8→場景3→場景2→場景9,此路徑邊權(quán)和為37。若9個場景簡單隨機選擇,經(jīng)計算其平均邊權(quán)和為106。此實例的優(yōu)化率為[106-37106]=65%。采用文獻[5]的優(yōu)化率為44%。

5 結(jié) 語

本文從測試場景的結(jié)構(gòu)特征的角度,定義了場景蘊含關(guān)系,基于蘊含關(guān)系提出一種多場景測試路徑優(yōu)化方法,并給出針對場景蘊含圖SIG的系統(tǒng)化解決方法。該方法適用于多場景測試,尤其是場景切換代價較大的嵌入式分布式系統(tǒng)測試。

參考文獻

[1] 杜慶峰.高級軟件測試技術(shù)[M].北京:清華大學(xué)出版社,2011.

[2] JACOBSON I. Object oriented software engineering: a use case driven approach [M]. USA: ACM Press, 1992.

[3] JACOBSON I. Basic use?case modeling [J]. The Road to the Unified Software Development Process, 2000, 18: 167?172.

[4] KIM Y, CARLSON C R. Scenario based integration testing for object?oriented software development [C]// Proceedings of 1999 Eighth Asian Test Symposium. [S.l.]: IEEE, 1999: 283?288.

[5] 潘建勇,陳邦興.基于場景的測試用例設(shè)計方法研究[J].通信技術(shù),2012,44(12):77?80.

[6] 劉春玲,雷海紅.基于場景的信息系統(tǒng)黑盒測試方法[J].信息與電子工程,2012,10(4):509?512.

[7] 劉佳,尹治本.基于對象狀態(tài)的面向?qū)ο筌浖y試方法研究[J].電腦知識與技術(shù),2008,4(35):2169?2170.

[8] 方世昌.離散數(shù)學(xué)[M].北京:高等教育出版社,2000.

[9] ADLEMAN L M. Molecular computation of solutions to combinatorial problems [J]. Science?AAAS?Weekly Paper, 1994, 266(5187): 1021?1023.

猜你喜歡
斷言代價結(jié)點
von Neumann 代數(shù)上保持混合三重η-*-積的非線性映射
C3-和C4-臨界連通圖的結(jié)構(gòu)
特征為2的素*-代數(shù)上強保持2-新積
Top Republic of Korea's animal rights group slammed for destroying dogs
Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點個數(shù)估計
愛的代價
海峽姐妹(2017年12期)2018-01-31 02:12:22
代價
成熟的代價
基于Raspberry PI為結(jié)點的天氣云測量網(wǎng)絡(luò)實現(xiàn)
基于DHT全分布式P2P-SIP網(wǎng)絡(luò)電話穩(wěn)定性研究與設(shè)計
石渠县| 罗平县| 靖宇县| 无锡市| 丹棱县| 璧山县| 台前县| 重庆市| 曲水县| 大荔县| 孝义市| 合水县| 兴宁市| 陵水| 虞城县| 麻阳| 海盐县| 分宜县| 汝城县| 安陆市| 石首市| 五原县| 华池县| 自贡市| 江西省| 沽源县| 肃北| 北流市| 循化| 龙陵县| 炎陵县| 保德县| 上蔡县| 丘北县| 内丘县| 安平县| 武川县| 寻乌县| 枞阳县| 方山县| 岳池县|