劉光源
(湖北經濟學院,湖北 武漢 430205)
軟件測試是檢驗軟件質量、測試軟件運行速度等指標的關鍵環節之一,任何一款軟件在上市或投入使用前,都需要經歷測試階段。在測試過程中,軟件需要生成大量的數據,可以通過檢驗數據的完整性或挖掘測試軟件生成數據之間的規律,進行軟件運行質量的評估。但現階段大部分軟件在測試后生成的數據具有冗余、量大的特點,如果按照常規的方法,采用窮盡測試手段,不僅會增加軟件測試的工作量,還會造成測試效率的低下[1]。因此,有必要在現有工作的基礎上,加大對軟件測試中數據生成過程的研究,通過生成少量、高質量數據,提高測試的速度與綜合效率。
為落實此項工作,相關科研單位提出了基于云計算技術的數據生成方法,此方法可以有效降低測試軟件數據的生成量,但卻難以保障所生成的數據具有針對性與覆蓋全面性[2]。此外,在深入對此方面內容進行研究后發現,還有學者通過聚類算法、均值算法生成數據,根據現階段的實踐,這些算法所生成的數據不僅可以解決數據缺少代表性的問題,還可以提高生成數據的覆蓋面。但相關生成算法的研究現階段仍處于理論階段。
基于上述背景,本文將在此方面研究中引進K-均值聚類算法,設計一種針對軟件測試數據的全新生成算法,通過此種方式,解決軟件測試中的核心問題與重難點問題。
為確保設計的數據生成算法可以生成適用于軟件測試的數據集合與數據組,在設計算法前,首先建立軟件測試數據適應度函數,明確測試數據聚類方向[3],從而確保數據生成數據圍繞軟件測試適用范圍展開。在此過程中,設定一個分支函數,將此函數表示為f,所有生成的數據都應當屬于f的分支。在f的分支中插入結構性函數,對數據的生成過程進行約束[4]。此過程如式(1)所示:

式中,表示分支函數;表示數據生成過程的約束條件;表示函數極限值;表示最小構造值。在此基礎上,通過對函數最小值的求解,進行數據與軟件測試過程適應度的評估,將評估結果作為適應度函數建立的依據。提取適應度較強的數據,將其作為函數填充數據,刪除適應度較弱或不符合插值的數據,建立如下所示的軟件測試數據適應度函數:

式中,表示軟件測試數據適應度函數;表示函數最小值解集;表示適應度參數;表示適應度較強的數據;表示生成數據的適配性。按照上述方式,完成數據生成過程中適應度函數的建立。
在完成上述設計后,為進一步提高數據與軟件測試過程的適配性,引進K-均值算法,對測試數據進行聚類,通過此種方式,使具有相同特征或指向的數據聚合在一起[5]。在此過程中,需要將空間中的粒子群劃分為K個子群,通過對這些子群K中最優聚合點的選擇,進行粒子在空間中位置的更新。聚類前,將粒子的空間位置進行初始化處理,處理過程如下:

式中,l表示空間位置初始化處理;X表示粒子群密度;I表示離散聚合程度;Z表示粒子當前所在的空間位置;M表示參照坐標;j表示粒子傳輸鏈路。然后使用K-均值算法在空間粒子群中隨機選擇若干個聚類中心,將聚類中心作為一個測試數據子集。對子集進行迭代,迭代處理過程如下所示:

式中,p表示測試數據子集的迭代處理;p表示迭代訓練次數;B表示節點分布均勻性;K表示子群數量;表示最優迭代值。完成迭代后,提取每個子群中的特征點,根據特征點所在的空間位置,進行測試數據的聚類[6]。聚類處理過程如下:

式中,表示測試數據的聚類處理;表示聚類次數;表示聚類中心;表示粒子在空間中的更新速度。通過上述方式,完成基于K-均值算法的測試數據聚類處理。
為實現對軟件測試數據的高效率生成,利用PSO算法,通過對測試數據PSO參數的線性改進,實現對測試數據離散度的動態化處理。在處理過程中,對空間中的粒子群進行收斂性分析,以粒子群的外在特征作為參照,進行位置的一致性約束。將此過程作為測試數據離散度動態處理的過程,此過程如下所示:

式中,F表示測試數據離散度動態處理;表示收斂行為;a表示一致性約束條件;D表示參數的線性改進處理過程。在此基礎上,對完成離散度處理的數據空間狀態進行檢驗,檢驗過程如下:


上文完成了數據生成算法的設計,為實現該算法在實際應用中生成效果的檢驗,下述將以某款測試軟件為例,采用設計對比實驗的方式,進行生成算法的測試。
測試前,搭建可視化實驗操作平臺,對生成數據過程中算法的迭代處理過程進行實時采集與獲取。可視化實驗操作平臺的參數如表1所示。

表1 可視化實驗操作平臺參數
按照上述內容,搭建對比實驗測試環境。在此基礎上,使用本文設計的生成算法,生成軟件測試過程中的數據。在生成過程中,根據軟件的性能,建立軟件測試數據適應度函數,同時,引進K-均值聚類算法,對適應度較高或具有相同迭代特征的數據進行聚類。完成聚類后,對測試數據進行離散度的動態處理,集成數據,即可完成測試數據的生成工作。
在此基礎上,引進基于遺傳算法的數據生成算法,將其作為對照組算法。使用此算法生成測試數據時,需要先利用樣本生成方法,對軟件測試中產生的數據進行多維度深度學習與訓練。當數據發生交互后,使用遺傳算法,對交互數據進行迭代。為防止數據泄露或發生丟失,還需要在訓練中使用對抗網絡進行數據處理。完成上述處理后,整理數據,實現測試數據的生成工作。
完成采用兩種生成算法的數據生成過程的設計后,設定數據生成的過程為“0→1”,即原始數據集合表示為“0”,兩種算法將持續進行數據的訓練與迭代,當數據集合在完成訓練達到“1”后,證明完成訓練測試數據生成工作。此過程進行描述如圖1所示。

圖1 兩種算法生成數據時的迭代訓練過程
圖1 中,實線表示本文算法生成數據時的迭代訓練過程;虛線表示傳統算法生成數據時的迭代訓練過程。根據圖1中兩條曲線的變化趨勢可以看出,本文算法在經過了400次迭代后,完成了軟件測試數據生成工作。而對照組算法需要在完成1 000次以上的迭代,才能完成軟件測試數據生成工作。通過上述統計數據可以證明,相比傳統的算法,本文設計的數據生成算法在實際應用中的生成效率較高。
完成上述實驗后,將兩種方法迭代處理過程中,生成數據中未完全覆蓋的組合數據數目作為對比指標。在此過程中,未完全覆蓋的組合數據數目越多,證明生成的數據所覆蓋的范圍越窄,反之,未完全覆蓋的組合數據數目越少,證明生成的數據所覆蓋的范圍越大。當未完全覆蓋的組合數據數目為0時,證明生成的數據覆蓋了所有軟件測試數據,即數據具有較強的針對性與實用性。統計在不同迭代次數下兩種算法所生成數據的覆蓋程度,將實驗結果整理成表格,如表2所示。

表2 未完全覆蓋的組合數據數目統計
綜合表2與圖1所示的實驗結果可以發現,相比傳統的數據生成算法,本文設計的數據生成算法的綜合實用性更強,可以在提高數據生成效率的基礎上,使生成數據中未完全覆蓋的組合數據數目快速降為0。
本文通過建立軟件測試數據適應度函數、基于K-均值算法的測試數據聚類、測試數據離散度動態處理與生成,完成了數據生成算法的設計。將此算法與本文算法在實際應用中的綜合性能進行比對實驗,結果表明,本文設計的數據生成算法的綜合實用性更強。若想將本文設計的成果在市場相關領域內推廣使用,還應在現有工作的基礎上,對算法試驗進行更多的投入,以便全局掌握此算法在使用中存在的優勢與不足,為提高此算法的性能提供更全面的技術指導。