BOSS工程建设之自动化测试方法研究

时间:2022-10-18 04:58:10

BOSS工程建设之自动化测试方法研究

【摘要】结合NGBOSS实际工程建设经验,分析自动化测试的特点及实施要求,提出在NGBOSS建设中实施自动化测试的新方案。并通过构建新型的脱离业务的自动化框架,在实践中加以应用,一定程度上克服了传统自动化测试方案脚本编写入门难、脚本维护困难等不足,满足了NGBOSS工程建设中上线前后重点业务快速验证的要求。

【关键词】NGBOSS QTP 关键字驱动 自动化测试框架

随着3G业务的开展,三家运营商的竞争不断深入,NGBOSS系统作为全业务时代开展新业务的信息支持系统,需要快速的实现更新换代,以尽早满足快速发展的新业务需求。在多样化的新产品不断出现的同时,由于存在大量的在网用户,在NGBOSS系统建设过程中,原有产品模式需要同步支持,因此NGBOSS系统变的越来越复杂。客户对移动通信的服务质量提出了更高的要求,而NGBOSS系统的质量在一定程度上取决于系统测试的全面程度,在保证测试质量的前提下,降低测试成本,提高测试效率,改变以往单纯靠人工测试的方法,需要在测试方法上进行改进研究。

本文针对NGBOSS工程建设中的问题,重点关注软件业务测试,并通过自动化测试进行常规业务探测,实现系统故障的及时发现,提高客户的满意度。

1 自动化测试实施分析

自动化测试是一种把以人为驱动的测试行为转化为机器自动执行的方法。在目前的软件测试项目实施中,项目团队为了降低测试成本、提高测试效率,一般用自动化测试代替多重验证测试和手工测试。但是在软件项目中,项目管理人员对于自动化测试的认识仍存在一些疑问和误解,例如任何测试项目都可以自动化;用自动化测试取代手工测试;在赶进度的情况下,紧急实施自动化测试。

自动化测试实施是与软件开发并行的一个软件项目开发过程,包含需求、设计、编码、自动化平台代码调试测试、上线、上线后运行等完整的软件生命周期。上线前自动化测试项目处于投入阶段,在上线后的运行期进行用例编写、脚本调试、自动化脚本运行,此时自动化平台进入效益产出阶段。

对于一个完整的定制化的自动化测试平台工程项目来讲,需要项目团队在实施立项阶段考虑自动化开发成本和产出的效益。只有产生的效益大于实施成本和人工测试的成本时,才有实施自动化测试工程的必要。自动化测试实施的成本包括自动化测试团队人力成本、软硬件开发成本。

假设成本总计为N,共对x个业务进行自动化测试实施。x个业务进行手工测试需要人力成本为a。创收的计算方法是:假设x个业务不用自动化,进行手工测试需要人力成本为a,那么当这x个业务都用自动化脚本执行后,每执行一次批量自动化,就节省成本a。当重复执行M次后,节省的劳动力成本M*a就是自动化项目的收益,即:M*a>N。因此可通过控制成本,最小化N和增加重复执行次数M,实现自动化测试实施效益的最大化。

在具体实施时,控制成本的方法一般有:在框架方面简化框架,以稳定为主,能用就好,防止过度开发;在脚本方面,简洁易开发,同时稳定脚本,尽量减小维护成本。创造的效益取决于执行次数和脚本覆盖率,因此脚本批量执行的次数越多,脚本覆盖业务的比例越大,节省的人力成本就越多,创造的效益越大。

通过以上分析,可以总结出适合进行自动化测试的工程项目必须具有的特点包括:一是项目比较成型,测试需求不会频繁变动,否则脚本维护成本太高;二是项目周期足够长,可以进行自动化项目开发和实施;三是脚本会被多次复用,执行的次数越多,自动化越有意义,否则,就没有必要开发自动化。

当一个项目满足以上特点,成功执行自动化测试后,意义是非常明显的:一是节省人力成本,提高测试效率;二是自动化测试提供区别于手工测试的另一种验收标准,通过自动化测试报告用数据说话,并且自动化测试通常能发现手工测试无法发现的BUG;三是做手工测试无法做或者很难做的测试,如模拟测试、危险测试。

NGBOSS作为中国移动的新一代业务支撑系统,前台业务复杂,涉及个人业务、家庭业务和集团业务等全部业务办理及计费过程。项目实施时间长,上线后会持续运行3~4年时间,随着电信行业竞争的加剧,系统版本更新更加频繁。以广东为例,一般每年进行12次常规性升级,在每次升级后均需要进行常规业务的验证,若采用自动化测试实施后,可以采用自动化测试脚本进行常规业务探测,降低系统故障率。通过以上分析,在NGBOSS系统中实施自动化测试,可以实现测试效率的提升和测试成本的下降,因此有必要实施自动化测试平台的建设。

2 自动化测试构建思路

结合自动化测试实施成本和效益理论的分析,通过对目前常见的自动化测试流程进行研究,提出改进的方案。自动化实现的基本原理均是录制回放,将录制出来的脚本进行回放,就实现了自动化执行。本文以QTP(Quick Test Professional)进行脚本录制和回放。下面以QTP为基础,研究适合NGBOSS工程建设的自动化建设思路。

传统的自动化测试流程如图1所示,是面向过程的线性流程,目前业内最通用。

在这个流程下,业内主要有两种自动化模式:

(1)录制回放模式

录制回放模式的原理是以QTP录制的VBS脚本为基础,增加代码控制逻辑,将修改调试好的VBS脚本返给QTP回放,实现自动化。这种模式,脚本实质上是VBS代码,优点是可调用VBS多种函数,并能使用控制逻辑如if、else、exit、for等。缺点是维护成本较高,页面、逻辑、数据的变更都要遍历整个脚本,对涉及到的变更进行修改。在这种模式下,自动化流程是直线型的一维模式,逻辑、数据全都捆绑在脚本上,导致难以拆分业务,设计用例复杂,最终导致脚本凌乱。

(2)数据驱动模式

数据驱动模式,是在录制回放模式的基础上,将数据输入存储在独立的数据文件中,脚本只存放控制信息,测试时输入直接从文件中读取,这样同一脚本可以运行于不同的测试用例中,实现了脚本与数据的分离。这是一种二维模式,脚本和数据可分别设计,业务线条变得清晰。但此种模式仍需通过编写VBS脚本方式实现测试用例的编写,在涉及到多业务系统脚本编写时,脚本重复度高,用例编写需要专业的自动化测试人员进行。面对NGBOSS业务复杂的情况,重点业务一般有50~60项,全部通过VBS脚本实现,将带来自动化测试人力成本的快速提高。因此需要考虑通过降低脚本编写难度,使一般的手工测试人员经过简单的培训后,即可进行自动化测试用例编写工作,并实现测试用例编写人员和专业测试工具的解耦。

在传统自动化测试流程基础上,新建一个分层模型,对自动化过程进行分离、优化(如图2),自下向上分别为模型层、数据层、控制层和应用层。

(1)模型层是最底层,由测试工具识别的控件对象以及对象的识别脚本构成,模型层负责将控件对象和识别脚本分别组织并以友好的方式提供给数据层的标签库模块使用。

1)对象识别脚本在使用QTP录制时,QTP自动记录对象并生成测试脚本。该测试脚本包含了对对象的识别、执行动作和测试数据,使得测试脚本难以重用和维护。本文在测试框架模型层中只保留对对象的识别脚本,而把测试数据放到数据层、执行动作放到控制层管理,从而实现了相互之间的分离。

2)控件对象在测试框架模型层中,通过对界面元素的分析(UI分析)并和QTP对象识别机制相映射来组织控件对象。UI分析是从被测系统界面入手,记录页面层次并把该页面中的对象以要素的形式记录到数据库中,以达到结构化。

(2)数据层由标签库和测试数据库构成,标签库保存要素名和识别脚本的映射关系,测试数据库保存具体的测试数据。

1)标签库

标签库是针对某一个应用建立的,它可以通过学习而扩展,其中包含了图形用户界面交互的完整细节,包括界面和对象。本文通过打标的方式来对具体交互细节进行封装:首先利用QTP录制待测系统的执行过程,获取各测试对象的脚本;然后对录制脚本进行打标,实现要素名和测试对象的对应;最后对打标后的脚本进行分解并提取识别脚本和标签,生成标签库。

2)测试数据库

测试数据库提供具体的测试数据,其中测试数据与UI分析得到的测试对象相对应,每个测试对象根据系统需要,有不同的业务规则,如果业务规则比较复杂,则把业务规则分解成最小颗粒。针对每一个最小业务颗粒,测试人员至少要准备2组测试数据,分别为正例和反例:正例是指符合该测试点测试数据;反例是指不符合该测试点的测试数据。执行测试时必须保证正例能通过而反例不能通过,否则就说明该处存在BUG。

(3)控制层为自动化测试框架提供了一个控制入口,测试工程师利用控制层实现具体的测试意图:测试工程师可以对测试的执行顺序根据需要进行调整,使得测试不必按录制顺序回放;可以通过关键字设置对象的执行动作,实现各种操作;并可通过要素名匹配测试数据。

(4)应用层通过用例描述原语(ASL)具体实现测试的执行:ASL首先获取测试案例的某一控制文件,得到该测试逻辑并解析出测试数据标志和标签;然后通过要素标签在标签库中查找相应脚本,匹配测试数据库中测试数据,组合生成测试工具QTP可以执行的脚本;最后调用测试工具QTP实施自动化测试。

在这个模型下,主要有以下两种自动化模式:

(1)关键字驱动模式

关键字驱动模式是在数据驱动模式基础上简化脚本、分离业务。通过关键字描述语言,代替VBS代码语言,将业务逻辑从复杂的代码行转化成肉眼可见的一个个关键字语言描述行,实现业务、脚本和数据的分离。

(2)增强型关键字驱动模式

增强型关键字驱动模式是在关键字驱动的基础上开发自动化测试辅助平台,进一步实现脚本和业务的分离。这种模式是在已经开发关键字模式的基础上进行增量精确开发。

以上四种自动化模式,各有各的优缺点。总的来说,自动化技术和理念越来越先进,自动化开发成本呈递增趋势,自动化维护成本呈递减趋势。

从业务和自动化开发综合考虑:业务上,BOSS系统耦合性高、业务复杂,必须要将自动化从复杂的业务中剥离出来;自动化开发需综合考虑技术成熟度、开发成本、维护成本。

本文采用关键字驱动模式,而增强型关键字驱动模式,开发成本较高。可以先考虑开发关键字驱动模式,后面再视具体项目情况考虑是否开发辅助平台。下面将重点研究关键字驱动模式。

关键字驱动模式的实现思想是通过以关键字为驱动的脚本来取代QTP的VBS代码行脚本。下面举一个百度搜索的例子。

使用QTP录制一行打开百度的脚本如下:

SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\automind","open"

Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "search"

Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Click

这是普通模式下的脚本,在关键字驱动模式下,是要把这种VBS代码行脚本转化为以关键字为驱动的直观的脚本。以目前一种成熟的关键字驱动模式为例,上面这些VBS代码行等价于表1的脚本:

在这种模式下,脚本形式为Excel脚本,上面的脚本,使用Open、With、Type、Click四个关键字。这种模式将函数执行封装成关键字,并以Excel的形式编写脚本。框架将Excel脚本解析成VBS代码行,返回给QTP执行。

以上举例展现4个关键字。实际使用过程中,一般有四大类型关键字:一是操作类,用来实现动作执行,关键字一般有Wwith、Call Function、Open、OpenApp、Click、DbClick、Type、TypePath、TypeDate、ClickTable、TreeSelect等;二是控制类,用来实现脚本逻辑控制,关键字一般有满足条件执行脚本、跳转、循环等,如if、else、for、exit等;三是检查类,对执行过程中的对象或者产生的数据进行检查,确保业务流程的正确性,如assertSelected、assertNotSelected、assertChecked、GetTableData等;四是数据类,连接数据库,执行数据增删改查,如Run Sql、Run Sql Select等。

通过关键字驱动模式进行编写,可实现如下提升:Excel形式的脚本,通过关键字编写测试用例,一般熟悉测试的人员即可进行自动化测试用例的编写;Excel脚本中分information、script和data三个工作薄,information为脚本总体信息,script为脚本控制和执行流程,data为数据组合;script和data实现脚本控制和数据的分离;脚本维护变得更简单;生成Excel时报告对应每一个Excel脚本执行行,报告清晰。

3 自动化对开展工程建设测试的意义

自动化测试的特点,决定了自动化测试无法取代手工测试。自动化测试与手工测试都只是工程测试的一部分。自动化的意义在于:

(1)降低测试成本,提升测试效率

自动化测试可部署在服务器上,定时晚上执行,提升测试效率。假设自动化测试覆盖600个业务,由10个测试人员来执行,每人每天可执行30个业务,那么执行这600个业务一次,需要20人天的人力,10个人要执行2天。如果让自动化测试来执行,几台服务器晚上并行执行,即可执行完毕。也就是说,10个人执行600个业务1次,可节省10个人力和2天时间。如果自动化覆盖的业务更多,执行的次数翻倍,节省的人力和时间将成几何指数上升。

(2)为工程测试提供区别于手工测试的验收标准

自动化测试与手工测试的出发点不一样,从效果看,自动化测试经过多次执行,会发现一些手工测试无法发现的缺陷,弥补手工测试的不足。

事实上,发现BUG并非自动化的主要作用,甚至可以说,项目测试发现的BUG越多,自动化测试越难执行下去。一般来讲,手工测试能发现70%~80%的BUG,自动化测试能发现15%~30%的BUG。从BUG分布来讲,有交叉重叠部分,也有隐藏的都没有发现的部分。自动化能独立发现的BUG往往是小概率的,需要重复执行才能出现的隐性BUG。例如,在一次自动化测试执行过程中,发现程序core了一次,根据记录的日志,最终定位发现,原来是一起内存泄露故障。这种例子非常常见。

(3)回归测试版本测试

在回归测试和版本测试中,自动化测试可以得到大量应用,可以完全代替手工测试,从而释放人力。

参考文献:

[1] 王磊. 关键字驱动的自动化测试框架设计与实现[J]. 电子测试, 2010(8): 87-93.

[2] 接卉,兰雨晴,骆沛. 一种关键字驱动的自动化测试框架[J]. 计算机应用研究, 2009(3).

[3] 李弦,陈恭亮. 基于BOSS系统的业务量分析研究[J]. 移动通信, 2010(12): 92-95.

[4] 郭利江,夏嘉. 一种简化自动化测试脚本编写维护的应用方法[J]. 移动通信, 2013(8): 58-63.

[5] 尚斌. 以NGBOSS提升对全业务产品的支撑能力[J]. 通信世界, 2011(2): 35-35.

上一篇:360搜索携手《太极侠》实现产业联动 等 下一篇:零投资实现WLAN资源共享方案的创新与实践