功能自动化
一•介绍
自动化的本质----就是用程序来测试程序
随着Web项目的日益庞大,自动化测试技术的重要性日益突出
二•手工 vs 自动化
手工:不可替代、发现更多bug、人的想象力与理解力
自动化:可重复、效率高,增加软件信任度
三•自动化测试
1自动化测试分类:
对web UI的自动化测试程序
对windows窗体c/s UI的自动化测试程序
API测试 比如 测试WCF service,Web API等
数据库测试,比如测试存储过程
接口测试,
单元测试
性能测试,性能测试都需要自动化
2自动化测试驱动
测试驱动是一个自动化测试框架的核心,其决定整个自动化脚本设计。当前比较流行的测试驱动有数据驱动和关键字驱动,使用不同的测试驱动,关系到脚本重用率,以及后期的可维护性。
(1)数据驱动
基于数据驱动的自动化测试框架是指测试驱动引擎从数据源获取测试数据,然后将将数据以参数的形式传递给测试脚本,最后通过执行测试脚本,验证测试结果,并将测试结果输出。
一般数据源与测试结果存储在数据库、Excel文件、Csv文件等。数据驱动主要优点是:
测试脚本与测试数据的分离,当应用功能变更时,只需要修改该功能部分的脚本;执行测试用例的人员不需要了解测试脚本的实现,只关注测试数据表与测试报告表。而且测试脚本的执行是离散的,即非线性的,测试人员可以有选择的执行测试用例。
(2)关键字驱动
关键字驱动的自动化测试框架是在数据驱动的基础上进行改进,数据源里包含的不只是数据,还有关键字,一个测试用例由一个或若干个关键字组成。每个关键字对应个不同的业务逻辑,例如,登录、注销等。数据表通过关键字,查找映射表,执行相关的脚本。
(3)驱动引擎
驱动引擎是对数据表的数据进行分析,根据不同的测试数据或关键字调用相应测试脚本。驱动引擎还需完成一些测试环境初始化、全局参数设置、测试用例是否执行的判断,以及测试报告的处理等。
3自动化测试用例设计
分三步走:初始化,输入准备;
执行(方法调用),结果验证(断言);
清理环境
4自动化测试脚本开发
测试脚本开发必须通过详细、合理的设计,要对脚本代码进行划分,脚本文件或数据文件分层管理。这样有利于自动化脚本的开发与维护,从而节省自动化测试的投入成本,也使得不同测试人员或开发人员可以协调开发脚本。
(1)脚本规范
测试脚本的开发也要遵循编程的规则与标准,应该统一规划,所有开发脚本的人员按照
统一的规定进行编码。除了编程本身规范,还考虑测试用例与库函数名的命名,测试用例需要加上项目名称,但公共的库函数却不需要,因为公共的库函数是独立于项目的。例如,项目M4.1客户端登录测试用例可命名为:TC_M4.1_client_login;读取excel表的函数可命名为:read_excel。
(2)脚本划分
测试脚本的划分,如何定义公共的脚本库,不同模块特有的脚本库,以及直接构建测试用例的脚本。为了方便以后脚本的维护问题,必须对脚本进行有效的分层,同时,提高了脚本的复用率。
①公共类库
公共类库包括所有模块都可能用户的操作方法,其抽象了不同模块同性,比如操作excel表的方法、读写测试报告、驱动引擎等。
②模块特定类库
在模块内部将可以为该模块共享使用的方法抽象出来,作为一个公共类。它可以是一个单的逻辑操作,也比较独立。比如客户端登录操作、控制台登录操作、控制台更新操作等。
③测试用例脚本
测试用例脚在最上层,它根据测试点进行设计,面向具体的应用。它可直接调用公共类库或模块特定类库的方法,即调单个逻辑操作。它是单个或多个逻辑操作的集合,即一个测试用户脚本。比如,在客户端访问资源的测试用例,它调用了客户端登录方法和访问资源方法。
(3)测试用例
①测试用例粒度
测试用例的粒度决定了用例模型级的复杂度,也决定了每一个用例内部的复杂度。
应该根据每个系统的具体情况来把握各个层次的复杂度,在尽可能保证整个用例模型的易理解性前提下决定用例的大小和数目。用例不能太大,这样一旦出执行测试用例出错,不利于定位问题;但也不能太细化,太小则不方便执行。
②测试用例与测试套件
一个大型的项目有许功能模块,必然会产生大量的测试用例,怎样才能有效的管理这些测试用例呢?这就需要创建测试套件,通过测试套件将测试某一个模块或功能点的测试用例集合起来,方便运行与管理。例如,只验证“用户管理”模块功能,则只需要执行“用户管理”模块套件即可。
(4)脚本与html标记分离脚本与html标记分离使得在一定程度上脚本独立于WEB页面,脚本没有直接的处理html标记,脚本代码通过html映射表获取赋有WEB页面标记值的变量。WEB页面标记包括html标记和页面内容(文本或图片等,这些都可能是判断用例是否成功能的检查点),当WEB页面标记变更后,不需要在范围的修改脚本。
(5)选择适合自动化测试的用例
在编写自动化测试脚本前,首先要确定哪些用例适合做自动化测试,因为自化测试不像手工测试,它不能那么智能,也没有发发散思维。通常适合自动化测试的用例有:
产品型项目。产品型的项目,新版本是在旧版本的基础上进行改进,功能变不大的项目,但项目的新老功能都必须重复的测试。
回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。
机械并频繁的测试。每次需要输入相同、大量的一些数据,并且在一个项目中运行的周期比较长。
有一些交互性比较强,需要人工干预的操作,就不要指望通过自动化测试来完成了。
例如,用户使用DKEY登录。
四•测试自动化 偏向于开发岗位
自动化系统平台开发,自动化框架工具开发;提供给自动化测试或业务人员等执行自动化测试,结果收集,结果判断,结果通告
自动化框架 分上下两个层次
上层是管理整个自动化测试的开发,执行以及维护,在比较庞大的项目中,它体现重要的作用,它可以管理整个自动测试,包括自动化测试用例执行的次序、测试脚本的维护、以及集中管理测试用例、测试报告和测试任务等。
下层主要是测试脚本的开发,充分的使用相关的测试工具,构建测试驱动,并完成测试业务逻辑
五•开源自动化框架
PC端Web:Jenkins+ant+selenium+testing+tomcat
自动构建+脚本开发+测试结果
移动app:Jenkins+Appium+ant+selenium+testng+tomcat
自动构建+脚本开发+测试结果
做什么不深入,就看表面,浅尝辄止
天猫 软件自动化测试开发
posted on 2015-04-01 11:57
zouhui 阅读(656)
评论(0) 编辑 收藏 所属分类:
2.软件测试 功能自动化