查看: 11780|回复: 7

以RUP原则实施软件自动化测试

[复制链接]
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:03 | 显示全部楼层 |阅读模式
张振兴 (sinckyzhang@hotmail.com), 测试工程师

简介: 本文将根据IBM Rational的RUP原则来讲解实施软件测试自动化的过程,以此必将避免以上失败,使自动化测试真正在软件开发活动中发挥其强大优势。全文第一部分重点阐述:自动化测试的优势、自动化测试的四个关键过程、优秀开发过程具备的要素、企业为软件测试自动化提供的组织支持。


内容概要
很多人理解软件测试自动化,就是找到一款自动化工具,然后在软件项目里开始使用。但是大抵最后都会失败,甚至还会浪费很多不必要的资源和时间。一般来说,自动化测试项目失败的原因有两个方面:
  • 不合理的期望
  • 不合适的实现
本文将根据IBM Rational的RUP原则来讲解实施软件测试自动化的过程,以此必将避免以上失败,使自动化测试真正在软件开发活动中发挥其强大优势。全文第一部分重点阐述如下主题:
  • 自动化测试的优势
  • 自动化测试的四个关键过程
  • 优秀开发过程具备的要素
  • 企业为软件测试自动化提供的组织支持
第二部分将讲解以下主题:
  • 成功自动化测试的计划过程
  • 自动化测试的最优化设计
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:05 | 显示全部楼层
前言

众所周知,软件测试是目前软件工程领域唯一的朝阳行业;所谓朝阳行业,就意味着挑战与机遇并存!有人说软件测试既是科学又是艺术,但凡称为既是科学又是艺术的学科就是不成熟的学科,软件测试也如此,它也是不成熟的领域,在其发展道路上还存在着太多的不足和难以克服的困难;因此,很多国内外的专家和公司都在积极的探求着更规范化和标准化的测试流程,以及更成熟、更易实现的技术方法。

从宏观意义讲,软件测试可以划分为以下三个方面:
  • 软件测试管理:测试流程管理、测试职业管理,测试技能方法管理等
  • 软件测试技术方法:根据软件测试的不同阶段、不同测试类型、不同软件类型等,深入研究软件测试的技术及方法
  • 软件测试自动化:自动化测试流程、自动化测试管理、自动化测试工具等
软件测试大致分为以上三类,每类可细化为更多子方面,例如第二类根据测试类型还可细化为功能测试、性能测试、安全测试等,根据测试方法可细化为黑盒测试、白盒测试、灰盒测试等。这里,之所以讲软件测试自动化单独列出来,是考虑到软件测试自动化既包括技术方法方面,又包含管理方面;更重要的是,软件测试自动化是软件测试领域无法逾越的发展阶段,随着应用软件程序规模的不断扩大,业务逻辑的不断复杂,以及从业者协作关系的日益重要,在软件的开发周期里适当使用自动化测试是非常必要的!

使用道具 举报

回复
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:08 | 显示全部楼层
自动化测试介绍

一)自动化测试的神话和现实
自动化测试能增强软件测试的规范化和标准化,如果实施方法得当,它可以:
  • 减少浪费在重复性手工测试工作上的时间
  • 创建优良可靠的测试过程,减少人为错误
  • 增强测试的覆盖率以及产品质量
但是,测试自动化不能:
  • 完全代替手工测试
  • 立即降低测试投入,提高测试效率
  • 保证100%的测试覆盖率
  • 补偿劣质的测试过程
要对自动化测试形成正确的认识,切不可好高骛远,脱离实际的以为企业实施了测试自动化,就可以克服从前的一切问题。实际上,软件测试自动化在企业内部的推广,也是一个与时俱进的持续性过程。

[size=1.2em]二)自动化测试工具
自动化测试定义为通过测试自动化工具开发和执行测试脚本,以评估软件的需求。测试工具分为两类:
  • 找错工具(fault-finding):根据既定的测试标准寻找被测程序中的缺陷,包括静态分析工具(一些白盒测试工具例如parasoft的jtest含有该功能)、动态测试工具(市面众多的测试工具robot、winrunner、qarun等)
  • 测试支持工具:测试管理工具(如testmanager、testdirecter等)、其他支持工具(如clearquest、clearcase等)
[size=1.2em]三)自动化测试成功的关键要素
企业购买了自动化测试工具,下一步就是要在公司内部推广自动化测试。那么,自动化工具能够给企业的测试流程带来多少变更呢?如何在测试工作中使用自动化测试工具呢?RUP提出这样的自动化测试关键要素:
  • 自动化测试必须看成一个软件开发项目,因为测试脚本是代码,而测试代码是自动化测试的根本;有效的开发并维护良好的测试脚本,是自动化测试的重中之重。
  • 自动化测试同样需要经历计划、设计、开发、维护、版本控制过程,具体而言,包括四个关键过程:
    • 清晰的定义和可持续的实现过程
    • 获得企业组织管理上的支持
    • 审思成熟的项目计划
    • 稳定的结构设计
以下逐一讲解每个关键过程。

使用道具 举报

回复
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:13 | 显示全部楼层
定义测试过程

一)定义测试过程的重要性
所谓过程,是为了构建某目标而设计的一系列分步执行的动作;软件工程里,目标是构建软件系统或增强现有软件系统;软件测试里,目标是高效的测试软件程序,发现软件缺陷并确认软件需求。
一个定义良好并严格根据其实施的测试过程,是自动化测试成功的关键。所谓凡事预则立,不预则废,在一个随机或非系统性的测试环境里,很难实施测试自动化;缺乏稳定的测试过程,拿起工具就开始录制脚本等,这样的方式是愚蠢的,所做的投入也必将导致失败。
二)RUP简介
RUP(Rational Unified Process)是IBM Rational software提出的软件工程实施过程,在业界经历了数千个软件项目的实践,是当前最为成功的软件工程方法论之一!RUP是一种迭代的、以架构为中心的、用例驱动的软件开发方法;RUP是一种具有明确定义和结构的软件工程过程,它明确规定了人员的职责、如何完成各项工作以及何时完成各项工作,以及软件开发生命周期的结构,定义了主要里程碑和决策的关系;RUP也是一个过程产品,提供了可定制的软件工程的过程框架,支持过程定制、过程创作和多种类型的开发过程,可通过装配过程产品得到过程配置。RUP配置可以用于不同规模的开发团队和规范程度不同的开发方法,RUP产品包含过程配置和过程视图,以指导项目经理、开发人员、测试人员等角协作开发软件。

RUP的核心包含几个基本原理,它们支持应用迭代方法进行软件开发:
  • 尽早并且不断的化解重大风险
  • 确保满足客户的需求
  • 把注意力集中放到可执行的软件上
  • 尽早在项目中适应变化
  • 在早期确定一个可执行架构
  • 使用构件构造软件系统
  • 建立高效团结的开发团队
  • 始终重视质量
从管理角度观察RUP,即业务和经济方面,对应项目的进展,软件生命周期包括四个阶段:
  • 起始阶段-构建最终产品的设想和业务案例,确定项目范围
  • 细化阶段-计划必要的活动和资源,详细确定功能并设计架构
  • 构建阶段-构建产品,直到一个可交付用户的产品完成
  • 移交阶段-产品交付用户,包括制造、交付、培训、支持、维护等


从技术角度看,软件开发可视为一连串的迭代过程,通过迭代开发软件得以增量演进,每个迭代都以一个可执行的产品发布而结束,每次发布都伴随支持性工件:版本描述、用户文档等。一次迭代可包括以下活动:计划、分析、设计、实现、测试,据其在开发周期的位置不同,所占比重也不同。



三)优秀测试过程的要素
RUP提出的开发过程可以有效应用到测试和自动化测试中,因此,根据RUP原则,我们得出优秀测试过程所应具备的几大要素,列举出来供大家参考:
  • 初始计划-定义测试目标
  • 定义需求-确定测试什么,可落实到《测试需求说明书》
  • 分析设计-决定如何测试,划分测试阶段、类型,以及测试方法等
  • 实现-创建与实现测试,编写测试用例或开发测试脚本,并文档化
  • 测试-调试测试(针对自动化测试脚本)
  • 执行-执行测试
  • 评估-评估测试结果并改进测试过程
  • 配置与变更管理-测试脚本的版本控制和测试缺陷的跟踪
  • 环境-定义支持测试所需的环境
企业在实施自动化测试前,可根据上述内容定义软件项目的自动化测试过程,做到每条项目都有所规范,任何测试成员都据此实行。至于内容详细程度和文档格式,不必统一,重要的是内容规定了这些原则,并且在实际工作中有所贯彻。

使用道具 举报

回复
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:15 | 显示全部楼层
对自动化测试的组织层支持

一) 获得组织层支持的必要性
企业实施自动化测试,不是单纯测试部门的事情,更不是几个测试工程师单靠对测试工具的强烈兴趣,就能够在企业内部推广使用的。有数据表明,很多自动化测试项目的失败,并非技术的限制,更多的是缺乏企业组织管理层的支持,组织管理层的支持与否可以瞬间中断一个项目,而且没有领导层的支持,购买工具、测试环境与资源的花销,根本无从实现;而且推广自动化测试,势必影响企业内部软件的开发流程,试想没有高层的审批,实施工作根本无从下手。因此,为最大程度的保证自动化测试的实施,花费一定的时间获得上层组织的支持和必要的项目资源是非常必要的!

二) 正确看待自动化测试项目
绝对不要把自动化测试简单的看作是运用一套自动化测试工具的过程,实施软件测试自动化决不单单如此。我们应该把实施自动化测试的软件看成一个项目,并且把自动化测试项目看成一个企业中新的里程!一个新里程有两个要素:
  • 开创里程-确定自动化测试的涉众
  • 维持里程-改进组织管理过程以适应自动化测试

三)自动化测试的涉众
涉众,是RUP中的名词,表示软件开发中涉及到的各种角色,如用户、设计人员、开发人员乃至测试人员等。实施软件测试自动化,必须获得涉众的支持,这也是自动化测试涉众的根本任务。那么,需要获得那些涉众的支持呢?

1) 企业高层领导--从企业的高层领导获得
  • 自动化测试的可信度
  • 对测试工具、培训方面的财务支持
  • 企业其他部门人员的支持,如审批、招聘等
在和企业高层领导交涉时,应该如实放映自动化测试,说明自动化测试并非一定获得投资回报,也并非能立即获得回报,并从企业角度设定切实可行的期望目标,例如只是在某类软件项目的某种测试类型或阶段实施自动化测试。

2) 测试主管--测试主管或经理直接监督企业整个测试过程的实行,并确定测试日程、战略、资源分配及工作细节,故而有必要获得测试主管对自动化测试的支持。
在和测试主管或经理交涉时,要让他们清楚自动化测试的功效,说明如何使测试工作更加有效,还要让他们通晓如何计划、实施自动化测试项目等。

3) 测试人员--和测试人员沟通,因为一旦实施了自动化测试,必将改变测试人员的原有工作方式,需要他们学习新的技能,与开发人员之间也要保持更紧密的合作,另外,也需要他们严格遵守新的测试流程和规范。 我们需要测试人员理解自动化如何提高工作效率,并清楚遵守测试流程的必要性,还要明确认识自动化测试和手工测试的平等关系,并非所有人都要成为自动化测试专家,自动化测试也无法完全取代手工测试,以免造成不必要的心理失衡。

4) 开发人员--获得开发人员对自动化测试的支持是非常关键的,我们需要鼓励开发人员开发优质的代码,增强软件的可测性,并通过有效沟通提高测试的覆盖率。另外,RUP提倡开发人员执行每个发布版本的冒烟测试。

四)自动化测试规范的制订
为什么需要制订企业级的自动化测试规范呢?

自动化测试规范是企业高层对该方案的授权见证,同时加强与企业其他部分的交流与合作;没有该规范,遇到问题时会手无足措,例如对于自动化测试的负责人,将会缺少执行的可信度,对于自动化测试实行人,将会遭受各种阻力。另外,企业没有清晰明确的测试目标和方案,各部门制订各自的规范必将在实行时发生冲突,从而导致项目的最终失败。

企业级自动化测试规范是对企业的测试流程及规范进行高标准的定义和描述,它定义了组织的测试目标、实施方式及遵循的标准,并包含了自动化测试在整个测试过程里的具体实施步骤。

那么,谁来制订自动化测试规范呢?RUP并没有规定非要由何人来制订,实际上,可以是任何有自动化测试技能或经验的人,例如自动化测试的倡导者、测试主管等。制订完成后,需要得到企业高层如CTO/VP的审批。

以下是某公司的自动化测试规范样例:
XYZ公司自动化测试规范
介绍:
该规范定义了XYZ公司的自动化测试过程,适用于公司所有的软件测试活动,对我公司的软件测试活动的方法和步骤以及测试资源进行文档化。任何测试活动都要遵循该规范规定的标准和结构,但是对于特定项目的测试活动,可制订项目级的测试策略文档。
目标:
XYY公司的软件测试目标是通过定制标准衡量软件系统的功能及其他非功能指标,以适应公司的商务运作,并以此衡量过程作为评测软件发布的通道;个别测试项目还需参考项目的相关测试策略及计划文档。
方式:
我公司测试标准以rational unified process(RUP)为参考,并符合RUP规范。
组织:
我公司采用手工测试和rational自动测试工具结合的方式实施软件测试
XYZ公司采用有资格认证的人员确定测试方案,并通过技能培训保证相关人员在各自测试区域得到最大发挥。
步骤:
… …

五)自动化测试的成员构成
首先说一下自动化测试成员的技能需求。一般来说,自动化测试项目成员的全部技能大致包括:

测试技能:理解GUI测试设计和标准、理解被测软件的商务逻辑、理解软件测试等测试管理技能:包含测试数据管理、测试设计和开发、测试战略定义、自动化测试项目管理等自动化测试技能:包含自动化测试工具使用、编程、测试套件的设计等技术技能:包含操作系统、数据管理、网络与硬件等软件开发技能:包含编程、软件系统设计、软件开发支持工具(配置与变更管理等)因此,构成软件自动化测试的项目成员包括(实际中可做相应调整或合并):
  • 测试战略定义者
  • 项目管理者
  • 测试数据管理者
  • 测试设计和开发者
  • 测试执行者
  • 测试支持者(配置管理与变更管理等)

使用道具 举报

回复
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:24 | 显示全部楼层
[size=1.5em]自动化测试的计划管理
[size=1.2em]一)自动化测试计划管理的必要性
计划管理是自动化测试的关键实现,在一个测试项目里,虽然紧缩或者干脆忽略掉制订计划的过程是相当具有诱惑力的事情,尤其在项目周期短、时间紧的情况下;但是,没有明确的计划,尤其对于初次实施自动化测试的软件企业,根本无法体现自动化测试的种种优势,虽然可以在初期稍稍感觉到自动化测试的甜头。因此,针对自动化测试项目,一定要制订明确良好的计划。
RUP提出计划就是投资。
  • 录制/回放脚本的弊端:企业购买自动化测试工具后,通常的做法都是热血沸腾的开始将工具分派给相应部门,并立即着手创建、执行测试,虽然通过录制/回放脚本可以获取短暂的受益和喜悦,但是从长期来看,自动化测试的真正收益来自于脚本的重用,而这根本不是靠简单的录制/回放就能获得的。虽然获取计划的时间和资源比较困难,但是我们也要投资一定的时间和精力,以获取长期回报。越早投资于当前自动化测试项目的计划过程,就会从将来的项目中获取越大的收益。
  • 时间、资源需要计划:如果对自动化测试不做时间、资源上的计划安排,可想而知,最终消耗和浪费的东西,不单单是个自动化工具而已。
  • 对高层领导的承诺:在从涉众范围获得对自动化测试的支持后,如果没有正规明确的计划流程,就开始盲目推广工具使用,从而导致无法从中获得投入的收益,那么对企业高层领导的承诺也将付诸一炬,如此可想象企业高层将如何处理这一行为,谁又能负担的起呢!
计划要与时俱进。
  • 最初的计划无法覆盖全部内容。从来没有第一次做的东西可以涉及全部内容,也从来不会有日后不经修改的。
  • 初次的计划必将为今后提供参考。一般来说,初次的自动化测试计划内容包含选择那些易于维护和复用的基本功能结构,然后对其编写测试脚本。从这个意义来说,我们意识到在初始阶段对自动化测试的全部投入,必将对将来测试项目产生深远的影响。如果在第一个项目里我们严谨的实行安装、设计等工作,那么对于后来的项目,工作量将会减少很多。
[size=1.2em]二) 自动化测试的项目计划
您见过一个软件开发项目没有明确的计划能够成功的么?不能!正如一个软件开发项目一样,自动化测试也包含着种种复杂性,一个稳定的测试计划帮助您分解测试的复杂性,并减少测试的风险。
优秀的测试项目计划包括:
  • 以简单术语描述测试项目
  • 计划项目的日程安排
  • 评估项目的风险
  • 设置项目的沟通计划
  • 确定项目的所需资源
我们重点讲述后四项内容。
日程管理:一款优秀的日程安排对任何测试项目都是重要的,尤其初次实施自动化测试,必须考虑构建自动化测试的时间。项目计划的日程应考虑如下方面:
  • 对项目成员进行自动化测试工具和脚本开发的培训
  • 创建自动化测试的基本架构,包括定义测试流程、开发标准、创建自动化测试框架等
  • 计划和设计测试用例
  • 开发测试脚本
  • 创建并执行测试套件
  • 评估输入:需求、测试用例、测试策略等
  • 配置测试环境:硬件、软件、环境等
计划的编写形式可使用microsoft的project软件,这也是业界通用的计划管理工具。
风险管理:自动化测试项目计划的风险包括:
  • 时间风险
  • 资源风险
  • 人力风险
  • 项目细节风险
这四项是概括性描述,实际项目中的风险还要根据实际情况细化并评估,然后写出避免风险的预备方案;如人员中途离职、需求变更造成的时间变更等。
更详细的软件测试项目的风险列表,请参考如下表格:



沟通计划:由于项目成员间的经验偏差,以及交流能力的不足,经常会出现发生问题时不知该找何人负责的麻烦。因此,有必要在自动化测试计划里规定沟通计划的方面。所谓沟通计划,就是事先在计划里预计测试实施中出现的各种错综问题,然后指定每种问题出现时候的责任人,以免到时发生时,左右徘徊。
资源计划:测试项目所需资源包括两方面:
  • 人力资源
    人数
    工作时间
  • 设备资源
    硬件(服务器、客户端等)
    软件
    预备时间
[size=1.2em]三) 项目的自动化测试策略
自动化测试的策略就是确定哪些测试实行自动化测试,以及何时采用自动化测试。
人们对自动化测试的一个误区就是将测试尽可能的实行自动化,并且越早越好;通常的理解是,自动化测试程度越高,自动化测试工具的利用率越高,我们从中获取的投资收益就越大。实际上,我们从自动化测试工具获得的收益应该体现在测试质量上,而不是数量上,选择哪些测试实行自动化,如何开发执行测试脚本,要比究竟多少测试实行自动化要重要的多。
如何选择适合实行自动化的测试呢?通常分三个步骤:
  • 提取适合自动化的测试
  • 评估每个自动化测试的时间消耗
  • 根据测试目标确定自动化测试的优先顺序
首先,制订表格提取适合自动化测试的项目,这里的原则是挑选最能获得投资回报的测试项。表现在:
  • 最能缩短时间周期
  • 最能减少风险
  • 最能提高测试精度
RUP推荐以下测试类型最适合实行自动化测试:
  • 重复性最大-例如数据的边界值测试、回归测试等
  • 冒烟测试-每个发布版本提交测试欠的基本功能确认
  • 配置测试-需要在不同支持平台的测试
  • 郁闷的测试-对于手工测试看似郁闷乏味的测试
  • 复杂的测试-难以手工执行,或者容易出错,即便也难于自动化测试,但可做相应考虑
  • 需要对测试结果做电子记录的测试
然后,评估自动化测试的时间。目前没有简单的数学模型判断自动测试和手工测试的时间消耗比例;但是根据RUP测试专家的估计,开发一个自动化测试的时间,是手工测试的3到10倍,对于复杂的测试,甚至更长。因此,一个需要100小时的测试套件,如果实行自动化测试,需要300到1000小时或更多的时间。RUP测试专家Cem Kaner认为从创建、校验、文档化自动测试的时间消耗是手工测试同样过程的3到10倍;自动化测试专家Linda Hayes认为是5到10倍。

任何估计都是一种猜测而已,我们必须根据企业测试人员的实际测试技能、测试软件的实际特征,以及测试工具的实际使用复杂度进行判断。但是有一点是无可厚非的,就是初次实施自动化测试的时间消耗,要比熟悉工具和测试流程后需要的时间更长。因此在评估自动化测试的时间消耗时,一定要将其考虑在内。例如,一个1600个测试用例的项目,估计前400个用例每个需要4个小时,下400个每个需要2小时,最后的800个,每个只需要1小时,故而全部时间是:1600小时+800小时+800小时=3200小时。我们的基本原则是,挑选时间消耗比例大的测试优先实行自动化测试。

关于如何选择测试的自动化,可以参考Marick. Brian文章 When Should a Test be Automated? 或Pettichord.Bret的 Success with Test Automation.

最后,确定自动化测试的优先顺序。这里最重要的原则就是采用迭代的方式确定自动化测试的执行顺序。首先确定每个迭代的目标,挑选最能获得投资回报的测试,例如冒烟测试几乎总是能立即获得时间和资源上的回报;再挑选最容易开发脚本、最容易理解的测试实行自动化,之后逐渐扩展并迭代。

至此,您可以考虑在您最近实施的自动化测试项目中:
  • 哪些手工测试适合成为实行自动化测试候选测试呢?
  • 您将如何开始这些自动化测试呢?
[size=1.2em]四) 自动化测试的标准
为什么需要确定自动化测试项目的标准呢?
  • 防止项目成员按照个人工作方式造成实施上的混乱
  • 防止随机无序的执行测试过程
  • 有助于跟踪测试资源的利用
  • 减少脚本的全局变更产生的维护工作量
  • 跟踪脚本变更记录
  • 减少测试程序变更造成的测试修改
  • 更方便于测试脚本的复用
  • 更容易调试测试
  • 更有效的注意到容易忽略的测试
  • 更方便的在测试者之间交换工作
自动化测试标准包含两方面:
  • 测试资源相关的标准
  • 测试过程相关的标准
测试资源相关的标准,一般来说,包括如下内容:



文件命名习惯举例:



例如:AD_IN_SY_synwithadm_01
表示一个Administrator组件,Integration区域,Sychronizer子区域,测试同步器在管理模块的用例,序号是1。
AD_IN_SB_sybaserepo_02
表示一个Administrator组件,Integration区域,SyBase子区域,测试基于sybase的组件库应用,序号是2。
测试脚本编码规范举例,以Rational Robot为例:



例如:Declare sub writeFile (filename As String, data As Variant) 表示子程序名称为writeFile,有两个参数,filename是一个字符串类型的数据,data是变量类型的数据。
测试过程相关的标准包括:

使用道具 举报

回复
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-5-17 22:26 | 显示全部楼层
[size=1.5em]自动化测试的最优化设计
[size=1.2em]一) 自动化测试的设计目标
劣质的测试设计必将破坏自动化测试实施过程,它将导致测试结果不可靠--测试结果出现冲突或者干脆无效。劣质的测试设计也使测试难于维护和复用,如果我们没有特意的去为测试的复用性做出准备,那么自动化测试的收益必将随着时间的流逝而逐渐消失。因此,如果在自动化测试的设计里不把针对测试产品新版本的复用测试考虑在测试脚本库内,那么自动化测试的优势就不能得到最佳体现。
因此,当您设计自动化测试时,需要考虑到当前项目并计划到未来的项目。一个优秀的自动化测试设计,必须具有:
  • 易于维护性-减少更新修改的工作量
  • 可靠性-测试结果精确
  • 复用性-测试脚本可以复用,包括在未来的其他项目里
[size=1.2em]二) 自动化测试的架构
软件工程里,架构是软件系统的组织结构,系统架构是
  • 将产品分离成众多组件
  • 在组件间建立通信机制
  • 对系统指定数据接口
类似的,自动化测试的架构也是将软件系统的基本测试组件分解并组合的过程。它指定了测试组件的不同特征,以及组件间的关联结构,包括应用程序的测试数据、测试脚本、函数库等。
测试架构的选择主要依赖于测试需求,例如,如果你的测试需求是对被测程序的不同版本进行多次的运行自动化测试,那么选择一种复用性强并维护量小的架构是必要的。
除了测试需求外,测试环境也是影响测试架构的重要因素。换句话说,所有这些方面,包括架构,都影响测试的设计和实现。
许多不同的设计架构支持自动化测试。当然,测试架构最重要方面还是可维护性和可复用性,包括那些拿来自动化测试工具不进行设计,而直接进行录制或编码的测试方式(Cem Kaner称其为quick and dirty architecture),都可以实现要做的测试工作。以下表格列出Cem Kaner描述的通用自动化测试架构:



关于自动化测试架构的进一步信息,请参考Cem Kaner的 Avoiding Shelfware: A Managers' View of Automated GUI Testing

[size=1.2em]三) 测试用例的设计
自动化测试架构的选择影响测试用例的设计,测试用例是对特定对象开发的一系列测试输入、执行条件及期望结果的集合,例如练习程序特定执行路径,或检查与特定需求的一致性等。以下是一个查看网上订单的测试用例实例:
1、测试用例描述
查看客户订单,订单包含唯一的标识符、状态、归属人、订单组成、订单数量、总金额等。
2、执行条件
前置条件:
客户登陆系统并且不具有管理员权限,Classics Online主窗口打开,两个数量为1的不同订单显示在客户名下,一个买的是Brandenburg,另一个是小提琴
测试输入:
从订单菜单里选择"View Existing Order Status… " ,查看客户订单后,关闭查看窗口
观察点:
"View Existing Order"窗口弹出,订单的客户名显示正确,其他列的抬头显示ORDERID, STATUS, COMPOSER, COMPOSITION, QUANTITY, TOTAL 等,滚动条可以正常滚动
控制点:
"View Existing Order"窗口里,具有关闭按钮和X按钮以关闭该窗口,还有Cancel Selected Order按钮
期望结果:

两个订单有两个不同的标记数字,状态是"Order Initiated ",归属人是Bach,购买物是Brandenburg和小提琴,数量各为1,总金额分别是18.99和16.99
后置条件:

测试完成后,Classics Online主窗口自动激活
测试用例的书写要有相对固定的模板和表现形式,并存储在固定位置以方便执行和跟踪,测试人员也必须严格按照测试用例执行测试或开发测试脚本。

[size=1.2em]四) 数据驱动的测试方案
数据驱动是目前自动化测试应用最多的架构模式,它把测试脚本和测试数据有效分离,并具有如下优势:
  • 测试数据可以快速修改,而不影响测试脚本
  • 添加测试用例只需修改测试数据,而很少修改测试脚本
  • 测试数据可被众多测试脚本共享



关于测试数据:
需要准备什么样的数据?
  • 参考程序流程图或用例设计图。流程图可提供测试系统需要的数据信息,或者数据间的依赖关系,然后定义需要的数据,例如数据库数据、输入框数据、期望数据等。
    从哪里获得需要的数据?
  • 产品数据或先前版本的数据。首先确定这些数据是否合适,或者从中摘录合适的数据子集。
  • 创建数据。
无论哪种获取方式,都不要将无法解决的问题遗留到开始运行测试阶段;可以通过和数据库管理员或系统设计人员交流获得数据,以最大程度减少和测试数据相关的测试中断。

[size=1.2em]五) Rational自动化测试工具简介
这里介绍IBM的两款自动化测试找错工具,一个是大家非常熟悉的Rational Robot,另一个是IBM近年推出的XDE Tester。我们不从使用操作上介绍,只从基本功能和特征上做以对比,供大家选择时参考。详细内容还请参考IBM官方网站的介绍,或访问Sincky的主页查阅使用指南。

[size=1.5em]参考资料

使用道具 举报

回复
认证徽章
论坛徽章:
1207
海蓝宝石
日期:2012-04-03 16:46:37祖母绿
日期:2012-04-03 16:46:37蓝锆石
日期:2011-07-01 17:06:42萤石
日期:2012-04-03 16:46:372011新春纪念徽章
日期:2011-12-07 23:33:30生肖徽章2007版:牛
日期:2008-04-15 13:03:19生肖徽章2007版:鼠
日期:2009-10-02 16:16:412010新春纪念徽章
日期:2015-09-11 12:12:572011新春纪念徽章
日期:2012-02-18 23:50:592011新春纪念徽章
日期:2011-11-02 22:06:24
发表于 2011-5-18 10:22 | 显示全部楼层
学习

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表