?

工業軟件測試驗證方法研究★

2022-02-09 01:17劉務楊春暉吳蕾林軍徐巍
電子產品可靠性與環境試驗 2022年6期
關鍵詞:工程化案例庫試用

劉務, 楊春暉, 吳蕾,林軍,徐巍

(1.工業和信息化部電子第五研究所,廣東 廣州 511370;2.工業軟件工程化與應用技術工信部重點實驗室,廣東 廣州 511370)

0 引言

工業軟件是工業技術/知識、流程的程序化封裝與復用,能夠在數字空間和物理空間定義工業產品和生產設備的形狀、結構,控制其運動狀態,預測其變化規律,優化制造和管理流程,變革生產方式,提升全要素生產率,是現代工業的“靈魂”[1-2]。工業軟件作為現代工業技術和信息技術結合的高端成果,對于推動工業產品創新發展、確保產業安全、提升國家整體技術和綜合實力,起著至關重要的作用。

工業軟件來源于工業產品研制過程中的應用需求,并服務于工業產品研制的全生命周期,因此,按照工業產品研制的全生命周期流程,工業軟件可分為研發設計軟件、生產制造軟件、服務保障軟件和經營管理軟件等4個類別。其中,研發設計軟件主要包含MBSE、CAD、CAE和PDM等,服務于工業產品的方案、設計和仿真分析;生產制造軟件主要包含CAPP/CAM、MES、DCS和SCADA等,服務于工業產品的生產和制造;服務保障軟件主要包含PHM、MRO等,服務于工業產品的維修和保障;經營管理軟件主要包含PM、ERP和CRM等,服務于工業產品研制全生命周期涉及的項目管理、供應鏈管理和客戶關系管理等。

工業軟件在虛擬世界中對工業產品進行設計和驗證,能夠大幅度地節約研發成本,支撐產品的正向設計。工業軟件的質量直接影響工業產品的研發效率和創新,特別是在高端制造領域,對其功能、性能效率、可靠性、安全性和兼容性等質量特性有著極高的要求,合格的工業軟件產品應具備功能正確、性能效率高、可靠性強、數據互聯互通和安全性高等特點。工業軟件屬于軟件產品,為保障工業軟件的產品質量,其研發流程亦可遵循軟件工程的開發方法,而測試驗證屬于工業軟件研發流程中的重要環節,對于提高工業軟件產品的質量具有非常重要的作用。

按照軟件工程開發方法,在工業軟件的研發過程中需要進行“單元測試” “集成測試”和“系統測試”,從不同的維度對工業軟件的功能、性能效率、可靠性、兼容性和安全性等質量特性進行測試,驗證各個階段成果是否符合階段研制需求,減少軟件故障、安全漏洞等軟件缺陷。此外,工業軟件來源于工業應用需求, “工業屬性”亦是其最重要的屬性,因此還需進行“工程應用驗證”,即在實際的工業應用場景中對工業軟件的功能、性能效率和可靠性等進行系統性的測試,從而驗證工業軟件是否符合用戶需求,確保工業軟件產品可用、好用[2]。因此,為了研發合格的工業軟件產品,需要針對工業軟件研制全生命周期構建測試驗證體系,對保證工業軟件產品的質量具有重要的意義。

1 通用軟件測試技術

1.1 通用軟件開發模型

在20世紀80年代后期,Paul Rook[3]首次提出了V模型,如圖1所示,從圖1中可以看出,軟件研發全生命周期主要包含需求分析、概要設計、詳細設計、編碼、單元測試、集成測試和系統測試等階段。

圖1 通用軟件開發模型

a)需求分析

根據客戶需求分析出軟件需求,即軟件所具備的功能、硬件環境等,并保證軟件功能需求覆蓋用戶需求。

b)概要設計

根據需求規格說明,對軟件架構進行進一步的設計,并編制軟件概要設計說明書。

c)詳細設計

對概要設計中表述的各個模塊,以及模塊間的組合進行深入的分析,編制軟件詳細設計說明書,該階段應達到偽代碼級別。

d)軟件編碼

按照詳細設計說明書,開發者編寫代碼。

e)單元測試

按照設定好的最小單元進行測試,目的是確保各個單元模塊被正確地編譯。單元的具體劃分可以是模塊,也可以具體到類、函數等。

f)集成測試

該階段主要測試各個模塊組合后的功能實現情況,以及模塊接口連接的正確性、數據傳遞的正確性等。

g)系統測試

該階段按照軟件需求規格說明書的要求,測試軟件系統的功能、性能等是否滿足用戶的需求等。

1.2 通用軟件測試方法

目前將通用的軟件測試方法劃分為靜態方法和動態方法[4-7]兩大類。靜態方法是通過分析源程序來發現錯誤;動態方法則需要執行程序,通過設計測試數據和使用測試工具,檢測程序運行的正確性并發現錯誤。動態方法和靜態方法都有各自的特點,測試中可以起到互補的作用。

靜態測試方法主要包含代碼審查、代碼走查和靜態分析等,代碼審查的目的是檢查代碼與設計的一致性、相關標準規范的執行情況、代碼邏輯表達的正確性和代碼結構的合理性等。代碼走查的檢查內容與代碼審查的內容基本一致,但操作方法卻不相同。代碼審查是通過審查人員仔細閱讀代碼及相關材料,對照審查單,記錄問題和明顯的缺陷;而代碼走查是走查小組人員提出一系列代表性的測試實例,其他人員對測試實例用人腦來執行程序,并記錄發現的問題。靜態分析的目的是發現編碼規范問題和編碼邏輯錯誤。靜態分析一般包括代碼的控制流分析、數據流分析、接口分析和表達式分析等。其中,控制流分析是使用控制流程圖系統地檢查被測程序的控制結構的工作;數據流分析是用控制流程圖來分析數據發生的異常情況;接口分析主要用在程序靜態分析和設計分析中,涉及模塊之間的一致性分析,以及模塊與外部數據庫之間的一致性分析;表達式分析主要用于分析表達式的錯誤[8]。

靜態分析有如下優點:1)可以更早地檢測出缺陷,在軟件開發早期占據主導地位;2)靜態分析不需要產生額外的測試用例,針對不同的路徑,它能對缺陷進行有效的試驗;3)靜態分析技術不僅自動化程度高而且效率也高。

動態測試指的是實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程。根據對被測對象內部情況的了解與否,分為黑盒測試和白盒測試,其中,黑盒測試[9-11]又被稱為功能測試或數據驅動測試,是指不知道軟件內部構造和設計,只按照軟件的需求規格說明書對軟件進行的測試;白盒測試又被稱為結構測試或邏輯測試,需要了解軟件內部的構造和設計,這種測試方法需要根據程序的邏輯結構,其有效性依賴于程序本身設計的正確性,無法發現由數據錯誤引起的程序錯誤。

2 工業軟件測試方法研究

ISO 25000.10定義軟件質量模型如圖2所示,主要包含功能、性能效率、兼容性、可靠性、信息安全性、維護性、易用性和可移植性等質量特性。

圖2 系統/軟件產品質量模型

工業軟件也屬于軟件,圖2描述的質量模型也適合工業軟件,同時通用軟件的測試方法也適合于工業軟件的測試。然而,工業軟件是工業技術知識和軟件融合的產物,屬于高端的工業品,軟件是工業軟件的外在表現形式,其內在核心是工業知識,所以工業軟件既具有工業屬性,又具有軟件屬性,如圖3所示;而工業屬性是工業軟件的核心屬性,正是因為工業屬性的存在,使得工業軟件的測試方法和研發流程與通用軟件的測試方法和研發流程稍有不同。

圖3 工業軟件屬性

2.1 工業軟件開發全生命周期模型

工業軟件也屬于軟件,發展工業軟件亦要遵循軟件開發的客觀規律。然而,工業軟件除了具有軟件屬性,其本質是工業屬性,如MBSE、CAD、CAE、EDA、CAPP和MES等軟件,其核心是領域機理模型庫、生產制造流程等,正因如此,其研發流程與傳統V模型有一定的區別。

工業軟件開發全生命周期模型如圖4所示。

①蓋帽:作用是密封和固定支撐板(A和B),同時,蓋帽外形設計美觀大方,上臺面可以放置洗漱用品等雜物。如圖1所示。

圖4 工業軟件開發全生命周期模型

從圖4中可以看出,工業軟件的研發全生命周期主要包含需求分析、物理問題分析、建模、概要設計、詳細設計、編碼實現、單元測試、集成測試、系統測試、應用驗證和發布試用等階段。

與傳統的通用軟件的V模型相比,工業軟件的研發模型在傳統V模型的左邊增加了物理問題分析和建模兩個階段,在V模型的右邊增加了應用驗證和發布試用兩個階段,如圖4虛框所示。

a)問題分析

該階段是指算法工程師根據需求對所涉及的物理問題進行分析,以結構CAE分析軟件為例,算法工程師需根據特定的應用場景,結合用戶需求,分析需求涉及到的物理問題,如線性靜力、模態和屈曲等。

b)建模

建模是指針對具體的物理問題,構建對應的數學模型,以結構CAE分析軟件為例,建模就是針對具體的物理問題來構建對應的微分方程組,經過評審后,軟件工程師再進入后續的軟件設計階段。

大量的實踐經驗表明,工業軟件由于其特殊性,在企業內部完成傳統的“系統測試”之后,仍然存在大量的缺陷。工業軟件是用出來的,因此工業軟件研發全生命周期還應包含“應用驗證”和“發布試用”階段。

a)應用驗證

b)發布試用

工業軟件經過應用驗證后,能解決大部分的缺陷。為了進一步地完善產品質量,此時的軟件版本應該在更大的用戶范圍內發布試用,使得缺陷得到進一步的暴露,大量的實踐表明,通過發布試用能較大程度地提升工業軟件的產品質量,可達到“好用”程度。

2.2 工業軟件測試方法研究

工業軟件具有與工業應用場景結合緊密、多學科融合和結果精度要求高等特點,不僅需要對工業軟件的功能、性能效率、可靠性和兼容性等進行測試驗證,還需要對工程化應用場景下的軟件能力、結果真值標定等進行驗證與確認(V&V),而傳統的軟件測試方法不能完全滿足工業軟件的測試需求。

工業軟件測試方法主要劃分為實驗室測試方法和場景測試方法兩大類,其中,實驗室測試方法主要包含標準案例庫測試方法和比對測試方法;而場景測試方法主要包含工程化應用測試和大規模試用驗證。工程化應用測試和大規模試用驗證是指由用戶主導參與,在實際的應用場景下應用工業軟件,對其功能、性能效率、兼容性、可靠性和易用性等指標進行驗證。下面分別對這兩類方法進行詳細的介紹。

2.2.1 實驗室測試

在實驗室場景下,工業軟件測試方法包含標準測試案例庫測試方法和比對測試方法。

a)標準案例庫測試

標準案例庫測試是指測試人員在實驗室研發環境下,利用標準的測試案例庫對工業軟件進行測試,屬于工業軟件測試中最常用的一種測試方法。

標準測試案例的收集途徑主要包含:具備解析解的案例庫、用主流軟件生成的案例庫和實際場景下試驗產生的案例等,對于具有開源社區的軟件,還存在有開源社區的案例。

標準案例庫的測試流程如圖5所示,計算案例庫標準輸出與被測軟件的輸出結果之間的誤差,并與設定的閾值進行比較,若誤差小于設定的閾值,則測試通過;若誤差大于閾值,則測試不通過。

圖5 標準案例庫測試方法

b)比對測試

比對測試是指應用業界認可度高的商用工業軟件作為比對“基準”,對工業軟件進行測試的方法。當標準測試案例庫中的案例不足時,可以采用比對測試方法。本質上,比對測試方法也屬于標準案例庫測試方法,只不過標準案例庫是通過操作業界認可度高的商用工業軟件生成的。其操作流程圖如圖6所示。

圖6 工業軟件比對測試方法

以三維CAD軟件為例,在標準測試案例庫中的案例不足的情況下,可以選取CATIA、PTC和NX等成熟的商業三維CAD軟件作為基準,在被測CAD軟件和一款或多款成熟商業軟件上進行同樣的建模操作,在結果模型中選取重要的參數進行比對,如面積、體積、質量和重心等指標,若誤差小于設定的閾值,則測試通過;反之,則測試不通過。

對標測試需要對多款具備同樣功能的軟件進行操作,測試任務較大;在具體的實施過程中,可以借助于測試工具,減少實施成本。如三維CAD軟件的對標測試可以借助于測試工具,測試工具應具備和多款CAD軟件適配的功能。

2.2.2 場景測試

場景測試是在真實的應用場景下使用工業軟件,從而發現工業軟件的缺陷。場景測試主要包含工程化應用測試和大規模試用驗證,兩種方法也分別與工業軟件研制全生命周期的應用驗證階段和發布試用階段相對應。

a)工程化應用測試

工程化應用測試是指小范圍特定用戶在實裝環境中應用工業軟件,并對工業軟件的功能性、性能效率、兼容性、可靠性和易用性等質量特性進行全面測試,這些用戶返回有關錯誤信息給開發者。工業軟件的工程化應用驗證測試類似于β測試。

應用驗證測試是十分關鍵的。例如:中國航空工業第一飛機設計研究院是世界上第一家在實際工程中使用CATIA V5軟件的用戶,通過在飛機研制過程中實際應用CATIA V5軟件,陸續地發現了成百上千個問題,極大地幫助了該軟件的成熟,被達索公司認為是最重要的戰略伙伴之一。由此可見,工程化應用測試對工業軟件研制方有重要的意義。

開展應用測試必須是實際項目,由用戶主導,選擇實際產品在真實的環境中應用。工程化應用測試工作的結果是給出以下報告和產品:

1)工程化應用測試過程和應用測試結論的報告;

2)與當前主流相應系統的優缺點比較的報告;

3)對軟件系統的改進建議;

4)工程化應用測試生成的產品,如零部件的設計和加工的產品,數字樣機等。

b)大規模試用驗證

如Linux定律所述, “只要足夠多的眼球關注,就可讓所有的軟件缺陷浮現”[12]。在軟件產品的測試過程中,軟件產品管理者希望能夠快速地獲得大量的反饋,以盡快地修復軟件產品缺陷并改進軟件產品質量。然而,招募/訓練測試人員的巨大成本往往使得召集大量的專業測試人員變得困難。因此,如何快速地獲得測試反饋,特別是大量真實用戶的反饋以幫助產品的改進,同時以較低的成本高效地完成測試任務,是當前軟件測試領域的困難之一[12]。

針對這個難題,目前一種有效的解決方法是眾包技術,是互聯網帶來的一種分布式問題解決和生產組織模式,通過整合互聯網上的未知大眾和機器來解決機器難問題[13],即大量的在線測試人員參與完成測試任務,可以提供對真實應用場景和真實用戶表現的良好模擬,測試周期短且測試成本相對較低[14]。這些優點使得眾包測試技術得到了學術界和工業界的廣泛關注,廣大研究人員密切關注眾包軟件測試的理論和方法。

當工業軟件經過工程應用測試后,小范圍的特定用戶會從自身使用的角度來提出問題,并反饋給開發者,經過應用測試后的工業軟件產品能解決大部分問題,但仍然存在少數缺陷,仍需做進一步的優化處理。此時,工業軟件企業可以根據工業軟件的應用領域有條件地對外開放,在更大范圍內有限制地發布試用,即大規模試用驗證,以結構CAE軟件為例,限定Licence時長,可在汽車、航天、航空和船舶等領域進行發布試用,使得工業軟件產品在更大的用戶范圍內使用,發現問題并反饋給開發者,進而使得工業軟件產品進一步地完善。

經過大規模試用驗證的工業軟件產品,此時已經相當成熟,只需在個別地方再做進一步的優化處理即可上市發行。

3 結束語

總的來說,本文提出的針對工業軟件的測試驗證方法彌補了通用軟件測試方法的不足,作為工業軟件生態建設的重要內容,能夠保障產品的質量水平,提升產品的成熟度。對于供給側,工業軟件廠商在工業軟件研制過程中通過軟件測試提高產品質量,實現“以測促研”;對于需求側,工業軟件用戶通過軟件測試確認需求,驗證實現,確保工業軟件的有效應用,實現“以測促用”。因此,工業軟件測試驗證對于工業軟件生態體系建設具有重大的意義。

猜你喜歡
工程化案例庫試用
心血管外科教學案例庫的建設及應用研究
血管吻合試驗臺的研制及試用
國內首個海事司法案例庫正式上線
世界首臺高溫超導高速磁浮工程化樣車下線
基于實踐應用的基坑工程設計案例庫建設研究
化工原理課程思政案例庫建設初探
GYK-160G型和GYK-160X型軌道車運行控制設備通過試用評審
“小餅干”的誘惑 永諾YN 40mm F2.8N鏡頭試用
軟件測試工程化模型及應用研究
玻璃纖維增強復合材料工程化應用進展
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合