QTP描述性编程简介与Java CS程序实例

本文探讨了QTP中的录制模式与描述性编程的区别及应用场景。详细介绍了描述性编程的实现方式及其在JavaSwing应用中的实践案例。此外,还讨论了如何选择对象属性和操作以确保测试脚本的稳定性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     一、录制模式和描述性编程

     熟悉QTP的同学都知道,QTP有两种脚本编写方式:录制模式和描述性编程模式。

     录制模式不用多说,碰过QTP的都熟悉。描述性编程是通过脚本的编写对对象的属性进行描述,通过合适的对象和正确的描述达到唯一定位该对象的目的,进而确定这个对象,对其进行操作。

     录制的方式脚本编写简单快速,但由于特定控件的识别方式是QTP内置,所以灵活度低,虽然可以通过identification的配置进行更改,这已经走出了录制的本意也带来了复杂度,并且未必能得到最终的目标。同时,一些特殊对象无法进行识别(如名称发生变化的)。作为一个使用过录制和描述性两种方法的作者,我逐渐抛弃录制还有一个原因,我不想去管理对象库。当项目有一定规模的时候,一些通用控件是否要统一管理在全局对象库中,有了变更又怎么处理?通用控件也分层次,哪些是整个系统的,哪些是某个模块的,还要做区分。 与其考虑这么多事情,有事还要猜QTP的处理,还不如干脆的进行描述性编程。

    描述性编程最大的好处就是灵活,能够更好的对通用控件、处理进行模块化。缺点就是脚本周期长,投入成本高。综合考虑一下,如果用录制方式的脚本回放有诸多问题,调试如此痛苦,直接用描述性编程,可以说是长痛不如短痛。

    我理解描述性编程其实是QTP把更多的控制权交给了稍微懂得多一点的人,或者是想懂得多一点的人。特别是最近遇到几个问题,通过Test Object的Operation无法完成操作时,调用Native的Operation解决了貌似无法解决的问题,更体会到了灵活的好处。

    二、描述性编程实例

      目前面对是一个Java Swing编写的CS系统,简单对一个窗口进行放大和缩小。

    

            这是一个描述性编程的实例,通过JavaWindow的toolkit class属性进行该窗口的描述,进而在系统中唯一标示该对象。对于类似的通用对象可以进行通用函数库的封装,如上放在common库中,项目都可以使用。其他需要的地方调用的方式如下。

           

          直接调用该对象,对其进行最大化、闪烁、关闭。不需要考虑对象库如何存储、管理,如果是本模块的通用对象、处理,就定义本模块的函数库,只要有基础的C语言全局变量知识、函数作用域知识就能够理解。

        三、Java对象属性说明

        描述性编程时使用什么属性是有规律可循的,实在不行index肯定好使。不到万不得已不推荐,界面变更会导致index变化。

      

      1、Java对象隶属结构。这是该对象如何存在在系统的树形结构,从根到所选对象,表示如何从主窗体加了什么panel,又做了什么split,最后到了需要识别的对象。这个关系还是比较重要的,对识别是有用的。形象的说,这是一个该对象怎么产生的家谱,从它往上找可以看到它的父对象是谁、祖父对象…………

    2、Properties是属性,Operation是操作。实际就是该对象的成员变量(简单类型,能够转成String的,如果是对象类型,需要通过chilcobjects去跟踪)和成员函数。操作后面说。Properties又分两联:Native和Identification。

   3、Native是原生态,Identification是QTP识别属性。Native是QTP认为的这个对象的全部原有属性,为什么说是QTP认为的,因为在使用中发现,和实际的系统代码编写并不一致。比如系统中某JavaTabel定义了一个记录横纵坐标的和,QTP是不会列出来的。这很容易理解,QTP是拿着Java插件来识别、解释Java对象,自己系统中定义的偏门变量QTP没有你的代码、没有Jar包,如何得知?Identification是QTP负责任的属性,这些属性肯定可以获取,但不保证唯一。

   4、具体的属性和具体的值的对应值。说明几个了解的,更多的没有用到。

         abs_x和abs_y,获取坐标值的绝对值,能够获取,用来识别不靠谱。

         attached text,获取附件字段,存在是部分可以识别

         index,对象下标,在sby中看到为空,实际是有值的。实在没办法时用来识别,屡试不爽。

         label,标签值,用来识别button特别好用,部分window也可以使用。

         tagname,标记名称,很多时候与label、attachedtext三者一致,可以用来识别。

         text,字符串内容,可以用来识别

         toolkit class,特别推荐使用的属性,从内容看就是该对象的包名,所以特别适合定位Java对象。

      四Java对象操作说明

      

       操作的界面基本与属性类似。

      1、原生态操作和QTP操作。概念与Properties类似,原生态是QTP给的借鉴,经验说明是不负责任的提示,我的经验是使用JavaAPI还靠谱些。QTP给出的操作还是很丰富也是很好用的。

      2、选择的操作和描述。这个描述只有Test Object这一联有,其他的都没有。说明选择的操作含义。



        综合考虑,如果项目要很快出脚本,用个一次半次就不用了,不用考虑维护和扩展,建议使用录制模式。如果项目有一定规模,需要重复使用,建议描述性编程。即便是自己学习,个人也推荐描述性编程。能够通过描述性编程获得更大的控制权,而录制模式遇到无法解决的问题真的有种有力无处用的感觉。

      

自动化功能测试是一种企业级的用于检验应用程序是否如期运行的功能性测试工具。1. QTP描述性编程 8 2. 描述性编程2 15 3. 函数 17 3.1. QTP中几个截取字符串的函数 18 4. "+" "&"的区别 20 5. QTP场景恢复 21 6. QTP中测试环境的初始化 27 7. QTP将数据库中的数据导入到excel 29 8. 在QTP中将数据库的数据导入到EXCEL 29 9. QTP将数据测试驱动 31 10. QTP中设置共享对象库 32 11. QTP ActiveX 报错; 35 12. 数据驱动在测试中的应用 35 13. 在Excel中增加超链接的方式 39 14. 登陆脚本设计 40 15. QTP中Wait同步点的区别 41 16. QTP tips 41 17. Action 调用 45 18. Action 参数调用 47 19. QTP中根据日期计算年龄的解决办法 48 20. 测试报告知多少 48 21. 调用共享文件 49 22. 识别grid中的button 52 23. How to parameterize your link 52 24. QTP中的步骤生成器 54 25. QTP感想 56 26. QTP 参数化实例 60 27. 对象库的管理合并 62 28. QTP中虚拟对象设置 66 29. QTP删除新建文本文件没有权限的问题 68 30. 关于Filter如何使用的疑问 69 31. Call Windows API 69 32. Global 和local区别 72 33. QTP itself API 73 34. QTP需探讨的问题 74 在我的文章中也提到过了,描述性编程能让QTP脱离对象库来执行脚本.在某些特殊应用的时候,可能就更方便点.比如:要针对某个对象的参数化等等.而且描述性脚本因为脱离了对象库,所以增加了脚本的可移植性.同时脚本也更具有可读性.当然也给手工写脚本提供了一个平台. 74 35. 正则表达式的应用 75 36. 数据驱动测试: EXCEL 81 37. Action parameters 92 38. 数据驱动测试:文件 95 39. 相对路径action path 101 40. 两种方法参数化link 101 41. WScript 102 42. QTP Plus 的应用 109 43. 一个万能的键盘模拟函数 110 44. XML参数化 115 45. Oracle QTP 115 46. 对象库的管理合并 116 47. change sysdate 120 48. Import Excel 120 49. Call Dll 121 50. Call Function 123 51. Global and local 区别 124 52. Shell 124 53. 对文件系统操作 125 54. 对象同步 125 55. 正则表达式应用模板 125 56. Wscript.shell 的应用 126 57. Create log file 126 58. 对象同步 127 59. 异常控制 127 60. Check if the object.exist 128 61. QTP场景恢复 129 62. QTP步骤生成器 135 63. IFRAME issues 138 64. Iframe issues 续 142 65. QTP解析PDF 144 66. QTP常见问题解答一 144 67. QTP常见问题解答二 146 68. QTP常见问题解答三 149 69. QTP常见问题解答四 150 70. QTP设计开发脚本 151 71. 设置共享对象库 152 72. 检查网页上文字显示的颜色 155 73. QTP录制如何识别编辑框 156 74. How to search the string from the html source 157 75. ADORecord.set操作 159 76. Object Property参数化操作 161 77. Quick Test Plus 工具 163 78. Schedule the QTP tasks 164 79. General the radom code 165 80. ChildObjects和webTable的使用 166 81. 怎样在QTP中打开右键菜单 167 82. CaptureBitmap方法 169 83. 校验对象是否存在object.exist 170 84. QTP中&和_的用法。 171 85. 选取webList中某一项 172 86. object.SetCaretPos方法 172 87. Similar to watir sample using description programming 173 88. QTP使用outlook发邮件 173
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值