11自动化测试培训&QTP工具培训作者:大开测试日期:2016.12北京大开科技有限公司2目录构建自动化测试框架自动化测试介绍自动化测试流程QTP自动化测试工具3对自动化测试的理解定义:指以程序运行的方法替代人工测试,从而达到减少手工工作量,提高测试效率目的。理解:•用机器或工具自动执行的测试,替代人完成重复性劳动,但不能完全取代人。•自动化测试需要用到测试工具,测试工程师的参与。•自动化测试技术可应用于所有的测试阶段。•不仅仅是商业测试工具、开源测试工具、自行编制测试工具或测试脚本。只要能够部分代替手工测试提高执行效率。4对自动化测试的理解•提高测试效率,降低测试成本•重复性强的手工劳动用自动化替代•快速的回归测试,提高新版本发布的速度和质量•避免人工测试容易犯的错误,如:错误测试,漏测试,多测试等。•很容易就实现并发测试,加快进展•需要规范的测试管理•不能创造性发现测试脚本没有设计的缺陷•需要自动化测试开发工程师•对测试环境要求比较严格•在资源投入和产出方面进行权衡•自动测试脚本的修改、维护工作量大•为评估软件质量提供数据支持,完整的测试是评定软件质量的一种方法5树立对自动化的正确认识适用性培训维护运用自动化测试优缺点提高测试效率,降低测试成本测试人员更注重测试结果分析提高新版本发布的速度和质量避免人工重复测试易犯的错误可以实现多机自动化并行测试优点不能创造性发现缺陷需要规范化的管理对人员有编程要求对测试环境要求高变化带来的脚本维护缺点6自动化测试目标只适用于功能测试阶段,因为一般会:给定预算,进度,资源给定平均或期望的测试运行次数根据业务流程的不同(复杂度和风险)最大化自动化率(只能达到有限值)初级阶段目标可以适用于回归测试:自动化率可以逐步提高增加自动化测试的次数减少测试运行时的缺陷高级阶段目标通过灵活的合理的自动化测试目标最大化时间和资源的利用率和价值7为什么需要自动化测试维护周期长、兼容性高、多语言多版本的系统无人值守运用,充分利用时间,缩短发布周期有利于测试资产的积累、存储和移交、管理第三方自动化测试工具有利于自动化测试的效率组织发展、技术更新…8为什么需要自动化测试大多数项目处于维护阶段,程序界面变动较少大量局部需求变更、增加新业务、bug修复测试任务在某些业务功能测试中经常要反复编造业务数据冒烟测试、兼容性测试、版本验证、波及影响测试等需投入大量工作量复杂的公式计算和统计计算等占用手工测试人员较多的时间,且容易出错手工测试用例不容易形成资产积累9自动化测试是软件测试发展的方向业务改进软件下发研发过程变更管理测试管理源代码管理系统升级配置管理软件研发10自动化测试自动化测试版本管理单元测试每日构建集成测试系统测试11自动测试技术的发展•第一代自动测试技术实现:录入回放•第二代自动测试技术实现:脚本技术,可以加入脚本实现逻辑•第三代自动测试技术实现:数据驱动,数据与测试脚本分离•第四代自动测试技术实现:关键字驱动、构件化测试,业务驱动12数据驱动驱动数据驱动主要优点是:1、测试脚本与测试数据的分离;2、执行测试用例的人员关注测试数据表与测试报告表;3、测试脚本的执行离散的。13关键字驱动技术关键字驱动关键字驱动的自动化测试框架是在数据驱动的基础上进行改进,数据源里包含的不只是数据,还有关键字,一个测试用例由一个或若干个关键字组成。每个关键字对应个不同的业务逻辑。关键字主要包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可表现为Item.Operation(Value)将测试逻辑按照关键字进行分解,形成数据文件,测试工具解释关键字运行1214自动化测试适用范围自动化测试的适用范围包括两点:1.减少操作的重复性:自动化测试工具的使用可以辅助人们完成一些重复性较高的操作,如完成N条不同内容投保单的录入,在这里自动化测试具有快速、准确的输入、节约时间的特点;2.回归测试:在系统测试阶段开发针对某一具体功能的自动化测试脚本(如一条记录的新增操作),在回归测试阶段通过执行该脚本来保证该功能没有被新功能的增加、其它bug的修复而破坏。例如:1.每轮测试都需要执行的基础测试,如需要对保全功能做测试时,可通过自动化测试工具完成一个保单流程的录入;2.数据驱动的用例,如需要输入很多组数据,每组数据对应不同的预期结果,如一条投保单的录入在保存时需要做很多个校验及检查,可为每个需要检查的逻辑判断做一组数据,在保存时检查校验条件是否都正常工作;15自动化测试的成本考虑评估购买或开发测试工具•每年的维护费用或升级成本•学习工具和培训时间•测试自动化上特定的资源投入•与开发自动化测试工具所有相关的抽风•维护脚本的成本•存储脚本的硬件资源花费16自动化测试建设常见错误1、缺乏好的自动化测试计划和设计过程2、错误的选择了自动化测试工具3、错误的自动化框架设计4、在设计中缺乏好的设计管理5、缺乏自动化过程和工具培训17相关术语TestRequirement(测试需求):是关于某具体测试目标的声明以及确认测试是否通过所要达到的标准。TestPlan(测试计划):包括项目中的测试目标和目的的信息。此外,测试计划还明确了测试实现的策略和所需要的资源。TestStrategy(测试策略):描述了测试获得的通用目标和方法。TestCase(测试用例):是一套为特定目标开发的测试输入、执行条件和预期结果,例如执行一跳特殊程序路径或者在特定要去下验证一致性。TestData(测试数据):在测试中所用到的实际数值或执行测试所必须的数值。测试数据是测试条件(作为输入或预存在的数据)的具体例化,用于验证已成功实现的特定要求(通过将实际结构与期望结果比较)。TestInputs(测试输入):是工作过程的产物,用于标志和定义发生在测试期间的动作。这些产物可能是从测试组之外的软件开发过程中产生的,例如功能需求规格说明和设计规格说明。它们也可能是从前期测试阶段产生的并被留给了后续的测试活动。18相关术语Testscrīpt(测试脚本):这是计算机可读懂的能令测试程序(或一部分测试程序)自动执行的指令。测试脚本可以由人创建(复制)或者由自动测试工具产生,它使用编程语言限制,或者由记录、生成和编程混合创建。TestResults(测试结果):执行测试所捕获的数据,并被用于计算测试的不同关键测度。PerformanceTesting(性能测试):通过这类测试的实现和执行可以对索要测试的应用程序与性能相关的特征作出描绘和评估。这些测试包括时间调度情况、执行流畅、响应时间以及操作可靠性和限制。Data-DrivenTesting(数据驱动测试):这是一种测试脚本的功能及执行由外部数据所引导的自动测试方法。这种方法将测试及控制数据与测试脚本本身分离开了。TestCondition(测试条件):测试所涉及的各种环境因素。19目录构建自动化测试框架自动化测试流程自动化测试介绍自动化测试工具QTP20正确选择适合的自动化测试通常适合自动化测试的用例有:产品型项目产品型的项目,新版本是在旧版本的基础上进行改进,功能变不大的项目,但项目的新老功能都必须重复的测试。回归测试回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。机械并频繁的测试每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。有一些交互性比较强,需要人工干预的操作,就不要指望通过自动化测试来完成了。例如,用户使用U-Key登录。21自动化测试实施条件•具有良好定义的测试策略和测试计划(知道要测试什么、知道什么时候测试)•能够确保多个测试运行的构建策略•多平台环境需要被测试•拥有运行自动化测试的硬件•拥有关注在自动化测试进程上的资源22自动化测试规划设计框架资源计划好投入的工具设备和人员等不同的测试框架实施方式不同与研发类似测试实施之前做一份切实可行的规划是自动化能够得以实施的基础23自动化测试实施规划阶段一:完成对结算和信贷主要业务的流程覆盖阶段二:完成对业务的校验和约束阶段三:应用到更多的业务中去,规模扩大开发自动化测试框架,降低对测试工具的依赖使用动作词的自动化测试第一层次第二层次第三层次层次阶段24自动化测试工作任务的优先级自动化ROI度量测试范围由风险驱动测试(例如:高风险的项先被测试)自动化的优先顺序:对于能尽快(最少运行次数)达到投资回报平衡点高风险的测试案例优先低复杂度的测试案例优先优先级策略#需要自动测试执行的次数复杂度风险HighMediumLowHigh5.05.95.5Medium6.67.38.1Low5.07.38.11342#优先级顺序5869725ROI分析26基于风险和复杂度评估达到测试目标的最佳性价比测试自动化基本实践方法风险过程根据特定测试风险等级来选择合适的测试过程.通过以测试过程的最优组合和资源、进度、风险的约束来多次运行自动化测试次数,来达到最小化工作量的目标方法过程高风险中风险低风险高复杂度中复杂度低复杂度27自动化测试流程描述ID活动描述责任角色参与角色成果物01自动化测试计划自动化测试计划02自动化测试准备生成自动化脚本03自动化测试执行自动化测试报告在测试计划设计阶段,设计者应尽可能考虑到系统的自身的业务和功能特点,将某些业务流和功能点确定为自动化测试;而在设计测试用例时必须对这部分的测试用例描述细化;自动化测试的操作过程大体分为5步:制定自动化测试计划、编写自动化测试用例、开发调试自动化测试脚本、执行自动化测试、测试脚本的维护。关于自动化测试工具的具体使用方法请参考《自动化测试工具之QTP使用方法》。28制订自动化测试计划制定测试计划的目的是确定和描述要实施的执行的测试。这是通过生成包含测试需求和测试策略的测试计划来完成的。可以制定一个单独的测试计划,用于描述所要实施和执行的不同测试类型,也可以为每种测试类型制定一个测试计划。换句话说制定自动化测试计划是个分析、筛选的过程,即通过对被测系统业务流程的分析,整理出哪些模块适合做自动化测试,哪些功能点的验证可以进行脚本的合并。29测试自动化实现中的功能分解•业务功能分解的原则和方法:•清晰画出业务流程图•根据业务流程分解业务功能,可以被复用的功能也要被分解出来。•按照路径覆盖的思想,组织测试用例30编写自动化测试用例根据手工测试用例编写完善相应的自动化测试用例,其中包括测试的版本、功能点描述、驱动数据、详细操作流程、明确的预期结果。测试用例粒度测试用例的粒度决定了用例模型级的复杂度,也决定了每一个用例内部的复杂度。应该根据每个系统的具体情况来把握各个层次的复杂度,在尽可能保证整个用例模型的易理解性前提下决定用例的大小和数目。用例不能太大,这样一旦出执行测试用例出错,不利于定位问题;但也不能太细化,太小则不方便执行。测试用例与测试套件一个大型的项目有许功能模块,必然会产生大量的测试用例,怎样才能有效的管理这些测试用例呢?这就需要创建测试套件,通过测试套件将测试某一个模块或功能点的测试用例集合起来,方便运行与管理。例如,只验证“用户管理”模块功能,则只需要执行“用户管理”模块套件即可。31开发、调试自动化测试脚本以业界常用的自动化测试工具为例,脚本的开发通常是通过录制完成的(需要注意的是在录制脚本之前设计好脚本,便于录制过程的流畅,提高脚本的修改效率),即工具本身通过记录用户的操作过程及所输入的数据生成一个由VB语言编写的可执行脚本,测试工程师对脚本进行相应的修改即可。修改增强脚本主要包括一下几点:1.删除录制过程中多余和错误的代码;2.对输入输出值进行适当的参数化;3.对于不能通过录制产生的代码进行手工编写;4.录制所产生的脚本是线性的,适当加入条件、控制语句,实现更为复杂的流程;5.设置文本、图片、及数据库检查点;6.适当加入注释、便于阅读和维护;32执行自动化测试执行自动化测试是通过使用工具来替代手工操作的过程,脚本回放的