我的测试历程—QTP之狭义的数据驱动模型

07年我参加了软件测试工程师培训课程(课程中包含自动测试工具,功能:QTP,性能:LR),QTP课程主要讲解了QTP的关键字视图相关的内容(专家视图部分没有涉及),培训完以后,我对QTP的认识是:QTP使用起来很简单,就是一个录制、回放(不通过就调试)、细化脚本、再回放(不通过就再调试)、出报告的过程,那时候对QTP的认识很肤浅,也和一些朋友一样对QTP产生过类似的质疑:QTP能满足实际项目包罗万象的需求吗?当时感觉QTP只能应用在主要流程的验证上,而且没有真正意义上做到测试的自动化(当然以上都是07年对QTP的认识)于是我停止了继续深入学习QTP……
  09年9月左右,由于项目人手少,测试时间又短,所以每次版本更新后,只对新增功能和相关模块进行测试,而比较稳定的模块只走一个正常流程(甚至时间太紧连正常流程也来不及走了),另外由于我所在项目和另外一个项目都是一个大项目的子项目,所以另外一个项目的修改也可能导致本项目的一些功能不可用,下面有个实际项目中遇到的例子:有一次另外那个项目修改了数据库结构,数据库中删除了一个字段,导致我这个项目的一些特别稳定的功能中查询该字段的所有地方都报“黄页”(当然这些地方都做了安全处理,只抛了个自定义的页面,没有把代码抛出来),当时吓出了一身“冷汗”,还好每次更新我都会挑一些没有修改模块进行抽查,这次运气好,刚好抽到了,俗话说:“吃一堑长一智”,就算完全没有修改的模块也应该验证一下,但是目前的时间和人力只够对新功能的测试,我又想到了QTP,于是我安装了QTP,将老功能的业务流程录制成脚本,每次更新后,跑一下流程,验证一下老功能是否可用,成功案例:有一次QTP回放当中发现2个地方报“黄页”,后来才知道是因为另外一个项目更新了WEBSERVICE,而我这个项目的那2个地方刚好要调用那个WEBSERVICE,所以会报错,由于这一次的经历让我忽然对QTP产生了兴趣,对QTP脚本进行了更深入的学习,从07年的完全自动录制到现在的手动写脚本,从脚本依赖对象库到脱离对象库,从求助别人到帮别人写实际项目的自动化测试脚本,从各个测试脚本相互独立,到自己编写自动化测试框架……2个月前自己写了个测试框架,实现了运行一个VBS脚本,就可以打开QTP(脱离对象库)并按照CASE优先级从高到低运行所有需要运行的CASE,运行结束自动将结果写入文件中……2个星期前重新设计框架提高脚本开发效率和简单易用性。
  下面写下现在我对QTP的看法:在没有接触自动化测试框架之前,我所有的脚本都是都是相互独立的,即:每个功能作为一个TESTCASE,这样就导致每次都要手动把每个脚本运行一遍,然后看报告,感觉自动化一点也不自动化,而且脚本的可重用性也很不好。于是我就在想,怎样才能做到真正意义上的自动化呢?可不可以通过运行一个驱动脚本打开QTP然后自动运行所有指定的脚本用例呢?后来在网上查了相关资料,开始自己搭建自动化测试框架:
  我的第一个框架:由依赖对象库到脱离对象库,由自动录制到手动编写测试脚本。这个框架思想是学习于51
  论坛中的《轻量级自动化测试框架》,只不过在此基础添加了一些功能,比如用例执行优先级。当时觉得这个框架很好用,全部使用描述性编程这样可以使用例不依赖对象库运行,提高了脚本的可移植性,但是随着对QTP认识的不断的深入,渐渐的发现描述性编程的弊端:脚本开发效率太低,同样开发一个测试脚本,完全使用描述性编程和自动录制+手动增强脚本相比,录制一个同样的功能,需要的时间大约3-4倍,甚至更长,因为使用描述性编程需要对对象的各个属性特别熟悉,另外完全使用描述性编程的调试效率也很低,使用哪些属性作为识别该对象的依据又需要一个判断过程,这样都会降低测试脚本的开发效率,还有描述性编程对编程基础有一定要求,所以我觉得脚本开发应该以自动录制+手动增强脚本为主,以描述性编程为辅。因为在有的项目中有些步骤可能通过自动录制是录制不到的,这时候描述性编程就起到很好的辅助作用。
  我的第二个框架:由脱离对象库到依赖对象库,由手动编写测试脚本到自动录制+手动增强脚本(以描述性编程为辅)。由于第一个框架的弊端,所以我在想怎样避免这个弊端,提高脚本开发效率,自动录制是开发脚本最快的一种方式,而且对脚本开发人员的要求很低,于是我开始把目光回归到QTP这一最简单最基本的功能上。开始设计一个属于我们“菜鸟”的测试框架。(其中借鉴了《QTP项目应用与进阶》中测试用例模板)
  这个框架(相对于第一个框架)的优点:1、降低人员素质的要求,使用例的脚本开发人员不需要懂得太多QTP方面的专业知识,只要掌握简单的录制回放过程和脚本增强就可以,这样避免有些人整天忙有些人“没事”做了,从而达到资源的充分利用。2、提高脚本开发效率。
  这个框架(相对于第一个框架)的缺点:调用外部ACTION相对复杂一点,需要明确知道该ACTION所在脚本的位置,不过这一点可以通过文档解决这个问题,制作一个 ACTION列表就可以了。2、对象+

 由于这个框架写在了“丫头”的毕业论文中,目前她还没答辩,为了避免不必要的麻烦,所以这里就不详细写了(大家看了附件的框架实例就应该能明白我的思路了)本实例是使用QTP10.0录制的,重点阐述的是一种思想,脚本中很多功能未加入。例如:自动加载插件的功能,不过大家可以自己加一下(QTP自动化对象模型参考中有加载插件的代码),另外QTP版本比较低的朋友可以自己录制下脚本替换掉Script文件夹下对应的脚本试下。若要设置脚本运行时QTP可见,可以将函数driver()中的qtapp.visible=False修改为qtapp.visible=True
  最后,如果哪位朋友有什么好的建议或觉得哪里需要改进,可以给我留言,如果有时间我会试着改进一下,另外写的不好的地方也请多多指正,谢谢!
  向大家推荐2本QTP相关的很不错书:
  《QTP项目应用与进阶》 E测工作室(风过无息、斐明哲、黄先容、韩柳、俞戴龙 化学工业出版社
  《QTP自动化测试实践》 陈能技 电子工业出版社
  第一本书我买了而且前段时间看了,感觉很不错,思路很清晰,而且包含编码规范等自动化以外的的知识,感觉写的蛮好的。
  第二本书最近才了解到这本书,不过没看过,朋友说很不错,正打算买呢,另外看了作者博客里的资料,感觉写的很好,所以就推荐大家看看,希望能对大家有所帮助,谢谢!
版权声明:本文由会员 feiyunkai 首发于51Testing软件测试论坛 [软件测试新手上路] 版块。
原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-03 11:50:56

我的测试历程—QTP之狭义的数据驱动模型的相关文章

我的测试历程---用例设计思路(安装/卸载)

我一直从事B/S测试工作,因为对网游(主要是C/S结构的)比较感兴趣,所以现在开始学习游戏开发方面的知识(刚开始看),比如opengl..VC++游戏设计入门.windows游戏编程大师技巧.数据结构算法等,为以后转游戏测试做准备,既然做C/S测试,安装/卸载是测试的很重要的部分之一,所以利用空闲时间写一下自己的安装/卸载用例设计思路,练习一下,如果你觉得写的不好或者觉得有需要补充的地方,请大家提出来,大家共同学习,共同进步,谢谢! 安装卸载用例设计思路(界面.易用方面的没写) 一.安装路径:

JUnit测试小记

今天说说junit测试技术,其实这个技术大部分人都听过,只是有些人没用过而已,这东西说起来也很容易,但是确实软件开发过程中必不可少的一门技术,对于一些不规范的小公司也许产品的发布不经过测试,但是对于大型的软件开发的时候,这技术往往是必不可少的,因为任何一个小地方出错都可能是一个很难发现的,但是junit技术这个单元测试技术让我们能边开发边测试,使我们的最终产品出错的几率达到最少. 我今天讲的例子,开发环境是myeclipse6.0,在这个开发环境中其实已经集成了我们所要的JUnit测试相关的类,

《精通QTP——自动化测试技术领航》—第1章1.3节录制与回放—QTP的开关

1.3 录制与回放-QTP的开关 精通QTP--自动化测试技术领航 阶段要点 录制在实际项目应用中的价值观(极低). 新手切记不可在项目应用时被禁锢在录制中. 录制及其相关功能的重点知识点提炼. 录制功能"旁门左道"式的妙用. 录制的3种模式及应用. QTP回放机制重要原理. 实际项目应用时关于QTP脚本回放的几项重要设置详解. 1.3.1 请拒绝"录制",再开始你的实际项目之旅1.3.1.1 引言 当人们一提到QTP,第一反应就是,它是Mercury公司旗下的一款

自动化测试工具Selenium和QTP的比较

一.用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过javascript来控制的.执行时窗口可以最小化,可以在同一机器执行多个测试.QTP完全模拟终端用户,独占屏幕,只能开启一个独占的实例.TestComplete和qtp类似. 二.UI组件支持:selenium 支持主要的组件,但是某些事件.方法和对象属性支持不够,QTP提供了良好的支持,通过收费的插件,提供了对dotNet组件的支持. 三.UI对象的管理和存储:QTP的内置了良好

使用基于模型的测试工作流进行与安全相关的软件开发

安全相关软件的挑战 嵌入式软件已经逐渐成为当今创新型产品的核心.对于在我们日常生活 中必不可少的产品来说,嵌入式软件是定义其功能,控制其电气和机械系统的重要组件.例如,在飞机 .汽车.火车或医疗设备中,故障可能会导致人身伤亡.此时必须倍加谨慎,也需要付出额外的努力, 确保系统安全运作,保证用户的安全,避免代价高昂的产品召回. 对于极度注重安全的代码, 企业必须遵循严格的开发标准和指导准则,例如针对商业航空电子设备的 DO-178C 和 DO-178B:针对 汽车的 ISO 26262:针对医疗设

Visual Studio 单元测试之三---压力测试

原文:Visual Studio 单元测试之三---压力测试         我们都知道大名鼎鼎的LoadRuner,但是很少有人知道Visual Studio自带的Test也可以做些简单的压力测试,下面我们就介绍一下如何利用Visual Studio进行压力测试.       此文是上一篇博文:Visual Studio 单元测试之一---普通单元测试的后续篇章.如果读者对Visual Studio的单元测试不熟悉的话,请先参看上一篇.http://blog.csdn.net/tjvictor

基于模型的测试工具: Spec Explorer

一.什么是基于模型的测试 Wiki的描述如下:基于模型的测试属于软件测试领域的一种测试方法.按照此方法,测试用例可以完全或部分的利用模型自动产生.以上所说的模型通常是指对被测系统(SUT,system under test)某些(通常是功能性的)方面的描述. 模型一般都是对被测系统(SUT,system under test)预期行为动作的抽象描述. 这些测试用例的集合就是我们平时所称的抽象测试套件(abstract test suite). 抽象测试套件不可以直接执行于需测试的系统,因为,他们

python高性能web开发与测试实验实例

python具有如下两个特征: 解释型语言 GIL全局解释器锁 前者导致其性能天然就被编译型语言在性能上落后了许多.而后者则在多核并行计算时代,极大的限制了python的应用场景. 但是通过合理的web框架,则可以使用python扬长避短,仍然能够在多核并行时代须保持其高效开发的生产力同时,在性能上也有出色表现.例如,tornado框架. tornado框架主要做了如下几件事: 使用单线程的方式,避免线程切换的性能开销,同时避免在使用一些函数接口时出现线程不安全的情况 支持异步非阻塞网络IO模型

软件开发中的数据库测试技术

摘要:根据以往软件测试经验,对数据库测试的内容和方法,进行了详细的分析,阐明了数据库测试在软件开发中的重要性. 关键词:数据库测试:性能测试:DataFactory 1.引言 数据库系统的开发在应用软件开发中所占的比重越来越大,随之而来的问题也越来越突出.比如:数据冗余,功能和性能方面存在的问题已经严重影响应用软件的使用.软件测试人员往往重视对软件功能和编码的测试,而忽略对软件性能,特别是数据库访问并发测试.因为,他们固有的思想中认为数据库设计存在问题对系统性能影响不大,或从根本上忽略了数据库在