APP下载

软件回归测试中的故障树技术应用研究

2020-12-14谭李孟清张莹王玉林

软件导刊 2020年9期
关键词:故障树

谭李孟清 张莹 王玉林

摘  要: 回归测试是软件产品生产过程中比重很大的测试环节。对基于修改变更和基于新增变更的软件回归测试都可基于故障树分析的缩减回归测试策略进行。对错误/BUG修改变更的故障树分析,可基于“软件缺陷是一种故障”的思想进行套用。对新增变更的故障树分析,须基于“产品质量控制和保证的全过程” 思想和程序员协作,决定软件新增变更的影响部分。通过基于故障树的相依性分析,对基线测试用例庫的测试用例进行缩减,选用有效的测试用例和设计新的测试用例构造成回归测试包。

关键词: 软件回归测试;故障树;测试用例设计

中图分类号: TP311.56    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.09.002

本文著录格式:谭李孟清,张莹,王玉林. 软件回归测试中的故障树技术应用研究[J]. 软件,2020,41(09):0508+25

【Abstract】: In this paper, the fault tree technique for software regression testing is discussed in detail. There are two kinds of states to perform regression testing in software product evolution, and the reduction strategy based on fault tree can be applied to any state. For BUG alternation state, conditional fault tree can be used generally; for enhancement alternation state, the construction of fault tree should be considered along with the dependency of enhancement part, and analyzing completely based on cooperation between programmers and testers. Then, the regression test suite can be generated by selection of test case from baseline of test case base and newly designing of testing case for new enhancement part of software product.

【Key words】: Software testing; Regression testing; Fault tree; Test case design

0  引言

美国AT&T是世界著名的电话电报公司,它拥有115个交换站将遍及世界的当地电话公司连接起来,每天可处理1.15亿次美国境内的呼叫和150万次的海外呼叫,每个交换站每小时能处理将近75万次呼叫。但是,1990年1月15日下午出现系统瘫痪,在接下来的9个小时内有近6500万个电话没接通,造成约6000万美元的损失。这次瘫痪问题的原因非常小,就是交换机新软件在修改时将十六进制数D/二进制数1101误打成了十六进制数6/二进制数0110,这种低级小错误对程序员来说是有情可原的,问题是软件发布上线前没进行回归测试,从而导致如此大的经济损失[1-3]。

软件产品生产过程中,程序员修改软件之后,一定要做回归测试,哪怕是针对很小的错误做了很小的修改[4-5]。尤其对国防和军用软件,更是值得注意。软件变更之后必须进行回归测试,主要基于以下原因:(1)程序员虽然已做了调试,但由于很难发现自己的错误,因此必需增加测试。(2)程序员由于疏忽易出现编程缺陷,因此必需增加测试。(3)程序员在呆板

操作和疲劳情况下易出现差错,因此必需增加测试。(4)不可避免的松懈和懒惰,程序员易产生错误,因此必须增加测试。(5)在配置和负荷发生改变的条件下,软件易出现错误。(6)不同的人看事物的重点和角度是不同的,专门的测试员做回归测试是非常有意义的。

一般,发生软件回归测试有两种状态:(1)在软件出现错误/BUG后进行了修改,应做回归测试;   (2)软件加入了新单元新功能后,应做回归测试。

故障树是以研究对象(一般是出现的故障)作为顶层事件,以造成故障发生的事件为中间事件和末事件,并用逻辑门表示事件之间联系的一种树形结构的逻辑图形。故障树分析是一种针对出现故障所进行的演绎推理,是一种将系统故障的成因进行由总体到部件按树枝形状分层细化的演绎分析法。故障树分析既可用于装备的故障分析,也可用于软件系统的故障分析。本研究就是将故障树应用于回归测试,分析回归测试须测试的功能路径和内容以及测试用例的选用和设计。

1  基于故障树技术的软件回归测试策略和一般步骤

1.1  基于故障树技术的软件回归测试策略

软件回归测试常用的测试策略有三种:(a)完全回归测试,(b)局部选择性回归测试,(c)经相依性分析的缩减回归测试。

(1)完全回归测试策略完全回归测试是选择基线测试用例库中全部测试用例组成回归测试包。这是一种较安全的回归测试方法,但测试成本太高。

(2)局部选择性回归测试策略局部选择性回归测试主要是在选择测试用例组成回归测试包时,根据测试用例的重要程度及其级别进行选取。此方法可减低成本,但增加了测试的风险。

(3)通过相依性分析的缩减回归测试[5]此测试方法是通过进行相依性分析,决定哪些测试用例可用来覆盖软件变更所影响的部分。由此对回归测试包进行缩减,提高测试效率,节省测试成本。

以通过相依性分析的缩减回归测试为基础,我们这里给出基于故障树分析的缩减回归测试策略:先用故障树进行相依性分析[5],选择基线测试用例库中已有测试用例覆盖软件变更部分,然后设计添加新的测试用例覆盖软件变更的影响部分,由此实现对回归测试包的缩减,并提高测试效率,节省测试成本。

1.2  软件回归测试应用故障树技术的一般步骤[6]

故障树原是一种故障诊断工具,用来分析发生故障的原因和具体部位。将故障树技术用于软件回归测试,主要是基于“软件缺陷是一种故障”的思想。故障树分析技术在回归测试中的运用,主要用在测试用例设计。实际上就是通过分析软件产生BUG/缺陷的原因,来分析软件产生缺陷将对哪些部分产生影响,从而进一步以此为基础设计测试用例。图1是在回归测试中应用故障树技术的一般步骤。

2  基于错误/BUG修改变更的故障树回归测试技术

基于错误/BUG修改变更的回归测试在软件测试中的比重更大,因此首先做讨论。更重要的原因是,从“产品质量控制和保证的全过程”思想出发,基于错误/BUG修改变更的回归测试将贯穿软件测试的全过程,并且只有程序员和测试员的全面合作才能够真正保证软件产品的质量。因回归测试的流程的一般性,我们用产品质量监控软件简体中文版V1.0作为分析实例,进行讨论。

2.1  错误/BUG和修改的背景

根据任务要求,对产品质量监控软件简体中文版进行系统测试。在对UChart进行测试时,出现启动错误BUG,把BUG反馈给程序员,从程序员处得知原因是“为体现检测量值对管控界限的影响,修改了UChart的数据位strSetting[2]和strSetting[3]的更新方式”。让程序员重新进行修改之后,提交回归测试。

2.2  故障树分析

因软件缺陷是一种故障,故障树可作为基于错误/BUG修改的软件回归测试的分析工具,进行测试用例的选用和设计。依据图1的一般步骤,以程序员对软件进行的修改为基础,我们将“修改UChart的数据位strSetting[2]和strSetting[3]的更新方式出现软件BUG”作为顶层事件,相应发生或产生影响的单元和软件要素作为中间事件和末事件,画出如图2所示的故障树。图中,A是顶层,Ai是中间层,Ci是条件,Xij是末层,各个事件编码的意义,如表1所示。

2.3  基于功能与路径标识的测试用例选取和添加[7]

因程序员的此次修改变更主要影响软件的功能,因此先列出故障树对应的功能与路径标识。然后,依据功能与路径标识所涉及的内容,决定测试用例选取。并通过功能与路径标识及其涉及/影响的内容,设计哪些需重新设计的测试用例—用*标记。具体的处理结果,参见表2。

3  基于新增变更的故障树回归测试技术

对基于新增变更的回归测试,需应用“新增者完全测试,影响者不完全测试”原则。因此,在其故障树中有如下处理:(1)基于新增变更回归测试的故障树比基于错误/BUG修改变更的故障树分支多,产生的测试用例也一般就多。(2)因为是新增单元,作为构造要素,门逻辑采用“逻辑与”构造。(3)对影响者的分析应和程序员一起合作,做具体分析。一般分析重点主要有:黑箱—数据/接口影响,功能/路径影响;白箱—继承/多态性影响,交互过程影响。(4)对影响者的筛选,应有经验帮助。

相同地,我们仍用产品质量监控软件简体中文版V1.0作为分析实例,进行故障树运用讨论。但这里加强了面向对象程序设计的要素。

3.1  新增变更的背景

根据专家和用户要求,对产品质量监控软件中的Median图增加样本容量保存功能。其依据是:“质量监控中有一个参数n—样本容量,在计量值控制图计算时,它对控制界限有非常重要影响。虽然样本容量在每个抽检批中发生一些变化,但对制造工厂的某个抽检工序来讲,技术管控层面上决定了就基本保持不變

了。因此有必要将此参数保存。”并由此让程序员新增加此功能之后,提交回归测试。

3.2  故障树分析

我们将“Median图增加样本容量n保存”作为顶层事件,相应发生或产生影响[5]的单元和软件要素作为中间事件和末事件,画出如图3所示的故障树。在图中,故障树的顶层和中间层事件表见表3,末层事件见表4。

3.3  新增变更回归测试的测试用例设计

(1)回归测试及其测试用例设计的起点

新增变更回归测试的起点需从编程阶段考虑。因这里增加的只是样本容量的保存,因此可直接进入集成测试环节,进行集成测试用例的选用/设计。

若要增加单元测试,注意此处单元测试主要是样本容量n的编辑框的输入测试。先依据n的取值进行等价类划分,再由等价类划分设计测试用例。

(2)功能与路径标识和集成测试用例选取/设计[7]

依据程序员进行的修改,分析软件变更涉及的单元,列出故障树对应的功能与路径标识,再从基线测试用例库中选取测试用例,见表5。然后再依据影响的单元列出故障树对应的功能与路径标识,设计新测试用例加入回归测试包—用*标记,见表6[8,9]。

依据以上的故障树分析和已有的经验,我们可作总结:(a)新增变更回归测试及其测试用例设计的起点应根据新增单元的性质进行确定。如是重新设计控件,宜从单元测试开始。(b)测试用例库中没有适用测试用例,必须添加新测试用例,重点可放在集成/确认测试用例的设计。(c)已有的测试用例已过时,须停止使用,并进行更新。

4  结论

在软件产品的生产过程中,回归测试占很大的比重。回归测试一般基于两种状态:一是基于软件错误/ BUG的修改变更,另外是基于软件的新增变更。对此两种变更的软件回归测试都可基于故障树分析的缩减回归测试策略进行。对错误/BUG修改变更的故障树分析,可基于“软件缺陷是一种故障”的思想进行套用。对新增变更的故障树分析,应注意逻辑门的修改,并基于“产品质量控制和保证的全过程” 思想和程序员合作,在技术层面上消除误解,完成统一协调,并以此决定软件新增变更的影响部分。通过基于故障树的相依性分析,对基线测试用例库的测试用例进行缩减,选用有效的测试用例和设计新的测试用例构造成效率好成本合理的回归测试包。

参考文献

[1]B. W. Boehm. Classics in software engineering[M]. New Jersey: Yourdon Press Upper Saddle River, 1979.

[2]Per Runeson. Guidelines for conducting and reporting case study research in software engineering[J]. Empirical Software Engineering, 2009, 14(2): 131-164.

[3]Jeremy S. Bradbury, James R. Cordy, Juergen Dingel. An Em pirical Framework for Comparing Effectiveness of Testing and Property-Based Formal Analysis[C]// Proceedings of the ACM SIGPLAN-SIGSOFT Work on Program Analysis for Software Tools and Engineering. Portugal: Lisbon, 2005: 160-170.

[4]A. Charan Kumari, K. Srinivas, M. P. Gupta. RegressAid – A

CASE Tool for Minimization of Test Suite for Regression Testing[J]. International Journal of Computer Applications, 2013, 71(18): 30-34.

[5]Ms. Sujata, Nancy Dhamija. Test Cases Prioritization Using Model Based Test Dependencies: A survey[J]. International Journal of Information & Computation Technology, 2014, 4(10): 1003-1010.

[6]唐凌遥。软件回归测试管理技术[D]。长沙: 国防科学技术大学计算机学院, 2005.

[7]Mengqing TanLi, Yan Jiang, Xiang Wang. Black-box Approach for Software Testing Based on Fat-property[C]// Proceedings of the 2019 International Conference on Computer Science, Communication and Network Security, Sanya: DEStech Publications, Inc., 2019: 198-204.

[8]HyunSook Do, Gregg Rothermel, Sebastian Elbaum. Infrastructure Support for Controlled Experimentation with Software Testing and Regression Testing Techniques[C]// Proceedings of the 2004 International symposium on Empirical Software Engineering, Redondo Beach: IEEE, 2004: 60-70.

[9]許媛媛. 基于CBR的测试用例复用方法研究[J]. 软件, 2015, 36(9): 117-120.

猜你喜欢

故障树
故障树计算机辅助分析优化算法研究与应用
数控机床液压系统故障诊断专家系统的研究
系统安全性分析技术在空空导弹中的应用
民用飞机安全性分析研究
紧急制动控制电路安全性分析
基于故障树的工程作业船与海上平台碰撞风险评价模型