基于脚本的流程自适应自动化测试研究

2015-11-26 01:08冯曙明何金陵
计算机与现代化 2015年2期
关键词:正确性脚本流程

王 游,冯曙明,何金陵,方 泉

(1.江苏电力信息技术有限公司,江苏 南京 210009;2.江苏省电力公司信息通信分公司,江苏 南京 210024)

0 引言

自动化测试技术因其低成本和高可重复性在大型软件的开发中占有重要地位。如在大型企业级ERP 系统开发过程中,智能自动化测试技术是保障其软件质量的重要手段。一些跨国公司对此已经有了系统研究[1-2],而国内企业随着信息化建设的提升,也对此提出了新的要求。本文介绍的面向流程的自适应自动化测试系统(以下简称系统),就是根据国家电网公司的现代信息化企业建设需求而开发。国家电网公司近年来引进SAP 软件,根据自身需求开发ERP 系统实现企业管理信息化[3-4]。在系统建立过程中,为了确保ERP 系统流程的正确性需要进行大量的测试工作[2,5],特别是ERP 中复杂的流程经常需要进行大量回归测试。这些测试通常使用脚本测试技术,呈现以下3 个特点:

1)测试量大:ERP 系统中包含大量流程,每个流程又包含多个功能点。为了测试一个功能点的正确性,可能涉及多种类型的测试[6],例如界面类Dialog测试、服务类Web Service 测试、接口类IDOC 以及BAPI 测试、数据移植类LSMW 测试、远程工作流RFC测试等。这些测试需要使用到大量不同类型的测试脚本。

2)测试复杂:测试的复杂性首先表现在大量不同类型的测试,如何把这些大量测试组合在一起是个艰巨的任务;其次是ERP 流程的复杂性,使得测试变得复杂,如何使测试能够正确反映原来流程的对应关系蔚为重要;还有不同类型测试脚本间的相互配合也十分复杂。

3)重复性较高:虽然流程测试使用了大量不同类型的测试脚本,但是同样数量巨大的功能点中也存在了很多相似的功能,如界面类、服务类功能等,可以使用结构类似而用例不同的脚本测试。

现有的单个测试方法已不能适应企业业务流程的迅速变化[7]。为了满足以上的测试特性,必须开发新的测试系统解决ERP 系统的流程测试问题。自动化测试技术适合解决重复的大量测试问题,进一步数据驱动的自动化测试能够满足对结构相似功能的重复回归测试要求[6],能很好地应对以上特性。本文介绍的测试系统基于脚本测试技术和数据驱动的自动化测试技术,又考虑了脚本管理和对流程变更的自适应问题,最终形成了自适应的自动化测试系统。其中,脚本管理是为了合理组织和使用大量的异构测试脚本,并为脚本的数据交互奠定基础。而对流程变更的自适应考虑则是为了增加系统的自动化程度,减少测试成本,提高测试的正确率。下文将结合具体的业务流程说明该系统运行过程。

1 相关工作

优秀的软件系统能够助力企业发展,但是同时一旦软件出现问题也会给企业造成巨大的损失[8-9]。这就需要测试技术来保障软件的正确性。特别是对于规模庞大的SAP 应用系统,需要使用自动化测试技术来大量、低成本地测试系统正确性。在Rudolf 等人的研究中,就指明了企业自动化测试的重要性,并提出了企业自动化系统的自动测试框架,总结了他们在自动化测试的实践中所得经验和建议[2]。同时,他们还介绍了多种企业自动化系统中使用的测试方法和工具。相似地,文献[10]和文献[11]也提出了新的测试方法和工具提高自动化测试的效率,而在文献[12]和文献[13]中作者介绍了目前常用的几种自动化测试工具及其应用,并分析了选择自动化测试工具的方法。然后,结合软件自动化测试的实施程序,又探讨了测试工具在软件自动化测试中的应用。结合企业实例,Achatz 等人研究了Siemens 公司的软件质量保证技术[1],而Angerer 等人给出钢铁企业软件测试的实例研究[14]。这些研究体现了测试在软件生命周期中的重要性,并且指出使用多种测试技术对于保障企业软件系统的重要性。相比较,同时研究企业应用实例,而侯桂波等人[3]和王文[4]的研究则更为具体,他们重点讨论了在国家电网SAP 系统中的测试技术,相关实现和控制方法。当前还有很多其他研究讨论了企业系统的测试问题,但各自解决的问题不同,且尚有不少问题等待研究,如本文在SAP 项目中针对流程正确性自动化测试的研究还很少。本文将在国家电网SG-ERP 的应用背景下提出针对流程正确性的自动化测试方案,解决测试系统中脚本管理、自适应变更、脚本自动协作等问题。

2 自适应自动化测试系统

2.1 系统总体设计

该系统的主要应用场景是对ERP 系统中流程进行自适应的回归测试。ERP 系统中流程可以被分为三层结构:流程、功能点和任务。以较为简单的“非招标服务需求计划提报”流程为例(结构如图1 所示),该流程下包含3 个功能点,每个功能点又有若干个任务组成。在系统中,流程的运行表现为任务的顺序执行,该流程的任务顺序为任务层中任务按从上到下顺序执行。

图1 “非招标服务需求计划提报”流程的结构图

测试流程的正确性,即测试流程下各功能点能够正常执行,其核心就是测试每个任务功能是否正确,并且任务序列是否能按正确路径完成。因此,流程测试应包含2 个方面:1)测试每个任务的正确性,主要由对应脚本测试;2)测试任务序列的正确性,由所有测试脚本相互协作完成测试,并通过监测测试过程中的输出及最后脚本的总输出来判断测试结果。测试运行过程如图2 所示,测试脚本和任务相互对应,两序列平行执行,即测试脚本既参与任务序列的执行,又不影响任务序列的执行次序。测试过程开始时需输入测试用例和脚本运行计划,然后测试平台会按照脚本计划依次调用相应脚本测试任务,并监测脚本测试结果,最后分析最终结果。

图2 系统测试过程

在图2 中,测试用例和脚本计划需要在测试过程之前形成。为了更高的可复用性,系统采用数据驱动的自动化测试方法[6],将测试用例放在单独的文件中由测试脚本读取。而脚本计划则自适应流程测试需要由系统自动生成。因此,测试系统分为3 个部分功能:测试管理部分,测试运行部分和结果分析部分,范围如图3 所示。3 部分功能的主要内容如下:

1)测试管理部分:合理组织大规模异构脚本,维护脚本与功能任务关系,维护脚本之间关系;

2)测试运行部分:组织运行流程变更后的回归测试,具体包括:自适应流程变更制定脚本运行计划,按计划组织测试脚本,执行脚本,实时判断脚本执行情况等;

3)结果分析部分:生成脚本执行日志并分析得出结果。

系统的3 部分相互独立,增加系统的灵活性。因为脚本的增减和修改,以及脚本间的关系变化都可以在管理部分完成,与测试过程独立,使得测试过程可以执行多种脚本计划。如此,当业务流程发生变化需要回归测试时,系统可以自适应地组织脚本计划参与测试而不影响测试过程。

因此,系统的总体设计如图3 所示,测试管理部分把原始测试脚本自动转换为具有通用接口的标准脚本,并参考业务逻辑维护任务关系及脚本和任务关系。之后,测试运行阶段通过2 种方式触发:1)人工输入脚本运行计划;2)流程发生变更,系统自动搜集受影响的任务,生成自适应脚本运行计划。接收到脚本运行计划后,系统会从测试库中按照计划组织脚本序列并转入运行。运行过程中,所有脚本被加载到测试平台运行,系统实时检测脚本运行结果和运行消息。直至测试后,系统会通过执行情况总览和运行日志展示测试结果。

图3 面向流程的自适应自动化测试系统测试过程

图4 用脚本库层次化管理任务脚本及其属性

2.2 脚本管理与协作

ERP 系统的测试需要使用多种脚本,其庞大的数量使得其自身管理就是测试工作中的一个难题[8]。本文使用脚本库来管理各种类型的任务及其对应测试脚本(如图4 所示),通过构建树形目录的方式,分层次管理任务和其对应脚本的关系,使任务和脚本的关系清晰,使任务脚本的创建、编辑和寻找简单。同时,脚本库负责维护任务脚本属性,如图4中所示的任务名称、任务ID、实现类型和对应脚本名称等。其中,任务ID 是任务的唯一性标识,对应脚本名称明确了任务和脚本的对应关系。除此之外,使用脚本库管理脚本还能解决以下几个问题:

1)脚本的统一接口:系统中涉及多种类型的脚本,而流程测试要求脚本间相互协作,能交换数据。脚本库为此定义了标准接口,并在添加脚本时自动检测、转换脚本接口。接口的转换过程如图5 所示,在ERP 中的原始脚本可能包含的参数有:Tables、Changs、Changs Value、Using、Using Value,它们被自动转换为2 个XML 格式的String 串:Import、Export(格式如图5 所示),在使用时析取节点Values 下的<Name、Value >值对即可。XML 具备强大的描述能力,良好的结构和通用性,十分适合用来描述通用接口[15]。

2)脚本的备份和恢复:脚本库依赖脚本数据库和SVN 版本化文件系统(FSFS)支持。脚本数据库存储脚本属性、脚本关系和脚本在FSFS 中存储地址,FSFS 永久保存脚本文件。利用数据库的定时备份功能,脚本库以半个月为周期定时备份。另外,脚本库在有重大更新后也将不定时备份存档。当脚本库出现缺陷时,可以从备份数据库恢复最近版本。

3)脚本的版本控制:版本控制主要针对单个脚本,保证测试脚本和开发代码保持一致。脚本版本由数据库中脚本版本号记录,版本控制工具SVN 控制。

4)脚本的自适应协作:以上3 点在已有的研究中已有实现[16],本文在脚本管理上更强调脚本的动态关系建立和维护。因为在ERP 中流程是动态相关的,即在不同业务场景下的业务流程也有可能不同。所以,作为测试动态流程的测试脚本也应该具有自适应能力,能够自动适应流程变化相互协作。作为自适应协作的基础,脚本库维护脚本和流程,以及脚本和脚本的关系,这种关系会在测试时帮助系统决定哪些脚本要加入脚本计划参与测试运行。

图5 脚本库中脚本转换和脚本通用接口格式

在流程测试中,测试系统首先要能识别流程对象。在系统中,流程对象以任务序列的形式展现,并在脚本库中维护该序列,即维护流程中各流程间的相互关系。脚本库通过可视化配置的方式维护任务关系,然后系统根据图4 中的任务和脚本关系,明确脚本和任务及脚本和脚本之间的联系。可视化技术将数据联系以显而易见的连线方式表现出来,显著降低了测试人员的学习成本和发生配置错误的概率[16]。可视化配置的后台是脚本数据库,配置界面以连线的方式表现任务在数据库中的关联关系,并以连线的左右位置表示任务序列顺序和数据的传入传出关系,详细的配置界面如图6 所示。

图6 脚本库中脚本配置示例

在图6 中,流程、功能点和任务以树形目录形式陈列,在右侧窗口可以用连线的方式来设置任务运行顺序和数据联系。以“非招标服务需求计划提报”流程为例,“提报项目服务需求计划”任务在连线最左侧表示其运行顺序最前。其右侧连接“部门审批提交接口”和“创建服务采购订单”任务,表示其输出数据“E_CGSQH”(采购申请)和“E_CGSQHXMH”(请求项目)将作为“后两者的输入数据。

2.3 自适应流程变更运行测试

本系统解决的首要问题是业务流程的自适应回归测试问题。为了增加系统的可用性,如图3 所示,系统有以下2 种方式开始测试:

1)测试员配置运行计划,并启动测试;

2)业务流程发生变更后,测试系统自动判断相关流程,并根据需求组织脚本计划。

在1)的情况中,主要是由测试人员控制。在2)的情况中,则是测试工具适应流程变更的自动化测试,系统会在变更发生后首先判断受变更影响的业务对象,即功能点下任务对象,形成可供选择的测试任务列表(如图7 所示),此时测试人员可以裁剪任务对象。然后,系统根据对象唯一标示ID 和图6 中配置的关联关系,找到对应测试脚本形成脚本运行计划进入测试运行,如图8 所示。

图7 自适应受影响任务对象选择列表

图8 面向流程的自动化测试系统运行图

该自适应过程的核心是2 个关联过程:

1)根据发生变更的任务找到相关受影响任务形成待执行任务列表,其实现依据的是图6 中配置的任务关系,系统判断有逻辑联系的任务,即在图6 中连线可达的任务,为相关受影响任务;

2)根据任务列表中的任务对象ID 找到对应测试脚本,其实现依靠的是脚本库中管理的任务-脚本对应关系。最后形成的脚本计划建立在这2 个核心关联过程之上,即将相关测试脚本按照配置好的任务关系组织成脚本运行计划。

在测试运行过程中,脚本间的相互协作主要体现在脚本数据的流转,脚本的输入数据不仅是固定的测试用例,还会接受相关流程任务的动态数据,这也是流程测试不同于传统测试的重要方面。例如,在“非招标服务需求计划提报”流程中,“创建服务采购订单”任务就需要接收“提报项目服务需求计划”任务执行产生的动态数据,如采购申请数据等。这种自由的、实时的数据交换功能得益于统一的数据接口和明确的脚本关系。统一的数据接口保证不同类型脚本间数据交换的可行性,明确的脚本关系指明了数据交换的方向和交换的具体内容。在系统中,数据交换过程完成自动完成,既减少了测试的工作量,又保证了数据的实时性和准确性。

2.4 测试结果分析与判定

如图2 所示,本系统对测试结果的判断包括2 方面,一是单个脚本运行结果判断,另一是脚本运行最终结果的判断。前一个针对单个任务的正确性,后一个可以判断任务序列的正确性。系统判断正确性的方式包括值监测和消息检测2 个方面。值监测即传统的比对测试运行值和期望值,如果运行结果和预先设定的期望值相符则判定为测试结果正确。消息监测是值监测的补充,分散在测试过程中,当值监测不正确时,查看测试过程中关键部分的运行消息,判断消息是否正常来缩小错误范围。因此,测试系统是根据运行结果是否符合期望,运行过程是否抛出错误消息来判断测试结果的。特别对于流程的正确性,需要在每一个流程正确的基础上判断是否能产生最终结果且有无错误消息,如果有结果且无错误消息抛出则认为流程每部分正确且可以正常协作,即流程正确。流程测试结果同样采用动态的可视化界面展示,如图8 所示,深灰色色项为错误消息,浅灰色为运行正常。

3 讨论

上文结合SG-ERP 中“非招标服务需求计划提报”流程对本文提出的自适应自动化测试系统进行了阐述。该系统的主要目的是个管理测试脚本,自适应业务流程变更,自动化组织脚本进行回归测试,其主要解决了以下3 个问题:

1)脚本统一化管理。以脚本库的形式管理各类型脚本,并自动转化各类脚本支持相同的接口。其优势有2 点,一是脚本管理更加规范和方便,脚本使用更加安全;二是统一接口使得系统能支持更多类型脚本,且脚本数据交换更加方便,为脚本的自动化协作奠定基础。

2)自适应流程变更。业务流程、功能、任务和测试脚本相互之间的关系可以可视化配置。系统将它们清晰地联系起来,所以当流程发生变更时,系统能自动搜集受到影响的任务,并调用对应测试脚本形成测试计划,自动完成测试。这样就能保证对测试对象的完全覆盖,实现较高的测试自动化程度,并减少人力、时间资源的消耗。

3)多种类型脚本的自动协作。脚本具有统一的数据接口,可以自适应变更形成测试计划。在测试运行时,脚本可以自动完成数据交换,使得脚本不仅能接受多样的测试用例,还能获得动态的过程数据。这样测试数据能更加贴近实际,不仅可以测试单个任务的正确性,还能测试任务序列的正确性。

这3 点是本文测试系统的主要贡献,其实用性在SG-ERP 的实际开发中得到证实。然而该系统还有许多需要改善的地方,如本测试系统还未实现对错误的自动定位,当测试出错后还需要测试人员分析运行消息来判断问题的具体所在。在自动化测试研究中,错位定位技术是研究热点,也是笔者下一步的研究方向。

4 结束语

本文介绍的面向流程的自适应自动化测试系统是为国家电网SG-ERP 项目开发的测试流程正确性的自动测试系统。该方案针对SG-ERP 项目流程复杂,正确要求高,包含功能点多等特点,通过建立脚本库、统一脚本接口、配置脚本关联关系等方法,实现了脚本的自动转换,自适应安排运行计划和自动协作运行等功能,成功解决了脚本统一管理、自适应流程变更和多种类型脚本自动协作等难题,实现了对SAP项目中流程的自动化回归测试。为了阐明该解决方案,本文介绍了国内外在企业系统测试方面的相关研究,结合SG-ERP 项目中的实例详细阐述了该方案的思路和运行过程,分析了该项应用在实践中的重要意义,并讨论了当前该解决方案中仍存在的不足和限制。未来笔者会继续完善该技术方案,并根据SG-ERP 项目的新要求不断改进。此外,在面向流程的自动化测试方面笔者还将做进一步研究,特别是在SAP 项目中的流程正确性测试和控制方面做更多的研究和探索。

[1]Achatz R,Paulisch F.Industrial strength software and quality:software and engineering at Siemens[C]// Proceedings of the 3rd IEEE International Conference on Quality Software.2003:321-326.

[2]Ramler R,Putschögl W,Winkler D.Automated testing of industrial automation software:Practical receipts and lessons learned[C]// Proceedings of the 1st International Workshop on Modern Software Engineering Methods for Industrial Automation.ACM,2014:7-16.

[3]侯桂波,王喜伟,于春玲,等.持续集成与自动化测试在国家电网电力营销系统开发中的应用[J].电网技术,2009,33(20):164-167.

[4]王文.浙江电力SAP 升级项目权限能测试方法研究[J].电力信息化,2010(9):65-67.

[5]Jones C,Bonsignour O.The Economics of Software Quality[M].Addison-Wesley Professional,2011.

[6]姚实颖,肖沙里,谭霞,等.软件测试自动化中建立可维护脚本的技术[J].计算机工程,2003,29(11):79-81.

[7]黄双喜,范玉顺.基于工作流的ERP 系统开发与实施[J].计算机集成制造系统,2004,10(2):139-143.

[8]张少博,罗省贤.自动化测试脚本运行控制方法研究[J].电子测试,2008(6):19-23.

[9]向东,李霄,郭彤.自动化测试解决方案实践分享[J].金融电子化,2013(6):71-72.

[10]吴伶琳.基于Selenium 的软件自动化测试的研究与应用[J].计算机与现代化,2013(2):65-68.

[11]张伟,吴黎明.基于因果图的软件自动化测试方法研究[J].计算机与现代化,2012(12):78-81.

[12]邓青华.软件自动化测试工具研究[J].软件导刊,2011,10(1):57-59.

[13]姚树霞.浅析ERP 信息系统测试方法和工具的选用[J].中国管理信息化,2012(13):47-48.

[14]Angerer F,Prahofer H,Ramler R,et al.Points-to analysis of IEC 61131-3 programs:Implementation and application[C]// Proc.of the 18th IEEE Conf.on Emerging Technologies Factory Automation.2013:1-8.

[15]倪铭,黄萍.基于脚本的构件测试自动化框架[J].计算机工程,2010,36(6):94-96.

[16]桑会兰.自动化软件测试脚本管理工具研究和实现[D].上海:上海交通大学,2012.

猜你喜欢
正确性脚本流程
酒驾
吃水果有套“清洗流程”
安奇奇与小cool 龙(第二回)
一种基于系统稳定性和正确性的定位导航方法研究
数据库系统shell脚本应用
违反流程 致命误判
快乐假期
浅谈如何提高水质检测结果准确性
本刊审稿流程
析OGSA-DAI工作流程