10.23 自治軟件系統的健壯性測試

自治軟件系統的健壯性測試

引用

Hutchison, Casidhe, Milda Zizyte, Patrick E. Lanigan, David Guttendorf, Michael Wagner, Claire Le Goues, and Philip Koopman. "Robustness testing of autonomy software." In Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice, pp. 276-285. ACM, 2018.

一.背景

自治系統和機器人越來越多的存在,對於意外輸入如何保持它們的安全很重要。雖然長期研究傳統系統的魯棒性測試,但是自治系統的魯棒性測試是相對未知的領域。缺乏有效的方法來測試自主系統。

魯棒性測試是黑盒測試的一種變體,用於評估系統的魯棒性。自治系統是:有狀態的、暫時的、分佈式的信息物理系統。下面要提到的ASTAA是以Ballista(一種有名的測試技術)的設計原則為開發基礎的。

二.解決的問題

提出了autonomy架構的自動化壓力測試(ASTAA),這是一個自動生成並運行測試以有效地發現現實世界中的工業自治系統中的缺陷的系統。

三. 方法

ASTAA是一個魯棒性測試框架,旨在自動發現自治系統中的安全問題。在高層次上,ASTAA在組件接口注入異常值,以測試這樣一個系統中模塊的魯棒性。然而,ASTAA還包括一些必要的關鍵特性,以便有效地將傳統的健壯性測試目標對準自治系統:使用安全不變量,將消息作為注入接口,實施攔截測試。ASTAA測試的過程主要分三個階段:

①首先使用被測系統(SUT)的現有文檔手動生成一個ASTAA測試規範。

自治系統環境中的“安全操作”不僅包括避免崩潰或掛起,還包括維護SUT的安全關鍵屬性。系統安全不變量必須始終有效,系統才能被認為是安全的(例如,“無論輸入是什麼,如果急停開關接通,系統都不應移動”)。

②然後將測試規範與異常數據庫中的信息結合起來,生成一組測試用例。

給定一個測試規範,ASTAA自動生成測試用例描述,遵循Ballista從異常數據庫注入虛假數據的方法。ASTAA實現了攔截測試,它“攔截”(更改)正在運行的系統中的特定消息或字段,而不改變消息中的其他字段。

③ASTAA測試運行器自動執行SUT上的測試用例,監視不變的衝突,並記錄結果。

ASTAA在運行SUT及其子系統時通過監視系統行為來檢測安全違規和崩潰/掛起。

ASTAA提供測試日誌來描述導致錯誤的系統運行的總體情況。

自治軟件系統的健壯性測試

ASTAA架構

四.結果

在五年的時間裡,將ASTAA應用於17個這樣的系統,包括仿人機器人,工業機械手,無人駕駛飛機,地面和海上車輛,發現了數百個bug。除了告知測試方法之外,這些系統還允許定量和定性地描述這些不同項目中常見的錯誤類型。例如,發現了一個移動機械手的缺陷,它可能導致機械臂和移動底座之間的碰撞。在另一個例子中,執行了無人地面車輛的安全臨界速度限制,並確定了可能違反速度限制的故障模式。

結果的有效性受到了幾個威脅。首先,手動分類錯誤,因此人的偏見可能會影響結果。通過彙總三位專家的評估結果來降低這種風險,他們保守地達成了共識。ASTAA中的實現錯誤是一個相關的威脅,是虛假的錯誤報告可能會影響結果。但是,總的來說,ASTAA發現的bug是通過健壯性測試文獻中成熟的監控技術來識別的,或者通過ASTAA開發團隊外部SUT創建者/維護者定義或驗證的安全不變量來識別的。ASTAA已經成功地應用於許多實際系統中,並且其報告的錯誤已經被這些獨立系統的開發人員驗證,這表明相關實現錯誤的風險很低。

對比:相比之下,ASTAA測試框架是為自治系統顯式設計的,考慮到它們的各種屬性。與基於模型的模糊測試工具不同,它不受輸入特性的影響,因為它不依賴模型,而是截取實時數據。故障模型也比chu的工作擴展得多,控制迴路的閉合允許作為系統穩健性的一部分來測量崩潰(中止)。

五.總結

在自治系統中,面對意外輸入的魯棒性尤為重要。然而,自治系統有許多與經典軟件系統相同和不同的方面,這些方法對於如何測試它們的健壯性具有重要的意義。

ASTAA,這是一個建立在經典技術基礎上的工具,但是它包含了一些新穎的東西,可以讓它解決測試自治系統的具體挑戰。使用ASTAA測試了17個跨不同領域的系統穩健性弱點。定性和定量地分析在這些系統的一個子集中發現的缺陷,支持了ASTAA背後的許多設計決策,包括它從先前的健壯性測試方法中獲得的某些原則。本文中的大部分討論旨在作為研究、開發和測試自治系統的實用指南。然而,得到的一個更廣泛的教訓是不僅可以對自治系統進行魯棒性測試,而且這樣做可以發現很容易激活的漏洞。在一個案例中,ASTAA發現了一個關鍵缺陷,它可能導致機械手的角度設置為一個無限的負角度。這將允許機械手碰撞-並損壞機器人底座。開發人員最初忽略了我們的bug報告,認為輸入案例不可信。幾周後,他們在實際的機器人上意外觸發了這個錯誤,導致機械手嚴重損壞了一個昂貴的末端執行器。

致謝

本文由浙江理工大學2018級碩士吳兆賢翻譯轉述。

感謝國家自然科學基金項目(重點項目)智能軟件系統的數據驅動測試方法與技術(61932012)資助


分享到:


相關文章: