彭致華 王霞
(浙江海洋大學信息工程學院 浙江省舟山市 316022)
德國數學家Wille[1]于1982年提出的形式概念分析,在數據分析、知識發現、規則提取及軟件工程等領域得到了廣泛的應用。該理論是以形式背景的二元關系數據表為基礎,從中探索得到各對象和屬性之間存在的相互關系,為數據分析提供了一種強有利的工具。形式概念分析,也稱作概念格,它的每個節點是一個形式概念,由外延和內涵兩部分組成。概念格通過Hasse 圖生動簡潔地體現概念之間的泛化和例化關系[3]。
軟件測試與軟件開發類似,也是一項比較高強度和難度的工作。測試人員需要在不同時間段對不同類型的軟件系統中不同階段作出測試,從而能夠對照客戶需求發現其中存在的不足和問題。有實驗研究表明,軟件的規模越大,系統功能模塊越復雜,會導致測試難度的加大,甚至會影響到最終測試質量[4]。在現階段,軟件測試具備的自動化條件還不夠完備,雖然目前已經出現了一些軟件自動化測試工具,但由于工具本身的可擴展性差、價格昂貴、操作復雜等原因,并未能得到很好的應用,軟件測試仍然需要大量的人工介入。在軟件測試相關領域中,國內很多學者也在不斷探索各種有效的軟件質量評價方法。廖錦舜[6]等人提出了一種基于模糊神經網絡的軟件質量評價方法,通過建立評價等級模糊集以及訓練好的網絡對軟件質量進行評價。王欣[7]等人采用二元語義加權算子與三角模糊數的方法,通過加權集結最終得到軟件質量的綜合評價值。岳川[8]等人構造了一種基于群決策和投影測度的軟件質量評價模型,該模型側重于研究軟件用戶的需求,從需求這一角度分析軟件質量概況。禹建麗[9]等人發掘了一種基于猶豫模糊集的軟件質量評價模型,通過將猶豫模糊集與直覺模糊集組合的綜合猶豫模糊評價矩陣,結合軟件各質量屬性得分,從而得出一個軟件質量排序信息。
形式概念分析方法已經逐漸融入到軟件工程這一學科,對象和屬性之間所建立的二元關系經常出現在軟件相關領域[5],對這種關系的處理方法也間接地推動了形式概念分析在軟件測試等其它方面的應用。蔣平團隊[10]通過結合形式概念分析方法對需求分析、結構設計以及系統設計階段做出了深入探討,發現了一群類所表現的共同或者重復的特征以及相關聯性,從而可以更加合理地安排軟件開發工作。但是,目前形式概念分析在軟件測試階段的研究較少,本文旨在探究一種基于形式概念分析的新型軟件質量綜合評價方法,通過構造概念格,將不同軟件以及不同測試流程的結果信息綜合體現,能夠幫助測試人員鑒別質量較高以及質量較低的軟件,從而得到一個軟件綜合評價體系。該方法相比較傳統人工結合測試文檔的軟件質量評估在效率與準確度上都將有很大的改進。
定義1[1]稱T:=(G,M,I)為一個形式背景,其中,G 是一個對象集,M 是一個屬性集,I 是G 和M 之間的一個關系。分別稱G 和M 的元素為對象和屬性。
若對象g 和屬性m 具有關系I,則記為 或gIm。
定義2[1]設T=(G,M,I)為形式背景,若二元組(X,B)滿足X'=B,B'=X,則稱(X,B)為形式概念,其中:

設T=(G,M,I)是形式背景,對任意的形式概念(X1,B1),(X2,B2)定義如下偏序關系:

記L(G,M,I)或L(T)為T=(G,M,I)中所有形式概念構成的集合,則L(T)是格,稱其為T 的概念格。在概念格L(T)上定義上、下確界如下:

性質1[2]設T=(G,M,I)是一個二元背景,X,X1,X2為任意對象子集,B,B1,B2為任意屬性子集,則下列性質成立:
軟件測試(Software Testing),是指通過人工或自動的方式對軟件系統運行或檢測,判斷驗證其中的規則和標準,同時對存在的偏差做出評價并加以改進的過程[11]。目的在于檢測軟件產品是否滿足規定要求同時能夠發現預期輸出結果和實際結果兩者之間的差別所在,主要包括需求資格書審查、概要設計與程序設計審查、單元測試、集成測試、功能測試、有效性測試、系統測試等七個階段。
1.2.1 需求資格書審查
在最初的需求資格書審查流程中,軟件測試人員應該參與到系統或產品的需求分析工作當中,清楚用戶的需求所在,仔細核實需求說明是否與用戶的需求相符合,表述是否準確無誤。
1.2.2 概要設計與程序設計審查
在概要設計與程序設計審查階段,軟件測試人員需要根據已有的需求說明書來分析評估系統結構的合理性,例如審核數據庫中的外模式、模式以及內模式。同時需仔細審閱數據流圖、用例圖以及UML 等,綜合判斷系統結構的邏輯性。

表1:軟件-階段測試得分數據表

表2:形式背景(G,M,I)

表3:形式背景(G,M,I)的所有形式概念
1.2.3 單元測試
單元測試一般采用白盒測試的方法,針對軟件系統中最小的組件或者模塊,對其中程序開展邏輯覆蓋及路徑的測試。通過開發人員設計的程序代碼,可以用來檢查其中很小很明確的功能是否完全正確。
1.2.4 集成測試
集成測試也稱為組裝測試,將經過單元測試的模塊或者組件組裝起來形成一個可運行的系統,測試的目的主要是找出模塊間接口的問題,驗證當各個子系統模塊集成在一起時是否達到了預期的功能。有的系統可能單模塊在運行時沒有問題,但是集合在一起時就會產生問題。
1.2.5 功能測試
功能測試階段根據需求說明書,從用戶的角度來進行功能驗證,從用戶界面測試等維度出發,確認每個功能是否已經按照需求說明的要求運行,能夠正確地接收輸入和輸出結果。測試者采用逐項單步測試的方法,檢驗功能是否滿足要求。
1.2.6 有效性測試
有效性測試也稱為確認測試,在此過程中,軟件測試人員需要驗證系統的各個功能性能及特征是否都符合用戶的要求。
1.2.7 系統測試
在系統測試階段中,把環境、軟硬件和工作人員等看成一個整體,軟件進行一套完整的測試流程,主要包含安全、壓力、性能以及回復等測試,直到與開發需求基本一致。
在一家互聯網公司中,近期有A、B、C、D、E 五款軟件,上線投入使用前需要首先通過測試部門經過一系列測試,然后將測試結果評估報告反饋給開發部門,最后不斷改進。測試部門需要對每款軟件進行需求資格審查、概要設計審查、單元測試、集成測試、功能測試、有效性測試以及系統測試七個流程,按照評判標準對每個流程打分,滿分100 分。各軟件在各測試流程的實際得分情況如表1所示。

圖1:算法流程圖

圖2:形式背景(G,M,I)的概念格
將表1中A、B、C、D、E 這5 款軟件作為5 個對象,分別用1、2、3、4、5 表示;將7 個測試流程的得分作為7 個屬性分別用a、b、c、d、e、f、g 表示,同時定義各對象以及屬性之間的二元關系。
(1)若某款軟件的‘需求資格書審查’得分在70 分以上記為1,其它記為0;
(2)若某款軟件的‘概要設計審查’b 得分在70 分以上記為1,其它記為0;
(3)若某款軟件的‘單元測試’c 得分在70 分以上記為1,其它記為0;
(4)若某款軟件的‘集成測試’d 得分在70 分以上記為1,其它記為0;
(5)若某款軟件的‘功能測試’e 得分在70 分以上記為1,其它記為0;
(6)若某款軟件的‘有效性測試’f 得分在70 分以上記為1,其它記為0;
(7)若某款軟件的‘系統測試’g 得分在
70 分以上記為1,其它記為0。
則表1軟件-階段測試得分數據表可轉換為一個形式背景(G,M,I),如表2所示。
2.3.1 算法流程圖
為了能夠進一步提升軟件質量評價的效率,本節設計實現了一種自頂向下的概念格構造算法。根據形式背景二元關系,逐一匹配運算滿足條件的對象和屬性,存儲并輸出形式概念,從而構造概念格,算法流程圖如圖1所示。
2.3.2 核心代碼

通過程序運算,表2形式背景(G,M,I)對應的概念如表3所示。
構造的概念格如圖2所示。
根據實驗數據,該算法程序從運行開始到結束累計消耗時間為0。01s。
基于概念格的軟件質量綜合評價方法,提供了一個更為綜合以及準確的評估信息,并間接提升了軟件測試工作的效率。
根據表3的形式概念,可以得到軟件測試結果相關信息。例如:概念C2: ({1},{a,b,d,e,f,g }),除了單元測試,其他測試階段得分都合格的只有軟件A;概念C6:({2,4},{a,c,e}),需求資格書審查、單元測試、功能測試得分都合格的為軟件B 與D;概念C7:({1,4,5),{a,f}),需求資格書審查、有效性測試都合格的只有軟件A、D 與E。
根據圖2的概念格,可以判斷質量較高以及質量較低的軟件分類情況,靠近頂部則軟件質量較高,靠近底部相對較低。例如C2中軟件對象1 質量最高,除了屬性c 不滿足,其它屬性均滿足; 而C9 中軟件對象3 質量較低,僅b、d 屬性滿足,其他屬性都不滿足。
本文通過采用形式概念分析方法,設計并實現了一種概念格求解構造算法,同時結合各軟件及在各流程測試結果,探索了一種軟件質量綜合評價方法,可以在分析大量軟件測試評估結果以及軟件的問題改進上提供有效地參考。但是,能否進一步探究軟件測試的自動化運行以及影響軟件質量的相關因素等問題,將是接下來需要思考的方向。