李霄 郭彤 朱博
【摘 要】本文从建设中海油基础案例库必要性入手,提出案例库设计引入分层结构的测试框架来提高软件测试代码编写及运行工作效率,并根据中海油SAP系统特点对案例库中业务流程进行组件化、参数化、分类化。基础案例库中流程的选择,结合了中海油SAP系统特点及中海油业务复杂的实际情况,从经济性方面考虑,最终采用基于操作剖面选择测试的原则实现了选取20%的流程数覆盖到80%的业务范围的“二八效应”,为中海油的自动化测试工作打下坚实的基础。
【关 键 词】 QC平台;QTP;回归测试;测试框架;业务组件;业务流程
【中图分类号】F407.67【文献标识码】A【文章编号】1672-5158(2013)07-0219-03
【Abstract】This paper starts from the necessity of CNOOC case library construction, propose that the hierarchical structure testing framework is used to improve software test code compiling and running efficiency,and according to the business process of CNOOC SAP system ,we make case library components, parametric, classification. The process of operation flow select is combined with the actual situation and characteristics of complex CNOOC ‘SAP system , considered from the economic aspect, we realize that to select 20% coverage to 80% business "two eight effect" , CNOOC case library is a solid foundation for the automation of CNOOCsoftwaretest..
【Key words】QC Platform; QTP; Regression Test;Test Framework; Business Component; Business Process
0 引言
中国海洋石油总公司(以下简称“中海油”)于2006年成功上线SAP系统,SAP系统已从全面建设向持续的系统运维和深化应用转变。伴随着对SAP系统持续的配置变更、新功能开发及新单位上线,这些需求的实现对大集中模式的SAP系统的正常运行带来了一定的冲击,使系统存在风险,为避免这些变更对集团SAP系统造成的冲击,从保证系统的稳定运行角度来讲,对于系统的测试工作凸显出了其重要性。而由人工完成的测试工作面临着测试时间紧迫、人力资源紧张、测试效率及质量较低等问题,为此,中海油希望引入“自动化脚本基础案例库”的方式完成自动化测试工作,利用基础案例库来完成自动化脚本的开发、存储、管理、运行等操作,为自动化测试工作打下坚实的基础。
1 基础案例库建设的必要性
近几年,中海油发展较快,不断有新公司成立及新业务领域的增加,特别是在海外业务领域的扩展等,公司业务的发展使得近几年每年都有较大规模SAP实施项目,与此同时原有公司组织结构的取消和重组,导致公司利润中心和成本中心的经常变更。SAP系统还需日常的维护,如:SAP系统打补丁、升级及启用SAP新功能等。用户在使用SAP系统的过程中对其有新的认识,也提出了对现有系统变更的需求。而中海油SAP系统是集团统一运维、管理的,这些个性需求的实现及升级等操作无不对整个系统的稳定运行造成冲击。其次,遵循SAP公司ASAP方法论,在新公司上线前会对现运行SAP系统进行回归测试,保证在新公司配置进入SAP系统时原有系统功能正常运行,防范了新公司配置进入系统对原有系统的冲击,规避了系统不稳定运行的风险。综上所述,为了保证SAP系统正常运行,中国海油运维团队将系统回归测试和系统巡检测试的工作提到议事日程。就中国海油SAP系统应用现状对进行人工回归测试的工作量进行了评估,但遇到以下几个方面的挑战。
1) 时间挑战:回归测试通常选取跨模块集成流程、模块内重要集成流程进行测试,这其中最长的流程有94个步骤,涉及4个模块,包括了采购、收货、发票校验、销售、发货、开票、收付款、生产、月结等主要业务流程,需要大约20个岗位的人员进行协同操作,若一切顺利,完成一个这样的流程大约需要2天左右的时间。
2) 人力资源挑战:中海油的二级单位组织层级较多,以一家二级单位有9家三级单位为例,做回归测试就需对9家单位进行组织和协调工作,以9家单位平均实施了6个模块、每个模块至少动用2个关键用户或最终用户计,那么对于此二级单位一次回归测试至少需要动用108个人员,按通常的做法,给所属单位回归测试的时间都在5个工作日。由此可见,在SAP系统大规模实施后的今天若再组织全集团的回归测试,其组织的工作量已是巨大的了。
3) 质量挑战:在执行回归测试的过程中,用户要翻看大量的手工测试脚本并将测试结果保存在其中,结果的共享及准确性是对测试人员耐心及敬业精神的考验,回归测试工作重复性较强,手工测试更容易使测试者感到疲劳和厌倦,增加了错误率;
综上所述,手工测试的挑战是巨大的,中海油希望引入与SAP系统结合紧密的HP解决方案来完成测试工作,在测试过程中我们需要将手工测试脚本利用QTP自动化,然后定期维护、运行自动化脚本来完成对SAP系统的回归测试、巡检测试等基础工作,所以中海油希望建立自动化基础案例库来完成自动化脚本的存储、分类,利用分层的框架结构简化脚本开发,提高开发效率并将测试数据与业务流程分离开来。
2 基础案例库的设计
基础案例库主要完成以下几个功能:1:提供公用的函数和框架结构提高开发效率2:分类存储测试人员利用QTP开发的自动化脚本 3:将业务逻辑和测试数据等分层管理。所以,开发人员必须将业务流程分拆成业务组件,利用自动化框架和公用函数根据一定的业务逻辑串写成自动化脚本,并在编写过程中将数据和流程分离开来完成流程的参数化,并根据SAP系统的特性及流程的所属单位将脚本分类存储,下面我们将各个步骤扩展开来介绍。
2.1业务流程组件化
业务组件是组成流程测试的基本单元,组合不同的业务组件可以实现不同的业务流程测试。如将信息系统的“登录”做为一个组件,“添加用户”做为另一个组件等。这样可以实现组件的复用,下次登录直接调用脚本即可,提高了开发效率。
业务组件化的优点
1) 相关业务人员可以在没有脚本的环境下组合业务组件,实现业务流程。
2) 对业务人员的编程能力没有太高要求,业务人员只需了解系统的业务流程,不用关心具体的脚本实现。这一点也实现了业务层和脚本层的分离。
3) 一旦某个组件开发完毕,即可在不同的流程中使用该组件,实现高可复用性,从而加快业务流程测试的速度。
4) 明确的角色分工,业务人员负责流程的开发、组织;测试工程师负责脚本的开发、维护以及相应函数库的开发、维护。
5) 因为实现了脚本的复用,提高了自动化开发的效率,无形中就降低了测试过程中维护的时间和成本。
2.2业务流程参数化
业务流程脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。脚本技术可以分为以下几类:
1) ――线性脚本是录制手工执行的测试用例得到的脚本。
2) ――结构化脚本类似于结构化程序设计,具有各种逻辑结构(顺序,分支,循环),而且具有函数调用功能。
3) ――共享脚本是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。
4) ――数据驱动脚本将测试输入存储在独立的数据文件中。
自动化测试对录制和编辑好的测试步骤进行回放,这种是线性的自动化测试方式,其缺点是明显的,就是其测试覆盖面比较低。测试回放的只是录制时做出的界面操作,以及输入的测试数据,或者是脚本编辑时指定的界面操作和测试数据。如何让测试脚本执行时,不仅仅局限于测试录制或编辑时的测试数据呢?数据驱动的测试方式是解决这个问题的最佳方案。数据驱动测试把测试脚本中的测试数据提取出来,存储到外部文件或数据库中,在测试过程中,从文件动态读入测试数据。
这样测试用例需要数据输入完成操作。数据驱动设计能够分离代码和数据,并充分重用代码,测试人员能够简单地编辑数据矩阵来设计不同的用例组合。如果用户界面变化了,也只需要稍稍修改命令序列,这时测试人员通过修改电子表格中数据要比重新编写代码来修改测试用例要方便一些。
2.3业务流程分类化
SAP作为世界重要的ERP实施软件,其突出的特点就是业务拆分细致而全面。SAP是一个基于客户/服务机结构和开放系统的、集成的企业资源计划系统【1】。其功能覆盖企业的财务、后勤(工程设计、采购、库存、生产销售和质量等)和人力资源管理、SAP业务工作流系统。那么基础案例库中的业务流程分类同样要按照SAP模块的功能区分,分为FI 财务会计、CO管理会计、PP 生产计划、MM 物料管理、QM 品质管理、SD 销售与分销、HR 人力资源管理等七个模块。所以中海油根据一下几种维度将流程进行分类。
(1) 功能模块分类:因大型国有企业的SAP业务系统比较复杂,所以我们选择在测试计划中,按照业务模块不同存储业务流程。
(2) 测试功能分类:按测试功能进行划分,将流程分为性能测试、自动化测试等
(3) 所属单位分类:中海油所属子公司大部分实施了SAP系统,按照单位进行流程分类有利于按照单位来开展测试工作。(见图1)
2.4业务框架
测试框架的搭建是直接影响功能自动化测试成功与否的关键。框架做的好可以使测试事半功倍,反之轻则很难看到工作的成果重则会使整个测试失败。目前我们讨论HP公司为我们设计好的一个测试体系,业务组件测试。他是利用QTP与QC的完美结合组成的一个体系架构。它可以轻易实现目前比较流行的三层测试架构:脚本层,业务层,数据层相分离,提供了一个开放的、可扩展的测试管理框架,可以将测试依据、测试用的数据、测试执行及测试后的结果有效结合起来[2]。
结构化框架通过共享函数库中的函数把被测试应用程序和测试脚本分离。共享函数的主要分为:
(1) 定义每个应用程序的功能特征。类似于函数的重用,隐藏每一个组装的函数。
(2) 定义命令或者测试工具语言的特征。封装函数是把其他函数封装在里面,可以通过修改封装函数,添加或者修改功能解决测试工具的缺陷,或者增强脚本语言的优势。
(3) 定义小的、频繁操作的统一目标。它实现了一个操作的命令集合。脚本开发者不用关心其过程,只需要关注输入和输出。
(4) 定义实用函数。可以创建一个用标准方法生成测试报告的函数,在开发脚本的时候把他作为标准,在每个测试用例后边调用这个函数。
3 基础案例库脚本的选取
基础案例库脚本的选取,实际上是对中海油SAP系统回归测试范围的确定,即选取哪些流程来进行测试工作,业界有几种策略包括测试全部流程、基于风险选择、基于操作剖面选择、测试修改及所影响部分等,中海油根据自身单位的复杂程度及SAP系统特点做出了相应的策略选择,力求能够选取20%的流程数,覆盖到80%的业务范围,也就是实现“二八效应”。
3.1 回归测试定义
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。因此,通过选择正确的回归测试策略来改进回归测试的效率和有效性是非常有意义的。
3.2、常用回归测试策略
选择回归测试策略应该兼顾效率和有效性两个方面。常用的选择回归测试的方式包括:
1)再测试全部用例
选择基线测试用例库中的全部测试用例组成回归测试包,这是一种比较安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,但测试成本最高。全部再测试几乎可以应用到任何情况下,基本上不需要进行分析和重新开发,但是,随着开发工作的进展,测试用例不断增多,重复原先所有的测试将带来很大的工作量,往往超出了我们的预算和进度。
2)基于风险选择测试
可以基于一定的风险标准来从基线测试用例库中选择回归测试用例。首先运行最重要的、关键的和风险较大的测试用例,而跳过那些非关键的、优先级别低的或者高稳定的测试用例,这些用例即便可能测试到缺陷,这些缺陷的严重性也仅有三级或四级。一般而言,测试从主要特征到次要特征。
3)基于操作剖面选择测试
如果基线测试用例库的测试用例是基于软件操作剖面开发的,测试用例的分布情况反映了系统的实际使用情况。回归测试所使用的测试用例个数可以由测试预算确定,回归测试可以优先选择那些针对最重要或最频繁使用功能的测试用例,释放和缓解最高级别的风险,有助于尽早发现那些对可靠性有最大影响的故障。这种方法可以在一个给定的预算下最有效的提高系统可靠性,但实施起来有一定的难度。
4)测试修改及所影响部分
当测试者对修改的局部化有足够的信心时,可以通过相依性分析识别软件的修改情况并分析修改的影响,将回归测试局限于被改变的模块和它的接口上。通常,一个回归错误一定涉及一个新的、修改的或删除的代码段。在允许的条件下,回归测试尽可能覆盖受到影响的部分。每当软件发生变化时,就必须重新测试现有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。同时,还需要补充新的测试用例。
3.3、中国海油自动化回归测试方案
基于中海油业务复杂,所属单位较多这种情况,从经济性方面考虑没有必要将所有的业务流程都录制成自动化测试脚本。 我们将流程分为以下几类,对于各个分类有着不同的处理方式:(见图2)
1) 跨模块的流程:跨模块的流程选取策略充分保障了选取的业务范围覆盖到中海油跨模块集成业务流程,足够能代表中海油此业务流程的特点和操作步骤。a: 共性流程:选取最具代表性的公司代码进行测试 b:个性流程:个性流程选取相关所属单位测试
2) 模块内流程:选取的原则是规避查询报表等影响较小的T-CODE。以MM为例,模块内重点流程39个,其中XI接口17个;查询报表和表单TCODE数量为93个。去除查询报表和表单、XI接口,剩余的22个模块内重点流程全部纳入了自动化测试脚本。
3) 接口测试:根据接口程序的优先级来制定接口自动化流程编制顺序。
“二八效应”即选择百分之二十的流程能够有百分之八十的测试覆盖率,以跨模块SD06共性流程来说,单独拿出一家单位的流程共有14个流程步骤,六家单位所有的不同步骤是18步(各个单位有一两个步骤差异),那么我们选取一家单位即可以覆盖到14/ 17=80%的步骤,即达到了仅将百分之二十的流程制作为自动化脚本但覆盖到了百分之八十的流程的“二八效应”。根据以上的策略,回归测试策略最终确认为:选择38个跨模块集成流程,以及49个模块内重点流程。 该策略有以下几个特性:
1) 集成性:选取集成流程(包括跨模块集成流程和模块内集成流程)作为自动化回归测试对象,不单单因为集成流程包含了绝大部分常用的T-CODE、关键控制点,更重要的是集成流程贯穿了整个业务流程,可以从业务流、系统本身集成性来考量“变更”带来的影响和潜在风险;
2) 全面性:38个跨模块集成流程包含了中海油所有二级单位的所有共性流程和个性流程,49个模块内集成流程的选取覆盖了FICO、MM、SD、HR等模块,流程的选取覆盖了所有所属单位的业务;
3) 理论性:数据的选取兼顾有效性和效率两个方面,同时又符合“基于操作剖面选择测试”原则,奠定了自动化回归测试选取的基础。
诚然,该方案数据的选取也有自己的局限性,方案重点测试集成流程的功能,共性流程选取单个公司代码,难以充分测试公司间字段差异化等。
4 结束语
基础案例库作为中海油应用系统测试平台建设的一部分,引入国际先进的测试理念,并在石油石化央企中率先实现了软件测试专业化和集中化。结合SAP被测系统特点制定出了适合海油的测试解决方案,为SAP的测试提供了基础案例库来完成回归测试、巡检测试等基础测试工作。
在实际的应用中,中海油基础案例库初期包含了256个业务流程,共计2800个业务组件,覆盖到了中海油所有的二级单位,在过去的一年内,完成11次集团的回归测试任务。基础案例库的应用使得自动化的回归测试效率大大提高,缩短回归测试时间,同时提高准确性,将测试技术人员从重复工作中解脱出来投入更多精力设计更好的测试用例。测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
参考文献
[1] SAP从入门到精通.北京 :人民邮电出版社,2010:07-01
[2] 张立德. Rational TeamTest 在软件测试流程管理中的应用 河北:中国传媒科技,2004:10