网银资金管理系统引入自动化测试的可行性研究报告.docx
《网银资金管理系统引入自动化测试的可行性研究报告.docx》由会员分享,可在线阅读,更多相关《网银资金管理系统引入自动化测试的可行性研究报告.docx(16页珍藏版)》请在冰豆网上搜索。
网银资金管理系统引入自动化测试的可行性研究报告
XX客户网银资金管理系统引入自动化测试的可行性研究报告
1.概述
1.1.目的
本文档对XXXX客户网银资金管理系统项目引入自动化测试工具的可行性进行评估,为项目经理提供决策参考。
1.1范围
本文档描述了XXXX客户项目情况、现有测试工作流程、自动化测试本身的一些情况,对测试工作量进行了估算,最后对估算结果进行了分析,并依此提出了一些建议。
本文档中讨论的自动化测试工具主要是功能测试工具。
1.2术语定义
本文档涉及了几款自动化测试工具:
TestManager:
IBM公司的测试管理工具,属于Rational系列产品之一。
Robot:
IBM公司的性能测试工具,属于Rational系列产品之一。
RFT:
RationalFunctionTester,IBM公司的功能测试工具,属于Rational系列产品之一。
TestDirector:
Mercury公司生产的测试管理工具。
Loadrunner:
Mercury公司生产的性能测试工具。
QTP:
QuickTestProfessional,Mercury公司生产的功能测试工具。
1.3参考文档
2.项目介绍
2.1.项目背景
XXXX客户网银资金管理系统,是XXXX客户为了加强银行账户管理,提高资金利用效率而开发的一套资金管理系统。
2.2.项目开发、运行环境
XXXX客户网银资金管理系统遵循的开发规范如下:
Ø操作系统:
Windows2003或者HPUnix或者SCOUnix或者AIX或者Solaris
Ø数据库平台:
Informix9.0
ØJ2EE应用服务器:
Weblogic8.1.4
Ø开发平台:
Eclipse(3.1以上版本)
2.3.项目进度
项目的预定计划如下:
序号
阶段名称
工期
开始时间
结束日期
1
需求阶段
34工作日
2006-5-10
2006-06-26
2
开发阶段
64工作日
2006-6-12
2006-9-7
3
测试执行阶段
48工作日
2006-7-4
2006-9-7
2.4.项目特点分析
根据业务需求分析,业务量主要集中在银行业务数据操作,包括银行数据查询,银行业务数据变更,因为和银行的交互集中在前置机上,且银行数据量大,操作复杂,耗费时间长,所以系统在多用户并发操作时,可能存在性能瓶颈。
另外,由于XXXX客户的分支机构众多,操作人员多,数据量大,在多用户并发操作时,性能和效率会有较大影响。
3.现有测试流程
现有的测试流程按照阶段划分为测试设计阶段和测试执行阶段。
测试设计阶段的主要工作是根据业务需求说明书和系统需求说明书来设计和编写测试用例。
根据以往的经验,将测试用例划分成三个部分:
Ø测试需求分析;
Ø测试方案;
Ø数据执行步骤。
测试执行阶段的主要手段是手工测试,如果项目有性能方面的需求,再通过Mercury公司的性能测试工具LoadRunner来进行性能方面的测试。
手工测试时,要完成以下工作:
Ø根据测试需求分析了解业务;
Ø根据测试方案来执行测试;
Ø根据数据库和详细设计来验证系统的具体实现;
Ø根据测试结果补充、修正测试用例中的分析、测试方案部分。
系统上线部署之前两到三天,要进行内部的验收测试,其目的有两个:
Ø确认系统已经准备就绪,预定功能已经实现;
Ø即将上线部署的软件是正确的版本。
主要通过重新搭建系统环境,重建数据库表的形式来开始验收测试。
4.自动化测试简介
随着软件开发技术和工具的提高,软件工程和软件过程实践的推广,软件测试日益得到重视和专业化。
自动化测试更成为热门话题。
测试自动化就是充分利用市场已有的或自行开发的测试工具,全部或部分替代手工测试、完成手工测试无法完成的测试任务,以及相关的测试数据的记录和测试报告的生成等。
相对于手工测试而言,测试自动化通常具有速度快、执行效率高、执行过程受外界因素干扰小、测试结果准确等优点,缺点是前期投入较大,所以在采用测试自动化之前应当做好相应的评估工作。
4.1.自动化测试的目的
自动化测试的目的是通过自动执行测试脚本,使测试人员在更短的时间内能够更快地完成更多的软件测试,并提供以更高的频率执行测试的能力,从而有效降低测试成本、提高测试效率。
4.2.自动化测试的前提
自动化测试有几个前提:
Ø测试人员的编程能力;
Ø重用测试脚本的设计;
Ø人机交互界面的早期冻结;
Ø测试脚本开发的投入;
Ø测试人员对测试工具的熟练程度。
4.3.自动化测试的优势和局限[1,2]
自动化测试的优势:
Ø对新版本执行回归测试
对于产品型的软件,每发布一个新的版本,其中大部分功能和界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试,从而可以让测试达到测试每个特征的目的。
Ø 更多更频繁的测试
在回归测试阶段,如果是每天/每2天都要发布一个版本供测试人员测试,一个系统的功能点有几千个上万个,手工测试将是非常的耗时和繁琐,而且非常的枯燥,这样必然会使测试效率低下。
完善的自动化测试可以替代测试人员的手工测试。
Ø一致性和可重复性
由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,人是很难做到的。
由于自动化测试的一致性,很容易发现被测软件的任何改变。
自动化测试替代手工测试的困难:
Ø自动化测试的目的在于发现旧有缺陷,而手工测试的目的在于发现新缺陷。
事实证明新缺陷越多,自动化测试失败的几率就越大。
发现更多的新缺陷应该是手工测试的主要目的。
测试专家JamesBach总结得出,85%的缺陷靠手工发现,而自动化测试只能发现15%的缺陷。
Ø技术问题、组织问题、脚本维护
自动化测试的推行,有很多阻力,比如组织是否重视,是否成立这样的测试团队,是否有这样的技术水平,对于测试脚本的维护工作量也挺大的,是否值得维护等等问题都必须考虑。
4.4.自动化测试工具对比[3,4]
目前比较主流的自动化功能测试工具主要是Mercury公司的QTP、Winrunner,以及IBM公司的RationalFunctionTester。
下面对QTP和RationalFunctionTester的功能来进行对比:
功能指标
RationalFunctionTester
QTP
用户界面
与Eclipse集成
独立的GUI
脚本语言
Java
VBScript
测试Web系统
支持
支持
数据驱动
内建数据池
从Excel中获得数据
检查点
支持
支持
脚本管理工具
TestManager
TestDirector
其它
支持BusinessProcessTesting(BPT)
目前,我们测试人员对QTP比较熟悉,没有使用过RationalFunctionTester。
就功能上来说,RationalFunctionTester和QTP差别不大。
5.测试工作量估算
5.1.手工测试工作量估算
手工测试工作量的估算原则:
根据业务和功能的复杂程度,以及以往项目的实际数据做参考,得出测试完成一遍的工作量。
在整个项目测试周期中,测试小组会对整个系统进行两到三轮的测试(一般是必须的)。
根据以往项目的统计数据:
每一轮手工测试的工作量是上一轮工作量的50%,直到达到临界值,即完成一轮手工测试的最小时间后,工作量不会再减小。
项目统计数据还表明:
手工测试中,后期的测试工作占到全部测试工作的40%~50%。
业务功能点
测试完成的工作量(人日)
一级功能
二级功能
第一轮
第二轮
第三轮
系统管理
职责管理
2.0
1.0
0.5
用户管理
3.0
1.5
0.8
基础设置
机构类型设置
1.0
0.5
0.3
机构设置
1.0
0.5
0.3
币种设置
1.0
0.5
0.3
银行类型设置
1.0
0.5
0.3
账户用途设置
1.5
0.8
0.4
账户扩展属性设置
1.0
0.5
0.3
业务类型设置
3.0
1.5
0.8
账户管理
开户处理
4.0
2.0
1.0
销户处理
4.0
2.0
1.0
变更处理
4.0
2.0
1.0
账号升级申请
3.0
1.5
0.8
冻结与解冻
3.0
1.5
0.8
账户信息查询
2.0
1.0
0.5
资金清算
支出资金申请
5.0
2.5
1.3
归集资金申请
5.0
2.5
1.3
资金划拨
5.0
2.5
1.3
资金计划
行项目设置
2.0
1.0
0.5
编制计划
2.0
1.0
0.5
审批计划
2.0
1.0
0.5
资金监控
账户当日余额查询
2.0
1.0
0.5
账户历史余额查询
2.0
1.0
0.5
账户历史流水查询
2.0
1.0
0.5
监控项设置
5.0
2.5
1.3
监控报表和提醒
3.0
1.5
0.8
银企接口
银行指令查询
5.0
2.5
1.3
银行指令维护
5.0
2.5
1.3
自动归集策略设置
5.0
2.5
1.3
交易核对
5.0
2.5
1.3
审批流
审批设置
4.0
2.0
1.0
权限转移
4.0
2.0
1.0
每轮合计工作量(人日):
97.5
48.8
24.4
用户手册
5.0
验收测试
12.0
手工测试合计工作量:
187.6人日
按照4个测试资源计算,手工测试完成共需消耗187.6/4=46.9个工作日。
与预定计划的48个工作日的测试周期接近。
后期的测试工作占测试工作的45%左右。
指标
数值
估算测试工作量
187.6人日
测试资源
4人
估算测试工作日
187.6/4=46.9日
计划测试工作日
48日
后期测试工作量比例
(48.8+24.4+12)/187.6=45%
对手工测试的工作量估算没有考虑开发进度delay的因素。
一旦开发进度delay,则第3轮手工测试将无法完成,只能把优先级别较高的功能测试完成。
开发进度delay的原因很大一部分来自需求变更。
5.2.引入自动化测试后工作量估算
引入自动化测试工具后,手工测试的主要工作量将主要集中在第一轮测试,而自动化测试脚本也根据被测试功能和业务的复杂程度不同而不同。
根据下表的统计数据,在自动化测试中采用数据驱动的方式,投入产出比比较合适。
结构
成本
收益
净收益
NoAutomation
0
0
0
RecordingandPlayback
8.3
11
2.7
Data-drivenstructureusingdatapools
8.4
18
9.6
Frameworkstructure
9.8
15
5.2
Framework/data-driven(hybrid)structurefocusingonviewsoftheapplicationandusingdatapools
11.6
19
7.4窗体底端
根据业内的统计数据,手工测试与自动化测试脚本编写的工作量比例约为3:
7,在不考虑需求变更的情况下,测试脚本的维护工作量为建立脚本工作量的10~20%,在估算时,取中间值15%。
引入自动化测试后工作量估算为:
业务功能点
测试完成的工作量(人日)
一级功能
二级功能
手工测试
自动化脚本
脚本维护
系统管理
职责管理
2.0
4.7
0.7
用户管理
3.0
7.0
1.1
基础设置
机构类型设置
1.0
2.3
0.4
机构设置
1.0
2.3
0.4
币种设置
1.0
2.3
0.4
银行类型设置
1.0
2.3
0.4
账户用途设置
1.5
3.5
0.5
账户扩展属性设置
1.0
2.3
0.4
业务类型设置
3.0
7.0
1.1
账户管理
开户处理
4.0
9.3
1.4
销户处理
4.0
9.3
1.4
变更处理
4.0
9.3
1.4
账号升级申请
3.0
7.0
1.1
冻结与解冻
3.0
7.0
1.1
账户信息查询
2.0
4.7
0.7
资金清算
支出资金申请
5.0
11.7
1.8
归集资金申请
5.0
11.7
1.8
资金划拨
5.0
11.7
1.8
资金计划
行项目设置
2.0
4.7
0.7
编制计划
2.0
4.7
0.7
审批计划
2.0
4.7
0.7
资金监控
账户当日余额查询
2.0
4.7
0.7
账户历史余额查询
2.0
4.7
0.7
账户历史流水查询
2.0
4.7
0.7
监控项设置
5.0
11.7
1.8
监控报表和提醒
3.0
7.0
1.1
银企接口
银行指令查询
5.0
11.7
1.8
银行指令维护
5.0
11.7
1.8
自动归集策略设置
5.0
11.7
1.8
交易核对
5.0
11.7
1.8
审批流
审批设置
4.0
9.3
1.4
权限转移
4.0
9.3
1.4
每项合计工作量(人日):
97.5
227.5
34.1
用户手册
5.0
验收测试
4.0
合计工作量:
368.1人日
在使用了自动化测试工具以后,验收测试只需要搭建环境和数据初始化,效率提高了,测试工作量减小到4人日。
计划的测试资源为4个,计划的测试工作日为48日,故计划工作量为192人日。
在未引入自动化测试工具以前,第二轮和第三轮及验收测试的工作量合计为(48.8+24.4+12)=85.2人日,引入自动化测试以后,后期的测试工作量为(227.5+34.1+4)=256.6人日。
指标
公式
数值
计划测试工作日
48日
计划测试资源
4人
计划测试工作总量
48*4
192人日
替代的手工测试工作量
48.8+24.4+12
85.2人日
估算自动化测试工作量
227.5+34.1+4
265.6人日
估算测试工作总量
368.1人日
估算测试工作日
368.1/4
92日
估算测试周期
2006年7月4日-
2006年11月8日
上表的数据表明,实施自动化测试,在最好的情况下(不考虑学习曲线和需求变更),估算测试周期为2006年7月4日~2006年11月8日,比预定计划的项目开发完成时间晚2个月。
5.3.学习曲线、需求变更对工作量的影响
根据项目管理的相关理论,学习曲线和需求变更将分别会增加30%的工作量,考虑到对测试工具的了解程度,QTP的学习成本会少一些,估计为10%,FunctionTester的学习成本将为30%。
估算测试工作量为:
指标
没有需求变更
有需求变更
公式
数值
公式
数值
手工测试估算工作量
187.6人日
187.6*(1+30%)
243.9人日
使用自动化工具估算测试工作量
QTP
97.5+265.6*
(1+10%)+5
394.7人日
97.5*1.3+265.6
*1.4+4
502.6人日
RFT
97.5+265.6*
(1+30%)+5
447.8日
97.5*1.3+265.6
*1.6+5
556.7人日
估算测试工作日
QTP
384.8/4
98.7日
490/4
125.6日
RFT
436.1/4
111.9日
542.3/4
139.2日
估算测试周期
QTP
2006年7月4日~
2006年11月17日
2006年7月4日~
2006年12月26日
RFT
2006年7月4日~
2006年12月6日
2006年7月4日~
2007年1月15日
上表的估算数据表明,实施自动化测试,在最坏情况下(考虑学习曲线和需求变更),估算测试工作日为139.2日,测试周期为2006年7月4日~2007年1月15日,比预定计划的开发完成时间晚4个月。
6.分析和建议
对测试工作量的估算表明,在不考虑学习曲线和需求变更的情况下,使用自动化测试工具的估算工作量为手工测试工作量的两倍。
如果XXXX客户希望在系统上线后,能够自己维护BBBB公司提供的自动化测试脚本,项目组的测试人员的工作量将为手工测试的3~4倍。
另外,行业经验,自动化测试工程师的成本约为普通测试工程师的两倍。
经过项目组讨论,有以下三个建议:
建议一:
本项目暂只实行手工测试。
为保证计划的上线时间――9月7日,在本项目中不施行自动化测试,仍然使用传统手工测试。
建议二:
自动化测试分段实施。
7月到9月施行手工测试,保证项目进度和质量。
9月到明年1月实施自动化测试,项目上线延迟到明年1月份。
建议三:
对自动化测试只做试用的尝试。
如果XXXX客户客户希望最终能够获得一份Robot的试用报告,测试人员可以在项目测试中对一到两个功能做自动化的尝试,估算比计划的项目上线日期推迟10天左右。
即项目的上线时间为2006年9月16日。
7.参考资料
1.《软件工程》王长元李普惠等编著。
2.《测试员》电子期刊200504期《软件测试管理》主编:
陈绍英
3.IBMRationalFunctionalTester工具帮助
4.Rational完成自动化功能测试宁德军(IBM中国有限公司软件部Rational高级技术专员)