如何实现基于非标准控件开发的软件的自动化测试

发表于:2007-11-08 13:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:王菊玲    来源:51Testing投稿

  RationalRobot所提供的编程语言为VBScript,它是一种弱语言。像For…Each等基本的枚举语句不支持,指针当然也不支持,直接在RationalRobot里边发送消息和接收消息是无发实现的。为了解决此问题,我们采用在DLL中消息重构的方式,在外挂DLL层直接完成不同进程空间的消息传递,而RationalRobot层只需控制测试流程和管理测试检查点。这样一来,系统层次比较分明,实现也变得简单。
  这两个DLL实现了RationalRobot与被测应用程序之间的通信,完成了非Windows标准控件的识别和控制。
  四、自动化测试在RationalRobot中的实现
  对于大多数使用RationalRobot进行自动化测试不深的人来说,也许根本就没有听说过能够在Robot中调用DLL。在这里,我想告诉大家这样一个事实,Robot中DLL的调用,让不可能能变可能。现在,告诉大家如何调用DLL。
  第一,DLL放在什么地方
  使用RationalAdministrator新创建一个自动化测试工程,浏览目录到TestDatastore\DefaultTestScriptDatastore\TMS_Scripts,我们会发现有一个目录,名称就叫DLL。
  这是非常有用的一个目录,如果把DLL放置在这个目录下面,在自动化脚本运行时,它直接就会去导入与DLL名称对应的DLL,不需要在测试脚本中使用DLL所在目录的全路径了,DLL放置在这个目录下面的效果跟放在WindowsSystem32目录下面是一样的。
  我们知道,自动化测试工程开发出来之后,不单是自动化测试工程师使用,更多的是给递交给测试某个产品的工程师使用的。一个产品同时会有多个测试工程师,测试环境也不同,我们总不能要求他们拷贝了这个自动化测试工程之后,再拷贝DLL到WindowsSystem32下面吧,这样他们会嫌麻烦。特别是将测试操作系统重新Ghost的时候,很容易忘记拷贝C:\下面的东西。因此,我建议把DLL放置RationalRobot本身提供的DLL目录下面,既不用担心DLL会因为某些原因而忘记,更不需要测试人员自己去放置。
  第二,DLL中的函数哪里声明
  说完了DLL的存放之后,我们来看看,在RationalRobot中如何声明DLL中提供的函数。
  从RationalRobot的File菜单中,先创建一个项目头文件,在这个头文件中输入这样的语句:DeclareFunctionClickBtn_BTNLib"TestAssistDll"(byvalBtnIDAsString)AsLong。ClickBtn_BTN就是TestAssistDll中的一个函数。TestAssistDll就是放置在TestDatastore\DefaultTestScriptDatastore\TMS_Scripts\DLL里边的一个动态连接库文件。因为DLL不是RationalRobotSQABASE32下面的库文件,请大家注意使用Lib代替BasicLib.
  第三,DLL中的函数在RationalRobot测试脚本中的使用
  DLL中的函数在RationalRobot中声明之后,RationalRobot的测试脚本首先使用include方法把声明DLL函数的项目头文件包含进行。比如,刚才我声明DLL函数的项目头文件名称为“AutoTestMagAPI.sbh”,我可以使用这样的语句’$include“AutoTestMagAPI.sbh”.
  在此之后,我可以直接使用里边的函数了,比如上面提到的点击按钮的函数。在RationalRobot使用CallClickBtn_BTN(“btn_ok”),btn_ok为某个按钮的ID,它在开发人员创建软件界面的时候就确定下来,我们可以直接从开发人员那里拿到的。
  五、总结
  软件测试自动化是软件测试发展的必然趋势,基于非Windows标准控件开发的软件可以采用RationalRobot外挂DLL方式实现自动化测试,在我们的单位已经取得成功。也许只是其中一种解决方案,我只是抛砖引玉,欢迎更多的人加入到这个领域的研究。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号