一种基于虚拟机快照的二分法在线仿真和查错方法技术

技术编号:17561670 阅读:102 留言:0更新日期:2018-03-28 12:12
本发明专利技术公开了一种基于虚拟机快照的二分法在线仿真和查错方法,包括以下步骤:步骤一,利用待在线仿真和查错的软件组件及其软件环境生成0号镜像;步骤二,生成相互独立的多份虚拟机运行环境快照形成虚拟机镜像矩阵;步骤三,整理虚拟机快照镜像;步骤四,利用二分法递进减少虚拟机快照镜像数目;步骤五,提交人工判断故障原因;本发明专利技术通过充分利用虚拟机的特性,实现提高复现故障的速度,利于人工分析同一故障的不同运行序列,可以回溯至缺陷引入点,从而指出软件缺陷在源代码中可能存在的位置。

A method of online simulation and error detection based on dichotomy based on virtual machine snapshot

The invention discloses an online virtual machine simulation dichotomy based on snapshot and error checking method, comprising the following steps: 1, the use of software components for online simulation and error checking and software environment to generate 0 mirror; step two, generate independent copies of virtual machine operation environment to form a virtual machine image matrix snapshot step three consolidation; virtual machine snapshots mirror; step four, reduce the number of virtual machines using binary progressive snapshot image; step five, submit the reason artificial judgment fault; the invention by making full use of characteristics of the virtual machine, can improve the reproduction speed for different fault, operation sequence of artificial analysis of the same fault, can be traced back to defect the introduction, which pointed out that software defects may exist in the source location.

【技术实现步骤摘要】
一种基于虚拟机快照的二分法在线仿真和查错方法
本专利技术涉及软件测试及故障定位的
,特别涉及一种基于虚拟机快照的二分法在线仿真和查错方法。
技术介绍
由于虚拟化技术的不断发展,大部分的应用场景都可以使用虚拟化技术得到实现,程序的调试及测试环境也是如此。软件测试在软件开发过程中占据了大量的人力物力,而故障定位又是测试中付出代价最高的行为之一。基于单机的传统方法中,开发人员在程序中引入了一个缺陷,缺陷造成了程序中的错误状态,错误状态进而引发了程序故障,它以可感知的外部错误的形式出现。随后,开发人员会执行某个失败的测试用例,使用调试器反复设置断点,观察程序状态直到错误状态的出现。然后推断可能的感染源,定位缺陷位置并验证,修正软件缺陷。这种传统做法为了让程序进入可能的问题代码部分,往往需要程序调试人员一遍又一遍的模拟输入、输出,并且如果问题和运行时间相关,还需要占用大量的时间反复测试。最致命的问题在于,传统做法在反复多次从头调试的过程中,存在无法再次复现问题或复现的现象每次均有差异,带来了仿真和测试的困难。究其原因,主要为在操作系统的多进程、多线程环境中,由于外部I/O延时等的不确定性,操作系统的调度也具有不确定性,从而导致缺陷代码的执行序列不一致,最终导致一些问题无法可靠的复现,导致缺陷问题很难定位及处理。虚拟机技术,可以捕捉和存储正在运行的“机器”的快照,该快照是虚拟机在特定时刻的状态,包括机器的硬件状态、软件状态、操作系统状态、文件系统状态、内存状态等等。这个捕捉到的“处于运动中”的机器的状态具有运行状态的一个完整的环境。然后,通过将相应快照应用于虚拟机可将虚拟机恢复为任何以前的状态。市场需要一种能够充分利用虚拟机的特性,提高复现故障的速度,利于人工分析同一故障的不同运行序列并可以回溯至缺陷引入点,从而指出软件缺陷在源代码中可能存在的位置的在线仿真和查错方法,本专利技术解决这样的问题。
技术实现思路
为解决现有技术的不足,本专利技术的目的在于提供一种基于虚拟机快照的二分法在线仿真和查错方法,本专利技术通过充分利用虚拟机的特性,实现提高复现故障的速度,利于人工分析同一故障的不同运行序列,可以回溯至缺陷引入点,从而指出软件缺陷在源代码中可能存在的位置。为了实现上述目标,本专利技术采用如下的技术方案:一种基于虚拟机快照的二分法在线仿真和查错方法,包括如下步骤:步骤一,利用待在线仿真和查错的软件组件及其软件环境生成0号镜像;a)在虚拟机管理平台中,部署待在线仿真和查错和设置好的目标操作系统、第三方软环境,网络初始配置,目标程序系统;b)部署桩代码脚本程序;c)将此虚拟机制作为初始虚拟机镜像,称之为0号镜像。步骤二:生成相互独立的多份虚拟机运行环境快照形成虚拟机镜像矩阵;a)设问题出现的概率为p,p∈(0,1],为了保证几率复现,部署个工程实例数;其中k为可靠性参数,k>0;b)利用虚拟机管理API部署多份0号镜像实例,并部署相关的虚拟网络环境;将0号镜像实例化为运行态虚拟机;c)对每个0号镜像实例,利用管理机进行远程SSH控制,启动运行于虚拟机实例中的桩代码程序;d)启动桩代码后,将目标软件开始运行的时刻称分别0时刻,为它建立虚拟机快照,即0时刻虚拟机快照;设有N份0号镜像实例,则生成S=[S01,S02,S03....S0N]的虚拟机快照集群;e)虚拟机在运行过程中,管理机按时间间隔T0定时对N个虚拟机进行快照,并形成相应的1号镜像实例、2号镜像实例、3号镜像实例……N号镜像实例;f)设某一虚拟机运行一段时间后发生程序中断或其他待调试的异常行为后,由桩代码记录虚拟机运行的时刻运行工况,并通过通信方式向管理机汇报此刻的运行工况,管理机关闭此虚拟机的运行;设此前已记录下虚拟机镜像号为I,则在将运行出错时刻的虚拟机镜像设为I+1号镜像;g)等待时间Tmax后,一部分虚拟机复现出在Tmax之前或Tmax时的故障,另一部分未能成功复现故障的虚拟机,则形成了如下所示的虚拟机镜像矩阵;其中K=Tmax/T0,其中由于部分虚拟机实例运行未到Tmax就复现了故障,此时将此时间点之后的Sij镜像设置为空;h)管理机根据桩代码识别出程序异常的位置,并根据事先设置的指标确认此异常为目标异常;步骤三:整理虚拟机快照镜像;a)管理机将复现出异常的虚拟机对应的镜像S异常=[Si1,Si2,Si3....SiN]保留,将到达Tmax时间仍然未复先异常虚拟机对应的镜像S正常删除;b)设复现出故障的虚拟机集合为Mfail,对于每一个发现异常的虚拟机镜像i∈Mfail,设Si1,Si2,Si3..Sik不为空,Si(k+1)为空,则管理机将Si1-Si,middle镜像删除,其中middle=UpperRound(k/2);UpperRound为大于等于取k/2的最小整数的值;再重新在原有虚拟机实例中还原Si,middle镜像;步骤四:利用二分法递进减少虚拟机快照镜像数目;a)保证每一种复现异常的虚拟机镜像均进入下次迭代中,,取出每一个发现异常的虚拟机i的Si,middle镜像并部署至少1份运行实例;并且在部署所有异常的虚拟机镜像后,异常的虚拟机镜像仍然未达到个工程实例数时,部署未达到虚拟机运行实例数目的虚拟机剩余个数的运行环境,运行环境所采用的镜像为所有发现异常的虚拟机的镜像;b)需要保证部署所有发现异常的镜像的虚拟机至少大于等于个工程实例数;c)对每个利用桩代码实现对Si,middle之后的输入输出操作;对每个利用桩代码实现对Si,middle之后的输入输出操作;并如步骤二中的e)‐g)所示进行实际仿真运行,其中由于部分虚拟机实例运行未到Tmax就复现了故障,此时将此时间点之后的Sij镜像设置为空;按照步骤三的方法可以再次生成虚拟机镜像矩阵S,Si,0-Si,middle实例为空;步骤五:提交人工判断故障原因;a)当发现某一台虚拟机不为空的镜像集合小于数目小于100个样本,且虚拟机进入故障态;将所有满足这个条件的镜像还原至目标虚拟机;b)将这些虚拟机历次桩代码收集的信息日志提交人工分析,并提供虚拟机镜像矩阵供人工进行还原测试,调试。前述的一种基于虚拟机快照的二分法在线仿真和查错方法,桩代码的功能包括:启动目标程序;监视相关的软件运行工况;按照设定好的脚本,模拟相关的网络通信,命令输入、人机界面输入;生成目标程序崩溃点的内存及调用堆栈情信息。前述的一种基于虚拟机快照的二分法在线仿真和查错方法,软件运行工况包括:内存占用、CPU负荷、磁盘I/O、程序崩溃截取。前述的一种基于虚拟机快照的二分法在线仿真和查错方法,步骤二中,设问题出现的概率为p,p∈(0,1],为了保证几率复现,可以部署个工程实例数;其中k为可靠性参数,k>0;k大于等于5。前述的一种基于虚拟机快照的二分法在线仿真和查错方法,步骤二中,虚拟机管理API是利用LibVirt和Qemu提供的功能进行快照管理。前述的一种基于虚拟机快照的二分法在线仿真和查错方法,步骤四:利用二分法递进减少虚拟机快照镜像数目;a)为了保证一定的复现率,取出每一个发现异常的虚拟机i的Si,middle镜像并部署至少1份运行实例;并且在部署所有异常的虚拟机镜像后,异常的虚拟机镜像仍然未达到本文档来自技高网
...
一种基于虚拟机快照的二分法在线仿真和查错方法

【技术保护点】
一种基于虚拟机快照的二分法在线仿真和查错方法,其特征在于,包括如下步骤:步骤一,利用待在线仿真和查错的软件组件及其软件环境生成0号镜像;a)在虚拟机管理平台中,部署待在线仿真和查错和设置好的目标操作系统、第三方软环境,网络初始配置,目标程序系统;b)部署桩代码脚本程序;c)将此虚拟机制作为初始虚拟机镜像,称之为0号镜像。步骤二:生成相互独立的多份虚拟机运行环境快照形成虚拟机镜像矩阵;a)设问题出现的概率为p,p∈(0,1],为了保证几率复现,部署

【技术特征摘要】
1.一种基于虚拟机快照的二分法在线仿真和查错方法,其特征在于,包括如下步骤:步骤一,利用待在线仿真和查错的软件组件及其软件环境生成0号镜像;a)在虚拟机管理平台中,部署待在线仿真和查错和设置好的目标操作系统、第三方软环境,网络初始配置,目标程序系统;b)部署桩代码脚本程序;c)将此虚拟机制作为初始虚拟机镜像,称之为0号镜像。步骤二:生成相互独立的多份虚拟机运行环境快照形成虚拟机镜像矩阵;a)设问题出现的概率为p,p∈(0,1],为了保证几率复现,部署个工程实例数;其中k为可靠性参数,k>0;b)利用虚拟机管理API部署多份0号镜像实例,并部署相关的虚拟网络环境;将0号镜像实例化为运行态虚拟机;c)对每个0号镜像实例,利用管理机进行远程SSH控制,启动运行于虚拟机实例中的桩代码程序;d)启动桩代码后,将目标软件开始运行的时刻称分别0时刻,为它建立虚拟机快照,即0时刻虚拟机快照;设有N份0号镜像实例,则生成S=[S01,S02,S03....S0N]的虚拟机快照集群;e)虚拟机在运行过程中,管理机按时间间隔T0定时对N个虚拟机进行快照,并形成相应的1号镜像实例、2号镜像实例、3号镜像实例……N号镜像实例;f)设某一虚拟机运行一段时间后发生程序中断或其他待调试的异常行为后,由桩代码记录虚拟机运行的时刻运行工况,并通过通信方式向管理机汇报此刻的运行工况,管理机关闭此虚拟机的运行;设此前已记录下虚拟机镜像号为I,则在将运行出错时刻的虚拟机镜像设为I+1号镜像;g)等待时间Tmax后,一部分虚拟机复现出在Tmax之前或Tmax时的故障,另一部分未能成功复现故障的虚拟机,则形成了如下所示的虚拟机镜像矩阵;其中K=Tmax/T0,其中由于部分虚拟机实例运行未到Tmax就复现了故障,此时将此时间点之后的Sij镜像设置为空;h)管理机根据桩代码识别出程序异常的位置,并根据事先设置的指标确认此异常为目标异常;步骤三:整理虚拟机快照镜像;a)管理机将复现出异常的虚拟机对应的镜像S异常=[Si1,Si2,Si3....SiN]保留,将到达Tmax时间仍然未复先异常虚拟机对应的镜像S正常删除;b)设复现出故障的虚拟机集合为Mfail,对于每一个发现异常的虚拟机镜像i∈Mfail,设Si1,Si2,Si3..Sik不为空,Si(k+1)为空,则管理机将Si1-Si,middle镜像删除,其中middle=UpperRound(k/2);UpperRound为大于等于取k/2的最小整数的值;再重新在原有虚拟机实例中还原Si,middle镜像;步骤四:利用二分法递进减少虚拟机快照镜像数目;a)保证每一种复现异常的虚拟机镜像均进入下次迭代中,取出每一个发现异常的虚拟机i的Si,middle镜像并部署至少1份运行实例;并且在部署所有异常的虚拟机镜像后,异常的虚拟机镜像仍然未达到个工程实例数时,部署未达到虚拟机运行实例数目的虚拟机剩余个数的运行环境,运行环境所采用的镜像为所有发...

【专利技术属性】
技术研发人员:高翔杨小凡朱杰媛朱岩
申请(专利权)人:南京国电南自电网自动化有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1