劉光源
(湖北經(jīng)濟(jì)學(xué)院,湖北 武漢 430205)
軟件測(cè)試是檢驗(yàn)軟件質(zhì)量、測(cè)試軟件運(yùn)行速度等指標(biāo)的關(guān)鍵環(huán)節(jié)之一,任何一款軟件在上市或投入使用前,都需要經(jīng)歷測(cè)試階段。在測(cè)試過(guò)程中,軟件需要生成大量的數(shù)據(jù),可以通過(guò)檢驗(yàn)數(shù)據(jù)的完整性或挖掘測(cè)試軟件生成數(shù)據(jù)之間的規(guī)律,進(jìn)行軟件運(yùn)行質(zhì)量的評(píng)估。但現(xiàn)階段大部分軟件在測(cè)試后生成的數(shù)據(jù)具有冗余、量大的特點(diǎn),如果按照常規(guī)的方法,采用窮盡測(cè)試手段,不僅會(huì)增加軟件測(cè)試的工作量,還會(huì)造成測(cè)試效率的低下[1]。因此,有必要在現(xiàn)有工作的基礎(chǔ)上,加大對(duì)軟件測(cè)試中數(shù)據(jù)生成過(guò)程的研究,通過(guò)生成少量、高質(zhì)量數(shù)據(jù),提高測(cè)試的速度與綜合效率。
為落實(shí)此項(xiàng)工作,相關(guān)科研單位提出了基于云計(jì)算技術(shù)的數(shù)據(jù)生成方法,此方法可以有效降低測(cè)試軟件數(shù)據(jù)的生成量,但卻難以保障所生成的數(shù)據(jù)具有針對(duì)性與覆蓋全面性[2]。此外,在深入對(duì)此方面內(nèi)容進(jìn)行研究后發(fā)現(xiàn),還有學(xué)者通過(guò)聚類(lèi)算法、均值算法生成數(shù)據(jù),根據(jù)現(xiàn)階段的實(shí)踐,這些算法所生成的數(shù)據(jù)不僅可以解決數(shù)據(jù)缺少代表性的問(wèn)題,還可以提高生成數(shù)據(jù)的覆蓋面。但相關(guān)生成算法的研究現(xiàn)階段仍處于理論階段。
基于上述背景,本文將在此方面研究中引進(jìn)K-均值聚類(lèi)算法,設(shè)計(jì)一種針對(duì)軟件測(cè)試數(shù)據(jù)的全新生成算法,通過(guò)此種方式,解決軟件測(cè)試中的核心問(wèn)題與重難點(diǎn)問(wèn)題。
為確保設(shè)計(jì)的數(shù)據(jù)生成算法可以生成適用于軟件測(cè)試的數(shù)據(jù)集合與數(shù)據(jù)組,在設(shè)計(jì)算法前,首先建立軟件測(cè)試數(shù)據(jù)適應(yīng)度函數(shù),明確測(cè)試數(shù)據(jù)聚類(lèi)方向[3],從而確保數(shù)據(jù)生成數(shù)據(jù)圍繞軟件測(cè)試適用范圍展開(kāi)。在此過(guò)程中,設(shè)定一個(gè)分支函數(shù),將此函數(shù)表示為f,所有生成的數(shù)據(jù)都應(yīng)當(dāng)屬于f的分支。在f的分支中插入結(jié)構(gòu)性函數(shù),對(duì)數(shù)據(jù)的生成過(guò)程進(jìn)行約束[4]。此過(guò)程如式(1)所示:
式中,表示分支函數(shù);表示數(shù)據(jù)生成過(guò)程的約束條件;表示函數(shù)極限值;表示最小構(gòu)造值。在此基礎(chǔ)上,通過(guò)對(duì)函數(shù)最小值的求解,進(jìn)行數(shù)據(jù)與軟件測(cè)試過(guò)程適應(yīng)度的評(píng)估,將評(píng)估結(jié)果作為適應(yīng)度函數(shù)建立的依據(jù)。提取適應(yīng)度較強(qiáng)的數(shù)據(jù),將其作為函數(shù)填充數(shù)據(jù),刪除適應(yīng)度較弱或不符合插值的數(shù)據(jù),建立如下所示的軟件測(cè)試數(shù)據(jù)適應(yīng)度函數(shù):
式中,表示軟件測(cè)試數(shù)據(jù)適應(yīng)度函數(shù);表示函數(shù)最小值解集;表示適應(yīng)度參數(shù);表示適應(yīng)度較強(qiáng)的數(shù)據(jù);表示生成數(shù)據(jù)的適配性。按照上述方式,完成數(shù)據(jù)生成過(guò)程中適應(yīng)度函數(shù)的建立。
在完成上述設(shè)計(jì)后,為進(jìn)一步提高數(shù)據(jù)與軟件測(cè)試過(guò)程的適配性,引進(jìn)K-均值算法,對(duì)測(cè)試數(shù)據(jù)進(jìn)行聚類(lèi),通過(guò)此種方式,使具有相同特征或指向的數(shù)據(jù)聚合在一起[5]。在此過(guò)程中,需要將空間中的粒子群劃分為K個(gè)子群,通過(guò)對(duì)這些子群K中最優(yōu)聚合點(diǎn)的選擇,進(jìn)行粒子在空間中位置的更新。聚類(lèi)前,將粒子的空間位置進(jìn)行初始化處理,處理過(guò)程如下:
式中,l表示空間位置初始化處理;X表示粒子群密度;I表示離散聚合程度;Z表示粒子當(dāng)前所在的空間位置;M表示參照坐標(biāo);j表示粒子傳輸鏈路。然后使用K-均值算法在空間粒子群中隨機(jī)選擇若干個(gè)聚類(lèi)中心,將聚類(lèi)中心作為一個(gè)測(cè)試數(shù)據(jù)子集。對(duì)子集進(jìn)行迭代,迭代處理過(guò)程如下所示:
式中,p表示測(cè)試數(shù)據(jù)子集的迭代處理;p表示迭代訓(xùn)練次數(shù);B表示節(jié)點(diǎn)分布均勻性;K表示子群數(shù)量;表示最優(yōu)迭代值。完成迭代后,提取每個(gè)子群中的特征點(diǎn),根據(jù)特征點(diǎn)所在的空間位置,進(jìn)行測(cè)試數(shù)據(jù)的聚類(lèi)[6]。聚類(lèi)處理過(guò)程如下:
式中,表示測(cè)試數(shù)據(jù)的聚類(lèi)處理;表示聚類(lèi)次數(shù);表示聚類(lèi)中心;表示粒子在空間中的更新速度。通過(guò)上述方式,完成基于K-均值算法的測(cè)試數(shù)據(jù)聚類(lèi)處理。
為實(shí)現(xiàn)對(duì)軟件測(cè)試數(shù)據(jù)的高效率生成,利用PSO算法,通過(guò)對(duì)測(cè)試數(shù)據(jù)PSO參數(shù)的線性改進(jìn),實(shí)現(xiàn)對(duì)測(cè)試數(shù)據(jù)離散度的動(dòng)態(tài)化處理。在處理過(guò)程中,對(duì)空間中的粒子群進(jìn)行收斂性分析,以粒子群的外在特征作為參照,進(jìn)行位置的一致性約束。將此過(guò)程作為測(cè)試數(shù)據(jù)離散度動(dòng)態(tài)處理的過(guò)程,此過(guò)程如下所示:
式中,F(xiàn)表示測(cè)試數(shù)據(jù)離散度動(dòng)態(tài)處理;表示收斂行為;a表示一致性約束條件;D表示參數(shù)的線性改進(jìn)處理過(guò)程。在此基礎(chǔ)上,對(duì)完成離散度處理的數(shù)據(jù)空間狀態(tài)進(jìn)行檢驗(yàn),檢驗(yàn)過(guò)程如下:
上文完成了數(shù)據(jù)生成算法的設(shè)計(jì),為實(shí)現(xiàn)該算法在實(shí)際應(yīng)用中生成效果的檢驗(yàn),下述將以某款測(cè)試軟件為例,采用設(shè)計(jì)對(duì)比實(shí)驗(yàn)的方式,進(jìn)行生成算法的測(cè)試。
測(cè)試前,搭建可視化實(shí)驗(yàn)操作平臺(tái),對(duì)生成數(shù)據(jù)過(guò)程中算法的迭代處理過(guò)程進(jìn)行實(shí)時(shí)采集與獲取。可視化實(shí)驗(yàn)操作平臺(tái)的參數(shù)如表1所示。
表1 可視化實(shí)驗(yàn)操作平臺(tái)參數(shù)
按照上述內(nèi)容,搭建對(duì)比實(shí)驗(yàn)測(cè)試環(huán)境。在此基礎(chǔ)上,使用本文設(shè)計(jì)的生成算法,生成軟件測(cè)試過(guò)程中的數(shù)據(jù)。在生成過(guò)程中,根據(jù)軟件的性能,建立軟件測(cè)試數(shù)據(jù)適應(yīng)度函數(shù),同時(shí),引進(jìn)K-均值聚類(lèi)算法,對(duì)適應(yīng)度較高或具有相同迭代特征的數(shù)據(jù)進(jìn)行聚類(lèi)。完成聚類(lèi)后,對(duì)測(cè)試數(shù)據(jù)進(jìn)行離散度的動(dòng)態(tài)處理,集成數(shù)據(jù),即可完成測(cè)試數(shù)據(jù)的生成工作。
在此基礎(chǔ)上,引進(jìn)基于遺傳算法的數(shù)據(jù)生成算法,將其作為對(duì)照組算法。使用此算法生成測(cè)試數(shù)據(jù)時(shí),需要先利用樣本生成方法,對(duì)軟件測(cè)試中產(chǎn)生的數(shù)據(jù)進(jìn)行多維度深度學(xué)習(xí)與訓(xùn)練。當(dāng)數(shù)據(jù)發(fā)生交互后,使用遺傳算法,對(duì)交互數(shù)據(jù)進(jìn)行迭代。為防止數(shù)據(jù)泄露或發(fā)生丟失,還需要在訓(xùn)練中使用對(duì)抗網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)處理。完成上述處理后,整理數(shù)據(jù),實(shí)現(xiàn)測(cè)試數(shù)據(jù)的生成工作。
完成采用兩種生成算法的數(shù)據(jù)生成過(guò)程的設(shè)計(jì)后,設(shè)定數(shù)據(jù)生成的過(guò)程為“0→1”,即原始數(shù)據(jù)集合表示為“0”,兩種算法將持續(xù)進(jìn)行數(shù)據(jù)的訓(xùn)練與迭代,當(dāng)數(shù)據(jù)集合在完成訓(xùn)練達(dá)到“1”后,證明完成訓(xùn)練測(cè)試數(shù)據(jù)生成工作。此過(guò)程進(jìn)行描述如圖1所示。
圖1 兩種算法生成數(shù)據(jù)時(shí)的迭代訓(xùn)練過(guò)程
圖1 中,實(shí)線表示本文算法生成數(shù)據(jù)時(shí)的迭代訓(xùn)練過(guò)程;虛線表示傳統(tǒng)算法生成數(shù)據(jù)時(shí)的迭代訓(xùn)練過(guò)程。根據(jù)圖1中兩條曲線的變化趨勢(shì)可以看出,本文算法在經(jīng)過(guò)了400次迭代后,完成了軟件測(cè)試數(shù)據(jù)生成工作。而對(duì)照組算法需要在完成1 000次以上的迭代,才能完成軟件測(cè)試數(shù)據(jù)生成工作。通過(guò)上述統(tǒng)計(jì)數(shù)據(jù)可以證明,相比傳統(tǒng)的算法,本文設(shè)計(jì)的數(shù)據(jù)生成算法在實(shí)際應(yīng)用中的生成效率較高。
完成上述實(shí)驗(yàn)后,將兩種方法迭代處理過(guò)程中,生成數(shù)據(jù)中未完全覆蓋的組合數(shù)據(jù)數(shù)目作為對(duì)比指標(biāo)。在此過(guò)程中,未完全覆蓋的組合數(shù)據(jù)數(shù)目越多,證明生成的數(shù)據(jù)所覆蓋的范圍越窄,反之,未完全覆蓋的組合數(shù)據(jù)數(shù)目越少,證明生成的數(shù)據(jù)所覆蓋的范圍越大。當(dāng)未完全覆蓋的組合數(shù)據(jù)數(shù)目為0時(shí),證明生成的數(shù)據(jù)覆蓋了所有軟件測(cè)試數(shù)據(jù),即數(shù)據(jù)具有較強(qiáng)的針對(duì)性與實(shí)用性。統(tǒng)計(jì)在不同迭代次數(shù)下兩種算法所生成數(shù)據(jù)的覆蓋程度,將實(shí)驗(yàn)結(jié)果整理成表格,如表2所示。
表2 未完全覆蓋的組合數(shù)據(jù)數(shù)目統(tǒng)計(jì)
綜合表2與圖1所示的實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),相比傳統(tǒng)的數(shù)據(jù)生成算法,本文設(shè)計(jì)的數(shù)據(jù)生成算法的綜合實(shí)用性更強(qiáng),可以在提高數(shù)據(jù)生成效率的基礎(chǔ)上,使生成數(shù)據(jù)中未完全覆蓋的組合數(shù)據(jù)數(shù)目快速降為0。
本文通過(guò)建立軟件測(cè)試數(shù)據(jù)適應(yīng)度函數(shù)、基于K-均值算法的測(cè)試數(shù)據(jù)聚類(lèi)、測(cè)試數(shù)據(jù)離散度動(dòng)態(tài)處理與生成,完成了數(shù)據(jù)生成算法的設(shè)計(jì)。將此算法與本文算法在實(shí)際應(yīng)用中的綜合性能進(jìn)行比對(duì)實(shí)驗(yàn),結(jié)果表明,本文設(shè)計(jì)的數(shù)據(jù)生成算法的綜合實(shí)用性更強(qiáng)。若想將本文設(shè)計(jì)的成果在市場(chǎng)相關(guān)領(lǐng)域內(nèi)推廣使用,還應(yīng)在現(xiàn)有工作的基礎(chǔ)上,對(duì)算法試驗(yàn)進(jìn)行更多的投入,以便全局掌握此算法在使用中存在的優(yōu)勢(shì)與不足,為提高此算法的性能提供更全面的技術(shù)指導(dǎo)。