CN118093415A - 一种基于多代理强化学习的qemu测试方法 - Google Patents

一种基于多代理强化学习的qemu测试方法 Download PDF

Info

Publication number
CN118093415A
CN118093415A CN202410282172.6A CN202410282172A CN118093415A CN 118093415 A CN118093415 A CN 118093415A CN 202410282172 A CN202410282172 A CN 202410282172A CN 118093415 A CN118093415 A CN 118093415A
Authority
CN
China
Prior art keywords
agent
test
ann
action
cov
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202410282172.6A
Other languages
English (en)
Inventor
董青
任志磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dalian University of Technology
Original Assignee
Dalian University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Dalian University of Technology filed Critical Dalian University of Technology
Priority to CN202410282172.6A priority Critical patent/CN118093415A/zh
Publication of CN118093415A publication Critical patent/CN118093415A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明属于软件测试领域,涉及一种用于检测QEMU缺陷的技术,具体为一种基于多代理强化学习的QEMU测试方法。

Description

一种基于多代理强化学习的QEMU测试方法
技术领域
本发明属于软件测试领域,涉及一种用于检测QEMU缺陷的技术,具体为一种基于多代理强化学习的QEMU测试方法。
背景技术
QEMU作为一款广泛应用的开源虚拟化软件和虚拟机监控程序,在云计算、服务器虚拟化和嵌入式系统等领域扮演着关键的角色。QEMU的核心组件构成了其强大的虚拟化解决方案。首先,QEMU的系统模拟器能够模拟多种硬件架构,包括但不限于x86_64、riscv64、aarch64、ARM、PowerPC,使得用户能够在一个虚拟环境中运行多个操作系统。其次,设备模拟器提供了虚拟硬盘、网卡、显示适配器等设备模拟,使得虚拟机能够访问和使用模拟的硬件设备。与此相对的,用户态模式是QEMU的一种轻量级虚拟化形式,适用于在主机体系结构上运行目标体系结构的用户空间应用程序。用户可以在一台计算机上模拟运行ARM或PowerPC等架构的应用程序,而无需真正的目标硬件。其主要优势在于相对较高的性能、轻量级虚拟化以及方便的交叉编译和测试。特别地,在开发阶段,使用QEMU用户态模式可以更快地验证和测试应用程序在不同体系结构上的基本功能,而无需完整的系统模拟,即快速原型验证。然而,随着软件复杂性的不断增加,QEMU也难免会出现缺陷和缺陷,这些问题可能会导致安全漏洞、稳定性差、性能下降、兼容度低以及维护困难等问题。
由于通过增加覆盖率,测试用例可以更好地模拟实际运行环境中的各种情况,从而更全面地检查代码的正确性。这有助于提高测试用例的质量,使其更有力地捕捉潜在的问题。在测试QEMU的过程中,提高覆盖率、降低平均测试时间可以提高测试效率。为了这个目标,本发明通过使用多代理强化学习(Multi-agentReinforcement Learning,本文简称MARL)来提升测试用例的质量。
发明内容
为了解决上述问题,本发明提供了覆盖率引导的对QEMU的多个架构进行MARL优化的随机测试方法,创新地融入注意力机制,以实现更为专注和灵活的Csmith参数优化。本发明的一种基于MARL的QEMU测试方法,加入了共享知识学习方法,结合了注意力机制,用于更精细化、专注性地优化Csmith的参数配置。该方法通过在神经网络中添加注意力层引入注意力机制,使网络能够动态地分配注意力给输入的不同部分。每个代理在学习时通过对关键知识的更强调,使得智能体更专注地学习与当前任务相关的知识,从而提高性能和适应性,增强Csmith参数优化的效果。
本发明的技术方案:
一种基于多代理强化学习的QEMU测试方法,包括如下步骤:
步骤1:初始测试配置使用Csmith默认的测试配置参数向量c0,引导Csmith生成一组初始测试程序p,共x个,构成初始测试程序集合P。
步骤2:依次使用QEMU用户态模式的m个不同架构编译程序编译并运行初始测试程序p,并使用脚本文件收集编译时长tc、运行时长tr,计算测试配置参数向量c对应的时长之和(tc+tr)的平均值avg_t,构成时长集合T。若运行过程中出现错误,则记录该错误信息并认定为发现缺陷;否则分别保存并比较每个测试用例在每个架构上的输出值,得到x*m个校验和,比较不同测试程序在各个架构上的校验和,得出存在差异的校验和个数ndiff,若ndiff>0,则记录差异信息,并认定为发现缺陷。
步骤3:使用gcov和lcov工具收集行覆盖率covl、函数覆盖率covf、分支覆盖率covb,并生成覆盖率报告。根据生成的覆盖率报告中的覆盖率信息,计算测试配置参数向量c对应的加权覆盖率平均值为:
avg_cov=λ1*covl2*covf+λ3*covb
其中λ1、λ2、λ3是权重参数。
步骤4:为配置参数分别分配独立代理。
具体为:假设测试配置参数向量c表示为c={o1,o2,…,or},其中ok(1≤k≤r)是c中第k个选项的设置,r是选项的数量,选项ok的代理表示为agentk,其状态表示为skt,在特定的时间节点t可以采取的动作表示为akt,构成动作集合Ak。为每个Csmith配置参数各自分配代理,共r个代理,构成代理集合R,为每个代理各自分配行动者神经网络(ActorNeural Network,简称ANN)和评论家神经网络(Critic Neural Network,简称CNN)。
对于行动者神经网络,输入层接收环境状态信息以及来自评论家神经网络的注意力权重;隐藏层包括若干个全连接层或者卷积层等,结合注意力机制进行特征加权;输出层则输出代理应该采取的动作。
对于评论家神经网络,输入层接收环境状态信息和代理采取的动作;同时,在输入层和隐藏层之间加入注意力机制,用于学习特定状态和动作的注意力权重;隐藏层包括若干个全连接层或者卷积层等,结合了注意力权重的信息;输出层则负责输出对给定状态和动作的评估价值。
为了模拟代理之间相互影响的关系,使所有代理能够共享状态,从而在预测某一代理将采取的下一个动作时,它可以观察到所有代理的状态(即所有测试配置选项的设置)。这种方式下,每个代理都能够从全局的角度做出最佳的行动选择,因为不同代理之间共享状态信息。在这种情况下,不同的代理会有相同的一组动作A,这组动作指的是对配置参数当前值的一系列操作,包括对布尔类型的参数进行逻辑非运算和保持不变,以及对数值类型参数进行增加、减少和保持当前值不变。在采取行动后,如果选项的值超出其边界,则将其设置为相应的边界值。通过这种机制,各个代理能够更好地协同工作,以达到更优的系统状态。步骤5:代理集合R的各个代理使用ANN预测该状态下参数向量v(n)的下一个参数向量预测值的概率。然后采取ε-greedy策略,按概率ε选择一个随机的动作,或按概率1-ε选择一个ANN预测该状态下回报最大的动作,计算新的配置参数c’。其中ε为随机概率值,0<ε<1。
步骤6:代理集合R的各个代理使用CNN预测测试配置参数向量的回报值
步骤7:使用c’作为Csmith的配置参数引导Csmith生成x个新的测试用例p’,构成新的测试用例集合P’。重复步骤2和步骤3。
步骤8:重复步骤5、步骤6和步骤7,每隔t次,计算ANN和CNN的优势损失更新ANN与CNN参数。更新公式如下:
Rk(t)=Rewardt+γrk(T+1)
其中,rk(T)表示第t次迭代之后代理k的回报之和,表示代理K在第T次迭代ANN的损失函数,ANN负责根据观测的环境推荐动作,/>表示代理k在第t次迭代时CNN的损失函数;Rewardt表示第t次迭代的实际回报,γ为折扣因子(γ∈[0,1]),它定义了未来奖励的衰减值,值为1时意味着更重视长期奖励,值为0时意味着只考虑短期奖励。初始的折扣因子设置为0.99。/>表示代理k的ANN在参数θk下,对环境skt推荐动作为akt并将状态转移为sk(t+1)的概率。/>表示代理k的CNN在参数/>下对环境skt的预期回报。
本发明的有益效果:本发明能够有效地为QEMU生成高效的测试用例并进行有效测试,从而帮助QEMU开发者提高软件质量。本发明通过引入注意力机制,使得代理在学习和共享知识时更专注于关键部分,提高了Csmith参数优化的精细性和效率。本发明使Csmith参数优化更具有适应性和性能优越性,提高了优化效果,降低了配置空间的复杂度。
附图说明
图1是本发明中的QEMU测试流程图。
图2是MARL流程图。
具体实施方式
以下结合附图和技术方案,进一步说明本发明的具体实施方式。
本发明适用于代码生成工具Csmith的参数优化环境,为提高代码生成质量和性能提供了一种更加专注、灵活的解决方案。本发明的方法部署在一台Ubuntu22.04.3主机上,其处理器型号为Intel Core i7-4770,内存32GB,根据QEMU测试步骤安装对应的软件,如QEMU 6.2.0、Csmith-2.4.0、交叉编译工具链、TensorFlow等。
如图1所示,QEMU按如下流程进行测试。
步骤1:初始化。使用Csmith-2.4.0的默认配置进行强化学习环境的初始化,Csmith-2.4.0的测试配置包括71个测试配置项,对应于强化学习环境具有71维的向量。之后,根据测试程序生成工具的配置项数量(在本实施例中,Csmith-2.4.0的配置项有71个)创建相同数量的代理,初始化其ANN和CNN,每个代理负责对应测试配置项的策略学习和动作选取;测试配置参数向量c,构成初始集合C,引导Csmith生成一组初始测试程序p,共100个,构成初始集合P。
步骤2:依次使用QEMU用户态模式的m个不同架构编译并运行测试程序p,并使用脚本文件收集编译时长tc、运行时长tr。若运行过程中出现错误,则记录该错误信息并认定为发现缺陷;否则分别保存并比较每个测试用例在每个架构上的输出值,得到100*k个校验和,比较各测试程序校验和,得出存在差异的校验和个数ntrg,若ntrg>0,则记录差异信息,并认定为发现缺陷。
步骤3:使用gcov和lcov收集行覆盖率covl,函数覆盖率covf,分支覆盖率covb,计算各配置c对应的覆盖率平均值avg_cov。
步骤4:使用ANN预测该状态st下选择动作at的概率。然后采取ε-greedy策略,以平衡环境学习过程中环境探索和利用的关系。其中0<ε<1,按概率ε选择一个随机的动作,或按概率1-ε选择一个ANN预测该状态下回报最大的动作,选择新的参数向量v(n+1)。在训练前期阶段,设置随机概率值ε为0.99,以较低概率选择代理指导的动作,随着训练的进行,探索环境的知识逐渐积累,ε值不断衰减,以更大的概率选取最大行为价值的动作,以利用学习到的知识。
选择动作的公式如下:
其中,ArgmaxQ(st,at)是使用ANN预测出的该状态下最有可能选择的动作,At是当前状态下可能采取的所有动作的集合,random(At)是其中的一个随机值。
步骤5:使用CNN预测v(n+1)的回报值r。
步骤6:使用v(n+1)作为Csmith的参数引导Csmith生成100个新的测试用例p’,构成集合P’。重复步骤2和步骤3。
步骤7:多次重复步骤5、步骤6和步骤7,每逢t次更新状态,计算多样性值div及优势损失函数Reward,更新ANN与CNN参数。如图2所示的MARL的更新过程,具体包括如下步骤:
实际回报Reward代表基于此状态和动作得到的奖励,在此发明中为多样性回报、触发奖励、边界值惩罚和运行超时惩罚之和。
计算多样性回报。为了避免测试配置探索落入局部最优,需要给更多样化的探索以一个正反馈。本发明采用余弦相似度来衡量两个测试配置cx和cy之间的距离,计算时采用测试配置对应的平均特征向量之间的距离替代测试配置间的距离,Dist(cx,cy)=1-cosine(Vx,Vy)(Vx和Vy是cx和cy对应的平均特征向量。Dist(ci,ct)表示当前时刻t测试配置ct和最近的一组已探索测试配置ci之间的余弦距离,即生成的测试程序的集合的两个对应的平均特征向量。计算测试配置ct的多样性指数divt的公式如下:
其中Ch是最接近ct的一组探索的测试配置。
计算ct最近m个配置上的多样性回报的计算公式如下:
触发不一致或崩溃时同样需要一个正反馈,计算触发奖励公式如下:
其中,ω是一个常量,ntrg是Csmith在配置ct下生成的触发错误或在不同架构上运行结果不一致的测试程序数量。
边界值惩罚。参数达到边界值,当超过q%的配置项为极端值时,给予一个极端值惩罚λ;否则就不给予边界值惩罚。即:否则为0。边界值即低于下界95%或高于上界5%的配置项。
超时惩罚。测试用例运行时间过长会降低测试的效率,因而给其一个负反馈:其中,α是一个常量,novt是Csmith在配置ct下生成的运行时长超过2s的测试程序数量。
第t次迭代的实际回报Rewardtt的计算公式如下:
MARL模型更新公式如下:
Rk(t)=Rewardt+γrk(T+1)
其中,rk(T)表示第t次迭代之后代理k的回报之和,表示代理K在第T次迭代ANN的损失函数,ANN负责根据观测的环境推荐动作,/>表示代理k在第T次迭代时CNN的损失函数;Rewardt表示第T次迭代的实际回报,γ为折扣因子(γ∈[0,1]),它定义了未来奖励的衰减值,值为1是意味着更重视长期奖励,值为0时意味着只考虑短期奖励。初始的折扣因子设置为0.99,尔后逐步减小。/>表示代理k的ANN在参数θk下,对环境skt推荐动作为akt并将状态转移为sk(t+1)的概率。/>表示代理k的CNN在参数/>下对环境skt的预期回报。若设初始迭代为第t0次迭代,则d-step的最后一次迭代为第(t0+d-1)次迭代。此时/>而第t0+d次迭代尚未进行,因此Rk(t0+d)尚未求出。因此,特殊地,对于d-step更新策略的最后一次迭代,采用/>来代替Rk(t0+d)。计算更新后参数θ′k、/>的公式分别如下:
其中,η称为学习率(η∈[0,1]),它代表一次学习的影响比重,η越大,对之前训练的效果保留的就越少,值为1时意味着只考虑新学习到的信息,值为0时意味着代理不会学习任何新信息,在本发明中学习率η设置为0.01。为偏微分。此外,用于多样性测量的测试配置的大小|Ch|=10,m=10;模型更新的步长为d-step=10;极端选项的阈值q%=30%,惩罚常数λ=-2;超时惩罚的系数α=-1;异常情况触发奖励的系数ω=4。此外,Csmith在每种配置组合下生成100个测试程序进行测试。
本发明使用共享知识学习的自适应参数α,该参数根据智能体的性能进行动态调整:
自适应参数α的更新按照以下公式进行:
其中,αt是在时间步t上的自适应参数。η'是学习率,用于控制自适应参数的调整速度。
步骤8:将通过人工审核的发现提交到QEMU缺陷报告仓库。
本发明方法自动化运行上述过程,完成了对于QEMU的缺陷检测工作。基于MARL的以包含Csmith的配置参数作为训练数据的测试用例生成算法,能够生成大量包含符合QEMU测试要求的指定语法代码,大大增加了测试用例的种类和数量,提高了QEMU缺陷检测的效率。
本发明的具体实施方式可以根据需求调整,包括不同的学习算法、神经网络结构和注意力机制参数的设置。

Claims (1)

1.一种基于多代理强化学习的QEMU测试方法,其特征在于,包括如下步骤:
步骤1:初始测试配置使用Csmith默认的测试配置参数向量c0,引导Csmith生成一组初始测试程序p,共x个,构成初始测试程序集合P;
步骤2:依次使用QEMU用户态模式的m个不同架构编译程序编译并运行初始测试程序p,并使用脚本文件收集编译时长tc、运行时长tr,计算测试配置参数向量c对应的时长之和(tc+tr)的平均值avg_t,构成时长集合T;若运行过程中出现错误,则记录该错误信息并认定为发现缺陷;否则分别保存并比较每个测试用例在每个架构上的输出值,得到x*m个校验和,比较不同测试程序在各个架构上的校验和,得出存在差异的校验和个数ndiff,若ndiff>0,则记录差异信息,并认定为发现缺陷;
步骤3:使用gcov和lcov工具收集行覆盖率covl、函数覆盖率covf、分支覆盖率covb,并生成覆盖率报告;根据生成的覆盖率报告中的覆盖率信息,计算测试配置参数向量c对应的加权覆盖率平均值为:
avg_cov=λ1*covl2*covf+λ3*covb
其中λ1、λ2、λ3是权重参数;
步骤4:为配置参数分别分配独立代理;
具体为:假设测试配置参数向量c表示为c={o1,o2,…,or},其中ok是c中第k个选项的设置,1≤k≤r,r是选项的数量,选项ok的代理表示为agentk,其状态表示为skt,在特定的时间节点t可以采取的动作表示为akt,构成动作集合Ak;为每个Csmith配置参数各自分配代理,共r个代理,构成代理集合R,为每个代理各自分配行动者神经网络ANN和评论家神经网络CNN;
对于行动者神经网络,输入层接收环境状态信息以及来自评论家神经网络的注意力权重;隐藏层包括若干个全连接层或者卷积层,结合注意力机制进行特征加权;输出层则输出代理应该采取的动作;
对于评论家神经网络,输入层接收环境状态信息和代理采取的动作;同时,在输入层和隐藏层之间加入注意力机制,用于学习特定状态和动作的注意力权重;隐藏层包括若干个全连接层或者卷积层,结合了注意力权重的信息;输出层则负责输出对给定状态和动作的评估价值;
步骤5:代理集合R的各个代理使用ANN预测该状态下参数向量v(n)的下一个参数向量预测值的概率;然后采取ε-greedy策略,按概率ε选择一个随机的动作,或按概率1-ε选择一个ANN预测该状态下回报最大的动作,计算新的配置参数c’;其中ε为随机概率值,0<ε<1;
步骤6:代理集合R的各个代理使用CNN预测测试配置参数向量的回报值/>
步骤7:使用c’作为Csmith的配置参数引导Csmith生成x个新的测试用例p’,构成新的测试用例集合P’;重复步骤2和步骤3;
步骤8:重复步骤5、步骤6和步骤7,每隔t次,计算ANN和CNN的优势损失更新ANN与CNN参数;更新公式如下:
Rk(t)=Rewardt+γRk(t+1)
其中,Rk(t)表示第t次迭代之后代理k的回报之和,表示代理k在第t次迭代ANN的损失函数,ANN负责根据观测的环境推荐动作,/>表示代理k在第t次迭代时CNN的损失函数;Rewardt表示第t次迭代的实际回报,γ为折扣因子;/>表示代理k的ANN在参数θk下,对环境skt推荐动作为akt并将状态转移为sk(t+1)的概率;/>表示代理k的CNN在参数/>下对环境skt的预期回报。
CN202410282172.6A 2024-03-13 2024-03-13 一种基于多代理强化学习的qemu测试方法 Pending CN118093415A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410282172.6A CN118093415A (zh) 2024-03-13 2024-03-13 一种基于多代理强化学习的qemu测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410282172.6A CN118093415A (zh) 2024-03-13 2024-03-13 一种基于多代理强化学习的qemu测试方法

Publications (1)

Publication Number Publication Date
CN118093415A true CN118093415A (zh) 2024-05-28

Family

ID=91163183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410282172.6A Pending CN118093415A (zh) 2024-03-13 2024-03-13 一种基于多代理强化学习的qemu测试方法

Country Status (1)

Country Link
CN (1) CN118093415A (zh)

Similar Documents

Publication Publication Date Title
CN110119844B (zh) 引入情绪调控机制的机器人运动决策方法、系统、装置
US11816561B2 (en) Methods, systems, articles of manufacture and apparatus to map workloads
CN110008710B (zh) 基于深度强化学习和程序路径插桩的漏洞检测方法
US11494607B1 (en) Artificially intelligent systems, devices, and methods for learning and/or using an avatar&#39;s circumstances for autonomous avatar operation
Qiao et al. Efficient differentiable simulation of articulated bodies
JP7439242B2 (ja) 機械学習モデルの視覚的作成及び監視
JP5512503B2 (ja) プロセッサ・アーキテクチャ・モデルを効率的に生成するための方法及び装置
Sun et al. Integrating an ensemble surrogate model’s estimation into test data generation
CN110109702B (zh) 基于代码分析的Android计算迁移在线决策方法
Sheikhi et al. Coverage-guided fuzz testing for cyber-physical systems
WO2020169182A1 (en) Method and apparatus for allocating tasks
Kumar Deep neural network approach to estimate early worst-case execution time
CN118093415A (zh) 一种基于多代理强化学习的qemu测试方法
CN110457208A (zh) 符号执行的引导方法、装置、设备及计算机可读存储介质
KR20200090061A (ko) 인공신경망 모델의 검증 방법 및 장치
Rehbach et al. Benchmark-driven configuration of a parallel model-based optimization algorithm
US11704562B1 (en) Architecture for virtual instructions
Saber et al. Autonomous gui testing using deep reinforcement learning
Ritter et al. Noise-resilient empirical performance modeling with deep neural networks
AboelMaged et al. Online constraints update using machine learning for accelerating hardware verification
Zhang et al. ANN-based performance estimation of embedded software for risc-v processors
Liang et al. Rlf: Directed fuzzing based on deep reinforcement learning
Ioannides et al. Introducing xcs to coverage directed test generation
Neill et al. Automated analysis of task-parallel execution behavior via artificial neural networks
Cheung et al. Identifying and addressing uncertainty in architecture-level software reliability modeling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination