winrunner经验总结
1.1 脚本录制规范:
基本原则是录制脚本要分开、gui文件要合并、批调用回放验证、可移植回放验证。
1.1.1 录制脚本要分开:
脚本太大,不仅不利于以后的维护,并且会导致WinRunner的不可预测的错误产生(具体可以参考WinRunner 的Readme文档)。录制时,可以根据测试用例的流程,拆分为几个小流程,对每个小流程分别录制成不同的脚本。
1.1.2 gui文件要合并:
首先,要在系统参数中,设置gui的录制模式为“Global GUI Map File
录制过程中,WinRunner会自动产生gui文件,一个测试用例要确保生成一个公用gui文件。用一个gui文件主要是为了以后gui对象的维护,脚本回放时gui对象的查找。但是由于我们的测试用例是分开录制的,每个小流程录制时都会产生一个gui临时文件,因此录制完脚本后要把临时gui文件合并到该测试用例的公用gui文件中。但是也要注意,开始新的录制前,一定要先手工加载测试用例的公用gui文件。
如果划分的子流程超过20个,则按每20个子流程录制一个gui文件的方式。Gui文件太大,会影响WinRunner的回放效率。
1.1.3 批调用回放验证:
为了提高脚本的正确性,每录制完成一个子流程后,都要恢复数据库,其他初始环境进行回放,以近早发现脚本错误。
单个测试用例脚本录制完成后,要专门写一个主脚本,进行各子脚本的主次调用处理,然后恢复数据库和其他初始环境进行回放,以验证整个脚本是否可以正确回放。
1.1.4 可移植回放验证:
由于WinRunner 工具的限制,在本机回放成功后,如果把脚本移植到其他机器上,往往无法成功。这其中既有自己编写的脚本问题,又有WinRunner录制自动生成的脚本问题。
自己编写脚本问题:往往是编写的可移植性较差,如加载gui文件时用的是绝对地址,如gui_load(“c://aa//aa.gui”),这样的脚本换到其他机器必然出错。
WinRunner录制自动生成的脚本问题: WinRunner的录制脚本往往和机器的环境有关,如果换了其他机器环境,往往回放不成功,这就需要手工修改脚本。
因此,可移植性回放是非常必要的。
1.1.5 脚本中使用的ODBC数据源名称统一命名为WR。
1.1.6 录入中文数据时统一使用简体。
1.1.7 数据表列名称规定
录入数据驱动的脚本时,数据表列名称统一采用英文,使用PB数据窗口中列对象的名称。数据表列名称下的第一行用中文对英文列名称做注释,使用PB数据窗口中列对象的中文标签,这一行不作为有效的录入数据。与数据表相关的循环语句请修改脚本从数据表的第二行开始读取数据。典型的例子是将数据驱动脚本中For循环的第一个表达式改为table_Row = 2。
1.1.8 脚本成功回放判定规定
一个子测试录制完成后,一定要及时回放测试,直到测试报告显示测试结果为OK,且子测试明细报告中没有红色的出错提示。如果是回放主测试,回放成功的标准是:主测试的结果报告显示为OK,同时所有子测试的结果报告也为OK,且子测试明细报告中没有红色的出错提示。
1.1.9 WinRuner主脚本中关于设置系统日期时间设置的规定,以保证脚本所描述的业务过程按业务逻辑在时间上有序。
因为脚本回放与脚本录制时的系统日期时间不一致,会导致与系统时间关系密切的测试脚本回放时失败。
为了消除时间差导致的回放错误,要求每一个测试用例的主测试在第一个子测试前加上date_set_system_date(年,月,日,时,分,秒)函数,以修改本地机器的日期时间等于这个主测试在接力式验收回放成功执行后的日期时间.这样再次回放时系统的日期时间就和上一次成功回放时的日期时间一致。

1.2 测试脚本存放规范:
各子测试脚本必须放到同一目录下,即环境目录下的Script目录下。这样便于批调用时引用。
1.3 Gui文件的存放:
Gui 文件,必须和测试脚本放到同一目录下,即环境目录下的Script目录下。
1.4 WinRunner使用规范:
(1) 必须写上清楚的注释:编写测试脚本,要进行详细的标注,每测试一小段,就要写一段备注,以便于将来修改,格式可以参考如下:
   功能描述:描述脚本的功能
   前置条件:该脚本在满足什么条件下才可以被执行
   步骤描述:描述脚本录制的动作
   检查点描述:描述作了对什么的检查,检查条件。
   录入人:录制人
   录入时间:
   备注:
(2) gui文件的加载保存:
每次开始测试用例的录制脚本前,如果该测试用例已经存在gui文件,一定要手工打开gui文件,再开始录制。如果不想手工打开,可以写段自动加载gui的脚本,每次录制前运行一下该脚本。录入脚本后,要注意保存GUI文件,如果测试用例已经存在gui文件,一定要把临时的gui文件合并到该用例的公用gui文件中,然后保存。
(3) 如果机器数据较慢,或者网络较慢、或者数据库运行较慢,需要把等待打开窗口的时间设长。或者在脚本中插入同步点来处理。
(4) WinRunner不支持Fomular One,目前不可以用wr测试Fomular One
使用WinRunner录制时不可以切换不同输入法录制,仅可以用一种输入法。
(5) WinRunner 对shift 键无法纪录,需要特殊处理 ,可以加入如下处理
obj_type "dw_1.fslipbugno","<kShift_L>-";(告诉WinRunner按下Shift键)
中间是选择行的脚本
obj_type ("dw_1.FBugNo","<kShift_L>+";(告诉WinRunner释放Shift键)
(6) 保证录制的脚本干净性:
在录制过程中,不可避免的要进行其他动作,如打开邮件、打开非录制程序等,这些动作也会被WinRunner录制下来,这些动作会严重影响测试脚本的回放(除非作这些动作前停止录制)。
因此,为了保证脚本的干净,在WinRunner的参数中进行如下设置:设置Recode 的“Selected Applications” 为要录制的程序。
(7) 录制脚本时,不允许同时打开两个运行程序(指进行wr测试的程序)
(8) 变量的声明:WinRunner有auto /public /static /extern 四个类型的变量作用域声明,其中public为默认的类型。由于public 是全局的,只要在一个脚本中声明了,在任何其他脚本都可以引用,这就带来一个问题,如果其他的脚本修改了这个public 变量的值,将会引发问题。因此变量声明时必须明确的加上类型(auto /public /static /extern),public 的一般不要使用,推荐使用static /auto 。
2. 异常处理规范:
在录制或者编写测试脚本时,必须进行异常的错误处理。以提高程序的错误检查能力。
2.1 函数异常检测:
对于一些常用函数,必须进行函数执行异常的处理。至少进行如下函数的异常检测:et_window、win_activate、menu_select_item、ddt_open。
发现异常后,要终止程序的执行,并发邮件通知相关人员。
2.2 返回值规范:
模块、函数的返回值约定如下,0 表示成功 ,其他失败。
对于一些函数的返回值,需要进行判断处理:
(1) 每一个call语句都应该检查它的返回值是否为0, 如果不为0则报错退出。
所有GUI检查点、数据库检查点都应做返回值检查。如果不为0则报错退出。

Winrunner经验相关推荐

  1. QTP和WinRunner区别

    转自:http://www.cnblogs.com/Lemon_s/archive/2008/10/10/1307769.html QTP,全称为Quick Test Professional,它与W ...

  2. 怎样学习才能拥有所谓“高并发”的经验?

    这个问题完全可以重定向到如何处理高并发业务场景. 以下只是我工作一年多接触到的一些基础,也许有偏差,要具备高并发的经验确实需要有实际项目,因为业务逻辑其实很容易理清,但是要在高并发的情况下如何找到业务 ...

  3. 一个优秀项目管理师和系统分析师的75条经验(转载)

    一个优秀项目管理师和系统分析师的75条经验 (转载http://www.worlduc.com/blog.aspx?bid=2878376) 李建伟(湖南化工职院) ================= ...

  4. 基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...

    在很多系统模块里面,我们可能都需要进行一定的数据交换处理,也就是数据的导入或者导出操作,这样的批量处理能给系统用户更好的操作体验,也提高了用户录入数据的效率.我在较早时期的EasyUI的Web框架上, ...

  5. 32 vs 开发wince_十年经验的大神谈如何学STM32嵌入式开发

    理解嵌入式 从硬件上说 "嵌入"将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累加器的功能,一切芯片要造外部桥路来扩展实现 ...

  6. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...

    一.考研选择该校的原因以及考虑到的因素 1.学校定位,对比本科学校.每个人考研都有一个非常重要的原因,就是去比本科更好的学校,提高出身问题.所以大家都想考985.211.我也不例外,因为我本科是211 ...

  7. 为什么你的工作经验不值钱

    前言 每年的三月到六月,都是招聘高峰,除了大量的应届毕业生涌入社会之外,还有一些工作了一两年尚未找到稳定归属感的人,也会开始投递简历,是的,基本都是在拿了年终奖之后.作为前端技术主管,有幸,或者说是不 ...

  8. Linux进程与线程的区别 详细总结(面试经验总结)

    首先,简要了解一下进程和线程.对于操作系统而言,进程是核心之核心,整个现代操作系统的根本,就是以进程为单位在执行任务.系统的管理架构也是基于进程层面的.在按下电源键之后,计算机就开始了复杂的启动过程, ...

  9. 2021暨南大学计算机考研,暨南大学2021广播电视专硕经验贴

    [基本信息] 本人来自江西某二本大学,本科专业是广播电视编导,,初试总分396分.其中政治81,英语62,专业课一126,专业课二127.初试排名第三.专业课第一,录取总成绩排名第二. [关于英语62 ...

  10. java mongodb存base64_阿里JAVA面试分享经验【文末有福利】

    基础篇 参考这里的面试题:面试题写在后面了 能回答上百分之七十,基础的广度就算OK了.如果达不到,那么缺什么就赶紧补什么.广度达到了,还需要对个别热点问题有深度.每个人的精力都有限,可以适当挑选两个热 ...

最新文章

  1. 【模板引擎】Springboot整合ThymeleafThymeleaf基本语法
  2. 宅男程序员给老婆的计算机课程
  3. vue如何发送网络请求,使用axios事半功倍!
  4. linux cron计划任务
  5. 十二省联考2019游记
  6. python读取hdf5文件_Python处理HDF5文件
  7. Android组件化方案及组件消息总线modular-event实战
  8. echarts源码:图标类插件开发
  9. 【LeetCode】【HOT】21. 合并两个有序链表(递归)
  10. Android 学习笔记 Service服务与远程通信...(AIDL)
  11. xci转nsp_找不到xci怎么办,自己动手丰衣足食!
  12. JMH在性能测试中的使用
  13. C#开源代码Newbeecoder.UI控件库极力推荐
  14. 浅谈快速沃尔什变换(FWT)快速莫比乌斯变换(FMT)
  15. java pdf 修改内容_生成PDF全攻略之在已有PDF上添加内容的实现方法
  16. 树莓派显示到笔记本屏幕上
  17. 投机者怎么在市场中使用底部放量进行程序化交易
  18. 小程序判断一个对象是否为空 length不为0的空对象(空集合list)
  19. UTM坐标与GPS经纬度(WGS84)的相互转换
  20. http://blog.sina.com.cn/s/blog_5eec6f3a0100hxwn.html

热门文章

  1. matlab 颜色代码 大全_空客 | 红、绿、蓝、白,各类颜色代码的含义
  2. Python读取罗技G29数据
  3. 2022危险化学品经营单位安全管理人员考试模拟100题及模拟考试
  4. TongWeb和Tomcat的区别
  5. Visual Studio 2013 、Matlab 2014产品密钥
  6. Docker使用阿里云镜像加速
  7. java的代码大全_java代码大全
  8. 零碎技术栈01_UML画图分析
  9. .npy文件_python——文件读写
  10. 51单片机带闹钟c语言程序,51单片机定时闹钟程序(带按键)