Current Issue Cover
自动驾驶软件测试技术研究综述

冯洋, 夏志龙, 郭安, 陈振宇(南京大学计算机软件新技术国家重点实验室, 南京 210023)

摘 要
自动驾驶系统(autonomous driving system,ADS)是一种集成高精度传感器、人工智能和地图导航系统等模块的信息—物理融合系统。该类系统中的自动驾驶软件完成了从高级辅助驾驶到无人驾驶任务中关键的感知、定位、预测、规划和控制任务。随着深度学习和强化学习等人工智能技术的发展和车载硬件设备的不断升级,高级别的自动驾驶软件已经逐渐应用于多种安全攸关的场景中,保障其运行稳定性与可靠性的测试技术逐渐成为学术界和产业界的研究重点。本文在广泛调研国内外文献基础上,对自动驾驶软件测试技术进行了深入分析与梳理。结合自动驾驶软件的架构特点及系统特征,讨论了面向自动驾驶系统的仿真测试和实景测试,以及面向组件的测试技术。其中,在仿真方法方面,分析了软件仿真、半实体仿真和在环仿真等技术;在仿真对象方面,讨论了静态环境仿真、动态场景仿真、传感器仿真和车辆动力学仿真等。同时,本文介绍了当前实景测试的进展与情况,重点分析了实景测试案例中的得失优劣。在面向自动驾驶软件组件的测试技术方面,重点讨论了当前数据驱动技术在感知组件、决策规划组件,以及控制组件测试方面的进展。最后,本文总结分析了自动驾驶软件测试当前面临的挑战,并对未来自动驾驶软件测试技术的研究方向和研究重点进行了展望。
关键词
Survey of testing techniques of autonomous driving software

Feng Yang, Xia Zhilong, Guo An, Chen Zhenyu(State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210023, China)

Abstract
An autonomous driving system(ADS) is a cyber-physical system that integrates a number of complicated software modules, such as high-precision sensors, artificial intelligence, and navigation systems. The autonomous driving software in this system performs sensing, positioning, forecasting, planning, and controlling tasks. With the development of artificial intelligence technologies and the continuous upgrading of onboard hardware devices, advanced autonomous driving software has been applied in a variety of safety-critical scenarios. Thus, the testing technology that assures its stability and reliability has naturally become the focus of academia and industry. To summarize the advance of the testing technology of autonomous driving software, this paper first characterizes the architecture and design of autonomous driving software. It presents the reference architecture of autonomous driving software and details the primary functionality of each component. It also introduces the interaction between these components and summarizes the features and challenges of autonomous driving software testing. Then, this paper extensively reviews the literature, providing a comprehensive discussion on the testing technology of autonomous driving software, which includes three related topics: simulation-based testing, real-scenario testing, and component-oriented testing. Simulation testing provides a method to examine the behaviors of real vehicle software in virtual environments. It constructs the internal and external factors and conditions that influence the software system to simulate various situations faced by autonomous vehicles with different degrees. This paper examines two critical components of simulation testing: the simulation methods and simulation targets. With regard to the simulation methods, software simulation, semi-physical simulation, and X-in-the-loop simulation are investigated. Currently, all these simulation methods are widely employed in autonomous driving software testing. They are capable of reflecting the behaviors of autonomous driving software under various virtual environments and thus enable engineers to test autonomous driving software at a much lower cost. For the simulation targets, this paper details the simulation of static environments, dynamic scenarios, sensors, and vehicle dynamics. Various simulation techniques are designed for these targets and are further employed to test different functionalities of autonomous driving software. For each simulation target, this paper discusses its usage and state-of-the-art simulation techniques. However, because simulation testing can reflect the behavior of autonomous driving software only in a virtual environment, it cannot completely represent the testing results under real scenarios. Compared with simulation testing, the cost of real scenario testing is relatively high, and the testing scale is often small. Thus, it cannot cover the input field and operating environment completely. However, real scenario testing is critical in quality assurance because it is the only way to identify the performance of autonomous driving software under real physical settings. This paper introduces the real-scenario testing cases conducted by the manufacturers of autonomous driving cars, which provide solid data that reflect the real road traffic scenario for the simulation testing of autonomous driving software. Component-oriented testing focuses on assuring the quality of individual components of autonomous driving software. In modern autonomous driving software, deep neural networks (DNNs) play a critical role. They are employed to assist in various driving tasks, such as perception, decision, and planning. However, testing the DNN-embedded software component is significantly different from conventional software components because their business logic is learned from massive data but is not defined with interpretable rules. To ensure the quality of these components, software engineers often adopt data-driven testing techniques. This paper introduces data-driven testing techniques for three primary components, i.e., perception, decision and planning, and controlling. For the perception component, the primary challenge is to generate test data to input into various sensors, such as LiDAR, radar, and camera. The existing solutions are often built based on a mutation algorithm to augment the seed dataset, with the goal of increasing neuron coverages. For the decision and planning component, some researchers leverage reinforcement learning algorithms to combine traditional path planning algorithms, expert systems, and machine learning techniques to enhance the testing engines. For the controlling component, the testing often involves the hardware, including speed controller, steering controller, braking controller, and stability controller. Researchers have evaluated the performance and reliability of controller-oriented algorithms and explored automated test generation methods. Finally, this paper summarizes and analyzes the current challenges of automatic driving software testing and prospects for the future research direction and emphasis of automatic driving software testing technology.
Keywords

订阅号|日报