自動駕駛汽車依賴於需要進行全面測試的軟體。在真實交通中測試自動駕駛汽車軟體不僅昂貴,而且危險,已經造成了死亡。與自然主義現場操作測試相比,虛擬測試可在計算機仿真中對自動駕駛汽車軟體進行測試,從而提供了一種更有效,更安全的選擇。但是,創建合適的測試方案既費力又困難。在本文中,我們結合了過程內容生成(一種現代視頻遊戲中常用的技術)和基於搜索的測試(一種已在許多領域證明有效的測試技術),以便自動創建具有挑戰性的虛擬場景來測試自動駕駛汽車軟體。我們的 AsFault 原型採用這種方法來生成用於測試車道保持性的虛擬道路,這是自動駕駛的定義特徵之一。對兩種不同的自動駕駛汽車軟體系統的評估表明,AsFault 可以生成有效的虛擬道路網絡,從而成功地揭示出軟體故障,這些故障表現為汽車駛離了車道。與隨機測試相比,AsFault 不僅效率更高,而且引起的車道偏離多達兩倍。
1 引言最近,自動駕駛已成為該行業的重要組成部分,專家預測這將對社會產生深遠影響,特別是通過提高安全性。但是,情況還不是這樣:即使 Waymo-Google,Tesla 或 Uber 等著名公司的原型已經達到了很高的自治度,並且可以駕馭日常的城市交通,但是仍然會導致撞車甚至致命事故。顯然,自動駕駛汽車軟體需要進行更好的測試,但是尚無標準化的程序來測試自動駕駛汽車,而且傳統汽車的測試方法和傳統軟體測試方法都無法很好地轉化到自動駕駛汽車的領域。一種常見的方法是在自然的現場操作測試(N-FOT)中進行,該測試在現實世界中對自動駕駛汽車進行了試驗,但這不僅昂貴且危險,而且效果有限。
虛擬測試是測試自動駕駛汽車軟體的一種更有效、風險更低的替代方法。虛擬測試遵循 X-in-the-loop 範式,並通過向自動駕駛汽車軟體提供模擬的感官數據,合成圖像或抽象測試場景來測試自動駕駛汽車軟體。通常,這些方法需要實現自動駕駛汽車及其傳感器的硬體模型。一種更通用的方法是生成整個數字現實,即虛擬世界,在其中部署自動駕駛汽車軟體。產生用於測試自動駕駛汽車軟體的虛擬環境面臨兩個主要技術挑戰:(i)產生環境要素,例如地形,天氣,道路;(ii)將它們組合成可實現相關測試用例的模擬,即對自動駕駛汽車軟體提出挑戰的測試用例,因此有可能暴露其實現中的問題。
為了應對這些挑戰,我們提出了一種系統地測試自動駕駛汽車軟體的方法,該方法結合了(1)程序內容生成(PCG)和(2)基於搜索的測試(SBST)。PCG 是現代視頻遊戲的核心元素,可以自動創建逼真的虛擬環境。SBST 描述了使用有效的元啟發式搜索算法來生成實現測試目標(例如實現覆蓋率或發現故障)的程序輸入。PCG 和 SBST 以前已經進行了組合,例如,通過從玩遊戲的用戶那裡收集的反饋來生成新的遊戲元素。在賽車遊戲方面,Loiacono 等人使用通用算法來創建具有各種轉彎和速度曲線的賽道,以增加玩家的娛樂性;而 Georgiou 等人則根據玩家的生物特徵反饋(例如視線和動作)自動生成具有挑戰性的賽道。相反,在本文中,我們將它們結合起來以系統地創建虛擬測試,從而有效地揭示自動駕駛汽車軟體中的問題。特別是,我們的 AsFault 原型針對自動駕駛汽車的車道保持功能。
根據 SAE International 的規定,行車道保持是自動駕駛的基本特徵,無論天氣情況或道路形狀如何,無人駕駛汽車都應能夠始終在車道內行駛。為了測試行車道保持性,AsFault 使用遺傳算法將虛擬路網迭代優化為那些導致被測自動駕駛汽車軟體(即自動車)從車道中心移開的虛擬路網。最終,AsFault 會生成虛擬道路,從而導致自駕車駛離車道。圖 1 顯示了一個由 AsFault 生成的道路網絡的示例,該網絡導致自駕車三度駛離車道。
圖 1:AsFault 生成的測試用例示例
詳細而言,本文的貢獻如下:
我們引入了一種基於過程內容生成的方法來生成虛擬道路網絡(第 3 節)。
我們引入了一種基於搜索的方法,以使虛擬道路網絡朝著導致自駕車離開道路的關鍵安全場景發展(第 4 節)。
我們在兩個自動駕駛汽車軟體系統上評估了我們的 AsFault 原型實現(第 5 節)。
我們的廣泛評估包括對兩個測試對象執行超過 160,000 個虛擬測試,表明 AsFault 有效地生成了虛擬道路,該虛擬道路總是導致電動汽車在各種情況下駛離車道。與隨機測試相比,AsFault 不僅速度更快,而且生成的測試套件更為有效,與我們的測試對象之一的隨機測試相比,其引起的異常發作(OBE)的發生率高出兩倍。
2 道路網絡的程序生成生成道路網絡的目的是根據折線精確描述道路及其車道的結構和幾何形狀(第 3.1 節)。我們使用增量方法生成這些路段:首先,通過程序化生成路段(第 3.2 節)並將路段密封在一起以確保暢通無阻的路段(第 3.3 節)來隔離道路。道路路段是根據預定義的參數化類型建模的,例如「30m 長的直線路段」,「20º 左轉」等,而道路是從地圖的起點發展而來的連續道路路段的序列。然後,我們在相同的地圖上將道路合併在一起以形成道路網(第 3.4 節)。
2.1 將道路表示為折線折線是離散的點序列,它們定義了二維形狀的邊界,即我們工作中的車道,並且是許多遊戲引擎,駕駛模擬器和地理信息系統使用的道路的基本幾何表示。圖 2 顯示了一個以一組折線表示的路段示例,這些折線定義了它的五個車道中的每條車道(在道路主幹 SP 的左側為三個,在其右側為兩個),以及該路段的外部邊緣(即 LE 和 REs)。基於折線的道路表示簡化了渲染和操縱道路的常見操作的實現,並簡化了對其幾何特性(例如,自相交,部分重疊)的檢查。考慮到折線的本質是離散的,折線的精度不如迴旋曲線等其他幾何構造。儘管如此,正如 Althoff 等舉例說明,在自動駕駛汽車軟體的驗證中,使用基於折線的道路表示具有與其他格式(例如基於迴旋線的 OpenDrive)相當的表達能力。
圖 2:以多段線表示的多車道路段示例。
2.2 生成路段程序性生成道路時的基本活動是創建路段,我們將其定義如下:對於路段 s,(a)我們從路的起點 IP 構造其後沿(Bs)。脊柱 SP;Bs 是定義道路段起點的邊緣,並且包含定義車道的折線的起始點。(b)通過對所有 Bs 點應用仿射變換來構建路段前線(Fs);我們通過平移生成直線路段,並通過額外旋轉生成轉彎路段。(c)通過插值計算車道折線的所有內部點的位置;最後,(d)獲得路段車道的幾何表示。
2.3 生成道路程序是通過將一個路段縫合到下一個路段來生成的。要構建無間隙的道路,我們限制道路段的生成,以使用道路段的前線作為下一條的後線。
在車道保持測試的背景下,為了避免使用不可能的道路配置來測試自動駕駛汽車軟體,程序性道路生成必須確保僅生成有效道路。在這項工作中,我們將有效的道路定義為不僅暢通無阻而且不會自相交的道路。此外,為了適應當前無法在極長距離上準確模擬物理並且通常根據地圖進行推理的駕駛模擬器的功能,我們通過檢查道路來限制程序道路生成以在固定尺寸地圖的邊界內生成道路在地圖邊界上開始和結束。
給定一系列路段和道路在地圖邊界上的初始位置,我們按如下程序生成道路:(a)從地圖邊界上的給定初始位置向在地圖的內部,以確保通過構造確保定義了第一條反向線的方向。(b)接下來,我們如上所述生成後續的路段,並檢查到目前為止生成的道路是否有效。如果道路變得無效(例如由於自身相交),則道路生成會失敗;否則,我們將繼續開發下一個路段。(c)最後,在生成所有路段之後,我們檢查該路段是否有效,即它是否越過地圖邊界;否則,道路生成將失敗。
2.4 生成路網為了通過程序生成道路網絡,我們生成道路並將其放置在同一地圖上。和以前一樣,我們需要確保結果配置有效,否則我們將無法生成路網。
我們將有效道路網絡定義為僅包含有效相交道路的網絡,即它們包含其中心折線(SP)至少相交一次的有效道路。另外,為了確保在給定道路網絡的情況下可以以所有可能的方式測試車道保持性,我們要求有效的道路網絡應允許汽車從任意兩個路段行駛。
3 基於搜索的車道保持測試3.1 概述AsFault 使用遺傳算法來開發道路網絡,目的是發現自動駕駛汽車的車道保持功能中的錯誤。遺傳算法使用隨機道路網絡的初始種群進行初始化。為了評估測試用例的適用性,將道路網絡實例化為駕駛模擬,在這種駕駛模擬中,指示自駕車沿著由 AsFault 選擇的導航路逕到達目標位置。在仿真過程中,AsFault 會定期跟蹤自我汽車的位置,以便能夠識別出超出範圍的事件(物體),即車道偏離。車道中心與自我車位置之間的距離用於計算個人的適應度。這通過重組和變異道路網絡來指導遺傳算法發展測試用例。該算法將繼續執行和演變測試用例,直到滿足用戶定義的結束條件為止,此時 AsFault 返回最終的測試套件並停止。
3.2 表示道路網絡使用可操作的編碼表示,與折線相比,它更適合於自動發展道路網絡。編碼由將道路網絡與道路以及道路與路段相關聯的分層數據結構組成。這使 AsFault 可以在需要時自動生成道路的折線。除道路網外,測試案例還需要定義自駕車的駕駛任務。在保持車道的情況下,這基本上對應於沿著給定的導航路逕行駛通過道路網絡的任務。有效的測試要求沿道路可以導航,這是我們程序性道路網絡生成為其所生成的所有道路網絡保證的屬性。AsFault 通過以下方式識別此類導航路徑:(i)建立道路網絡的圖形表示,其中邊建模道路段,節點建模道路交叉點(內部節點)或道路與地圖邊界之間的交叉點(源節點和目標節點),並且(ii)選擇在隨機選擇的源節點和目標節點之間的導航路徑。這樣做時,AsFault 依賴於這樣的事實,即道路網絡可以在任意兩個路段之間行駛,從而產生完全連接的圖形。
儘管有這種簡化,但選擇導航路徑並非易事。一方面,源節點和目標節點之間可能存在大量可能的路徑(如果從道路網絡得出的圖形包含循環,則可能是無限的);另一方面,同一網絡中的不同路徑可能對應於具有非常不同的幾何特性並可能以不同方式對自駕車施加壓力的道路。例如,為了增加觀察多個 OBE 的機會,測試自動車的道路不應太短,並且不同的路徑應導致幾何形狀不同的道路。另外,為了避免使自我車受到相同的刺激,一條路徑不應比必要時更頻繁地穿越相同種類的路段。
由於一般無法有效地計算出路徑選擇問題的解析解,AsFault 採用了一種啟發式方法,旨在最大程度地提高測試執行過程中穿越的道路網絡的數量,同時保持路徑選擇的快速性,儘管它非常複雜。特別是,在給定道路網絡 AsFault 的情況下,首先,隨機採樣給定源節點和目標節點之間的一組簡單路徑 1;然後,在其中選擇最長的導航路徑。在 AsFault 的上下文中,最長的導航路徑對應於包含採樣路段中路段數量最多的路段。
3.3 測試的實施和執行將測試的基因型表示轉換為駕駛模擬是過程內容生成的地方。AsFault 使用代碼模板生成必要的仿真代碼,該代碼從折線實例化行駛仿真中的虛擬道路,將自駕車放置在預期的起始位置,並指示自駕車如何到達目標位置。自我 carthen 沿著選擇的導航路徑沿著虛擬道路行駛。
仿真代碼還包含超時邏輯,該超時邏輯會使測試執行失敗,並且如果自駕車無法足夠快地到達目標位置,則暫停仿真。AsFault 根據到達導航路徑末端的行進距離和最小恆定巡航速度(即 1m/s)計算超時值。
準備好模擬代碼後,AsFault 會生成駕駛模擬器並通過以恆定速率(即每 250 毫秒)對轎廂位置進行採樣來觀察自我轎廂的駕駛行為。樣本被存儲到一條軌跡中,該軌跡使 AsFault 能夠通過查找觀察序列來識別 obe 的發生,這些觀測序列的記錄的自我汽車位置與車道中心之間的距離大於車道寬度的一半。圖 1 以圖形方式說明了在實驗評估期間 AsFault 識別出的幾次 obe 出現時的這些概念。
AsFault 以質心表示模擬汽車,因此,只有當足夠多的自我汽車超出車道時,才能識別出 OBE;因此,AsFault 無法識別非常小的違規行為。擴展 AsFault 在檢查 obe 的同時考慮自我車的邊界框是一項工程上的工作,它不會影響該方法的通用性,而只會影響其精度。
AsFault 脫機檢查跟蹤;因此,它不會在觀察到第一次請求後停止測試執行。取而代之的是,測試將繼續進行,直到自主汽車在給定的超時時間內到達目標位置或超時觸發為止。AsFault 採取這種策略來平衡運行昂貴的計算機仿真的成本,並在同一測試執行的背景下收集儘可能多的 obe 實例,從而達到平衡的目的。AsFault 不僅使用執行跟蹤來計算自我汽車駛出車道的次數,還用於評估測試的適用性,這些測試將指導我們在下一節中描述的演變過程。
3.4 適應度函數在保持車道的情況下,有效的測試是那些導致自動駕駛汽車軟體超出車道界限,即導致 OBE 的測試。因此,AsFault 使用 DLANE(方程式 1)作為適應度函數,該函數對那些導致自駕車最遠離車道中心的測試進行獎勵。給定一個測試(T),定義它的導航路徑(PT)以及在執行期間收集的執行跟蹤(v=(v1,...,vn)),我們將 DLANE 定義為:
其中 D(•,PT)是點(•)到路徑 PT 中車道中心的最短距離,而 WLANE 是該車道的寬度。
DLANE 捕捉到直覺,即導致自駕車駛離車道中心的測試可能包含路段,這些路段給自動駕駛汽車軟體帶來更大壓力,最終導致自駕車駛離道路。AsFault 在 OBE 是例外而不是規則的假設下工作。在此假設下,使用到車道中心的平均距離可以消除並有效地過濾出越界事件;因此,我們選擇到車道中心的距離的最大值來定義 DLANE。另外,為了促進在導致 OBE 的測試套件中生成更多測試,而不是生成試圖暴露更多極端問題的測試,我們將 DLANE 的價值限制為 WLANE/2,以實現其目的。
3.5 搜索算子AsFault 通過應用搜索算子來發展道路網絡,該搜索算子會根據可配置的概率對道路和道路網絡進行變異和重組。
AsFault 通過將道路段隨機替換為新的道路段來改變道路,而它使用聯接交叉算子重新組合道路。合併交叉算子在隨機點將道路與父級道路網分開,然後重新合併改組後的路段,以使後代道路網中沒有兩個路段來自同一父級道路網;值得注意的是,該搜索算子不會更改道路網絡中的道路數量。為了生成其中具有不同道路的道路網絡,AsFault 使用合併交叉算子,該算子從父道路網絡中選擇隨機的,可能為空的道路子集,然後將其重新分配給它們的後代。
這些搜索算子可能會產生無效的道路配置。例如,在改變道路或應用交叉路口後,道路可能會自相交或不再與地圖邊界相交;同樣,應用合併後,交叉路口可能會部分重疊。當檢測到這種情況時,AsFault 會以放棄的概率重試同一搜索運算符的應用,而每次嘗試失敗的概率都會增加。這樣,AsFault 可以確保快速找到有效配置,或者中止整個搜索操作,以便測試生成過程可以繼續。搜索運算符的應用效率很高,並且可以在很短的時間內生成許多不同的配置。因此,我們更喜歡「生成和驗證」配置,而不是使用約束求解器來生成有效的配置。我們將研究在將來的工作中使用約束條件生成有效道路的情況。
對道路網絡進行突變和重組也可能會生成類似的測試,即在具有相似幾何特性的導航路徑上定義的測試。我們期望類似的測試以類似的方式強調車道保持;因此,執行這些測試不太可能提供有關車道保持行為的任何其他信息,而這會大大減慢生成過程的速度。因此,為了提高測試生成的效率,AsFault 在執行之前先識別並過濾掉相似的測試。我們的期望基於以下事實:AsFault 是黑盒子且是隨機的,因此,它不能依靠有關被測系統內部的信息來系統地指導搜索,以在眾多類似的測試中識別出極少數的對抗性測試。可以通過變異和交叉產生。
AsFault 通過路段的 Jaccard 索引來計算測試之間的相似度。形式上,給定測試 T1 和 T2,我們通過等式 2 定義它們的相似性:
其中 CTi 是指給定大小的連續路段的序列。相似度值接近 1 表示測試包含許多常見的路段子序列,而相似值接近 0 則表明測試在許多方面有所不同。
由於篩選出無效和相似的測試用例,新一代的後代數量可能少於配置的種群數量。在這種情況下,AsFault 會用前一個最合適的人來填充新的一代,然後繼續執行該過程,只執行新生成的測試。
4 評估為了評估使用程序內容生成來測試車道保持系統的好處,並了解 AsFault 的主要配置參數如何影響測試生成過程及其生成的測試的質量,我們調查以下主要研究問題:
RQ1 我們可以通過程序生成道路來揭露車道保持系統中的安全關鍵問題嗎?據我們所知,我們是第一個使用程序化道路生成來測試車道保持系統的公司。因此,我們有興趣了解這是否會導致有效的測試。
RQ2 基於搜索的測試是否可以通過過程內容生成來提高測試的有效性?使用搜索生成道路網絡比隨機生成道路網絡更為複雜。這就提出了一個問題,即使用遺傳算法是否比隨機生成測試導致更多 OBE。
5.1 實驗設置為了解決研究問題,我們在原型中實施了 AsFault,並通過在運行 Windows 10 並配備 AMD Ryzen 7 1700X 8-的商用「遊戲」PC 上執行 AsFault 和駕駛模擬器來進行了大量實驗。核心 CPU(3.4GHz),64GB 內存和 NVIDIA Geforce GTX 1080 GPU。
駕駛模擬器。在當前的實現中,AsFault 依賴於最新的駕駛模擬器 BeamNG.research,這是商業遊戲 BeamNG.drive 的可免費獲取的面向研究的版本。我們選擇 BeamNG.research 主要有兩個原因:首先,BeamNG.research 公開了直觀的 API,用於以編程方式配置虛擬道路和控制模擬,其他模擬器目前未提供;其次,它具有非常精確的駕駛物理引擎。
實驗設計。儘管我們可以生成每個交通方向具有多個車道的道路,但我們將程序化道路生成配置為僅生成每個交通方向具有一個車道的道路。我們將 AsFault 配置為在小地圖(1Km2)和大地圖(4Km2)上生成單路和多路網絡。此外,當對成對的路段計算出的相似度值等於或大於 0.9 時,我們將 AsFault 配置為過濾相似的測試用例。為了生成單路網絡,AsFault 始終使用聯接交叉算子,而多路網絡則以相等的概率(50%)選擇聯接或交叉。在這兩種情況下,AsFault 都會突變後代的機會為 5%。
5.2 測試對象我們考慮了兩個測試對象,它們都實現了所有必要的功能,以自動駕駛自我車並在車道上行駛。
BeamNG.AI。BeamNG.research 附帶了一個駕駛 AI,我們稱之為 BeamNG.AI。它具有虛擬道路的完美知識,並通過計算一條理想的行駛軌跡以保持在車道中央來駕駛自駕車。然後,它得出遵循該軌跡的實際駕駛動作(即加速,制動和轉向)。
深度駕駛。DeepDriving 是 Chen 等人開發的基於視覺的自動駕駛汽車軟體。在本次評估中,我們使用了基於 A. Netzeband 提供的 TensorFlow2 的 DeepDriving 開源實現,並通過包括模仿當前自動駕駛汽車設置的安全邏輯對其進行了擴展。我們的擴展程序監視 DeepDriving 預測的質量,並在 DeepDriving 的預測質量不令人滿意時取消接合。此時,對自駕車的控制權將傳遞給 BeamNG.AI,直到 DeepDriving 預測的質量恢復到可接受的值,並且自駕車重新獲得車道的中心。
5.3 RQ1為了回答第一個研究問題,我們以程序方式隨機生成了單路道路網,並將其用於測試 BeamNG.AI 和 DeepDriving。特別是,為了測試 BeamNG.AI,我們進化了 25 個人的種群,使用了大地圖,並在 24 小時後停止了生成;我們重複此實驗 n=40 次。在每個實驗的最後,AsFault 生成了包含最佳 25 個測試的測試套件。
DeepDriving 要求以同步模式運行仿真,以適當控制自我車。這比我們用來測試 BeamNG.AI 的設置要慢得多,因此,為了減少運行實驗的執行時間,我們減少了每次迭代執行的測試數量。因此,為了測試 DeepDriving,我們使用小地圖生成了由 20 個測試組成的測試套件。我們重複此實驗 n=10 次。此外,我們將發電預算限制為 5 個小時,因為在測試 BeamNG.AI 時收集的經驗證據表明,大約在那時,AsFault 會聚並在此之後才有所改善。
圖 3 和圖 4 繪製了由最佳隨機生成的測試套件在「隨機單路大地圖」和「隨機單路小地圖」標籤下標識的總 OBE 量。從結果中我們觀察到,在執行開始時,以程序方式有效生成道路就可以在兩個測試對象中引起大量 OBE。例如,在第一個小時之後,Random 在 BeamNG.AI 中平均造成 21.4OBE,而在 DeepDriving 中造成 13.6OBE。隨著測試生成的進行,Random 繼續導致更多的 OBE,並且在執行結束時,它在 BeamNG.AI 中平均造成 29.1OBE,而在 DeepDriving 中平均造成 18.1OBE。這些結果使我們得出以下結論:在我們的實驗中,程序生成的道路網絡在兩個測試對象中平均發現了 29 和 18OBE。
圖 3:測試套件的有效性— BeamNG.AI 圖 4:測試套件的有效性-DeepDriving
5.4 RQ2為了回答第二個研究問題,我們將 AsFault 配置為在大地圖上生成單路道路網絡。和以前一樣,為了測試 BeamNG.AI,我們使用大型地圖和 24 小時的生成預算來演化由 25 個個體組成的種群,並重複進行 40 次實驗。為了測試 DeepDriving,我們使用小地圖和 5 個小時的生成預算演化了 20 個人的種群,並重複了 10 次實驗。
比較圖 3 中「AsFault 單路大地圖」和「Random 單路大地圖」標籤下的結果,我們觀察到在整個生成中,AsFault 在 BeamNG.AI 上產生的 OBE 要多於 Random(1 小時後,Aˆ12 的範圍為 0.85),則在 24 小時後變為 0.96,並且 p 始終小於 0.005)。
我們還觀察到,AsFault 識別出的 OBE 數量從 1 小時後的平均數量 30.1OBE 迅速增加到 3 小時後的平均數量 42.1,然後穩定到 24 小時後達到平均數量 47.5OBE。與此相比,Random 達到的測試效果從 1 小時後的平均 21.4OBE 增加到 3 小時後的平均 25.2OBE,而緩慢增加。此外,在觀察期內,Random 沒有趕上 AsFault,在 24 點之後,它發現的平均 OBE 數為 29.1。
圖 4 中報告的結果對於 DeepDriving 也顯示了類似的趨勢。在這種情況下,AsFault 總是比 Random 引起更多的 OBE,並且由兩種技術引起的 OBE 數量之間的差異隨著執行時間的增加而增加。在 1 到 5 小時之間,由 AsFault 引起的 OBE 平均數幾乎翻了一番,從 16.9 增加到 36,同期由 Random 引起的 OBE 平均數僅略有增加,從 13.6 上升到 18(Aˆ12 從 0.68 增加設為 1,而 p 值從 0.18 降至小於 0.005)。根據這些結果,我們得出以下結論:在我們的實驗中,遺傳算法平均發現 47.5 和 36 個 OBE,是隨機搜索的 obe 的兩倍。
7 結論與未來工作基於模擬的測試已經成為通過 N-FOT 進行自動駕駛汽車測試的危險和昂貴實踐的替代方法。然而,基於仿真的測試面臨著系統化生成測試的主要挑戰,這些測試將自動駕駛汽車的安全關鍵行為暴露在眾多可以模擬的駕駛場景中。
在本文中,我們介紹了 AsFault,這是一種系統測試車道保持系統的新穎方法。AsFault 通過將基於搜索的測試與程序內容的生成相結合來生成虛擬道路,從而導致自動駕駛汽車偏離其車道,從而解決了基於模擬的測試所面臨的挑戰。我們的廣泛評估表明,AsFault 可以生成有效的測試套件,並在許多配置中暴露與車道保持相關的許多安全關鍵問題。
儘管 AsFault 取得了積極的成果,但我們將程序內容生成與基於搜索的測試相結合來測試自動駕駛汽車的工作仍處於初步階段;因此,我們計劃在將來解決該研究的一些相關方面。我們正在進行的工作包括(i)擴展道路生成算法,以生成具有變化的車道和寬度的道路,該道路遵循高地和低地地形;(ii)利用現有的地形和真實的道路作為一代的種子;(iii)擴大測試生成算法的範圍,以在道路上生成障礙物和交通;(iv)擴展程序內容生成算法以生成更現實的虛擬環境,可能從現實世界中收集的數據中汲取靈感;(v)研究替代的基於搜索的技術,例如新穎性搜索,以生成有效的基於模擬的測試。
將來,我們還計劃通過使用替代模型和機器學習組件來提高測試生成的效率,並將 AsFault 擴展到具有多目標適應性功能的功能,該功能可以捕獲駕駛的其他方面,例如乘客的舒適度,此外安全。
致謝本文由南京大學軟體學院 iSE 實驗室 2020 級碩士生惲葉霄翻譯轉述。