前言:自动化测试在过去的20年已经有了很大的发展。最初的测试工具只提供了简单的捕捉/回访功能,维护性较差。而且脚本工具实现需要很强的开发技术和经验,而且数量众多的测试脚本加上没有文档记录因此维护起来较难,成本开销巨大。为了使测试人员集中精力在测试用例设计上,测试框架产品就出现了,它能够减少学习和使用脚本语言的时间,集中精力在测试上,就出现了测试框架。下面将讨论自动化测试框架的概念,和测试框架的发展,知道了这些我们对比我们使用的测试框架,也知道我们处在什么阶段,从而改进测试的思想,也可能创造出更适合现代软件测试的测试框架思想。

常见的5种自动化测试框架

(1)测试脚本模块化框架。

测试脚本模块化框架需要创建能够代表被测程序模块,片段(Section)和函数的的一个个小而独立的脚本。然后用分级的方式将小脚本组成更大的测试,实现一个特定的测试用例。它很好的支持面向对象的程序设计或结构化程序设计中的模块化,抽象,封装及信息隐藏等编程思想及原则在软件开发中的应用。测试脚本模块化框架由于应用了抽象或封装的原则,从而大大提高了支持自动化测试的测试集(Test suit)d的可维护性和可测量性。(测试脚本也可以理解成开发中的一个个小的的模块,为了完成整个完整的开发的整体功能,也就是软件开发中的模块化思想。)

(2)测试库框架

测试库框架和模块化测试框架类似,并且具有同样的优点。不同的测试库框架把被测程序分解为过程和函数而不是脚本。这个框架需要创建描述模块,片段以及被测程序的功能库文件(例如 SQABasics Libries,APIs,Dlls等)。(可以理解为测试脚本模块化原来是汽车的发动机,油箱一个个组件现在把油箱发动机拆了,更细化弄成一个个螺丝钉和铁皮,就是分解的更细不知道这样理解对不对,beta版本以后再补充!)

(3)数据驱动测试框架

数据驱动(data –driven)测试是一个框架。在这里测试的输入和输出数据是从数据文件中读取(数据池,ODBC数据源,excel文件,DAO对象,ADO对象等),并通过捕获工具生成或手工生成的代码脚本加载到变量中。在这个框架中,变量不仅不仅用来存放输入值,还被用来存放输出的验证值。还有个表驱动,表驱动的测试用例包含在数据文件而不是在脚本中,对于数据而言,脚本仅仅是一个“驱动器”,或者说是一个传送机构。数据驱动不同于表驱动测试,尽管导航数据并不包含在表结构中。在数据驱动测试中,数据文件中只包含测试数据。这个框架意图减少你需要执行所有测试用例所需要的总的测试脚本的数。数据驱动需要很少的代码来产生大量的测试用例,这与表驱动及其类似。(说了这么多表驱动中数据多一点可能包括测试用例数据,而数据驱动仅输入值和验证值,数据驱动似乎和上面的两种框架有了本质的区别)

(4)关键字驱动或者表驱动的测试框架

关键字驱动或表驱动是一种独立与应用程序的自动化框架,在处理自动化测试的同时也要适合手工测试。关键字驱动的自动化测试框架建立在数据驱动之上,表中包含指令(关键词),而不只是数据。这些测试被开发成使用关键字的数据表,它们独立与测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充。关键字驱动的自动化测试的自动化测试的整个过程所包含的功能都是由关键字驱动的,关键字控制了整个自动化测试的过程。(这个就是表驱动测试了比数据驱动的数据多了点关键字!oh!原来是这样)HP_UFT是关键字驱动的大家可以结合理解。

(5)混合测试自动化测试框架

综合以上两种自动化测试框架,取长补短,弥补各自的补足:以数据驱动的脚本为输入,通过关键字驱动框架的处理得到测试结果,完成自动化测试过程。这样可以使数据驱动的脚本利用关键字驱动框架通常提供的库和工具。这些框架工具可以使数据驱动的脚本更为紧凑,而且也不容易失败。(3和4混合使用了我的天!)

自己画的图。。。。

常用的自动化测试框架及测试框架的发展(Alpha)的更多相关文章

  1. [Automation] 自动化测试工具和测试框架大集合

    8 Open Source Test Automation Tools for Desktop Applications written in WinForms/ WPF: Tool Comment ...

  2. TestNG 搭建测试框架 自动化测试

    框架层级及基本组件:    参考:https://www.cnblogs.com/jier888/p/8998724.html Java作为开发语言 Maven管理项目及Jar包 Testng作为测试 ...

  3. 关于基于python2.7的unity自动化测试框架GAutomator测试环境的搭建(源码网盘下载地址:https://pan.baidu.com/s/1c2TXwtU)

    关于基于python 2.7的unity自动化测试框架GAutomator测试环境的搭建 百度云盘链接(思维图学习资料):https://pan.baidu.com/s/1dFWExMD 准备工作(具 ...

  4. Python几种常用的测试框架

    一.测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过 ...

  5. TestNG测试框架在基于Selenium进行的web自动化测试中的应用

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ TestNG+Selenium+Ant TestNG这个测试框架可以很好的和基于Selenium的 ...

  6. python 几种常用测试框架

    测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过se ...

  7. <自动化测试>之<使用unittest Python测试框架进行参数化测试>

    最近在看视频时,虫师简单提到了简化自动化测试脚本用例中的代码量,而python中本身的参数化方法用来测试很糟糕,他在实际操作中使用了parameterized参数化... 有兴趣就查了下使用的方法,来 ...

  8. Android自动化测试,5个必备的测试框架

    Appium Appium是一个开源的移动测试工具,支持iOS和Android,它可以用来测试任何类型的移动应用(原生.网络和混合).作为一个跨平台的工具,你可以在不同的平台上运行相同的测试.为了实现 ...

  9. Android开源测试框架学习

    近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...

随机推荐

  1. Zynq-7000 FreeRTOS(二)中断:串口Uart中断

    总结Zynq-7000器件的PS上的串口中断,为FreeRTOS中断实验做准备.

  2. JavaIO流总结

    字节流 InputStream FileInputStream FilterInputStream BufferedInputStream DataInputStream PushbackInputS ...

  3. Visual Studio 跨平台開發實戰(5) - Xamarin Android 多頁面應用程式開發 (转帖)

    前言 大部份的Android 都具有實體或虛擬的Back鍵. 因此在處理多頁面應用程式時, 與先前所介紹的iOS Navigation controller 比較起來會簡單許多. 1. 開啟Visua ...

  4. maven上传源码到私服

    上传源码 项目中采用了分模块的方式构建,直接将maven-source-plugin写到父pom中,尝试了很多次发现源码一直不能上传到私服中,纠结了很长时间才发现原来多模块项目和普通一个项目的配置是有 ...

  5. 一头扎进Spring之---------Spring七大核心模块

    Spring七大核心模块 核心容器(Spring Core) 核心容器提供Spring框架的基本功能.Spring以bean的方式组织和管理Java应用中的各个组件及其关系.Spring使用BeanF ...

  6. 有符号整数比较v.s.无符号整数比较

    本文尝试从汇编的角度给出有符号整数比较与无符号整数比较的区别所在. 在<深入理解计算机系统>(英文版第二版)一书中的Page#77,有下面一个练习题: 将上述示例代码写入foo1.c文件, ...

  7. Caffe入门随笔

    Caffe入门随笔   分享一下自己入门机器学习的一些资料:(1)课程,最推荐Coursera上的Andrew NG的Machine Learning,最好注册课程,然后跟下来.其次是华盛顿大学的Ma ...

  8. Redis 【keys】 一句话说明

    DEL----------------------------------删除给定的一个或多个key DUMP--------------------------------序列化给定key,并返回被 ...

  9. synchronized同步锁

    在多线程的情况下,由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问.由于 ...

  10. Java中HashSet的解读

    一. HashSet源代码 HashSet 的实现   对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的 ...