霍婷婷
(牡丹江師范學院 黑龍江·牡丹江 157012)
目前,在無人機系統中,不管是系統控制軟件,還是導航系統軟件、機載軟件,都是以軟件技術作為核心的。所以,無人機機載軟件的可靠性保證了無人機系統運行安全。同時,無人機系統軟件門類很多,每款軟件都起著不同的作用。隨著無人機已經廣泛應用于農作物植保、電力巡檢、測繪等領域,無人機系統軟件產品規模和復雜性的急劇增加,軟件產品質量問題日益突出,事故頻頻發生,軟件產品質量問題已成為人們日益關注的焦點。軟件測試作為發現軟件問題的一種方法受到了廣泛關注。軟件測試是軟件開發整個流程中必不可少的一環,也是保障軟件可靠性的重要手段。軟件測試從普通意義上講,就是為了發現錯誤而執行程序的過程,其根本目的是在軟件產品投入市場之前,通過發現并更正軟件中的錯誤,使軟件中的錯誤密度滿足可控要求。軟件測試需要在限定的人力、物力和時間內,找出軟件中存在的缺陷,并對這些缺陷進行修正,以此來提高軟件產品的質量,降低軟件使用的風險。
眾所周知,在進行軟件測試的過程中,軟件的復雜程度、開發人員的自身素質以及經驗、選擇的測試方法以及運用的技術等等都會對軟件測試造成重大的影響,那么為了保證測試的質量,人們提出一個新的名詞——測試用例。然而,軟件測試又是一個十分復雜的過程,其中軟件測試計劃的制定和相應的測試用例的設計又是至關重要的環節,這兩個過程將需要投入大量的時間和人力,其結果將直接決定軟件測試的費用、效率和質量。如何對測試用例集進行有效的優化,對系統進行充分有效的測試,是目前軟件測試研究領域的關鍵課題,也是迫切需要解決的課題之一。測試用例集優化技術大致可以分為三類:測試用例選擇(Test case selection,TCS)、測試用例約簡(Test case reduction,TCR)和測試用例優先級排序(Test case prioritization,TCP)。其中,TCS技術和TCR技術在回歸測試中會丟棄一些測試用例,而這些廢棄的測試用例也可能會發現軟件的缺陷,但TCP技術不會有添加、刪除、修改等不可逆操作,因此不會導致可能發現軟件缺陷的測試用例的丟失。
TCP技術作為典型的回歸測試用例預優化方法的一部分,其在提高回歸測試效率方面發揮著巨大作用,逐漸成為當前軟件行業的研究熱點之一。
1998年TCP的思想被首次提出,該思想一經提出就指出:首先對測試用例集進行初步選擇,然后根據優先級對選擇的測試用例進行排序,并通過實驗初步驗證了該方法的有效性。然后文獻[4]給出了TCP的形式化定義,提出了總體策略和附加策略,并基于不同的覆蓋率驗證了這兩種策略的有效性,同時文章還最早提出了平均缺陷檢測率(Average Percentage of Fault Detection,APFD)的概念,它是用來評價、比較不同測試用例優先級排序技術有效性的度量法則。實踐表明,TCP技術可以幫助測試人員提高缺陷檢測率,從而盡快開展軟件修復工作。
在無人機機載軟件的回歸測試中,測試用例同時受到多個排序標準的影響,因此很難按照單一的排序標準對測試用例進行排序以滿足實際需要。因此,許多研究者開始將多目標測試用例優先排序(Multi objective test case prioritization,MOTCP),即將多目標優化與傳統TCP技術相結合,從而達到適應于實際工程應用的目的。現有的MOTCP算法根據排序方法的不同可分為兩類:加權法和Pareto最優法,其中前者占大多數,后者的使用相對較少。加權法是在確定測試用例的優先級時,將權重分配給多個優化目標,然后根據求和值對測試用例進行排序。實際上,使用加權求和的加權法最終是把多目標問題轉化為單目標問題進行求解。而Pareto最優法通過計算Pareto最優解集,給出一組備選的最優TCP方案,其研究算法主要集中在以NSGA-II算法為代表的群體智能算法領域。另外,有研究者將群體智能算法應用于多目標優化領域,主要包括基于粒子群算法和蟻群算法的多目標TCP技術等。
多目標TCP是在傳統排序方法的基礎上同時考慮多個排序準則而出現的一種排序方法,根據參考文獻[5]給出的多目標優化的定義,可以用以下數學模型對該問題進行描述:
無人機機載軟件的回歸測試的主要目的是在短時間內發現更多的軟件錯誤,并能利用APFD作為度量準則。對測試用例進行排序后,APFD計算的結果表示測試用例集的缺陷檢測率,其中,d為代碼的缺陷數,第一個檢測到缺陷i的測試用例在執行序列中的位置用TFi表示,則APFD的計算公式可表示為式(1)。

在無人機機載軟件的回歸測試過程中,如果測試用例還沒有被執行,則APFD的值是未知的。因此,代碼覆蓋率(Code coverage)通常用來代替APFD值作為優化目標,而將APFD值作為衡量TCP效果的準則。為了優先考慮代碼覆蓋率高、執行時間短的測試用例,本文以平均塊覆蓋率(Average Percentage of Block Coverage,APBC)為優化目標,計算方法如式(2)所示。在執行測試用例之前,可以通過覆蓋率分析工具獲取測試用例的覆蓋率信息,因此可以在所有測試用例執行之前使用APBC來指導TCP。

其中TBi是序列中發現的第一個錯誤的用例的位置號,n是測試用例的數量,m是該測試用例集中發現的錯誤的數量,并且是ETt測試用例t的執行時間。由于APBC是測試用例序列塊覆蓋率(Percentage of Block Coverage,PBC)的平均值,值越大表示這個序列能盡早地達到更高的塊覆蓋率。如表1所示,其中A,B,C,D,E為測試用例,相應的行表示這個測試用例覆蓋的塊。

表1:測試用例和PBC信息對應表
假設測試用例序列Ts1=

圖1:測試用例序列與PBC之間的關系
盡管在近幾年,對測試用例優先級排序這一課題的研究,研究人員逐漸提出多種技術方法以及度量準則來指導快速有效的回歸測試。即使在相關研究領域已取得了豐碩的研究成果,但隨著無人機機載軟件規模以及種類不斷地擴大,現有的TCP技術還將面臨更多的挑戰。首先要解決 TCP算法的復雜度問題,因此一個重要的研究方向就是找出影響測試用例使用的各種因素,并綜合各種因素優化TCP技術。其次,采用更靈活的TCP算法,并利用測試過程的實時反饋信息對它進行動態調整,使其不斷地適應不同的測試環境,從而提高回歸測試的有效性。
無人機機載軟件與傳統領域中的銀行金融軟件一樣,本身有著高可靠性和高安全性的要求,在機載軟件回歸測試的過程中,適當測試用例排序會使得測試人員及早發現源代碼中的錯誤,因此可以使用TCP技術對測試用例集進行優化。隨著機載軟件的規模及種類不斷地擴大,在多目標TCP數學模型的基礎上,本文從算法復雜度及實時效果兩方面提出了無人機機載軟件測試用例優先級排序可能的研究方向。