馬竹根,舒少華
(1. 懷化學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,湖南 懷化 418008;2. 懷化市鐵路第一小學(xué),湖南 懷化 418000)
智能水滴算法在代碼覆蓋測(cè)試中的應(yīng)用
馬竹根1,舒少華2
(1. 懷化學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,湖南 懷化 418008;2. 懷化市鐵路第一小學(xué),湖南 懷化 418000)
代碼覆蓋在軟件測(cè)試中得到了廣泛應(yīng)用,表示了代碼被測(cè)試的程度。論文提出了一種利用智能水滴算法優(yōu)化代碼覆蓋的算法,描述了如何把獨(dú)立路徑生成問題轉(zhuǎn)換成智能水滴在控制依賴圖的各邊之間尋找最優(yōu)路徑的問題,通過(guò)生成帶有權(quán)值的獨(dú)立路徑來(lái)自動(dòng)生成測(cè)試序列,使得測(cè)試人員可以最優(yōu)地安排測(cè)試順序,保證充分的代碼覆蓋。
軟件測(cè)試;控制依賴圖;代碼覆蓋;獨(dú)立路徑;智能水滴算法
軟件測(cè)試分為黑盒測(cè)試和白盒測(cè)試。白盒測(cè)試的充分性準(zhǔn)則中,覆蓋測(cè)試[1]可以針對(duì)不同的覆蓋測(cè)試標(biāo)準(zhǔn),以覆蓋元素是否己經(jīng)達(dá)到覆蓋要求判斷測(cè)試的充分性,其中,路徑覆蓋是最重要的一種覆蓋測(cè)試[2]。生成測(cè)試用例[3]往往需要耗費(fèi)大量的時(shí)間,軟件自動(dòng)化測(cè)試[4-5]將有效地減輕測(cè)試人員的負(fù)擔(dān),提高軟件測(cè)試的效率和軟件質(zhì)量。近年來(lái),研究人員開始使用粒子群優(yōu)化算法[6]、蜂群算法[7]、神經(jīng)網(wǎng)絡(luò)[8]、蟻群算法[9]、模擬退火算法[10]等智能優(yōu)化算法來(lái)解決軟件測(cè)試中的測(cè)試用例的生成問題。
智能水滴算法[11](Intelligent Water Drops algorithms,IWD)是在2007年提出的一種群智能算法,模擬了天然水滴在河流系統(tǒng)中流動(dòng)的過(guò)程,使用一種構(gòu)造性的方法來(lái)構(gòu)建給定問題的最優(yōu)解,每個(gè)水滴通過(guò)遍歷給定問題的搜索空間找到最佳路徑,然后修改其流動(dòng)的環(huán)境。智能水滴算法已經(jīng)應(yīng)用于許多自然科學(xué)與工程領(lǐng)域,顯示出算法的強(qiáng)大的優(yōu)勢(shì)和潛力。
控制流程圖(control flow graph,CFG)是程序的圖形表示,控制流圖可轉(zhuǎn)換為控制依賴圖(control dependency graph,CDG)。路徑覆蓋測(cè)試數(shù)據(jù)生成問題可描述為:給定程序的一條目標(biāo)路徑,在程序的輸入空間尋找測(cè)試數(shù)據(jù),使得以該測(cè)試數(shù)據(jù)為輸入所穿越的路徑為目標(biāo)路徑[12]。路徑選擇是覆蓋測(cè)試中的十分重要的步驟,目標(biāo)覆蓋元素的選取以及初始路徑的選擇都依賴于控制流圖上的依賴關(guān)系[13]。智能水滴算法是一種基于圖的算法,因此智能水滴算法可以用于測(cè)試路徑選擇,使用智能水滴算法生成所有可能的測(cè)試序列用于計(jì)算代碼覆蓋率,使用所提出的算法計(jì)算測(cè)試用例能夠遍歷的所有可能路徑及其相應(yīng)的權(quán)值。本文提出了一種使用智能水滴算法優(yōu)化技術(shù)生成自動(dòng)測(cè)試序列的算法,為代碼覆蓋測(cè)試問題提供了一種新的解決方案。算法中應(yīng)用控制依賴圖(control dependency graph,CDG)作為算法的輸入。
定義1 令S是一個(gè)源程序,s1和s2是S中的語(yǔ)句。s2是控制依賴于s1,當(dāng)且僅當(dāng)滿足下列條件[14]:
(1)s1和s2之間存在一條路徑;
(2)存在一條執(zhí)行路徑從s1到程序結(jié)束但不經(jīng)過(guò)s2。
定義2 控制依賴圖CDG(control dependency graph)是一個(gè)有向圖G=(V, E),其中結(jié)點(diǎn)V表示程序中的語(yǔ)句,E表示邊。邊s1→s2表示從結(jié)點(diǎn)s1到s2的控制依賴。G中有一個(gè)特殊的源結(jié)點(diǎn),表示程序的開始,它可以到達(dá)圖中的每個(gè)結(jié)點(diǎn)。
從上面的定義可以看出,控制依賴在程序中主要由條件語(yǔ)句和循環(huán)語(yǔ)句構(gòu)成。條件語(yǔ)句中的條件判斷與對(duì)應(yīng)的語(yǔ)句體之間存在控制依賴關(guān)系,循環(huán)條件判斷和循環(huán)體之間存在控制依賴。控制依賴圖中的節(jié)點(diǎn)表示語(yǔ)句,邊表示它們之間的控制依賴關(guān)系。
智能水滴[11](Intelligent Water Drop,IWD),它具有以下兩個(gè)重要的屬性:水滴攜帶的泥土量soil(IWD)和水滴的速度velocity(IWD),當(dāng)水滴從一個(gè)位置移動(dòng)到下一個(gè)位置時(shí),這兩個(gè)屬性會(huì)隨著水滴流動(dòng)而發(fā)生改變。水滴的速度非線性反比于路徑上的泥土量。通過(guò)從路徑中移除一些泥土來(lái)增加IWD的泥土,并且增加的泥土量是非線性反比于在不同位置之間移動(dòng)所花費(fèi)的時(shí)間。智能水滴移動(dòng)的時(shí)間正比于不同位置之間的距離,反比于水滴的移動(dòng)速度。智能水滴在遇到多條路徑可選時(shí),會(huì)更傾向于選擇泥土量較少的路徑。對(duì)于智能水滴可能選擇的下一個(gè)位置,通過(guò)計(jì)算隨機(jī)分布函數(shù)來(lái)實(shí)現(xiàn),使得選擇路徑的概率與可用路徑的土壤成反比。
3.1 適應(yīng)度函數(shù)
要使用智能水滴算法解決路徑覆蓋問題,需要把該問題建模為一個(gè)函數(shù)優(yōu)化問題,適應(yīng)度函數(shù)的建立是關(guān)鍵,常用的適應(yīng)度函數(shù)通常包括層接近度和分支距離[15]。設(shè)計(jì)適應(yīng)度函數(shù)用來(lái)計(jì)算控制依賴圖中的泥土量,基本思想是讓更深更復(fù)雜的路徑權(quán)值更大。構(gòu)造良好的適應(yīng)度函數(shù)可以增加找到求解方案和達(dá)到更高覆蓋的機(jī)會(huì),算法中使用的適應(yīng)度函數(shù)如下:
soil (i, j) =a *subgraph (j) +b*condition (j), {if j是判斷語(yǔ)句condition (j)=1,else condition (j)=0}
soil (i, j) =1 {if subgraph(j) && condition(j) = =0}
其中,soil(i,j)表示從結(jié)點(diǎn)i到結(jié)點(diǎn)j的邊上的泥土量,Subgraph (j)是給定圖中結(jié)點(diǎn)j的下層結(jié)點(diǎn)數(shù)。智能水滴從圖的源結(jié)點(diǎn)出發(fā),使用適應(yīng)度函數(shù)計(jì)算每一條路徑的選擇概率,概率大的路徑認(rèn)為是水滴選擇的路徑。參數(shù)a和b分別賦值為常量2和1,這樣賦值的原因是給那些子結(jié)點(diǎn)多的結(jié)點(diǎn)分配更高的權(quán)值。
如果subgraph(j)和condition(j)等于0,那么soil (i, j) =1。這是因?yàn)閟oil(I, j)將會(huì)用來(lái)計(jì)算對(duì)應(yīng)節(jié)點(diǎn)的概率,并且要求概率不能為零。這樣選擇適應(yīng)度函數(shù)是因?yàn)樵谌我慌袛喙?jié)點(diǎn)或更復(fù)雜的路徑中都可能產(chǎn)生錯(cuò)誤。
3.2 算法步驟
步驟1:初始化參數(shù)
P(i,j) //選擇從結(jié)點(diǎn)i到結(jié)點(diǎn)j的路徑的概率
Time (i, j) // 從結(jié)點(diǎn)i到結(jié)點(diǎn)j的時(shí)間
ΔSoil (i, j, iwd) //從結(jié)點(diǎn)i到結(jié)點(diǎn)j泥土的增量
Vel (i, j, iwd) //從結(jié)點(diǎn)i到結(jié)點(diǎn)j的速度
av=1, bv= 1, cv=1 //速度更新參數(shù)。
as=1, bs= 1, cs=1 //泥土更新參數(shù)。
ρ=0.1 // 局部更新參數(shù),0≤ρ≤1,依賴于結(jié)點(diǎn)上泥土量的多少
Init_Vel =200 //初始化IWD的速度為200
Vc (IWD) = {} // IWD遍歷路徑Vc (IWD),/初始值為空。
步驟2:更新參數(shù)的值
(1)while(CDG不為空)
(2)計(jì)算概率
按以下公式計(jì)算出從當(dāng)前結(jié)點(diǎn)i出發(fā)選擇結(jié)點(diǎn)j的概率。
P(i,j)=soil(i,j)/Σk ≠vcSoil(i,k)
soil(i,j)表示結(jié)點(diǎn)之間的泥土量,Σk ≠vcSoil(i,k)表示能從當(dāng)前結(jié)點(diǎn)i遍歷的路徑上的泥土的總和。在原算法中,IWD朝泥土量少的路徑移動(dòng),因?yàn)槲覀円獪y(cè)試更復(fù)雜的程序來(lái)發(fā)現(xiàn)錯(cuò)誤,因此在算法中IWD朝泥土量多的路徑移動(dòng)。
(3)計(jì)算移動(dòng)的時(shí)間
time (i.j) = (subgraph (i)-subgraph (j))/vel (iwd)
subgraph (i)-subgraph (j)對(duì)應(yīng)結(jié)點(diǎn)之間的距離,vel(iwd)表示IWD的速度。
(4)計(jì)算IWD的泥土
ΔSoil (i, j, iwd) = as/ (bs+ cs*time (i, j))
as,bs,cs是由用戶選定的正數(shù)。
(5)計(jì)算IWD的速度
vel(i, j, iwd) = vel(iwd) + (av/ (bv+ cvsoil(i, j)))
av,bv,cv是由用戶選定的正數(shù),soil(i, j)是結(jié)點(diǎn)i到結(jié)點(diǎn)j的路徑上的泥土量。
(6)計(jì)算路徑上的泥土量
Soil (i, j) = (1 - ρ) soil (i, j) - ρ * Δsoil (i, j, iwd)
ρ=0.1,是一個(gè)正的參數(shù),Δsoil (i, j, iwd)是IWD從結(jié)點(diǎn)i到結(jié)點(diǎn)j帶走的泥土量。
(7)重復(fù)步驟(2)-(6)直到遇到終端結(jié)點(diǎn)(葉子結(jié)點(diǎn))或者是已遍歷結(jié)點(diǎn)。到達(dá)終端結(jié)點(diǎn)后,刪除該結(jié)點(diǎn),同時(shí)檢查該節(jié)點(diǎn)的父節(jié)點(diǎn),如果所有的葉子結(jié)點(diǎn)被刪除了,則將該結(jié)點(diǎn)刪除。
(8)完成一條可能路徑后更新遍歷路徑列表,重復(fù)執(zhí)行步驟2,開始新一輪的迭代。如果CDG為空了,就意味著所有的路徑已經(jīng)遍歷完成,結(jié)束循環(huán)。
通過(guò)這種方式可以找出所有可能的路徑,而且每條路徑帶有相應(yīng)的權(quán)值,路徑測(cè)試順序的優(yōu)先級(jí)可直接對(duì)應(yīng)路徑的權(quán)值,權(quán)值高的路徑優(yōu)先測(cè)試。
以數(shù)據(jù)結(jié)構(gòu)中熟知的二分查找算法為例說(shuō)明IWD的執(zhí)行過(guò)程。二分查找算法C++源程序如圖1所示,其對(duì)應(yīng)的控制依賴圖如圖2所示。
算法步驟:
首先計(jì)算每個(gè)結(jié)點(diǎn)的子節(jié)點(diǎn)的個(gè)數(shù),通過(guò)深度優(yōu)先遍歷可得到每個(gè)結(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)。結(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)如下:
A=8,C=6,D=3,E,I,F(xiàn),G,H的子節(jié)點(diǎn)數(shù)為0。
檢查結(jié)點(diǎn)的判斷條件值,A、C、D結(jié)點(diǎn)是判定節(jié)點(diǎn),condition =1,其余結(jié)點(diǎn)condition=0。
IWD的迭代過(guò)程如下:
第1次迭代:
IWD從結(jié)點(diǎn)A開始,有兩條可選路徑J和C,為了確定下一個(gè)遍歷結(jié)點(diǎn),計(jì)算兩個(gè)節(jié)點(diǎn)的選擇概率。根據(jù)3.1節(jié)適應(yīng)度函數(shù)公式soil(i, j) =a *subgraph (j) +b*condition (j), soil (i, j) =1 {if subgraph(j) && condition(j) = =0 }計(jì)算如下:
Soil(A,C)=2*6+1*1=13,Soil(A,J)=2*0+1*0=1(su bgraph(j)和condition(j)都為0,根據(jù)3.1節(jié)適應(yīng)度計(jì)算公式Soil(A,J)=1)
P(A,J)= Soil(A,J)/(Soil(A,J)+ Soil(A,C))=1/14,
P(A,C)= Soil(A,C)/(Soil(A,J)+ Soil(A,C))=13/14,結(jié)點(diǎn)C的概率大于結(jié)點(diǎn)J的概率,因此選擇結(jié)點(diǎn)C作為一下遍歷結(jié)點(diǎn)。從結(jié)點(diǎn)A到結(jié)點(diǎn)C的時(shí)間計(jì)算如下:
Time(A,C)=(subgraph (A)-subgraph (C))/vel (iwd)=(8-6)/200=2/200=0.01
按照算法步驟2中的步驟(4)-(6)計(jì)算如下:
Δ Soil(A,C) = as/(bs+cs*time (A, C))=1/1+ 1*0.01)=0.99
Δvel(A,C) = vel(iwd) + (av/(bv+ cvsoil(i, j)))=100+1/(1+13))=200.07

圖1 二分查找算法C++源程序Fig.1 Source code of Binary-Search

圖2 二分查找算法CDG(控制依賴圖)Fig.2 CDG of Binary-Search
Soil (A, C) = (1-ρ) soil (A, C)-ρ * Δsoil (A,C)= 0.9*13-0.1*0.98=11.6
Soil(iwd)=0.99
到達(dá)結(jié)點(diǎn)C后,水滴有3個(gè)可能的結(jié)點(diǎn)D、E、I可選。計(jì)算所有可能結(jié)點(diǎn)的選擇概率:Soil(C,D)=2*3+1*1=7,Soil(C,E)=1,Soil(C,F)=1 P(C,D)=Soil(C,D)/(Soil(C,D)+Soil(C,E)+Soil(C, F))=7/9=0.77
P(C,E)=Soil(C,E)/(Soil(C,D)+Soil(C,E)+Soil(C,F))= 1/9=0.11
P(C,I)=Soil(C,I)/(Soil(C,D)+Soil(C,E)+Soil(C, F))=1/9=0.11
結(jié)點(diǎn)D的概率大于其他結(jié)點(diǎn),因此水滴流向結(jié)點(diǎn)D。
Time(C,D)=(6-3)/200.07=0.015
ΔSoil (C,D) = 1/(1+1*0.015)=0.985
Δvel(C,D) =200.07+1/(1+1*7))=200.196
Soil(C,D)=(1-ρ)soil (C,D)-ρ *Δsoil (C,D)= 0.9*7-0.1*0.985=6.2
Soil(iwd)=0.99+0.985=1.984
得到路徑:A-C-D。到達(dá)結(jié)點(diǎn)D后,水滴要決定下一個(gè)遍歷結(jié)點(diǎn),計(jì)算如下:
Soil(D,F)=1,Soil(D,G)=1,Soil(D,H)=1,
P(D,F)=Soil(D,F)/(Soil(D,F)+Soil(D,G)+Soil(D, FH))=1/3=0.33
P(D,G)=Soil(D,G)/(Soil(D,F)+Soil(D,G)+Soil(D, FH))=1/3=0.33
P(D,H)=Soil(D,H)/(Soil(D,F)+Soil(D,G)+Soil(D, FH))=1/3=0.33
三個(gè)結(jié)點(diǎn)的選擇概率相同,從中隨機(jī)選擇一個(gè),比如選擇結(jié)點(diǎn)F,
Time(D,F)= (3-0)/200.196=0.015
ΔSoil (D,F) = 1/(1+1*0.015)=0.985
Δvel(D,F) =200.196+1/(1+1*1))=200.696
Soil (D,F) =(1-ρ) soil(D, F)-ρ * Δsoil (D,F)= 0.9*1-0.1*0.985=0.801
Soil(iwd)=1.984+0.985=2.961
F是葉子結(jié)點(diǎn),第一次迭代結(jié)束,得到遍歷路徑Path1:A-C-D-F,路徑的權(quán)重=Soil(A,C)+Soil (C,D)+ Soil(D,F)=13+7+1=21。IWD又從根結(jié)點(diǎn)A開始進(jìn)行第2次迭代,通過(guò)同樣的計(jì)算可得到其他可能的遍歷路徑和權(quán)值。實(shí)驗(yàn)結(jié)果如表1所示。
通過(guò)智能水滴算法得到了所有可能的帶有優(yōu)先級(jí)的獨(dú)立路徑,每一條路徑的權(quán)值是路徑上的泥土量的總和,權(quán)值越高的路徑優(yōu)先級(jí)越高,優(yōu)先級(jí)可以幫助測(cè)試者決定路徑的測(cè)試順序,對(duì)于測(cè)試人員來(lái)說(shuō)是很有用處的。

表1 路徑及權(quán)值表Table 1 Path and weight
測(cè)試用例的生成是軟件測(cè)試的重要內(nèi)容,高效的軟件測(cè)試用例自動(dòng)生成方法可以簡(jiǎn)化軟件測(cè)試過(guò)程,減少軟件測(cè)試成本,提高軟件測(cè)試效率和測(cè)試質(zhì)量,軟件測(cè)試面對(duì)的一個(gè)主要問題就是要自動(dòng)生成測(cè)試數(shù)據(jù)實(shí)現(xiàn)充分的測(cè)試覆蓋。本文提出了一種使用智能水滴算法自動(dòng)生成軟件測(cè)試順序的策略,算法的輸出結(jié)果包括所有可能的獨(dú)立路徑和路徑的權(quán)值,可用來(lái)分析代碼覆蓋率,幫助軟件測(cè)試人員確定軟件測(cè)試順序。下一步的工作中可將算法中的隨機(jī)選擇改用其他啟發(fā)式算法代替來(lái)提高算法的效率。
[1] 俞濛, 黃俊飛. 覆蓋測(cè)試中基于回溯法的路徑選擇[J]. 軟件, 2014, 35(11): 9-13. Yu Meng, Huang Junfei. Path selection in coverage test based on backtracking[J]. Software, 2014, 35(11): 9-13.
[2] 姚香娟, 鞏敦衛(wèi), 李彬. 融入神經(jīng)網(wǎng)絡(luò)的路徑覆蓋測(cè)試數(shù)據(jù)進(jìn)化生成[J]. 軟件學(xué)報(bào), 2016, 27(4): 828-838. Yao XiangJuan, Gong DunWei, Li Bin. Evolutional test data generation for path coverage by integrating neural network[J]. Journal of Software, 2016, 27(4): 828-838.
[3] 許媛媛. 基于CBR的測(cè)試用例復(fù)用方法研究[J]. 軟件, 2015, 36(9): 117-120. Xu Yuanyuan. A study of test case reuse based on CBR[J]. Software, 2015, 36(9): 117-120.
[4] 王如迅. 基于SWTBot技術(shù)的軟件自動(dòng)化測(cè)試的研究與實(shí)現(xiàn)[J]. 軟件, 2016, 37(02): 121-128. Wang Ruxun. Research and iImplementation of software test automation technology based SWTBot[J]. Software, 2016, 37(02): 121-128.
[5] 高楊, 袁玉宇. 基于軟件自動(dòng)化測(cè)試效率的研究[J]. 軟件, 2012, 33(11): 77-80. Gao Yang, Yuan Yuyu. The software automation test efficiency research[J]. Software, 2012, 33(11): 77-80.
[6] 姜淑娟, 王令賽, 薛猛, 等. 基于模式組合的粒子群優(yōu)化測(cè)試用例生成方法[J]. 軟件學(xué)報(bào), 2016, 27(4): 785-801. Jiang Shujuan, Wang Lingsai, Xue Meng, et al. Test case generation based on combination of schema using particle swarm optimization[J]. Journal of Software, 2016, 27(4): 785-801.
[7] 李云瑋, 孫忱, 范玉順. 基于智能非信息素蜂群優(yōu)化的軟件測(cè)試研究[J]. 計(jì)算機(jī)應(yīng)用研究, 2014, 31(8): 2399-2403. Li Yunwei, Sun Chen, Fan Yushun. Intelligent non- pheromone swarm optimization based software test suite[J]. Application Research of Computers, 2014, 31(8): 2399-2403.
[8] 李鑫. 基于神經(jīng)網(wǎng)絡(luò)的路徑覆蓋測(cè)試數(shù)據(jù)生成[D]. 北京:中國(guó)礦業(yè)大學(xué), 2014. Li Xin. Test data generation for path coverage based on neural network[D]. Beijing: China University of Mining and Technology, 2014.
[9] 傅博. 基于蟻群算法的軟件測(cè)試數(shù)據(jù)自動(dòng)生成. 計(jì)算機(jī)工程與應(yīng)用[J]. 2007, 43(12): 97-99. Fu Bo. Automated software test data generation based on ant colony algorithm[J]. Computer Engineering and Applications, 2007, 43(12): 97-99.
[10] 王博, 王曙燕. 一種新的基于模擬退火的測(cè)試用例生成與約簡(jiǎn)算法[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2013, 30(2): 78-81. Wang Bo, Wang Shuyan. A novel method of test case generation and reduction algorithm based on simulated annealing[J]. Computer Applications and Software, 2013, 30(2): 78-81.
[11] Shah-Hosseini H. Problem solving by intelligent water drops[C]// Evolutionary Computation, 2007. IEEE Congress on Evolutionary Computation, 2007: 3226-3231.
[12] 單錦輝, 姜瑛, 孫萍. 軟件測(cè)試研究進(jìn)展[J]. 北京大學(xué)學(xué)報(bào)(自然科學(xué)版), 2005, 41(1): 134-145. Shan Jinhui, Jiang Ying, Sun Ping. Research Progress in Software Testing[J]. Acta Scicentiarum Naturalum Universitis Pekinesis, 2005, 41(1): 134-145.
[13] 王思嵐. 單元測(cè)試中代碼覆蓋分析及路徑選擇技術(shù)的研究與應(yīng)用[D]. 北京: 北京郵電大學(xué), 2012. Wang Silan. Code coverage analysis and path selection technology research and application[D]. Beijing: Beijing University of Posts and Telecommunications, 2012.
[14] 姚輝萍, 趙雷, 李鎣, 等. 一種改進(jìn)的計(jì)算控制依賴的算法[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2010, 27(11): 13-15. Yao Huiping, Zhao Lei, Li Ying, et al. An improved algorithm for control dependency[J]. Computer Applications and Software, 2010, 27(11): 13-15.
[15] 鞏敦衛(wèi), 張巖. 一種新的多路徑覆蓋測(cè)試數(shù)據(jù)進(jìn)化生成方法[J]. 電子學(xué)報(bào), 2010, 38(6): 1299-1304. Gong Dunwei, Zhang Yan. Novel evolutionary generation approach to test data for multiple paths coverage[J]. Acta Electronica Sinica, 2010, 38(6): 1299-1304.
阿里巴巴股價(jià)漲逾13%創(chuàng)新高 市值超3600億美元
6月9日,阿里巴巴周五股價(jià)大漲13%,創(chuàng)下其上市以來(lái)的股價(jià)新高,市值達(dá)到3600億美元。
昨日,阿里巴巴集團(tuán)CEO在投資者大會(huì)上表示,2020年阿里GMV(交易總額)將達(dá)到一萬(wàn)億美元。
阿里巴巴集團(tuán)CFO武衛(wèi)表示,預(yù)計(jì)該集團(tuán)2018財(cái)年的營(yíng)收將可同比增長(zhǎng)45%到49%,這種樂觀的展望在參加該集團(tuán)杭州投資者日大會(huì)的人群中引起了一陣歡呼。據(jù)財(cái)經(jīng)信息供應(yīng)商FactSet的調(diào)查顯示,截至5月31日為止華爾街分析師的平均預(yù)期是阿里巴巴集團(tuán)2018財(cái)年的營(yíng)收將同比增長(zhǎng)36%,相比之下2017財(cái)年的營(yíng)收增幅為47%。
截至周四收盤,阿里股價(jià)上漲16.7美元,報(bào)收于142.34美元,漲幅達(dá)13.29%,當(dāng)日股價(jià)最高達(dá)143.7美元,創(chuàng)下上市以來(lái)新高。過(guò)去52周,其最低股價(jià)為73.3美元。
阿里巴巴股價(jià)的亮眼表現(xiàn),還刺激其股東之一的雅虎公司股價(jià)創(chuàng)下17年來(lái)的新高。雅虎周四股價(jià)大漲10.2%,報(bào)收于55.71美元。
據(jù)雅虎最近提交的監(jiān)管文件顯示,截至今年3月31日為止,雅虎仍舊持有3.84億股的阿里巴巴集團(tuán)普通股;按阿里巴巴集團(tuán)美國(guó)存托憑證當(dāng)時(shí)的價(jià)格計(jì)算,這意味著雅虎所持該集團(tuán)股份的價(jià)值高達(dá)414.1億美元。
阿里巴巴集團(tuán)在2014年9月19日IPO上市,目前其股價(jià)與當(dāng)時(shí)每股68美元的發(fā)行價(jià)相比已經(jīng)上漲了一倍以上。
自阿里巴巴集團(tuán)IPO以來(lái),雅虎股價(jià)與阿里巴巴集團(tuán)美國(guó)存托憑證價(jià)格之間的相關(guān)系數(shù)高達(dá)0.896;如果這個(gè)系數(shù)達(dá)到1.000,則意味著兩者之間的相關(guān)性達(dá)到完美匹配的水平。
據(jù)雅虎股東大會(huì)的初步結(jié)果顯示,該公司股東已在周四批準(zhǔn)了將核心互聯(lián)網(wǎng)業(yè)務(wù)以44.8億美元的價(jià)格出售給Verizon通信公司的交易。雅虎預(yù)計(jì),這項(xiàng)交易將在2017年6月13日完成。
在過(guò)去的2017財(cái)年,阿里巴巴拿出了出色的成績(jī)單,全年收入同比增長(zhǎng)56%至1582.73億元人民幣。2017財(cái)年第四財(cái)季財(cái)報(bào)顯示,當(dāng)季度電商核心業(yè)務(wù)收入315.70億元人民幣,同比增長(zhǎng)47%,移動(dòng)電商平臺(tái)貢獻(xiàn)了中國(guó)零售平臺(tái)季度收入的85%,中國(guó)零售平臺(tái)年度活躍買家增至4.54億,移動(dòng)端月度活躍用戶高達(dá)5.07億。阿里巴巴平臺(tái)的交易總額占中國(guó)零售總額的11%。
——轉(zhuǎn)自互聯(lián)網(wǎng)
Code coverage Testing Using Intelligent Water Drop Algorithms
MA Zhu-gen1, SHU Shao-hua2
(1. College of Computer Science and Technology, Huaihua University, Huaihua, 418008, China; 2. Huaihua Railway Primary School, Huaihua, 418000, China)
Code coverage is widely used in software testing, which describes the degree to which the code has been tested. This paper proposes a technique using Intelligent Water Drop (IWD) for automatic generation of test sequences, discusses algorithms based on IWD to generate independent path with weight over control dependency graph. It proposes how test cases can be considered as an IWD moving on the edges of the control dependency graph for finding the optimal paths. The independent path with weight and test sequence has been automatically generated so that testers can optimally arrange the test sequence to ensure complete code coverage.
Software testing; Control dependency graph; Code coverage; Independent path; Intelligent water drops algorithm
TP301.6
A
10.3969/j.issn.1003-6970.2017.05.005
湖南省教育廳項(xiàng)目(16C1276),武陵山片區(qū)生態(tài)農(nóng)業(yè)智能控制湖南省重點(diǎn)實(shí)驗(yàn)室項(xiàng)目(ZNKZ2016-08)資助
馬竹根(1971-),碩士,講師。研究方向:人工智能、軟件工程。
本文著錄格式:馬竹根,舒少華. 智能水滴算法在代碼覆蓋測(cè)試中的應(yīng)用[J]. 軟件,2017,38(5):22-26