裘雨音 ,張 靜 ,陳江堯
(1.國網浙江省電力有限公司,浙江 杭州 310012;2.國網浙江省電力有限公司培訓中心,浙江 杭州 310015;3.浙江華云信息科技有限公司,浙江 杭州 310012)
信息管理軟件產品被大量應用在社會的多個領域,軟件產品的質量優劣直接影響軟件應用效果與應用壽命[1]。想要確定軟件產品的質量,就必須展開軟件自動化測試工作[2]。然而,軟件測試會耗費較多的人力和時間。自動化測試由于能夠優化軟件測試質量、保證軟件測試效率,目前已成為軟件管理領域的研究重點之一[3-4]。
目前,針對信息管理軟件自動化測試方面的研究已有許多。文獻[5]以虛擬設備數據記錄軟件為測試對象,構建了軟件測試環境并提出測試方法。該方法取得了較好的應用效果,但對軟件異常位置的定位效果有待進一步驗證。文獻[6]研究了基于自動軟件過程改進與能力評定及ISO 26262的軟件測試方法。該方法對軟件質量的測試結果可信,但測試流程相對復雜。文獻[7]使用正交試驗法完成軟件測試。該方法測試結果有效,但存在隨機誤差。
結合當前軟件自動化測試的需求與前人研究方法存在的問題,本文提出了1種基于深度神經網絡的信息管理軟件自動化測試方法,并對該方法進行了測試與分析。
信息管理軟件運行剖面代表信息管理軟件自動化測試的數據環境。此剖面主要由軟件程序任務流構成[8-9]。軟件任務剖面建模是信息管理軟件自動化測試的基礎。為此,本文使用基于Markov鏈的軟件任務剖面建模方法,構建信息管理軟件任務剖面模型,提取用于信息管理軟件自動化測試的任務流。
1.1.1 提取用戶需求并設計任務剖面模型
①設目前需要自動化測試的信息管理軟件程序任務剖面為D、D的初始節點為De、目前剖面任務流種類為DT。
②若De屬于任務組合狀態節點,則設置其剖面種類為RT。
③若目前節點屬于D的末節點,不具有任務操作信息,則返回步驟①。
④設置執行的自動化測試操作行為為DO。若DT屬于自動化測試任務用例剖面,將DO的變化條件、后置條件、操作概率等信息融合后,歸入D;若DT屬于自動化測試任務場景剖面,將DO的測試行為局限、順序關系、測試結果等信息融合后,歸入D。
1.1.2 信息管理軟件自動測試任務流獲取方法
本文提取D中用于信息管理軟件自動測試的任務流,深度優先遍歷D,檢索自首節點到末節點的全部軟件程序進程路徑。遍歷時,若出現循環模式,便會多次判斷循環的停止條件,且已遍歷的軟件程序進程路徑與已提取任務流信息會緩存在堆棧中。若全部軟件程序進程路徑遍歷完畢便會停止[10]。獲取的信息管理軟件自動測試任務流可以用于測試軟件是否存在異常。具體操作步驟如下。
①構建空的堆棧用來保存全部軟件程序進程路徑信息,并設置De。
②若目前節點屬于D的末節點(其代表一條自開始至結束的路徑已獲取)[11],則存儲棧中信息,并將其加工為新的任務流。
③遍歷自De開始的各變化條件,設置目前需要處理的任務為DP,則目標節點為M。在棧中,檢索偏序關系DP ④輸出棧頂的偏序關系DP 1.1.3 軟件任務狀態轉移概率運算與優化 任務剖面模型和任務流包含信息管理軟件自動化測試所用的全部用例與參數信息。本文使用Markov 模型對任務流中的用例與參數信息進行重要性評價,以此提取重要的任務用例與參數信息,用于自動化測試[12-13]。因為信息管理軟件任務狀態具有常反性,所以可以通過Markov模型,結合已知的軟件任務狀態轉移概率Qji,計算其極限概率αi。 (1) 式中:R為軟件任務狀態空間。 極限概率αi越大,則D中某節點的重要性越高。使用式(1)計算D中某節點任務流里全部狀態,獲取組合概率α′。αi較大的任務流,重要性也較高。利用重要性顯著的用例與參數信息組成信息集合O,使O作為重要任務流信息樣本,并對其優先測試。 深度自編碼器網絡結構如圖1所示。 圖1 深度自編碼器網絡結構 本文使用深度學習神經網絡進行軟件異常的自動識別。深度自編碼器網絡屬于深度學習神經網絡結構中的前向傳播神經網絡,具有強大的數據識別分析能力。因此,本文主要使用深度學習神經網絡技術中的深度自編碼器網絡來完成軟件異常的自動識別。在識別過程中,本文將獲取的信息管理軟件任務流中重要的用例與參數信息作為此網絡的識別樣本。 若深度自編碼器網絡輸入樣本為重要的任務流信息,則使用式(2)、式(3)能夠獲取輸入層與輸出層的激活狀態。 x=S(VO+c) (2) 式中:x為輸入層的輸入數據(軟件自動化測試任務流中重要的用例與參數信息)與輸出數據(軟件自動化測試結果-軟件異常識別結果);S( )為sigmoid函數;V為權重;c為第二特征層的偏置量。 l=S(VO+c′) (3) 式中:l為輸出層的輸入數據(軟件自動化測試任務流中重要的用例與參數信息)與輸出數據(軟件自動化測試結果-軟件異常識別結果);c′為輸出層的偏置量。 本文設置相對熵(relative entropy,RE)。軟件自動化測試結果的損失函數為: (4) 自動編碼器使用隨機梯度下降算法完成網絡訓練。權值更新方法為: (5) 式中:ε為更新步長。 在使用自動編碼器時需要設置稀疏編碼約束條件,以約束神經元的激活量,從而保證一個重要任務流信息樣本僅有少數神經元處于激活狀態。此方式可實現樣本的數據稀疏編碼。此條件設置后,軟件自動化測試結果的損失函數為: (6) 對訓練完畢的多個稀疏自編碼器進行堆疊后便可建立深度自編碼器網絡。此網絡參數是以逐層貪婪訓練算法獲取的,可以使用原始輸入的重要任務流信息O′訓練網絡首層。獲取O′的特征參數c1、c2后,網絡首層把原始輸入的O′變換為激活值構成的神經元向量x′,將其設成第二層的輸入,并調整權值再次訓練以獲取第二層的特征參數c′1、c′2。 在訓練各層參數的過程中,應保證剩下的每層參數相對固定。因此,若想獲取更好的結果,先要在訓練結束后微調全部層參數,再將特征參數c1、c2設成Softmax分類器的分類目標,從而實現軟件自動化測試的異常識別。軟件自動化測試結果為: (7) 式中:qj為Softmax分類器輸出的軟件異常與否的分類概率值;m′為c1、c2的數量。 在得到u后,深度自編碼器網絡會將輸出的異常識別結果以信息管理軟件自動化測試報告的形式輸出。報告包括異常問題、異常問題的內容、異常問題出現的時間等。 結合識別的信息管理軟件異常報告,本文使用基于異常報告分析的軟件異常定位方法,對軟件異常報告與源代碼文件結構進行類似性判斷。如果類似性較大,便可結合源代碼文件的位置信息判斷異常出現位置。 1.3.1 軟件異常文本預處理 軟件異常報告與源代碼文件文本中的數據中,并非所有詞都能被信息檢索技術分析,因此需要對其中的異常文本進行預處理。 為了對軟件異常報告與源代碼文件結構進行類似性判斷,需要對異常報告與源代碼文件進行預處理。在處理過程中,需要將異常報告與源代碼文件變換為抽象語法樹,從而直接提取其中的信息內容,并對其進行分詞、去除停用詞等處理。 在分割信息管理軟件異常報告與源代碼文件標志符的過程中,某部分標志符一般會遵循某種分割標準以完成分割操作。而在此操作下,會存在某詞命名權值超標問題。因此,本文把信息管理軟件異常報告與源代碼文件中全部非字母符號轉換成空格,并通過空格把文本分割為一組連續的詞。 1.3.2 計算源代碼結構信息和異常報告的類似度 在異常報告和源代碼文件預處理之后,需要將預處理后的源代碼文檔里的內容依次和預處理后異常報告內容進行詞語匹配。預處理后的源代碼整體結構化信息ζm和異常報告的結構化信息ψm的類似度運算結果為: (8) 因為異常一般會出現在源代碼文件的某個方法或代碼塊上,本文將V變大,以運算源代碼文件里的信息與異常報告結構化信息的契合度。預處理后源代碼方法信息τm和異常報告類似度的運算結果為: (9) 對Sima、Simb實施加權處理,便可獲取源代碼結構信息和異常報告整體類似度運算結果: Simc=Sima-VSimaVSimb (10) 1.3.3 結構信息和堆棧信息類似度運算 異常報告堆棧中會緩存一部分信息,需對這些信息進行類似度運算。為此,本文對ζm和異常報告中堆棧信息Γm的類似度進行運算。 (11) 式中:d(ζm,Γm)、φ分別為ζm和Γm的最小距離、閾值。 1.3.4 整體類似度運算 結合源代碼結構信息和異常報告類似度運算結果、異常報告中堆棧緩存信息和源代碼結構信息類似度運算結果,可獲取如式(12)所示的整體相似度運算結果。 Simo=1-VSimcVSims (12) 如果Simo數值較大,則異常報告信息與源代碼文件存在高度類似性,可結合源代碼文件的位置判斷軟件出現異常的位置。 用于衛星軌道控制的信息管理軟件任務剖面如圖2所示。 圖2 用于衛星軌道控制的信息管理軟件任務剖面 為測試本文方法的應用性,本文在Matlab軟件中,以衛星軌道信息管理軟件為例進行測試。本文使用本文方法提取衛星軌道信息管理軟件任務剖面,以此提取其任務流信息。 本文方法依次提取2種任務剖面中的任務流信息,以作為軟件自動化測試的樣本,并統計本文方法的出錯次數。本文方法出錯次數測試結果如表1所示。 表1 本文方法出錯次數測試結果 表1測試結果顯示,使用本文方法后的出錯次數均為0次。該結果證明本文方法對衛星軌道信息管理軟件自動化測試結果可信。信息管理軟件自動化測試方法的應用步驟分別為測試方案設計、測試程序開發、測試程序執行、測試結論輸出、報告生成。不同步驟自動化測試耗時如表2所示。 表2 不同步驟自動化測試耗時 分析表2數據可知:在執行信息管理軟件自動化測試任務時,本文方法自動化測試執行耗時相對較少(最低僅為1 min),且總耗時最少(僅13 min);文獻[6]方法、文獻[7]方法的執行總耗時較多,分別高達65 min、81 min。根據對比結果,本文方法的應用難度最小,在信息管理軟件自動化測試方面具有較高的應用效率。 在使用本文方法對信息管理軟件進行自動化測試時,并非神經元激活數量越多越好。因此,需要測試神經元激活數量對測試效果的影響,從而設置合適的神經元激活數量,以保證信息管理軟件自動化測試精度。為此,本文將神經元激活數量依次設成1個、3個、5個、7個、9個。得到的神經元激活數量對測試效果的影響如表3所示。 表3 神經元激活數量對測試效果的影響 分析表3可知,神經元激活數量并不是越多越好。當神經元激活數量為3個時,本文方法對衛星軌道信息管理軟件的自動化測試結果出錯次數為0次。此時,本文方法的應用效果最佳。而隨著神經元激活數量逐漸增多,出錯次數變多。在實際應用時,需要選擇合適的神經元激活數量。 軟件測試屬于軟件研發過程中的核心程序,軟件自動化測試方法可以自動測試軟件應用程序的性能是否滿足研發標準與研發需求。為此,本文將深度神經網絡應用到信息管理軟件自動化測試問題中,提出了1種基于深度神經網絡的信息管理軟件自動化測試方法。此方法主要使用基于 Markov 鏈的軟件任務剖面建模方法、基于深度學習神經網絡的軟件異常自動化識別方法、基于異常報告分析的軟件異常定位方法,完成信息管理軟件任務流信息提取、軟件異常自動化識別、軟件異常程序定位。試驗結果表明,本文方法對異常問題的測試結果與定位結果都較準確,且在自動化執行效率方面存在優勢,具有一定應用價值。但在應用本文方法時,需要注意深度自編碼器網絡的神經元激活數量。在試驗環境中,最優神經元激活數量為3個。1.2 深度學習神經網絡的軟件異常自動識別



1.3 基于異常報告分析的軟件異常定位方法
2 試驗結果與分析




3 結論