Testing - 自动化测试的几个基础概念

自动化测试框架与模型

一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库、测试数据源、测试对象识别标准,以及种可重用的模块。

自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试、数据驱动测试、对象驱动测试。

自动化测试模型是自动化测试架构的基础。

自动化测试的发展过程中,不断有新的模型(概念)被提出,了解和使用这些自动化模型将有助构建一个灵活可维护性的自动化架构。

自动化测试的几种不同的模型,并非后者淘汰前者的关系;

在实施自动化更多的是以需求为出发点,混合使用,目的是解决问题,使脚本更易于开发与维护;

线性测试 --- 早期自动化测试的一种形式

  • 通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作) ,通过对脚本的回放来进行自动化测试;
  • 优势就是每一个脚本都是独立的,任何一个脚本文件拿出来就能单独运行;
  • 缺点也很明显,数据和脚本是混在一起,脚本无法重复使用,导致用例的开发与维护成本很高;

模块化与类库

  • 把脚本中重复使用的部分代码独立出来,形成公共的模块或库,需要的时候进行调用;
  • 优点:提高了开发效率,不用重复的编写相同的脚本,方便了代码的维护,代码的更改限制在模块之内;

数据驱动

  • 数据的改变(更新)驱动测试自动化的执行,从而引起测试结果的改变;
  • 可以直白地理解成“输入数据的不同从而引起输出结果的变化”;
  • 优点是实现了数据与脚本的分离(参数化),增强的脚本的复用性,在开发层面,易于实现;

关键字驱动

  • 理解了数据驱动,无非是把“数据”换成“关键字”,通过关键字的改变引起测试结果的改变;
  • 独立以编程方式实现关键字驱动似乎不太容易,一般是利用现有工具和框架;
  • 在QTP、robot framework 等此类型的测试工具中, “填表格”式的关键字驱动封装了很多底层的东西,易用性强;
  • 测试人员只要考虑三个问题:要做什么? 对谁做?怎么做?

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

  • 较好的异常处理能力,能通过人为的逻辑判断校验当前步骤的功能实现正确与否。
  • 人工执行用例具有一定的步骤跳跃性。
  • 人工测试步步跟踪,能够细致的定位问题。
  • 主要用来发现功能缺陷

自动化测试用例

  • 执行对象是脚本,任何一个判断都需要编码定义。
  • 用例步骤之间关联性强。
  • 主要用来保证产品主体功能正确完整和让测试人员从繁琐重复的工作中解脱出来。
  • 目前自动化测试阶段定位在冒烟测试和回归测试

两者之间的关系

自动化测试替代不了手工测试,目的仅仅在于让测试人员从繁琐重复的机械式测试过程解脱出来,把时间和精力突入到更有价值的地方,从而挖掘更多的产品缺陷。

目前自动化测试更多的时候是定位在冒烟测试和回归测试;

  • 冒烟测试执行的是主体功能点的用例
  • 回归测试执行全部或部分的测试用例

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

1、 不是所有的手工用例都要转为自动化测试用例。

2、 考虑到脚本开发的成本,不要选择流程太复杂的用例。如果有必要,可以考虑把流程拆分多个用例来实现脚本。

3、 选择的用例最好可以构建成场景。例如一个功能模块,分 n 个用例,这 n 个用例使用同一个场景。这样的好处在于方便构建关键字测试模型。

4、 选择的用例可以带有目的性,例如这部分用例是用例做冒烟测试,那部分是回归测试等,当然会存在重叠的关系。如果当前用例不能满足需求,那么唯有修改用例来适应脚本和需求。

5、 选取的用例可以是你认为是重复执行,很繁琐的部分,例如字段验证,提示信息验证这类。这部分适用回归测试。

6、 选取的用例可以是主体流程,这部分适用冒烟测试。

7、 自动化测试也可以用来做配置检查,数据库检查。这些可能超越了手工用例,但是也算用例拓展的一部分。项目负责人可以有选择地增加。

8、 如果平时在手工测试时,需要构造一些复杂数据,或重复一些简单机械式动作,告诉自动化脚本,让他来帮你。或许你的效率因此又提高了

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

1、一个脚本是一个完整的场景

2、一个脚本脚本只验证一个功能点

3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,

逆向逻辑的情况很多,验证一方面比较复杂,需要编写大量的脚本,

另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。 (遵循用户正常使用原则编写脚本即可)

4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。

5、如果对数据进行了修改,需要对数据进行还原。

6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。


原文地址:https://www.cnblogs.com/anliven/p/9998603.html

时间: 2024-10-15 22:02:48

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

【Machine Learn】机器学习及其基础概念简介

机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(K-means聚

关系型数据库常用基础概念知识归纳

声明:我的文章都是只挑主要的写,次要细节太多,归纳就没意义了,同时归纳主要是给自己看的, 而且基本都是凭自己的一些记忆和理解即时写的.不一定对和全(但大多是一些需要理解的概念),请各位看管见谅! 数据库设计篇 1.范式 A.1范式,原子性,即列不可分 B.2范式,完全依赖,即有个主键唯一区分 C.3范式,不能传递依赖,即表中不能还有其他表的非主键信息 2.模型 A.概念模型,即ER图等 B.逻辑模型,即建逻辑表 C.物理模型,即生成物理表 事务 1.四大特性, A.原子,要么..要么.. B.隔

分布式学习——基础概念篇

概述 最近这段时间一直在看分布式有关的东西,但是关于分布式自己还是不能很好的理解,所以本文对分布式基础概念进行下学习. 分布式处理 首先先了解一下分布式处理,分布式处理和集中式处理正好是相反的的体系架构,集中传输集中到式处理顾名思义就是将所有的信息都一个统一的信息中心进行处理:分布式处理就是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机利用通信网络连接起来,让各个计算机各自承担同一个工作任务的不同部分,在控制中心的管理下,同时运行,共同完成同一个工作任务. 提到分布式处理就不能不提到

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

Linux基础概念-----环境变量

Shell 环境变量 Shell也是应用程序,工作与用户模式 变量类型 整形 浮点型 字符型 布尔型 bash变量类型 本地变量:仅对当前Shell有效 局部变量:仅对局部代码段有效(函数) 环境变量:expor VAR_NAME=Value,对当前Shell及子Shell有效 位置变量:$1;$2 .... 特殊变量:$?;$!;$$ .... 查看环境变量 printenv export 查看所有变量 set bash的引号 双引号:弱引用,可以实现变量替换: 单引号:强引用,不替换,而显示

Linux基础概念-----Linux I/O重定向 ,管道

标准输入:键盘 标准输出:显示器 错误输出:显示器 FD:文件描述符:让程序可以文件交互,并且便于内核识别文件,打开的每一个文件都有一个描述符 程序在和文件交互式,通过文件描述符来进行交互,而非文件名,文件名是方便用户分别文件. Linux一切皆文件,所以标准输入,标准输出都有各自的文件描述符 标准输入描述符:0 标准输出描述符:1 标准错误输出描述符:2 将其默认数据流改为其他设备:IO重定向 输出重定向 > 覆盖重定向 >> 追加重定向 /dev/null  黑洞 只针对当前Shel

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);