自动化测试框架与模型

一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库、测试数据源、测试对象识别标准,以及种可重用的模块。
自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试、数据驱动测试、对象驱动测试。
自动化测试模型是自动化测试架构的基础。
自动化测试的发展过程中,不断有新的模型(概念)被提出,了解和使用这些自动化模型将有助构建一个灵活可维护性的自动化架构。
自动化测试的几种不同的模型,并非后者淘汰前者的关系;
在实施自动化更多的是以需求为出发点,混合使用,目的是解决问题,使脚本更易于开发与维护;
 
 
线性测试 --- 早期自动化测试的一种形式
  • 通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作) ,通过对脚本的回放来进行自动化测试;
  • 优势就是每一个脚本都是独立的,任何一个脚本文件拿出来就能单独运行;
  • 缺点也很明显,数据和脚本是混在一起,脚本无法重复使用,导致用例的开发与维护成本很高;
模块化与类库
  • 把脚本中重复使用的部分代码独立出来,形成公共的模块或库,需要的时候进行调用;
  • 优点:提高了开发效率,不用重复的编写相同的脚本,方便了代码的维护,代码的更改限制在模块之内;
数据驱动
  • 数据的改变(更新)驱动测试自动化的执行,从而引起测试结果的改变;
  • 可以直白地理解成“输入数据的不同从而引起输出结果的变化”;
  • 优点是实现了数据与脚本的分离(参数化),增强的脚本的复用性,在开发层面,易于实现;
关键字驱动
  • 理解了数据驱动,无非是把“数据”换成“关键字”,通过关键字的改变引起测试结果的改变;
  • 独立以编程方式实现关键字驱动似乎不太容易,一般是利用现有工具和框架;
  • 在QTP、robot framework 等此类型的测试工具中, “填表格”式的关键字驱动封装了很多底层的东西,易用性强;
  • 测试人员只要考虑三个问题:要做什么? 对谁做?怎么做?
 

简要对比手工测试用例与自动化测试用例

  • 较好的异常处理能力,能通过人为的逻辑判断校验当前步骤的功能实现正确与否。
  • 人工执行用例具有一定的步骤跳跃性。
  • 人工测试步步跟踪,能够细致的定位问题。
  • 主要用来发现功能缺陷
自动化测试用例
  • 执行对象是脚本,任何一个判断都需要编码定义。
  • 用例步骤之间关联性强。
  • 主要用来保证产品主体功能正确完整和让测试人员从繁琐重复的工作中解脱出来。
  • 目前自动化测试阶段定位在冒烟测试和回归测试
两者之间的关系
自动化测试替代不了手工测试,目的仅仅在于让测试人员从繁琐重复的机械式测试过程解脱出来,把时间和精力突入到更有价值的地方,从而挖掘更多的产品缺陷。
目前自动化测试更多的时候是定位在冒烟测试和回归测试;
  • 冒烟测试执行的是主体功能点的用例
  • 回归测试执行全部或部分的测试用例
 

自动化测试用例选型注意事项

1、 不是所有的手工用例都要转为自动化测试用例。
2、 考虑到脚本开发的成本,不要选择流程太复杂的用例。如果有必要,可以考虑把流程拆分多个用例来实现脚本。
3、 选择的用例最好可以构建成场景。例如一个功能模块,分 n 个用例,这 n 个用例使用同一个场景。这样的好处在于方便构建关键字测试模型。
4、 选择的用例可以带有目的性,例如这部分用例是用例做冒烟测试,那部分是回归测试等,当然会存在重叠的关系。如果当前用例不能满足需求,那么唯有修改用例来适应脚本和需求。
5、 选取的用例可以是你认为是重复执行,很繁琐的部分,例如字段验证,提示信息验证这类。这部分适用回归测试。
6、 选取的用例可以是主体流程,这部分适用冒烟测试。
7、 自动化测试也可以用来做配置检查,数据库检查。这些可能超越了手工用例,但是也算用例拓展的一部分。项目负责人可以有选择地增加。
8、 如果平时在手工测试时,需要构造一些复杂数据,或重复一些简单机械式动作,告诉自动化脚本,让他来帮你。或许你的效率因此又提高了
 

编写自动化测试用例的几个原则

1、一个脚本是一个完整的场景
2、一个脚本脚本只验证一个功能点
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,
      逆向逻辑的情况很多,验证一方面比较复杂,需要编写大量的脚本,
      另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。 (遵循用户正常使用原则编写脚本即可)
4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5、如果对数据进行了修改,需要对数据进行还原。
6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。
 
 

 

Testing - 自动化测试的几个基础概念的更多相关文章

  1. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

  3. Jmeter基础之---jmeter基础概念

    Jmeter基础之---jmeter基础概念 JMeter 介绍: 一个非常优秀的开源的性能测试工具. 优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来. JMeter 介绍: 一个非常优 ...

  4. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  5. 理解 angular2 基础概念和结构 ----angular2系列(二)

    前言: angular2官方将框架按以下结构划分: Module Component Template Metadata Data Binding Directive Service Dependen ...

  6. JavaBean 基础概念、使用实例及代码分析

    JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...

  7. RabbitMQ基础概念详细介绍

    http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...

  8. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  9. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

随机推荐

  1. webpack 打包问题

    Project is running at http://localhost:8080/webpack output is served from /dist/webpack: wait until ...

  2. windows socket 文件下载上传

    socket 图片 文件 下载上传  数据库 线程池  存入图片 等

  3. Python之路(第三十四篇) 网络编程:验证客户端合法性

    一.验证客户端合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现. 客户端验证的总的思路是将服务端随机产生的指定位数的字节发送到客 ...

  4. web安全之机器学习入门——3.1 KNN/k近邻

    目录 sklearn.neighbors.NearestNeighbors 参数/方法 基础用法 用于监督学习 检测异常操作(一) 检测异常操作(二) 检测rootkit 检测webshell skl ...

  5. [Hbase]Hbase章4 Hbase分区爆了

    又搞事了,发生了啥事呢:生产分区数暴了,What? 目前的情况: 前提:单Region Server分区上限设置为1000: 目前A表的数据量半年达到25E,20G一分区,达到了900多个分区,这是要 ...

  6. Unity Button事件的简洁处理

    看到很多人依然还是通过最原始的方法给button绑定事件并处理,这种通过Find往子集一个个的查找,获取到后再绑定事件这种操作很费事,有些人则是对查找对象写了个方法自动往子集遍历更方便获取对象,但还是 ...

  7. PHP日期格式化函数

    date函数 描述:格式化一个本地时间/日期 语法:string date(string format [,int timestamp]) format字符 说明 format字符 说明 Y 4位数字 ...

  8. Codeforces Round #538 (Div. 2) CTrailing Loves (or L'oeufs?)

    这题明白的意思就是求n!在b进制下的后缀零的个数. 即最大的n!%(b^k)==0的k的值.我们需要将如果要构成b这个数,肯定是由一个个质因子相乘得到的.我们只需要求出b的质因子,然后分析n!中可以组 ...

  9. 前后台分离开发时遇到循环引用问题"$ref"

    1. 遇到的问题 { "errMsg": "", "data": { "baseinfo": { "freeT ...

  10. python可能会用到的网络基础

    网络编程 1.两种构架:(1)C/S构架:client, server (2) B/S构架:browser,server 2.地址相关:(1)MAC地址,物理地址,唯一,但可以更改 (2)ip地址,网 ...