多因素工业系统的故障检测方法

文档序号:6324996阅读:314来源:国知局
专利名称:多因素工业系统的故障检测方法
技术领域
本发明涉及一种系统故障主要来源于系统中各个因素及其相互作用的多因素工业系统的故障检测方法。
背景技术
在一些多因素工业系统的安全测试中,针对某个待测系统受到n个因素影响,每个因素有ti个可能取值的情况,一般设计一组形如(v1,v2,…,vi,…,vn)的测试用例(其中vi是的第i个因素的一个值),用于检测该系统中哪些因素或哪些因素的相互作用是否会引发系统故障。组合测试方法因能以较少的测试用例实现对被测系统科学有效的测试而得到广泛的研究和应用,特别是对于这些系统错误来源于系统中一些因素和因素之间的相互作用的待测系统。该方法利用组合设计方法产生各种不同组合覆盖程度的测试用例集,来实现对各个因素及相互之间的各种组合的覆盖。有效的针对多因素工业系统的测试及故障诊断方法具有十分重要的意义,可以很好地提高系统测试的效率和质量、降低成本。
技术内容本发明提供一种多因素工业系统的故障检测方法,本发明不但可以迅速将故障原因锁定在很小的范围内,而且可以进一步发现多因素工业系统的隐患。
本发明采用如下技术方案一种用于减小工业系统故障因素确认范围的多因素工业系统的故障检测方法,该方法首先根据待测试的多因素工业系统的安全性要求、安全测试的成本预算或时间等要求确定测试用例集Ts。然后用Ts中的测试用例对系统进行测试,运行时发生故障的测试用例组成集合Ts1,不发生故障的测试用例组成集合Ts2,其特征在于对比Ts1和Ts2,将Ts1中测试用例所涉及到的因素及因素的组合集中去掉Ts2的测试用例也涉及到的因素及因素的组合,剩下的因素以及因素的各种组合集M是所有可能导致系统故障的原因。通过逐个修改Ts1中每个发现故障的测试用例涉及到的因素生成一组附加测试用例Cts。然后用这些测试用例重新对系统进行测试,仍将运行时发生故障的测试用例组成的集合记为Ts1,运行时不发生故障的测试用例组成的集合记为Ts2,在M中去掉Ts2测试用例中涉及的因素及因素组合。最后剩下的M中的因素或因素组合将是有可能导致错误发生的成分集。
与现有技术相比,本发明具有如下优点
①本发明是组合测试方法的自然延伸,因而具有科学性、高效性和准确性等特点。
●关于科学性。组合测试方法主要是用来检测系统参数或其相互作用对系统产生的影响,在应用组合测试方法对软件系统进行测试之后,如果发现某些故障,一方面说明测试工作是成功的,另一方面还需要通过对试验结果的分析和处理,对故障进行诊断,即确定出是哪些参数或哪些参数的相互作用导致了系统故障。
●关于高效性。对于一个具有n个参数的系统,当某条测试数据在测试中发现故障时,直接导致故障的所有可能的取值模式有2n个,利用未发现故障的测试数据及附加测试数据可以将这个庞大的可能性进行迅速地缩减,从而限制在一个较小的范围内,因而该方法具有高效性。
●关于准确性。由于在软件系统中,导致系统故障的原因是很复杂的,采用本发明得到的结果是导致系统故障的原因的集合,大大排除了各种可能导致系统故障的因素或因素的组合,具有较高的准确性。
②本发明具有针对性、经济性、灵活和可扩展等优良特性。
●针对性。虽然传统方法中有关于实验结果分析的方法,如直观分析方法、方差分析方法等,但是这些方法并不适合于对测试结果的分析。本发明针对在组合测试中发现故障的测试用例设计一组新的测试用例进行第二轮测试,因而具有很强的针对性。
●经济性。本方法只对发现故障的测试用例设计新测试用例进行第二轮测试,可以有效地提高效率、降低成本,因而很经济实用。
●灵活和可扩展性。如果对于一个具体的多因素工业系统,组合测试没有发现故障,就无需使用本方法,本方法的使用可以根据具体软件系统的测试情况进行调整,而不是千篇一律的固定方法,因此,具有优良的灵活性和可扩展性。


图1是本发明的多因素工业系统故障检测方法流程图。
图2是本发明的多因素工业系统的导致故障因素缩减流程图。
图3是本发明的多因素工业系统的第二轮测试用例生成方法流程图。
具体实施方案实施例1一种用于减小工业系统故障因素确认范围的多因素工业系统的故障检测方法,该方法首先根据待测试的多因素工业系统的安全性要求、安全测试的成本预算或时间等要求确定测试用例集Ts。然后用Ts中的测试用例对系统进行测试,运行时发生故障的测试用例组成集合Ts1,不发生故障的测试用例组成集合Ts2,其特征在于对比Ts1和Ts2,将Ts1中测试用例所涉及到的因素及因素的组合集中去掉Ts2的测试用例也涉及到的因素及因素的组合,剩下的因素以及因素的各种组合集M是所有可能导致系统故障的原因。通过逐个修改Ts1中每个发现故障的测试用例涉及到的因素生成一组附加测试用例Cts。然后用这些测试用例重新对系统进行测试,仍将运行时发生故障的测试用例组成的集合记为Ts1,运行时不发生故障的测试用例组成的集合记为Ts2,在M中去掉Ts2测试用例中涉及的因素及因素组合,最后剩下的M中的因素或因素组合将是有可能导致错误发生的成分集。在本实施例中,确定测试用例集Ts的方法是根据待测试的多因素工业系统的测试要求等因素确定不同组合覆盖要求的测试用例集Ts,可以选择规模较小的单因素覆盖测试用例集覆盖所有参数的各个取值,也可以选择规模适中的两两组合覆盖测试用例集覆盖任意两个参数间的两两组合,或者选择规模稍大一点的三三组合覆盖测试用例集等,这些选择取决于该工业系统的测试要求和现有的测试条件等;暴露出来的系统故障归结为由测试用例涉及到的因素及因素的组合所造成,即系统故障有可能由Ts1的测试用例中涉及的,而在Ts2的测试用例中没有涉及到的系统因素或因素组合;附加测试用例的生成方法是将Ts1中每一个形如(v1,v2,…,vn)的测试用例,逐个修改其涉及到的因素值,相应生成一组测试用例,形如(*,v2,…,vn),(v1,*,…,vn),…,(v1,v2,…vn-1,*),进行下一轮测试,其中,“*”表示异于原来的因素值。
实施例2多因素工业系统的故障检测方法,首先分析用组合测试用例集Ts中的测试用例对系统进行测试,如果没有发现故障,那么当然就无需进行故障诊断。所以,该方法共分四步进行第一步,根据待测试的多因素工业系统的测试要求等因素确定不同组合覆盖要求的测试用例集Ts,用Ts中的测试用例对系统进行测试,并将运行时发生某个故障的测试用例组成的集合记为Ts1,运行时不发生故障的测试用例组成的集合记为Ts2。第二步,对集合Ts1和Ts2中测试用例进行分析;第三步,生成附加测试用例集Cts以辅助故障诊断;第四步,根据附加测试用例的运行情况重新进行分析验证,如果仍然发现故障,转第三步,直到不发现故障为止。
第一步确定组合测试用例集并进行测试根据待测试的多因素工业系统的测试要求等因素确定不同组合覆盖要求的测试用例集Ts,用Ts中的测试用例对系统进行测试,并将运行时发生某个故障的测试用例组成的集合记为Ts1,运行时不发生故障的测试用例组成的集合记为Ts2。
第二步对测试结果进行初步分析组合测试模型把暴露出来的系统故障归结为由测试用例涉及到的各种因素的值或值的组合所造成,即系统故障有可能由Ts1中测试用例涉及到的而Ts2中测试用例未涉及到的因素或因素组合所引发。因此,将Ts1和Ts2进行对比,把Ts1中测试用例涉及到因素及因素组合去掉Ts2测试用例也涉及到的成分,最后剩下的集合M中的元素很可能就是直接导致故障的原因,这时M中的元素可为进一步分析和确认故障原因提供非常重要的依据。
第三步生成附加测试用例以辅助故障诊断为每个发现故障的测试用例生成相应附加测试用例,然后用这些测试用例重新对系统进行测试,下一步将对测试结果进行处理。
第四步根据附加测试用例的运行情况重新进行分析和验证将附加测试用例中发现故障的测试用例集仍记为Ts1,未发现故障的测试用例集仍记为Ts2。从M中去掉Ts2中涉及到的因素或因素的组合,剩下的成分将是有可能导致错误发生的因素。Ts1非空时,转第三步,否则结束。
本发明基于以下原理工作(1)根据多因素工业系统的安全性要求、安全测试的成本预算和时间等要求,选择不同覆盖程度(具体有覆盖所有系统因素各个取值的单因素覆盖、覆盖系统任意两个因素间所有组合的两两组合覆盖等等,关于这些不同覆盖程度的测试用例集生成已有很多公开的研究成果可以直接使用)的组合测试用例集Ts,并运行该测试用例集。
(2)将组合测试的测试用例集Ts根据测试时是否发生故障分成两个子集将在执行中发现故障的测试用例组成的集合记为Ts1,未发现故障的测试用例组成的集合记为Ts2。计算M=∪t∈Ts1Mt-∪t∈Ts2Mt,]]>其中t=(v1,v2,…,vi,…,vn)表示集合中的一个测试用例,Mt表示该测试用例t涉及到的所有的因素或因素的组合组成的集合(例如,当t=(2,1,4)时,Mt={(2,-,-),(-,-,4),(-,1,-),(-,1,4),(2,-,4),(2,1,-),(2,1,4)}), 表示所有发现故障的测试用例涉及到的因素和因素组合,这些是所有可能引发系统故障的原因, 是由所有未发现故障的测试用例所涉及到的因素和因素组合组成的集合,其中每个元素一般不会成为引发系统故障的原因,故集合M=∪t∈Ts1Mt-∪t∈Ts2Mt]]>包含了引发故障的所有可能的因素和因素组合。在一般情况下,这个集合中的元素比较多,需要进行进一步精简和确认。
(3)为了进一步确定出是哪些因素或因素组合导致了软件故障,并充分利用组合测试的结果,检查是否有新的隐错存在,为Ts1中每个运行时发生故障的测试用例t=(v1,v2,…,vi,…,vn)设计n个附加测试用例t1=(*,v2,…,vi,…,vn),t2=(v1,*,…,vi,…,vn),…,tn=(v1,v2,…,vn-1,*),其中“*”号表示我们可以用任意不同于原来测试用例t=(v1,v2,…,vi,…,vn)相应位置因素的取值来代入。这样产生的一组测试用例为附加测试用例集,记为CTs。
(4)运行附加测试用例集CTs,仍记发生故障的测试用例组成的集合为Ts1,不发生该故障的测试用例组成的集合记为Ts2,即Ts1∪Ts2=CTs。根据这个结果,我们就可以确定出很小范围的导致故障的因素,即M=M-∪t∈Ts2Mt]]>如果Ts1≠Φ,转(3),否则,M中的元素是所有可能引发系统故障的原因。
实施例3本实施例涉及电信系统交换机通话功能的测试,本实施例以4个参数作为这个测试模型的输入,分别为呼叫种类、资费方式、接入方式和状态。对于这4个参数变量的每一个参数均可以有3种不同的状态,如表1所示。
第一步确定组合测试用例集并进行测试如果要把表1中的所有情况都测试到,那么将需要34=81个测试用例来遍历所有的测试情况。一般认为81次测试的工作量太大,而且没有必要进行完全测试,所以需要根据该系统的测试要求、现有的测试资源等选择测试用例集。如果考虑只覆盖待测系统中的各个因素,只需要按照表1设计三个测试用例就可以了;如果考虑对任意两个因素的两两组合进行覆盖,需要选择一组两两组合覆盖的测试用例集(如表2),表2中每一行都给出了一个测试用例,9条测试用例实现了对任意两个因素间所有值组合的完全覆盖,都至少出现一次。当然,要求更高时,可以设计使用三三组合覆盖测试用例(至少需要27条测试用例)、四四组合覆盖测试用例(在本例中即为完全测试)等等,这里我们只考虑用两两组合覆盖测试用例集(表2)进行测试。
表1待测系统SUT的测试需求

当我们用这组测试用例对交换机进行测试后,如果没有发现问题,那么就说明交换机功能在这个水平上的测试是合格的。当然不能因此就说交换机肯定没有问题,因为任何测试只能证明被测对象的不完美性,而无法证明它的完美性。如果这组测试用例中有一个或几个运行时发生了故障,那么作为测试应该说是比较成功的,因为经过测试我们发现了系统故障。接下来的重要工作就是分析故障的原因,对它进行定位,并排除故障。我们不能撇开前面所做的测试工作,泛泛地去重新分析、检查系统,而应该以前面所做的测试工作为基础,进行全面分析。如果能迅速找出错误原因,将大大提高软件测试的效率,缩短时间,并降低成本。
表2组合测试的测试用例

不失一般性,下面我们仅考虑当用表2中这组测试用例对交换机进行测试时,系统运行时发生某个故障的测试用例组成的集合Ts1(见表3),即表2中第二个和第六个测试用例。不发生该故障的测试用例集合Ts2是表2中剩下的六个测试用例。
表3发生某个故障的测试用例集Ts1

第二步对测试结果进行初步分析找出集合MM=∪t∈Ts1Mt-∪t∈Ts2Mt]]>={(国际,集中,-,-),(国际,-,环路,-),(国际,-,-,阻塞),(-,集中,环路,-),(-,集中,-,阻塞),(-,-,环路,阻塞),(国际,集中,-,阻塞),(国际,集中,环路,-),(-,集中,环路,阻塞),(国际,-,环路,阻塞),(国际,集中,环路,阻塞),(长途,免费,环路,忙),(-,免费,环路,忙),(长途,-,环路,忙),(长途,免费,-,忙),(长途,免费,环路,-),(-,-l,环路,忙),(长途,-,-,忙),(长途,免费,-,-),(-,免费,-,忙),(长途,-,环路,-),(-,免费,环路,-)}M中的元素是所有可能导致系统出现这个故障的因素。在这种情况下,单个因素不是导致系统出错的原因,因为单个因素的某个取值多次出现在其它测试用例中,例如这个出错的测试用例中参数“呼叫种类”的取值“国际”就在其它两个无故障的测试用例中出现过,因此参数“呼叫种类”的取值“国际”不会成为系统出错的原因。
第三步生成附加测试用例以辅助故障诊断为了进一步找出导致系统故障的因素,通过逐个修改Ts1中测试用例测试用例涉及的因素值,设计一个附加测试用例集Cts,如表4,其中*号表示相应位置的参数值取任意一个不同于原来出错测试用例在相应位置的值(在本例中取括号内的值)。
表4附加测试用例集Cts

用这组测试用例再对交换机进行测试。
第四步根据附加测试用例的运行情况重新进行分析和验证根据测试结果我们就可以确定出导致故障的原因,可以分成以下几种情况讨论情形1这八个测试用例的运行都没有发生原先的故障。我们可以计算M=M-∪t∈Ts2Mt]]>={(国际,集中,环路,阻塞),(长途,免费,环路,忙)}(Ts2={t1,t2,…t8,}),此时因素组合(长途,免费,环路,忙)和(国际,集中,环路,阻塞)是可能导致故障的因素。
情形2只有某一个测试用例运行时发生故障,例如是表4中第二个测试用例t2。可以计算M=M-∪t∈Ts2Mt]]>={(国际,-,环路,阻塞),(国际,集中,环路,阻塞),(长途,免费,环路,忙)}(其中Ts2={t1,t3,t4,t5,t6,t7,t8,}),则此时导致故障的可能原因(国际,-,环路,阻塞),(长途,免费,环路,忙)。
情形3有某5个测试用例测试时发生故障,例如Ts1={t3,t4,t5,t6,t7},Ts2={t1,t2,t8}。此时可以计算M=M-∪t∈Ts2Mt]]>={(国际,集中,-,-),(国际,集中,-,阻塞),(国际,集中,环路,-),(国际,集中,环路,阻塞),(长途,免费,环路,忙),(-,免费,环路,忙),(长途,-,环路,忙),(长途,免费,-,忙),(-,-,环路,忙),(长途,-,-,忙),(-,免费,-,忙)}中的元素是导致故障的可能原因。
类似地,我们可以讨论其他各种情形。由此我们看出,在组合测试的基础上,并辅之以一些必要的相关测试用例,我们可以对导致系统故障的因素进行有效的定位;在产生故障的测试用例比较多的情况下,分析过程比较复杂。但由于多数情况下,导致系统出错的测试用例数量很少(这种测试用例对软件测试来说是高质量的测试用例),如果这种导致系统出现错误的测试用例数量多,说明系统质量太低,需要进行广泛的重新分析和检查。所以,不论什么情况,基于组合测试的基础,并辅之以一些必要的新的相关测试用例,对故障原因进行分析是非常重要的,也是非常有效的。
权利要求
1.一种用于减小工业系统故障因素确认范围的多因素工业系统的故障检测方法,该方法首先根据待测试的多因素工业系统的安全性要求、安全测试的成本预算或时间等要求确定测试用例集Ts,然后用Ts中的测试用例对系统进行测试,运行时发生故障的测试用例组成集合Ts1,不发生故障的测试用例组成集合Ts2,其特征在于对比Ts1和Ts2,将Ts1中测试用例所涉及到的因素及因素的组合集中去掉Ts2的测试用例也涉及到的因素及因素的组合,剩下的因素以及因素的各种组合集M是所有可能导致系统故障的原因,通过逐个修改Ts1中每个发现故障的测试用例涉及到的因素生成一组附加测试用例Cts,然后用这些测试用例重新对系统进行测试,仍将运行时发生故障的测试用例组成的集合记为Ts1,运行时不发生故障的测试用例组成的集合记为Ts2,在M中去掉Ts2测试用例中涉及的因素及因素组合,最后剩下的M中的因素或因素组合将是有可能导致错误发生的成分集。
2.根据权利要求1所述的多因素工业系统的故障检测方法,其特征还在于确定测试用例集Ts的方法是根据待测试的多因素工业系统的测试要求等因素确定不同组合覆盖要求的测试用例集Ts,可以选择规模较小的单因素覆盖测试用例集覆盖所有参数的各个取值,也可以选择规模适中的两两组合覆盖测试用例集覆盖任意两个参数间的两两组合,或者选择规模稍大一点的三三组合覆盖测试用例集等,这些选择取决于该工业系统的测试要求和现有的测试条件等。
3.根据权利要求1所述的多因素工业系统的故障检测方法,其特征还在于暴露出来的系统故障归结为由测试用例涉及到的因素及因素的组合所造成,即系统故障有可能由Ts1的测试用例中含有的,而在Ts2的测试用例中没有涉及到的系统因素或因素组合。
4.根据权利要求1所述的多因素工业系统的故障检测方法,其特征还在于附加测试用例的生成方法是将Ts1中每一个形如(v1,v2,…,vn)的测试用例,逐个修改其涉及到的因素值,相应生成一组测试用例,形如(*,v2,…,vn),(v1,*,…,vn),…,(v1,v2,…vn-1,*),进行下一轮测试,其中,“*”表示异于原来的因素值。
全文摘要
本发明公开了一种用于减小工业系统故障因素确认范围的多因素工业系统的故障检测方法。首先确定测试用例集Ts,然后用Ts中的测试用例对系统进行测试,运行时发生和不发生故障的测试用例分别组成集合Ts1和Ts2,在Ts1中去除Ts1和Ts2共同涉及到的因素及因素的组合,剩下的因素以及因素的各种组合集M是所有可能导致系统故障的原因,通过逐个修改Ts1中每个发现故障的测试用例涉及到的因素生成一组附加测试用例Cts,然后用这些测试用例重新对系统进行相似的测试,最后剩下的M中的因素或因素组合将是有可能导致错误发生的成分集。此方法具有科学性、高效性和准确性等特点,还具有针对性、经济性、灵活和可扩展等优良特性。
文档编号G05B23/00GK1595321SQ20041004106
公开日2005年3月16日 申请日期2004年6月23日 优先权日2004年6月23日
发明者徐宝文, 聂长海 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1