一种底层驱动软件通用自动化测试方法与流程

专利2024-05-12  91

1.本发明涉及车载系统测试领域内的通用自动化测试方法。
背景技术
::2.linux系统管理着各个模块的驱动,在开发阶段需要测试驱动模块的功能状态,在稳定性测试阶段需要调试定位到具体代码位置,在性能优化时需要把握各个模块运行时间。介于当前系统越来越复杂,模块越来越多,产品迭代速度加快,而现有技术中缺乏一种能够对驱动进行测试的方法,无法方便调试测试各个模块和不断整合新的驱动模块,很难深入了解产品各个实现原理和功能指标要求。技术实现要素:3.本发明的目的是提供一种底层驱动软件通用自动化测试方法,可以很好的把控系统功能的需求、性能、稳定等。4.为实现上述目的,本发明提供了一种底层驱动软件通用自动化测试方法,包括以下步骤,步骤1,进程状态监控;步骤1.1,负载监控:在系统卡顿的时候,出现系统load指标升高的现象(1)使用命令,hsae-toolsproc-loadꢀ‑‑activate="load=80";(2)该命令会将load监控值设置为80,系统出现load值超过设置的阀值,就会输出系统中所有处于running/uninterruptable状态的线程调用链;(3)使用命令,hsae-toolsproc-loadꢀ‑‑report输出调用链测试给果,开发人员可以分析引起系统load高的原因。5.任务状态跟踪:监控用户态应用在一段代码中运行超过监控的阀值时间(1)使用命令,hsae-toolsproc-traceꢀ‑‑activate="timer-us=10threshold=80";(2)timer-us表示定期采样当前线程的状态,如果有应用代码运行超过500ms的时间,会记录应用程序内核栈和用户栈;(3)使用命令,hsae-toolsproc-traceꢀ‑‑report输出测试结果,根据测试结果可以看出哪些用户程序运行时间超过阀值;步骤1.2,函数调用栈:跟踪指定函数各个调用栈的次数(1)使用命令,hsae-toolsproc-stacktraceꢀ‑‑activate="funcname=";(2)funcname为跟踪函数的名称,会计数不同函数调用该funcname的次数;(3)使用命令,hsae-toolsproc-stacktraceꢀ‑‑report输出测试结果,根据测试结果可以看出不同函数调用该函数次数;步骤1.3,线程等待cpu运行时间:监控线程等待时间超过阀值的线程(1)使用命令,hsae-toolsproc-threadwaitꢀ‑‑activate="pid=1212threshold=50";(2)会监控线程1212等待cpu运行的时间,如果等待时间超过50ms,会记录该线程现场的调用栈信息;(3)使用命令,hsae-toolsproc-threadwaitꢀ‑‑report输出测试结果,根据测试结果中的调用栈可以分析出是具体那个代码程序导致等待时间长的;步骤1.4,进程退出监测:监控进程退出的调用栈,也可以监控特定进程的退出(1)使用命令,hsae-toolsproc-exitꢀ‑‑activate="pid=1212";(2)当pid为1212的进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-toolsproc-exitꢀ‑‑report输出测试结果,根据测试结果中上文信息可以分析出是哪个调用链触发的程序退出,从而有助于分析出程序退出的原因;步骤1.5,进程启动监测:监控进程的创建,可以监控系统由于创建进程导致系统抖动(1)使用命令,hsae-toolsproc-execꢀ–activate;(2)当有进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-toolsproc-execꢀ‑‑report输出测试结果,根据测试结果中上文信息可以分析出是哪些调用链在创建新的进程,从而有助于分析创建新进程导致系统抖动的原因。6.步骤1.6,调度延时监控:监控系统中调度延时超过阀值的线程(1)使用命令,hsae-toolsproc-delayꢀ‑‑activate="threshold=8";(2)当系统运行过程中,有线程调度延时超过8ms,就会记录该线程调用栈信息;(3)使用命令,hsae-toolsproc-delayꢀ‑‑report输出测试结果,根据测试结果中的调用栈信息可以分析出调度超时的上下文代码环境,从而可以分析出调度延时超时的原因;步骤2,监控系统重启;步骤3,监控中断;步骤4,寄存器dump;步骤5,touch监控;步骤6,监控内存;步骤7,usb监控;步骤8,网络层监控;步骤9,对ipc_logging功能进行封装,查看各个模块ipc_logging日志;步骤10,监控系统文件。7.与现有技术相比,本发明的有益效果在于,将proc、sysfs、klogd(printk/kpi_vlaue)、kgdb、sysrq、i2c/spi/uarttools、usbtest、watchdog、coredump、debugfs、dynamic-debug、kprobe、perf、ptrace、oomkiller、ebpf、deadlock、dumpsys、tcpdump、wireshark等各种调试测试方法进行整合,应用到各个模块中,模块包括bootloader、i2c/spi/uart等peripherals、存储、网络、usb、bt、wifi、内存、触摸屏、gnss&gyro、手机互联、displaycodec等,最后形成一套通用的测试框架;对系统的各个模块的各个层次进行有效测试检测,规模化、简洁化、精准化的框架设计。同时随着项目的开发、不同平台的适配、功能模块的升级,不断完善该测试框架,以不变应对万变。8.作为本发明的进一步改进,步骤2的具体内容如下,(1)使用命令,hsae-toolsrebootꢀ–activate;(2)当系统出去重启时,会记录触发重启函数的调用链;(3)使用命令,hsae-toolsrebootꢀ‑‑report输出测试结果,根据测试结果中的调用栈信息可以分析出重启触发的上下文代码环境,从而细化分析出系统重启触发的原因。9.这样可以在系统发生重启时,会记录重启触发时的调用链。10.作为本发明的进一步改进,步骤3具体内容如下,步骤3.1,中断延时监控:监控系统中断延时超过阀值的中断(1)使用命令,hsae-toolsirq-delayꢀ‑‑activate="threshold=80";(2)当系统运行过程中,有线程调度延时超过80ms,就会记录该线程调用栈信息;(3)使用命令,hsae-toolsirq-delayꢀ‑‑report输出测试结果,根据测试结果中的调用栈信息可以分析出中断超时的原因;步骤3.2,监控中断触发频率:监控系统中的中断超过一定频率输出其调用栈(1)使用命令,hsae-toolsirq-rateꢀ‑‑activate="hs=80";(2)当系统运行过程中,有中断触发频率,就会记录该中断的调用栈信息;(3)使用命令,hsae-toolsirq-rateꢀ‑‑report输出测试结果,根据测试结果中的调用栈信息可以分析出触发频率过高的中断。11.这样可以对监控系统中断延时超过阀值的中断进行监控和监控系统中的中断超过一定频率输出其调用栈进行监控。12.作为本发明的进一步改进,步骤4的具体内容如下,(1)使用命令,hsae-toolsreg-dumpꢀ‑‑list,显示支持的dump的模块,比如,支持加算芯片max947、max948;(2)使用命令,hsae-toolsreg-dumpꢀ‑‑show=“max947”,显示max947当前的寄存器列表值,通过寄存器值分析加算芯片状态;如果寄存器获取失败,说明947通信线路有问题;(3)使用命令,hsae-toolsreg-dumpꢀ‑‑show=“max948”,显示max948当前的寄存器列表值,通过寄存器值分析加算芯片状态;如果寄存器获取失败,说明948通信线路有问题。13.这样在出现加算解算显示屏显示异常时,检测通信线路状态以及dump寄存器,比如,displaycodec。14.作为本发明的进一步改进,步骤5的具体内容如下,(1)使用命令,hsae-toolstouchꢀ‑‑list,显示支持的touch型号,比如,支持atmel;(2)使用命令,hsae-toolstouchꢀ‑‑show=“atmel”,此时开始记录touch的event事件;此时点击触摸屏,终端会显示相应event事件;相反,如果没有事件显示说明触摸驱动有问题;(3)假设触摸屏(90,90)的位置有一个android触摸按钮,使用命令,hsae-toolstouchꢀ‑‑settings=“drvier9090”,此时触摸按钮显示触摸点击效果,如果没有,说明驱动到app的event事件传输有问题;(4)假设触摸屏(90,90)的位置有一个android触摸按钮,使用命令,hsae-toolstouchꢀ‑‑settings=“eventhub9090”,此时触摸按钮显示触摸点解效果,如果没有,说明eventhub到app的event的事件传输有问题。15.这样在触摸屏异常时,可以通过工具检测通信链路状态,抓取驱动触摸事件、eventhub触摸事件查看是否有异常,从而确定异常原因的范围。16.作为本发明的进一步改进,步骤6的具体内容如下,步骤6.1,使用命令,hsae-toolsmem-sysꢀ‑‑show,显示整体内存信息,可以改信息可以了解系统整体使用内存状态;步骤6.2,(1)使用命令,hsae-toolsmem-procꢀ‑‑show="all",显示各个进程的内存使用分布状态;(2)使用命令,hsae-toolsmem-procꢀ‑‑show="pid=99",显示pid为99的进程的内存使用分布状态;步骤6.3,(1)使用命令,hsae-toolsmem-orderꢀ‑‑show="proc",将会按物理内存使用量来进程的内存状态,便于找到分析内存使用较大的进程;(2)使用命令,hsae-toolsmem-orderꢀ‑‑show="slab",将会按slab内存使用量来排列显示slab内存的使用情况;步骤6.4,(1)使用命令,hsae-toolsmem-alloctopꢀ‑‑activate="top=20",将会开始按进程记录内存分布数量;(2)使用命令,hsae-toolsmem-alloctopꢀ‑‑report,根据分配数量排序显示各个进程列表:序号/进程号/进程名称/分配页面数量/进程所在cgroup名称。从而可以发现当前阶段那个进程分配内存比较频繁;步骤6.5,(1)使用命令,hsae-toolsmem-leakꢀ‑‑activate,开始统计内存分配;(2)使用命令,hsae-toolsmem-leakꢀ‑‑report,显示功能输出结果,显示没有被释放内存的内核调用堆栈,通过内存堆栈分析可能存在内存泄漏的位置。17.这样可以获取系统内存状态:显示系统整体内存使用状态;获取进程内存的状态:显示相应进程使用的内存状态;按使用量显示内存分布:根据物理内存量排列显示进程,根据slab内存使用量显示slab内存;阶段时间内内存分配数量:统计一段时间内,进程分配内存的数量,并按照分配数量排序输出;分析内存泄漏问题:统计一段时间内,分配了内存但是没有释放,并显示分配这些内存的调用链;作为本发明的进一步改进,步骤7的具体内容如下,步骤7.1,监控usb存储设备识别、卸载时间:(1)使用命令,hsae-toolsusb-diskꢀ‑‑activate,将会开始监控usb存储设备的插入拔出时间;(2)使用命令,hsae-toolsusb-diskꢀ‑‑report,输出监控结果,查看usb存储设备的识别、卸载时间;步骤7.2,查看usb设备信息:(1)使用命令,hsae-toolsusb-infoꢀ‑‑activate="bus=0",将会开始监控usbbus0的总线接口工作状态,以及usb设备信息;(2)使用命令,hsae-toolsusb-infoꢀ‑‑report,输出监控结果,显示usbbus0的工作stage,以及当前bus0上usb设备信息。18.这样可以监控设备的插入和拔出;usb设备状态信息抓取;usb设备识别时间监测;调试眼图测试。19.作为本发明的进一步改进,步骤8的具体内容如下,(1)使用命令,hsae-toolsping-delayꢀ‑‑activate="addr=192.168.20.150",将会开始ping包的延时;(2)使用命令,hsae-toolsping-delayꢀ‑‑report将会打印出ping包的延时信息。20.这样可以跟踪ping包延时,通过hook发送接收ping的函数,记录发送接收时间点,从而追踪ping包的时间延时。21.作为本发明的进一步改进,步骤9的具体内容如下,(1)使用命令,hsae-toolsipc-loggingꢀ‑‑show="list",将会显示支持ipc_logging模的模块;(2)使用命令,hsae-toolsipc-loggingꢀ‑‑show="log62688000.spi",将会显示该模块buffer缓存的日志;(3)使用命令,hsae-toolsipc-loggingꢀ‑‑show="log_cnt62688000.spi",将会实时显示该模块的日志。22.这样可以对ipc_logging功能进行封装,查看各个模块ipc_logging日志。23.作为本发明的进一步改进,步骤10的具体内容如下,步骤10.1,监控阶段时间内打开的文件(1)使用命令,hsae-toolsfs-openꢀ‑‑activate,将会开使记录打开的文件;(2)使用命令,hsae-toolsfs-openꢀ‑‑report,将输出打开的文件路径,文件打开次数;步骤10.2,监控文件操作;步骤10.3,监控阶段时间内读写频率较高的文件及目录:(1)使用命令,hsae-toolsfs-topꢀ‑‑activate=“top=20”,将会开始记录文件读写;(2)使用命令,hsae-toolsfs-topꢀ‑‑report,输出读写比较频繁的20个文件和读写比较频繁的20个目录;步骤10.4,测试文件系统越界:(1)使用命令,hsae-toolsfs-testꢀ‑‑activate=“patch=/data”,开始文件系统测试;(2)开始测试后查看内核及系统日志,确认是否有异常信息输出,从而确认文件系统及io是否有异常。24.这样,可以记录阶段时间内打开的文件的路径,打开文件的次数;监控读写比较频繁的文件,监控读写比较频繁的目录;监控文件系统的stat,sync,mmap,writeback,mount的操作;通过测试检测文件系统异常。附图说明25.图1为本发明中的模块框图。26.图2为本发明中寄存器dump的加算解算连接车机和显示图。27.图3为本发明中触摸事件传输图。具体实施方式28.下面结合附图对本发明进一步说明:如图1-3所示的一种底层驱动软件通用自动化测试方法,包括以下步骤,包括以下步骤,步骤1,进程状态监控;步骤1.1,负载监控:在系统卡顿的时候,出现系统load指标升高的现象(1)使用命令,hsae-toolsproc-loadꢀ‑‑activate="load=80";(2)该命令会将load监控值设置为80,系统出现load值超过设置的阀值,就会输出系统中所有处于running/uninterruptable状态的线程调用链;(3)使用命令,hsae-toolsproc-loadꢀ‑‑report输出调用链测试给果,开发人员可以分析引起系统load高的原因。29.任务状态跟踪:监控用户态应用在一段代码中运行超过监控的阀值时间(1)使用命令,hsae-toolsproc-traceꢀ‑‑activate="timer-us=10threshold=80";(2)timer-us表示定期采样当前线程的状态,如果有应用代码运行超过500ms的时间,会记录应用程序内核栈和用户栈;(3)使用命令,hsae-toolsproc-traceꢀ‑‑report输出测试结果,根据测试结果可以看出哪些用户程序运行时间超过阀值;步骤1.2,函数调用栈:跟踪指定函数各个调用栈的次数(1)使用命令,hsae-toolsproc-stacktraceꢀ‑‑activate="funcname=";(2)funcname为跟踪函数的名称,会计数不同函数调用该funcname的次数;(3)使用命令,hsae-toolsproc-stacktraceꢀ‑‑report输出测试结果,根据测试结果可以看出不同函数调用该函数次数;步骤1.3,线程等待cpu运行时间:监控线程等待时间超过阀值的线程(1)使用命令,hsae-toolsproc-threadwaitꢀ‑‑activate="pid=1212threshold=50";(2)会监控线程1212等待cpu运行的时间,如果等待时间超过50ms,会记录该线程现场的调用栈信息;(3)使用命令,hsae-toolsproc-threadwaitꢀ‑‑report输出测试结果,根据测试结果中的调用栈可以分析出是具体那个代码程序导致等待时间长的;步骤1.4,进程退出监测:监控进程退出的调用栈,也可以监控特定进程的退出(1)使用命令,hsae-toolsproc-exitꢀ‑‑activate="pid=1212";(2)当pid为1212的进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-toolsproc-exitꢀ‑‑report输出测试结果,根据测试结果中上文信息可以分析出是哪个调用链触发的程序退出,从而有助于分析出程序退出的原因;步骤1.5,进程启动监测:监控进程的创建,可以监控系统由于创建进程导致系统抖动(1)使用命令,hsae-toolsproc-execꢀ–activate;(2)当有进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-toolsproc-execꢀ‑‑report输出测试结果,根据测试结果中上文信息可以分析出是哪些调用链在创建新的进程,从而有助于分析创建新进程导致系统touchꢀ‑‑settings=“drvier9090”,此时触摸按钮显示触摸点击效果,如果没有,说明驱动到app的event事件传输有问题;(4)假设触摸屏(90,90)的位置有一个android触摸按钮,使用命令,hsae-toolstouchꢀ‑‑settings=“eventhub9090”,此时触摸按钮显示触摸点解效果,如果没有,说明eventhub到app的event的事件传输有问题。34.步骤6,监控内存;步骤6.1,使用命令,hsae-toolsmem-sysꢀ‑‑show,显示整体内存信息,可以改信息可以了解系统整体使用内存状态;步骤6.2,(1)使用命令,hsae-toolsmem-procꢀ‑‑show="all",显示各个进程的内存使用分布状态;(2)使用命令,hsae-toolsmem-procꢀ‑‑show="pid=99",显示pid为99的进程的内存使用分布状态;步骤6.3,(1)使用命令,hsae-toolsmem-orderꢀ‑‑show="proc",将会按物理内存使用量来进程的内存状态,便于找到分析内存使用较大的进程;(2)使用命令,hsae-toolsmem-orderꢀ‑‑show="slab",将会按slab内存使用量来排列显示slab内存的使用情况;步骤6.4,(1)使用命令,hsae-toolsmem-alloctopꢀ‑‑activate="top=20",将会开始按进程记录内存分布数量;(2)使用命令,hsae-toolsmem-alloctopꢀ‑‑report,根据分配数量排序显示各个进程列表:序号/进程号/进程名称/分配页面数量/进程所在cgroup名称。从而可以发现当前阶段那个进程分配内存比较频繁;步骤6.5,(1)使用命令,hsae-toolsmem-leakꢀ‑‑activate,开始统计内存分配;(2)使用命令,hsae-toolsmem-leakꢀ‑‑report,显示功能输出结果,显示没有被释放内存的内核调用堆栈,通过内存堆栈分析可能存在内存泄漏的位置。35.步骤7,usb监控;步骤7.1,监控usb存储设备识别、卸载时间:(1)使用命令,hsae-toolsusb-diskꢀ‑‑activate,将会开始监控usb存储设备的插入拔出时间;(2)使用命令,hsae-toolsusb-diskꢀ‑‑report,输出监控结果,查看usb存储设备的识别、卸载时间;步骤7.2,查看usb设备信息:(1)使用命令,hsae-toolsusb-infoꢀ‑‑activate="bus=0",将会开始监控usbbus0的总线接口工作状态,以及usb设备信息;(2)使用命令,hsae-toolsusb-infoꢀ‑‑report,输出监控结果,显示usbbus0的工作stage,以及当前bus0上usb设备信息。36.步骤8,网络层监控;(1)使用命令,hsae-toolsping-delayꢀ‑‑activate="addr=192.168.20.150",将会开始ping包的延时;(2)使用命令,hsae-toolsping-delayꢀ‑‑report将会打印出ping包的延时信息。37.步骤9,对ipc_logging功能进行封装,查看各个模块ipc_logging日志;具体事例,显示如下,62684000.qcom,qup_uart_irqstatusaopqrtr_562684000.qcom,qup_uart_miscapps_rscqrtr_ns62684000.qcom,qup_uart_pwraprqsee_ipc_irq_bridge62684000.qcom,qup_uart_rxcdspsmcinvoke62684000.qcom,qup_uart_txcnsssmp2p62688000.spicnss-longsps_bam_0x000000000a704000_062690000.qcom,qup_uart_irqstatusdisp_rscsps_bam_0x000000000a704000_162690000.qcom,qup_uart_miscemacsps_bam_0x000000000a704000_262690000.qcom,qup_uart_pwrglink_pktsps_bam_0x000000000a704000_362690000.qcom,qup_uart_rxglink_probesps_bam_0x000000000a704000_4(1)使用命令,hsae-toolsipc-logging‑‑show="list",将会显示支持ipc_logging模的模块;(2)使用命令,hsae-toolsipc-logging‑‑show="log62688000.spi",将会显示该模块buffer缓存的日志;(3)使用命令,hsae-toolsipc-logging‑‑show="log_cnt62688000.spi",将会实时显示该模块的日志。38.步骤10,监控系统文件;步骤10.1,监控阶段时间内打开的文件:(1)使用命令,hsae-toolsfs-open‑‑activate,将会开使记录打开的文件;(2)使用命令,hsae-toolsfs-open‑‑report,将输出打开的文件路径,文件打开次数;步骤10.2,监控文件操作;步骤10.3,监控阶段时间内读写频率较高的文件及目录:(1)使用命令,hsae-toolsfs-top‑‑activate=“top=20”,将会开始记录文件读写;(2)使用命令,hsae-toolsfs-top‑‑report,输出读写比较频繁的20个文件和读写比较频繁的20个目录;步骤10.4,测试文件系统越界:(1)使用命令,hsae-toolsfs-test‑‑activate=“patch=/data”,开始文件系统测试;(2)开始测试后查看内核及系统日志,确认是否有异常信息输出,从而确认文件系统及io是否有异常。39.本发明中,将系统的各个调试功能整合起来,会涉及系统各个模块。具体如下:1、进程状态监控:将进程相关的监测调试进行整合,获取指定进程/线程的工作状态、stack、工作负载;线程等待cpu运行时间统计;函数调用栈次数;监控任务退出,退出时,打印任务用户态信息;监控进程创建,监控系统创建进程;系统调度延时,查找引起调度延时的进程。40.2、监控系统重启:打印系统调用重启的进程。41.3、监控中断:统计中断/软中断执行次数和时间;跟踪中断延时时间、状态。42.4、ipc_logging:将ipc_logging的调试功能整合成程序接口进行控制,简化使用,获取支持ipc_logging功能的驱动模块,抓取相应模块日志进一步分析模块的工作状态。43.5、监控内存:将内存相关的监测调试进行整合,获取系统存储使用状态;获取指定进程/线程内存使用的状态;定位内存泄漏;阶段时间内存分配数量;跟踪mmap调用、brk系统调用、共享内存等。44.6、touch监控:可以抓取驱动event设备的触摸屏结点信息;也可以通过程序发送触摸点事件到驱动或eventhub,触摸事件传输如图3所示。45.7、usb监控:监控设备的插入和拔出;usb设备状态信息抓取;usb设备识别时间监测;调试眼图测试。46.8、寄存器dump:列出系统可以dump寄存器的模块,可以dump出例如加算解算芯片的寄存器值。47.9、监控网络:监控tcp/ip各个流程中连接、丢包、重传、ping延时;跟踪tcpconnect连接建立时源地址和目的地址;跟踪tcpaccept连接建立时源地址和目的地址;获取网络各层配置及状态信息;以太网模块状态、wifi状态信息、bt模块状态信息。48.10、监控文件系统监控打开的文件及文件系统操作;跟踪读写量高的file;磁盘使用越界检测;11、测试cpu速率;12、测试内存速率;13、测试gpu全负载;14、tobeadd。49.本发明使用时,需要烧入debug版本系统镜像到车机中,将该测试工具拷贝到系统环境中,执行程序命令,便可以使用;程序命令格式:hsae-tools[cmd][‑‑param];该工具内核中主要采样静态插桩tracepoint,动态插桩kprobes、upprobes、ftrace等技术实现内核函数跟踪,输出相应的调试信息。[0050]本发明,可以在开发过程中,使用固定的调试工具,发现问题、抓取信息、分析问题;对系统崩溃、内存、卡顿、i/o、存储、网络、驱动等模块进行更精细化的资源监控和调试分析;从而提高开发效率,提供更多的系统模块异常的检测手段,增加系统模块工作稳定性和性能。[0051]对典型问题做分析覆盖,比如,内存泄漏、负载异常、性能瓶颈、应用异常等;针对公司测试、硬件等部门,需要做相关实验(高低温、震动、电磁干扰、usb眼图等)时,没有通用的测试软件版本,使用通用的接口封装各个模块测试程序,这样以后相关测试过程就可以走比较通用的流程,方便各个部门开展关联工作。[0052]本发明不局限于上述实施例,在本公开的技术方案的基础上,本领域的技术人员根据所公开的技术内容,不需要创造性的劳动就可以对其中的一些技术特征作出一些替换和变形,这些替换和变形均在本发明的保护范围内。当前第1页12当前第1页12
技术特征:
1.一种底层驱动软件通用自动化测试方法,其特征在于:包括以下步骤,步骤1,进程状态监控;步骤1.1,负载监控:在系统卡顿的时候,出现系统load指标升高的现象(1)使用命令,hsae-tools proc-load
ꢀ‑‑
activate="load=80";(2)该命令会将load监控值设置为80,系统出现load值超过设置的阀值,就会输出系统中所有处于running/uninterruptable状态的线程调用链;(3)使用命令,hsae-tools proc-load
ꢀ‑‑
report输出调用链测试给果,开发人员可以分析引起系统load高的原因。任务状态跟踪:监控用户态应用在一段代码中运行超过监控的阀值时间(1)使用命令,hsae-tools proc-trace
ꢀ‑‑
activate="timer-us=10 threshold=80";(2)timer-us表示定期采样当前线程的状态,如果有应用代码运行超过500ms的时间,会记录应用程序内核栈和用户栈;(3)使用命令,hsae-tools proc-trace
ꢀ‑‑
report输出测试结果,根据测试结果可以看出哪些用户程序运行时间超过阀值;步骤1.2,函数调用栈:跟踪指定函数各个调用栈的次数(1)使用命令,hsae-tools proc-stacktrace
ꢀ‑‑
activate="funcname=";(2)funcname为跟踪函数的名称,会计数不同函数调用该funcname的次数;(3)使用命令,hsae-tools proc-stacktrace
ꢀ‑‑
report输出测试结果,根据测试结果可以看出不同函数调用该函数次数;步骤1.3,线程等待cpu运行时间:监控线程等待时间超过阀值的线程(1)使用命令,hsae-tools proc-threadwait
ꢀ‑‑
activate="pid=1212 threshold=50";(2)会监控线程1212等待cpu运行的时间,如果等待时间超过50ms,会记录该线程现场的调用栈信息;(3)使用命令,hsae-tools proc-threadwait
ꢀ‑‑
report输出测试结果,根据测试结果中的调用栈可以分析出是具体那个代码程序导致等待时间长的;步骤1.4,进程退出监测:监控进程退出的调用栈,也可以监控特定进程的退出(1)使用命令,hsae-tools proc-exit
ꢀ‑‑
activate="pid=1212";(2)当pid为1212的进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-tools proc-exit
ꢀ‑‑
report输出测试结果,根据测试结果中上文信息可以分析出是哪个调用链触发的程序退出,从而有助于分析出程序退出的原因;步骤1.5,进程启动监测:监控进程的创建,可以监控系统由于创建进程导致系统抖动(1)使用命令,hsae-tools proc-exec
ꢀ–
activate;(2)当有进程退出时,会记录进程退出时的上下文信息;(3)使用命令,hsae-tools proc-exec
ꢀ‑‑
report输出测试结果,根据测试结果中上文信息可以分析出是哪些调用链在创建新的进程,从而有助于分析创建新进程导致系统抖动的原因。步骤1.6,调度延时监控:监控系统中调度延时超过阀值的线程(1)使用命令,hsae-tools proc-delay
ꢀ‑‑
activate="threshold=8";
(2)当系统运行过程中,有线程调度延时超过8ms,就会记录该线程调用栈信息;(3)使用命令,hsae-tools proc-delay
ꢀ‑‑
report输出测试结果,根据测试结果中的调用栈信息可以分析出调度超时的上下文代码环境,从而可以分析出调度延时超时的原因;步骤2,监控系统重启;步骤3,监控中断;步骤4,寄存器dump;步骤5,touch监控;步骤6,监控内存;步骤7,usb监控;步骤8,网络层监控;步骤9,对ipc_logging功能进行封装,查看各个模块ipc_logging日志;步骤10,监控系统文件。2.根据权利要求1所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤2的具体内容如下,(1)使用命令,hsae-tools reboot
ꢀ–
activate;(2)当系统出去重启时,会记录触发重启函数的调用链;(3)使用命令,hsae-tools reboot
ꢀ‑‑
report输出测试结果,根据测试结果中的调用栈信息可以分析出重启触发的上下文代码环境,从而细化分析出系统重启触发的原因。3.根据权利要求2所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤3具体内容如下,步骤3.1,中断延时监控:监控系统中断延时超过阀值的中断(1)使用命令,hsae-tools irq-delay
ꢀ‑‑
activate="threshold=80";(2)当系统运行过程中,有线程调度延时超过80ms,就会记录该线程调用栈信息;(3)使用命令,hsae-tools irq-delay
ꢀ‑‑
report输出测试结果,根据测试结果中的调用栈信息可以分析出中断超时的原因;步骤3.2,监控中断触发频率:监控系统中的中断超过一定频率输出其调用栈(1)使用命令,hsae-tools irq-rate
ꢀ‑‑
activate="hs=80";(2)当系统运行过程中,有中断触发频率,就会记录该中断的调用栈信息;(3)使用命令,hsae-tools irq-rate
ꢀ‑‑
report输出测试结果,根据测试结果中的调用栈信息可以分析出触发频率过高的中断。4.根据权利要求3所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤4的具体内容如下,(1)使用命令,hsae-tools reg-dump
ꢀ‑‑
list,显示支持的dump的模块,比如,支持加算芯片max947、max948;(2)使用命令,hsae-tools reg-dump
ꢀ‑‑
show=“max947”,显示max947当前的寄存器列表值,通过寄存器值分析加算芯片状态;如果寄存器获取失败,说明947通信线路有问题;(3)使用命令,hsae-tools reg-dump
ꢀ‑‑
show=“max948”,显示max948当前的寄存器列表值,通过寄存器值分析加算芯片状态;如果寄存器获取失败,说明948通信线路有问题。5.根据权利要求4所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤5
的具体内容如下,(1)使用命令,hsae-tools touch
ꢀ‑‑
list,显示支持的touch型号,比如,支持atmel;(2)使用命令,hsae-tools touch
ꢀ‑‑
show=“atmel”,此时开始记录touch的event事件;此时点击触摸屏,终端会显示相应event事件;相反,如果没有事件显示说明触摸驱动有问题;(3)假设触摸屏(90,90)的位置有一个android触摸按钮,使用命令,hsae-tools touch
ꢀ‑‑
settings=“drvier 90 90”,此时触摸按钮显示触摸点击效果,如果没有,说明驱动到app的event事件传输有问题;(4)假设触摸屏(90,90)的位置有一个android触摸按钮,使用命令,hsae-tools touch
ꢀ‑‑
settings=“eventhub 90 90”,此时触摸按钮显示触摸点解效果,如果没有,说明eventhub到app的event的事件传输有问题。6.根据权利要求5所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤6的具体内容如下,步骤6.1,使用命令,hsae-tools mem-sys
ꢀ‑‑
show,显示整体内存信息,可以改信息可以了解系统整体使用内存状态;步骤6.2,(1)使用命令,hsae-tools mem-proc
ꢀ‑‑
show="all",显示各个进程的内存使用分布状态;(2)使用命令,hsae-tools mem-proc
ꢀ‑‑
show="pid=99",显示pid为99的进程的内存使用分布状态;步骤6.3,(1)使用命令,hsae-tools mem-order
ꢀ‑‑
show="proc",将会按物理内存使用量来进程的内存状态,便于找到分析内存使用较大的进程;(2)使用命令,hsae-tools mem-order
ꢀ‑‑
show="slab",将会按slab内存使用量来排列显示slab内存的使用情况;步骤6.4,(1)使用命令,hsae-tools mem-alloctop
ꢀ‑‑
activate="top=20",将会开始按进程记录内存分布数量;(2)使用命令,hsae-tools mem-alloctop
ꢀ‑‑
report,根据分配数量排序显示各个进程列表:序号/进程号/进程名称/分配页面数量/进程所在cgroup名称。从而可以发现当前阶段那个进程分配内存比较频繁;步骤6.5,(1)使用命令,hsae-tools mem-leak
ꢀ‑‑
activate,开始统计内存分配;(2)使用命令,hsae-tools mem-leak
ꢀ‑‑
report,显示功能输出结果,显示没有被释放内存的内核调用堆栈,通过内存堆栈分析可能存在内存泄漏的位置。7.根据权利要求6所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤7的具体内容如下,步骤7.1,监控usb存储设备识别、卸载时间:(1)使用命令,hsae-tools usb-disk
ꢀ‑‑
activate,将会开始监控usb存储设备的插入拔出时间;(2)使用命令,hsae-tools usb-disk
ꢀ‑‑
report,输出监控结果,查看usb存储设备的识别、卸载时间;步骤7.2,查看usb设备信息:
(1)使用命令,hsae-tools usb-info
ꢀ‑‑
activate="bus=0",将会开始监控usb bus0的总线接口工作状态,以及usb设备信息;(2)使用命令,hsae-tools usb-info
ꢀ‑‑
report,输出监控结果,显示usb bus0 的工作stage,以及当前bus0上usb 设备信息。8.根据权利要求7所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤8的具体内容如下,(1)使用命令,hsae-tool sping-delay
ꢀ‑‑
activate="addr=192.168.20.150",将会开始ping包的延时;(2)使用命令,hsae-tools ping-delay
ꢀ‑‑
report将会打印出ping包的延时信息。9.根据权利要求8所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤9的具体内容如下,(1)使用命令,hsae-tools ipc-logging
ꢀ‑‑
show="list",将会显示支持ipc_logging模的模块;(2)使用命令,hsae-tools ipc-logging
ꢀ‑‑
show="log 62688000.spi",将会显示该模块buffer缓存的日志;(3)使用命令,hsae-tools ipc-logging
ꢀ‑‑
show="log_cnt 62688000.spi",将会实时显示该模块的日志。10.根据权利要求9所述的一种底层驱动软件通用自动化测试方法,其特征在于:步骤10的具体内容如下,步骤10.1,监控阶段时间内打开的文件:(1)使用命令,hsae-tools fs-open
ꢀ‑‑
activate,将会开使记录打开的文件;(2)使用命令,hsae-tools fs-open
ꢀ‑‑
report,将输出打开的文件路径,文件打开次数;步骤10.2,监控文件操作;步骤10.3,监控阶段时间内读写频率较高的文件及目录:(1)使用命令,hsae-tools fs-top
ꢀ‑‑
activate=“top=20”,将会开始记录文件读写;(2)使用命令,hsae-tools fs-top
ꢀ‑‑
report,输出读写比较频繁的20个文件和读写比较频繁的20个目录;步骤10.4,测试文件系统越界:(1)使用命令,hsae-tools fs-test
ꢀ‑‑
activate=“patch=/data”,开始文件系统测试;(2)开始测试后查看内核及系统日志,确认是否有异常信息输出,从而确认文件系统及io是否有异常。

技术总结
本发明公开了车载系统测试领域内的一种底层驱动软件通用自动化测试方法,步骤1,进程状态监控;步骤2,监控系统重启;步骤3,监控中断;步骤4,寄存器dump;步骤5,touch监控;步骤6,监控内存;步骤7,USB监控;步骤8,网络层监控;步骤9,对ipc_logging功能进行封装,查看各个模块ipc_logging日志;步骤10,监控系统文件;对系统的各个模块的各个层次进行有效测试检测,规模化、简洁化、精准化的框架设计。同时随着项目的开发、不同平台的适配、功能模块的升级,不断完善该测试框架,以不变应对万变。以不变应对万变。以不变应对万变。


技术研发人员:徐雪彬 吴涛 江超
受保护的技术使用者:扬州航盛科技有限公司
技术研发日:2022.07.11
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-8083.html

最新回复(0)