用于评估失效的软件程序的机器和方法

文档序号:6539078阅读:137来源:国知局
用于评估失效的软件程序的机器和方法
【专利摘要】本发明涉及用于评估失效的软件程序的机器和方法。公开了用于评估失效软件程序的机器、具有存储在其上的错误分析程序的非暂态计算机可读存储介质以及由微处理器执行的错误分析程序。在一个实施例中,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的失效是否可重现地发生:提供具有易出错程序步骤的软件程序;执行在易出错程序步骤之前的程序步骤;执行易出错程序步骤多次;以及计算易出错程序步骤的失效概率。
【专利说明】用于评估失效的软件程序的机器和方法
【技术领域】
[0001]本发明涉及一般可用于软件程序错误分析并且具体地可用于测试评估程序错误分析的机器和方法。
【背景技术】
[0002]包括多个程序步骤的软件程序已经成为普遍的工作工具,所述多个程序步骤按连续的顺序自动运行或者由用户指令发起。此类软件程序可以例如促进管理任务或者允许对所制造的诸如电子设备的商品的有效质量控制。然而,软件程序在初始应用试验期间可能由于通常未知的原因而失效。修改后的或新开发的软件程序尤其易于发生此类失效。搜索多步骤软件程序中的一个或多个错误的根本起因可能是复杂并且耗时的任务。

【发明内容】

[0003]根据本发明的实施例,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的失效是否可重现地发生:提供具有易出错程序步骤的软件程序;执行在易出错程序步骤之前的程序步骤;执行易出错程序步骤多次;以及计算易出错程序步骤的失效概率。
[0004]根据本发明的实施例,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的失效是否可重现地发生:提供以易出错程序步骤结束的多步骤序列;执行多步骤序列多次;以及计算多步骤序列的失效概率。
[0005]根据本发明的实施例,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源:提供以易出错程序步骤结束的第一多步骤序列集合;执行第一多步骤序列集合的每个多步骤序列;以及将每个失效的步骤序列记录在存储器中。
[0006]根据本发明的实施例,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源:提供以易出错程序步骤结束的多步骤序列集合,其中多步骤序列集合包括不同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列的不同在于步骤的省略;执行多步骤序列的每个多步骤序列;以及记录当多步骤序列失效时缺少的步。
[0007]根据本发明的实施例,一种用于研究软件程序中的错误源的机器包括耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源:提供失效序列的集合,所有失效序列均以相同易出错程序步骤结束;关于对失效序列共同的多个程序步骤来分析失效的序列;以及根据失效概率对所述多个程序步骤排名。
【专利附图】

【附图说明】
[0008]为了更完整地理解本发明及其优点,现在对结合附图进行的以下描述做出参考,其中:
图1示出了用于评估失效软件程序的机器的框图;
图2示出了包括多步骤的一般性失效软件程序;
图3示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于确定失效程序步骤是否可重现地发生的方法;
图4示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于确定直到易于出错的程序步骤的程序步骤序列是否可重现地发生的方法;
图5示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于分析当先前程序步骤改变时易于出错的程序步骤的执行的方法;
图6示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于确定哪些程序步骤与所研究的程序步骤序列的失效无关的方法;
图7示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于识别对失效程序步骤序列的集合公共的程序步骤或程序步骤群组的方法;以及
图8示出了根据本发明的实施例的错误分析程序的流程图,该错误分析程序包括用于估计将程序步骤序列的最后失效步骤与一个不同程序步骤或多个不同程序步骤进行交换的影响的方法。
【具体实施方式】
[0009]下面详细讨论目前优选的实施例的做出和使用。然而,应当意识到,本发明提供了可以在广泛的各种特定环境中体现的许多适用发明概念。所讨论的特定实施例仅仅是对做出和使用本发明的特定方式的说明,并且不限制本发明的范围。
[0010]软件程序(本文也称为多步骤程序)可以包括步骤序列,这些步骤中的每一个包括指令步骤和用于检查给定指令步骤是否确实已经以及时且正确的方式实行的验证步骤。软件程序在操作期间可能由于软件编程错误或硬件失效而失效。新开发的或修改后的软件程序尤其易于具有错误,这些错误一般在应用的初始时段期间变得明显。在多步骤程序失效的情况中,程序开发人员“调试”软件程序以例如追查到(一个或多个)精确错误源可能是困难且乏味的任务。相反,通常没有单独程序步骤或程序步骤群组引起失效的线索。此外,所观察到的错误是由缓存一致性问题还是由程序步骤的异步定时造成的可能是不清楚的。最后,错误是否以可重现方式发生以及在哪些条件下以可重现方式发生可能是不清楚的。查找软件程序的错误源的研究典型地是例如在没有辅助软件程序(例如,错误分析程序)的帮助的情况下手动实行的。
[0011]本发明的实施例提供了用于快速识别错误或软件程序的根本起因的错误分析程序。本发明的各种实施例提供了边界条件,在该边界条件下,所识别的软件程序失效可重现地发生。本发明的各种实施例提供了对可能导致错误的内容的确定。本发明的实施例可以应用于具有不同和单独程序步骤的任何软件程序。
[0012]实施例还可以包括用于评估失效软件程序的机器、具有存储在其上的错误分析程序的非暂态计算机可读存储介质以及由微处理器执行的错误分析程序。
[0013]图1示出了实现对失效软件程序的分析的机器100的框图。机器100包括用户接口 110、微处理器120、用于存储软件程序(例如,多步骤程序)或单独程序步骤的设备130、文档存储设备140以及存储器设备150。此外,机器100包括在机器100的上述子系统之间建立电连接性的各种电连接和/或总线160、170、180、190。
[0014]用户接口 110被配置为在操作中提供关于错误分析程序(本文中也称为错误研究程序)的指令,并且被配置为输出由错误分析程序的各种评估算法提供的结果或响应。微处理器120被配置为实行和处理算法。存储器设备150被配置为提供错误分析程序的临时或永久存储。软件程序存储设备130被配置为存储已经执行的或新设计的软件程序和多步骤软件程序的单独步骤。文档存储设备140被配置为存储从错误研究运行(例如,测试失效统计)得到的结果。可选地,软件程序存储设备130或文档存储设备140或二者可以包括在不依赖于用户接口 110监视器的情况下允许数据查看的监视器。存储器设备150、软件程序存储设备140和文档存储设备130可以是诸如存储器的单个设备。
[0015]本发明的实施例涉及用于研究软件程序错误和错误模式的方法。所公开的算法可以应用于一般性软件程序或应用于测试程序,例如,测试一般性软件程序的程序。例如,软件程序或测试程序可以是用于设计半导体工业中的芯片的程序。
[0016]图2示出了包括N个单独程序步骤的序列的软件程序200。例如,第一程序步骤为步骤I 210,最后程序步骤为步骤N 270,以及特定程序步骤为步骤X 250,假设该特定程序步骤为错误在其处发生的程序步骤。在一个实施例中,软件程序200仅包括两个步骤。可替代地,软件程序可以包括10-50个步骤、10-100个步骤或者不止百个步骤。
[0017]程序步骤可以是单个指令或者指令群组。在各种实施例中,程序(或测试)执行步是用户定义为操作的内容。对于图形用户接口(GUI)的第一示例:1)打开应用=> 检查窗口是否打开;2)打开文本文件=> 检查编辑器是否窗口包含文本文件;3)编辑新字符=> 检查编辑器是否窗口被新字符更新。对于调试器的第二示例:1)进入针对可执行程序的调试模式=> 检查PC是否处于启动点;2)进行单步执行(step over)=>检查PC是否递增;3)进行单步执行函数=> 检查堆栈爬行是否被新框架更新。对于汇编器的第三示例:1)移动位置内容到寄存器中=> 检查寄存器是否更新;2)将寄存器推入堆栈中=> 检查堆栈指针是否更新;3)将两个寄存器相加并将结果放入寄存器3中=> 针对该和检查寄存器3。
[0018]图3示出了根据本发明的实施例的错误分析程序的流程图300。该错误分析程序包括用于确定失效程序步骤(例如,步骤X 250)是否可重现地发生的方法。在第一步骤310中,提供具有易出错程序步骤(例如,步骤X 250)的软件程序(例如,软件程序200)。在步骤320中,执行软件程序的在失效程序步骤(例如,步骤X 250)之前的程序步骤。例如,执行程序200的在失效程序步骤X 250之前的步骤I 210至步骤(X-l)240。随后,在步骤330中,易出错程序步骤,即步骤X 250,以重复方式被执行预定次数。(例如,在文档存储设备140中)记录每次单独研究运行的结果。最后,在步骤340中,计算例如步骤X 250的易出错程序步骤的失效概率。通过将失效运行的数目除以运行总数来计算易出错程序步骤的失效概率。
[0019]图4示出了根据本发明的实施例的错误分析程序的流程图400。该错误分析程序包括用于评估当在相同测试场景下执行多步骤序列时是否观察到可重现错误的方法。在起始步骤410中,提供包括以易出错程序步骤(例如,步骤X 250)结束的多步骤序列的软件程序。在步骤420中,该多步骤序列被执行预定次数,并且记录每次评估运行的结果。在步骤430中,通过将失效运行的数目除以运行总数来计算多步骤序列的失效概率。失效概率可能非常低,因为故障可能非常难捕捉,这例如归因于可能在大多数时候隐藏该故障的其他异步进程。
[0020]关于有错误的软件程序的在失效步骤之前的哪个程序步骤可能触发易出错程序步骤(例如,步骤X 250)中的错误的知识在查找问题的根本起因时可以是有帮助的。知道在失效程序中不同于在易出错程序步骤(例如,步骤X 250)之前的那些程序步骤的其他程序步骤可能导致类似问题可以是引人关注的。
[0021]图5示出了根据本发明的再另一实施例的错误分析程序的流程图500。该实施例尝试确定什么是错误的起因。在步骤510中,提供包括易出错程序步骤(例如,步骤X 250)的软件程序。在步骤520中,提供多步骤序列集合,所有多步骤序列均以有错误的软件程序的相同易出错程序步骤(例如,步骤X 250)结束。每一个多步骤序列可以包括在易出错程序步骤之前的一个或多个步骤。多步骤序列集合还可以包括不是有错误的软件程序的部分的替代程序步骤。例如,替代程序步骤可以取自其他或下一代软件程序。在步骤530中,实行一系列评估运行,其中执行每一个多步骤序列。最后,在步骤540中,将失效序列记录在例如文档存储设备140的存储器中。
[0022]步骤520中提供的多步骤序列集合可以在易出错程序步骤之前的全部单独步骤上不同或者仅在一些单独步骤上不同。(来自步骤530的)结果可以提供这样的信息:是否有一个具体步骤或多个具体步骤(或步骤集合)在易出错程序步骤之前以便产生错误。所述结果还可以提供这样的信息:具体步骤是否对于所有评估运行存在。此外,所述结果可以提供这样的信息:一些步骤是否比其他步骤更相关,例如,一些步骤是否对易出错程序步骤的失效没有影响。最后,所述结果可以提供这样的信息:是否存在易出错程序步骤对于其始终失效的最小步骤集合。
[0023]累积地或者可替代地 ,在一些实施例中,多步骤序列集合包括相同的步骤,但是这些步骤的执行顺序不同。该错误评估方法的结果可以提供这样的信息:执行顺序在什么情况下影响软件程序错误(或易出错程序步骤)的发生。
[0024]在各种实施例中,知道在软件程序的易出错程序步骤之前的某个步骤是否可能是程序失效的潜在起因是重要的。在各种其他实施例中,知道特定的先前步骤是否可以作为潜在错误源被消除可以是同等重要的。后一主题通过本发明的再另一实施例来解决,该实施例在图6中示出的流程图600中图示。
[0025]在初始步骤610中,提供j个多步骤序列FTSpFTS2、FTS3……FTSj的集合,它们均以相同的易出错程序步骤结束。在步骤620中,针对每个群组(FTSi)实行或执行一系列评估运行。如果FTSi包括m个程序步骤,则对应的评估运行包括m次运行,其中在每次运行中,执行所选FTSi的除了一个特定步骤以外的程序步骤以使得评估运行在运行间不同。在评估运行失效的情况中,将该特定运行中省略的程序步骤记录在寄存器中。一旦完成针对所有FTS的所有评估运行,寄存器就将包括所评估的FTS中的与对所有FTS共同的易出错程序步骤的失效无关的所有程序步骤的列表。
[0026]可以以各种方式进一步分析由前面讨论的实施例提供的信息,以获得关于有错误的程序的易出错程序步骤(例如,步骤X 250)的失效的(一个或多个)根本起因的附加洞察。附加分析指令包括在图7的流程图700中图示的再另一分析方法的进一步实施例中。
[0027]在步骤710中,提供以相同易出错程序步骤(例如,步骤X 250)结束的失效序列(FTS)的集合。在步骤720中,关于对所有研究的FTS共同的单个程序步骤来分析可获得的FTS集合。可替代地,关于对所有研究的FTS共同的多于一个的程序步骤来分析可获得的FTS集合。此外,可以关于FTS集合的子群组来分析可获得的FTS集合。随后,在步骤730中,以易出错序列受不利影响的下降(或者可替代地上升)数值的顺序在第一寄存器(例如,存储器)中记录在步骤720中识别的程序步骤。多步骤序列受不利影响的数值意指关于所识别的程序步骤,FTS对于评估运行有多频繁地失效。在步骤740中将它们记录在第二寄存器(例如,存储器)中。
[0028]在步骤750中,关于对所有或至少多于一个的FTS共同的连续步骤的群组分析FTS集合。在步骤760中,以序列受不利影响的下降(或者可替代地上升)数值的顺序在第三寄存器(例如,存储器)中记录所识别的共同步骤群组。在步骤770中,在第四寄存器(例如,存储器)中再次记录对所有FTS共同的程序步骤的序列的群组。
[0029]在最终步骤780中,分析FTS集合来查找引起失效步骤(例如,步骤X 250)的可重现失效的最小程序步骤群组,并且将结果记录在第五寄存器(例如,存储器)中。
[0030]为了更好地理解错误机制,知道软件程序内在特定易出错程序步骤(例如,步骤X250)之前的步骤群组(例如,步骤I 210至步骤(X-1) 240)在该易出错程序步骤被另一步或多个步骤替换的情况下是否还可能导致错误一般是有帮助的。此类分析通过在图8的流程图800中图示的进一步评估方法的实施例来实现。
[0031]在初始步骤810中,第一程序步骤群组(例如,步骤I 210至步骤(X-1) 240)在软件程序(例如,程序200)中的易出错程序步骤(例如,步骤X 250)之前。在步骤820中,提供第二程序步骤群组。第二群组的程序步骤与软件程序的易出错程序步骤(例如,步骤X 250)不同。针对第二群组的程序步骤的每一个执行评估运行,该运行包括第一步骤群组的执行接着是第二群组的所选程序步骤的执行(步骤830)。在步骤840中,将第二程序步骤群组的所有失效步骤记录在存储器(例如,寄存器140)中。
[0032]错误分析方法(例如,图3和4)可以计算易出错程序步骤的失效的可重现性。错误分析方法(图5)可以识别对于易出错程序步骤的失效潜在地关键的单个先前步骤或先前步骤群组。错误分析方法(例如,图6)可以识别与软件程序失效不相关的程序步骤。错误分析方法(例如,图7)可以识别在易出错程序步骤或所有易出错程序步骤的失效中存在的程序步骤或最小连续步骤群组。最后,错误分析方法可以在开发中提供在特定软件程序的易出错程序步骤之前的程序步骤集合可以针对软件程序如何执行的洞察。
[0033]在各种实施例中,图3和/或图4的错误分析方法与图5和/或图6的错误分析方法相组合。在各种其他实施例中,图3和/或图4的错误分析方法与图5和/或图6以及图7和/或图8的错误分析方法相组合。在一些实施例中,实行所有错误分析方法。在其他实施例中,仅实行一个或两个错误分析方法。
[0034]概括而言,与非软件辅助的“最佳猜测”手段相比,本发明的实施例应当允许对特定软件程序失效的(一个或多个)根本起因的更快跟踪和识别。
[0035]尽管已经详细描述了本发明及其优点,但是应当理解,这里可以在不偏离所附权利要求限定的本发明的精神和范围的情况下做出各种改变、替换和更改。
[0036]此外,本申请的范围并不意图受限于说明书中描述的过程、机器、制造、物质组成、装置、方法和步骤的具体实施例。如本领域普通技术人员将根据本发明的公开而容易意识到的,目前已有或今后开发的与本文描述的对应实施例执行基本相同的功能或实现基本相同的结果的过程、机器、制造、物质组成、装置、方法或步骤可以根据本发明而被利用。因此,所附权利要求意图在它们的范围内包括此类过程、机器、制造、物质组成、装置、方法或步骤。
【权利要求】
1.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的失效是否可重现地发生: 提供具有易出错程序步骤的软件程序; 执行在易出错程序步骤之前的程序步骤; 执行易出错程序步骤多次;以及 计算易出错程序步骤的失效概率。
2.根据权利要求1所述的机器,还包括将易出错程序步骤的每次执行的结果记录在存储器中。
3.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的失效是否可重现地发生: 提供以易出错程序步骤结束的多步骤序列; 执行多步骤序列多次;以及 计算多步骤序列的失效概率。
4.根据权利要求3所述的机器,还包括将多步骤序列的每次执行的结果记录在存储器中。
5.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源: 提供以易出错程序步骤结束的第一多步骤序列集合; 执行第一多步骤序列集合的每个多步骤序列;以及 将每个失效的步骤序列记录在存储器中。
6.根据权利要求5所述的机器,其中第一多步骤序列集合包括不同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列不同在于一个步骤。
7.根据权利要求5所述的机器,其中第一多步骤序列集合包括不同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列不同在于除了易出错程序步骤以外的多于一个步骤。
8.根据权利要求5所述的机器,其中第一多步骤序列集合包括相同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列不同在于步骤的顺序。
9.根据权利要求5所述的机器,还包括: 执行在易出错程序步骤之前的程序步骤; 执行易出错程序步骤多次;以及 计算易出错程序步骤的失效概率。
10.根据权利要求5所述的机器,还包括: 提供以易出错程序步骤结束的第二多步骤序列集合,其中第二多步骤序列集合包括不同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列不同在于步骤的省略; 执行第二多步骤序列集合的每个多步骤序列;以及 记录当多步骤序列失效时缺少的步骤。
11.根据权利要求5所述的机器,还包括: 提供失效序列的集合,所有失效序列均以相同易出错程序步骤结束; 关于对失效序列共同的多个程序步骤来分析失效序列;以及 根据失效概率对所述多个程序步骤排名。
12.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源: 提供以易出错程序步骤结束的多步骤序列集合,其中多步骤序列集合包括不同的多步骤序列,并且其中每个多步骤序列与另一多步骤序列不同在于步骤的省略; 执行多步骤序列集合的每个多步骤序列;以及 记录当多步骤序列失效时缺少的步骤。
13.根据权利要求12所述的机器,其中步骤的省略包括单个步骤的省略。
14.根据权利要求12所述的机器,其中步骤的省略包括多个步骤的省略。
15.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源: 提供失效序列的集合,所有失效序列均以相同易出错程序步骤结束; 关于对失效序列共同的多个程序步骤来分析失效序列;以及 根据失效概率对所述多个程序步骤排名。
16.根据权利要求15所述的机器,其中排名包括以下降顺序将所述多个程序步骤存储在存储器中。
17.根据权利要求15所述的机器,其中对失效序列共同包括对失效序列的集合的所有失效序列共同。
18.根据权利要求15所述的机器,其中对失效序列共同包括对失效序列的集合的子集共同。
19.根据权利要求15所述的机器,其中程序步骤包括连续步骤的群组。
20.一种用于研究软件程序中的错误源的机器,所述机器包括: 耦合到存储器的微处理器,其中微处理器被编程为通过以下步骤来确定易出错程序步骤的错误源: 提供在易出错程序步骤之前的第一程序步骤群组; 提供与易出错程序步骤不同的第二程序步骤群组; 针对第二程序步骤群组的每个程序步骤来执行第一程序步骤群组和第二群组的所选程序步骤;以及 将第二群组的失效步骤记录在存储器中。
【文档编号】G06F11/36GK104021072SQ201410071489
【公开日】2014年9月3日 申请日期:2014年2月28日 优先权日:2013年3月1日
【发明者】C.特普斯 申请人:英飞凌科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1