QTP主要采用的是使用GUI模拟人的操作。它在模拟人的操作时会记录操作的对象及所做的操作和顺序,然后在回放时按记录顺序操作这些对象。而在这个模拟的过程中,重要的莫过于界面对象(控件)的识别,那QTP是怎么做的呢?下面举一个小例子来说明:
  比如我们要测试内网论坛http://XXX.XXX.XXX/bbs/index.php用正确的用户名和密码是否能成功登录。登录界面如下:

  测试步骤大概如下:
  1. 要先识别用户名输入框、密码输入框、登录按钮控件
  2. 在用户名输入框中输入正确的用户名
  3. 在密码输入框中输入正确的密码
  4. 点击登录按钮
  5. 验证是否登录成功,要验证是否成功登录,那得知道成功登录与失败登录的区别。成功登录后的页面如下:

  我们可以通过验证红色框中的内容或验证绿色框中的内容来标识登录是否成功,然后记入测试报告。
  以上只是一个小例子,从中可以看出识别对象是一个很重要的问题也是一个很困难的问题,毕竟现在的控件类型越来越多(包括第三方插件或自己开发或定义的控件)。那QTP是怎么来识别对象的呢,下面通过讲解QTP识别以上小例子中的控件的方法来说明一下:
  首先,QTP是通过记录控件的属性来标识对象的(当然具体用哪一些属性,QTP是有默认的,也可以配置)。假设QTP使用“html tag”和“name”属性来识别对象,QTP是怎么处理的呢?请先看下图:

  QTP自动化测试原理
  图-QTP对象识别
  在使用QTP录制时,QTP会把对象存储到对象库中。而对象是按如上图的方式存储于对象库中。即,QTP会默认给录制的对象取一个名字(这个名字可以自己改,只要在脚本中使用到此对象时保持和此名字一样可以了),然后把识别此对象的属性和属性值存储到对象库中,我们可以先把识别对象的属性集合认为是一个属性包,接着是把识别此对象的属性包与定义的对象名进行关联,也叫做对象映射。这样一个对象存入对象库了。