转自:http://blog.csdn.net/snakeshiy/article/details/8565178

对于自动化测试框架,其实并没有多数人想象中的那么高深玄乎,框架的概念只是一系列的被事先定义好的标准和规范。在自动化测试中我们经常提到的对测试需求 的解析、脚本设计、测试执行、测试报告、维护管理等等,通过框架将它们串联并封装起来,从而使框架的终端用户能够更方便地使用。然而,一个好的自动化测试 框架,不仅仅要能让用户方便使用,还需要考虑很多其他因素,下面就来分享一下一些个人的经验。

  • 选择一种类型的框架

目前比较常见的自动化测试框架主要有3种:数据驱动框架、关键字驱动框架和混合型框架。

1. 数据驱动框架(Data Driven Framework) 

数据驱动最适合测试的业务逻辑固定不变的应用程序,只有测试数据会变化。通常测试数据会被配置在外部文件或数据库中。

2. 关键字驱动框架(Keyword Driven Framework)

关键字驱动顾名思义,它提供了一系列通用的关键字,用户通过调用这些关键字并输入一些参数可以实现单个操作,比如,打开浏览器、打开某个网页、点击某个链接等等,然后通过组织这些关键字形成一个完整的测试流程。

3. 混合型框架(Hybrid Framework)

混合型框架就是把数据驱动和关键字驱动整合起来,同时具备了两者的优点。与关键字框架不同的是,这种框架通常会提供一些针对于特定应用程序的关键字,比如 登录、登出等。然后在完整测试流程的基础上,再应用一层数据驱动,这样就能使测试逻辑和测试数据更加灵活和可配置。

  • 不必重新造轮

在设计框架的时候应该尽可能的沿用自动化测试工具已提供的功能。比如,一个基于selenium的框架,selenium本身就已经提供了打开浏览器和网页,点击按钮等功能,就不必花时间再去开发这样一些关键字,以减少开发成本。

  • 可重用性

一个好的框架必须具有高度的可重用性。我们可以把一些单独的操作组合成一些最常用的测试流程,比如,把“输入用户名”、“输入密码”、“点击登录”三个操作组合成一个关键字“登录”。

  • 配置管理

如同开发团队一样,自动化脚本也需要有配置管理,这样才能更有效地对脚本的提交、修改、版本控制、基线化等操作进行管理,所以在设计框架的时候需要考虑结合配置管理工具,如CVS、VSS、SVN等。

  • 可配置性

1. 外部可配置性

脚本的配置项应该放在外部文件中,像URL,路径,版本信息等,从而能使脚本在不同的环境下运行。另外配置文件的路径也不能写死,应采用相对路径,以保证框架能在不同的机器上顺利运行。

2. 内部可配置性

当框架部署到不同的机器上时,会有不同的环境,要有能够自动根据不同的系统环境完成必要配置的能力。举个例子,比如一个selenium框架被部署到装有不同浏览器的机器上,框架应当能根据当前系统上装了哪些浏览器而分别运行它们。

  • 对象库维护

在自动化测试中遇到的大多数问题基本上都是由于对象的属性变化导致的脚本失败,所以,对象库的维护能力对于一个框架来说十分重要。我们可以把对象库作为一个共享资源,由专人进行维护。对象库可以是一个外部的XML、Excel、数据库等。

  • 执行模式

需要考虑到以下几种用例执行需求:

1. 执行一个单独的用例

2. 执行一个测试用例集

3. 重新执行失败的用例

4. 根据其他的用例或用例集的运行结果执行相应的用例或用例集

除了这些以外可能还有其他的方法,主要是根据项目的需求来的,所以只需要满足特定的项目测试需求就可以了,不必全部都实现。

  • 状态监控

在脚本执行的时候,框架应当能够实时监控脚本的运行情况,如果碰到运行故障的时候应当能进行基本的容错恢复处理,这样的话不至于使脚本处在一个被block的状态,从而浪费大量时间。

  • 测试报告

不同的应用程序往往会有不同的测试报告的要求,有时需要把许多用例集的运行结果结合起来(总的运行报告)看,多少个成功,多少个失败,通过率多少;有时又要看单独一个用例的执行情况,哪一步失败,失败原因是什么。

另一方面,多样化的测试报告表现形式也是需要考虑的。Excel、word、web、pdf、...等形式可以根据实际项目需要来选择,但不论做成何种形式都至少要保证测试报告的易读、易访问。

  • 易调试性

一般情况下,调试(debugging)在开发测试脚本的过程中会占据大量时间,所以是否易于调试也是一个很重要的因素,直接影响到开发和维护框架的成本,不容忽视。

  • 测试日志

一个好的框架应当能在测试执行过程中生产足够详细的日志信息(文字、截图等),这对于调试的帮助很大,同时也能我们快速定位到问题所在,节省时间。

  • 易用性

易学易用对于自动化测试框架来说也很重要,因为毕竟是要面向最终用户的,如果框架很难上手,会失去用户群体,那框架也就没有存在的意义了。所以在保证易用性的基础上,最好有一个详细的框架说明文档,对于新手来说帮助会比较大。

  • 灵活性

灵活性是指框架应当能保证在目前的基础上做二次开发的能力,这个其实跟软件开发的标准是一样的,预留足够的可扩展性以便未来的版本升级。

  • 性能

框架设计不宜过于复杂,太复杂的框架会增加脚本的加载、运行时间,从而导致运行脚本的效率低下。所以在设计框架的时候,也要考虑到性能这一因素。

  • 引用外部工具

有 一些外部工具本身就提供了自动化接口的,我们不妨可以把它融入到框架中,可以省去不少工作量。比如,经典的QTP+QC框架。

  • 编码规范

好的编码规范能使脚本易读、易维护、易管理。下面列出了一些点:

1. 变量、常量、函数、文件、脚本的命名规范

2. 函数、函数库的注释规范

3. 对象命名规范

最后需要说一句,自动化测试框架永远没有最好的,只有最适合的!

【转】我眼中的自动化测试框架设计要点相关推荐

  1. 《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  2. 《精通自动化测试框架设计》—第2章 2.3节测试数据交互基本方法

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第2章,第2.3节测试数据交互基本方法,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区 ...

  3. 《精通自动化测试框架设计》目录—导读

    作者简介 精通自动化测试框架设计 陈冬严,浙江大学硕士,具有10年软件测试和团队管理的工作经验,先后服务于ITSM.PLM软件研发企业,现就职于某金融行业核心机构IT规划部门.业余时间喜欢园艺. 邵杰 ...

  4. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

  5. 自从掌握了Selenium自动化测试框架设计,我在公司都横着走!

    测试工作对技术的要求不低,测试工程师更是高技能职位.但有很多新入行的伙伴认为,测试工作就是钟"点"工,用鼠标在软件点里点~点~点~就能做测试.这种思维是很可怕的,这会对测试人的职业 ...

  6. 一套完整的Selenium自动化测试框架设计实战,这次38K, 妥了

    金九银十,大家都铆足干劲想抓住机会涨薪进大厂.结合这几年的行业趋势,想要挑战大厂面试,首先必须吃透Selenium自动化测试框架设计. 这里说一下原因: 首先,一线互联网大厂无一例外,全都要求测试人掌 ...

  7. 《精通自动化测试框架设计》—第2章 2.6节使用数据库

    本节书摘来自异步社区<精通自动化测试框架设计>一书中的第2章,第2.6节使用数据库,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区"异步社区" ...

  8. python接口自动化测试框架pdf,Python接口自动化测试框架设计到开发完整版2019

    1:课程详细介绍.mp4 ; k& X* V: X! X% \; ]; u- V$ z7 L) h: C; h2:课程答疑.mp4+ J  K* q0 O  x + j( v2 n7 B7 s ...

  9. python接口自动化测试框架实战从设计到开发_【B0753】[java视频教程]Python接口自动化测试框架设计到开发完整版视频教程 it教程...

    Java视频教程名称:Python接口自动化测试框架设计到开发完整版视频教程   java自学网[javazx.com]  Python视频教程   it教程 Java自学网收集整理 java论坛&q ...

最新文章

  1. Java 异步与同步的区别
  2. GDCM:png文件转为dcm文件的测试程序
  3. python 分离整数与小数_Python编程:离不开算术运算符的顺序结构
  4. 扩容是元素还是数组_Map扩容源码
  5. Selenium代码示例
  6. 四大组件之Activity
  7. Python列表常用操作,浅拷贝及深拷贝
  8. 错误信息:org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
  9. cache log:minzip: zlib inflate call failed (zerr=-3)
  10. SpringBoot 请求相关
  11. Winsock 10106错误解决方法
  12. 【Fuzzy】隶属度函数和模糊推理
  13. C语言经典题目(一)
  14. FL Studio 21最新中文版安装教程
  15. Fatal signal 11问题的解决方法
  16. 《为什么精英都是时间控》读书总结
  17. 编译error: no acceptable C compiler found in $PATH
  18. 学习笔记1--自动驾驶系统架构
  19. excel图表配合下拉菜单_在下拉列表中选择Excel仪表盘图表
  20. JAVA代码总结开始篇【白丁水笔知其然】

热门文章

  1. Windows系统安装ActiveMQ
  2. c 标签 foreach里面套choose做判断
  3. python中的pylab_Python数值计算:一 使用Pylab绘图(1)
  4. rpc服务器进不了系统,Win7系统RPC服务器不可用怎么解决?
  5. 74ls161中rco是什么_什么是催化燃烧?如何选择催化燃烧设备?RCO和RTO有什么关系?...
  6. jsp:param能不能传递变量_变量、作用域与内存
  7. SQL中Convert()函数的使用方法
  8. 苹果如何分屏_玩转mac—苹果电脑操作教程
  9. python完全支持面向对象编程_Python 面向对象编程概要
  10. 汇编学习--7.9--寄存器