文/劉睿 張彤 丁慧
信息安全保密產品是組成信息安全工程中的核心,其主要任務是確保信息快速傳遞與處理,并確保數據的安全和保密,對用戶的數據和網絡完全與運行提供保障。為保證信息系統安全,需用自主研制的安全保密產品,而自主研制的安全產品的好壞主要取決于開發活動如何開展。測試是其生命周期中一個非常關鍵的環節,關乎軟件的安全和質量,是不可缺少的一部分,其是確認整個提供的功能是否正確,以及功能是否實現,對軟件各個部分進行檢驗,保證軟件的質量與運行。
軟件測試的流程主要有需求解析、測試安排、測試用例計劃、測試境況建設、測試運行、測試匯報總結、缺陷改良、軟件評價、測試總結。軟件測試基本流程圖如圖1所示。
測試用例是軟件測試的核心,是測試執行的最基礎的憑據。測試用例設計指的是軟件測試全部的行為過程,屬于合理性的組織歸納。軟件測試具有計劃性、流程性以及組織性,對軟件測試用例進行設計,目的是使軟件測試的行為可以改變成可管理的形式。在軟件質量管理當中,軟件測試是十分實際的行為,但是用時較多。考慮用時的因素,軟件測試活動需要進行量化加強,進一步實現管理層對測試流程的掌握,測試用例實際上也是測試活動中比較量化的方式之一。
軟件測試是無法實現窮舉測試,在較大數據量中選取可以用于測試的數據,并且數據需要具有特殊性、代表性,這樣的測試可以節省大量的測試成本。軟件測試中,測試用例的主要作用有四點,首先,對測試用例進行計劃,并實施測試,可以避免測試的盲目性,提高工作效率;其次,使用測試用例,可以突出軟件測試的重點,明確軟件測試的目的;然后,更新軟件版本之后,僅需要對保存測試用例進行測試即可,可以緩解工作強度,減少項目的時間;最后,復用化、通用化的功能板塊,有助于軟件開發,測試用例也可以促進軟件測試的進行,并在測試用例的細化過程中提高測試效率。
基于軟件需求設計測試用例時,需要軟件測試用例覆蓋全部測試需求。軟件測試用例與軟件需求非一一對應的關系,一個軟件需求可以對應一條測試用例,也可對應多條測試用例,反之,一條測試用例可以關聯一個測試需求,也可關聯多個測試需求,具體關系如圖2所示。
如圖2可以看出,測試用例與測試需求之間密切聯系,通過軟件需求可以確定測試用例。因此,為了覆蓋全部的軟件需求,引入測試用例,將軟件需求以規格化的方式表示出來,以便測試當中,根據測試用例的要求,驗證各個測試需求。
軟件測試用例的計劃,大部分是根據測試人員的專業技術與經驗,由于測試用例的編寫人員不一,在編寫格式中也存在差異,造成測試存在盲目性;且測試用例占整個測試成本的50%,若在每次需求評審后,根據實際場景重新設計測試用例,缺少全局性的考量,尤其針對具有大量相同或相似的場景的產品,嚴重加大了開發成本,也無法保證測試用例的質量。針對以上問題,引入復用軟件測試用例技術,建立復用測試用例流程,在實際測試中該技術提高測試效率,保證測試質量。
軟件測試過程中有很多可復用的資源,這些資源如果得到很好的管理,在同產品或近似的跨平臺項目進行測試時,均可重復利用。常用的測試資源主要包括測試的計劃、測試的工具、測試的說明、測試的數據、測試的成果以及測試用例等。復用資源可應用在同一測試產品的不同測試階段、不同項目或回歸測試中,但測試資源具有不完整性,需要通過一定的測試經驗進行補充。測試資源還存在抽樣程度的差異,抽樣程度偏低,則容易形成規范性的說明,而抽象程度偏高,則僅能利用文字進行表述。

圖2:需求與用例的關系圖
可復用測試用例主要特征有通用性、獨立性、粗粒度、易維護性,詳細說明見表1。
測試用例是軟件測試的執行基礎,是軟件測試的核心。測試用例庫的功能完善,是為了加強測試用例的種類劃分與歸檔,有助于統一管理、儲存、修護測試用例的實現。測試用例庫的建立,不僅僅可以實現測試用例管理的工作量的減輕,而且可提高測試效率,通過簡單的檢索條件查找到所需的測試用例,縮短測試用例的設計周期。測試用例庫當中,主要存在測試用例序列號、測試作用、測試流程、前提要求、用例分類、預期成果、實際結果、測試結論等要素。表2為基于航盾測試產品的測試用例庫表模板。測試用例庫應具有文檔編制說明,對用例庫的歷史變更進行記錄,每次修改后應獎文檔版的本號進行記錄,方便追蹤與查閱,累積下來的數據,可以在后續測試相關工作中,提供數據依據與幫助,實現測試用例庫的文檔管理。

表1:可復用測試用例特征

表2:為基于航盾測試產品的測試用例庫表模板

圖3:生成復用測試用例基本框架
軟件系統存在多樣化的操作方式,而測試用例進行復用時也存在風險。關于這一問題,采用復用測試用例相關過程模型,如圖3所示,生成復用測試用例流程中的主要步驟,分別為測試層次劃分、公共需求、測試用例設計、測試用例評審以及和生成測試用例庫五個步驟。根據待測系統的需求,從用戶層、應用層、功能層進行測試層次劃分;通過已經劃分完的結果,對系統需求規格進行分析,并分析出公共需求,尋找復用的時機;通過公共需求的分析結果進行測試用例的分類與設計,并在其中引入可復用測試用例;建立專家組,評審測試用例,保障測試用例能夠完整的籠罩公共需求,;最后,測試用例信息歸納記錄到測試用例庫當中。

圖4:復用測試用例流程
復用測試用例過程,主要有用例的確定、用例的選取、用例的改善以及服用用例。如圖4。為驗證該流程的應用性,基于航盾信息安全系列產品的涉密載體全生命周期管理信息系統進行測試,該系統包括按用戶層、應用層、功能層劃分為安全管理員、審計管理員、系統管理員、控制臺、客戶端、打印、刻錄、錄入、復印、磁介質管理、存儲介質管理、載體歸屬轉換、文件/光盤閉環和載體借用管理14個模塊,建立用例庫,共計用例574條;新項目提交測試申請包含19個測試需求,根據復用測試用例的過程模型確定用例,從測試用例庫中選取136條作為復用用例,修改為當前項目所需用例后,執行復用用例。論證復用測試用例流程的有效性,且測試周期由之前1個月減少到10天,大大減少了測試周期,提高測試效率。
測試用例復用是提高軟件測試效率和改善軟件質量的一項重要技術。本文針對軟件復用測試用例技術進行分析,并逐一分析軟件測試、測試用例以及復用測試用例,設計復用測試用例流程,并基于航盾信息安全產品進行了測試驗證其有效性,且縮短了軟件測試周期,降低了測試成本,保證了軟件的質量要求。基于復用測試用例是新的研究實踐領域,在實際測試中,測試用例庫的數據需要一定的數量,才能供給有效復用,這需要對復用測試用例庫的長期維護與修訂,需要測試人員具有較強的專業技能和實踐經驗,同時其查找可復用的測試用例具有一定的困難,因此復用測試用例庫的維護與查找元素的定義均可作為為未來課題的研究方向。