介绍 TestComplete 的 LLP (Low-Level Procedures)
原著者: Terry Young
适合程度: 初学至进阶
读完此文章之后,读者应该认识:
1. LLP (Low-Level Procedures) 是什么、它的原理、录制以及编辑的基本方法。
LLP 是什么?
LLP (Low-Level Procedures) 实际上可能比较少机会用,但好奇心强烈的你,难免也按捺不住想知道它是什么。它是低层次的键盘和鼠标的纪录方式。
首先要说我们一般所录制的脚本,它的原理是识别测试对像的控件,录制对控件上键盘和鼠标的动作,回放时就是以这个原理摹拟动作的。
LLP 则是低层次、座标式的纪录方式。它是不识别控件的。它只会纪录鼠标 (点击,移动和滚轮) 和键盘的动作事件,以及事件之间的时间间距。
有什么情况可以利用 LLP 呢? 比如要测试图像软件或者一些基于鼠标 / 画笔的绘制动作,就适宜利用 LLP 了。一些以 Flash 作为平台的互动程序,或者也可以利用 LLP 的,不过笔者就未曾深入探究过了。
对于 Rational Robot 有认识的人士,TestComplete 的 LLP 可以说是类似 Robot 内的 VU 吧。不过,TestComplete 的 LLP 在录制后是提供一个可视化的介面来编辑动作的,而不是从编写代码的层面去修改。
如果你的侧边栏未有 LLP 的话,可以在 Project 右按 > Add > New Item 来建立,如上图。
TestComplete LLP 的录制方式
在 TestComplete 的工具列按 Record 按钮,所弹出的小窗口内可以选择录制方式。
![](https://p-blog.csdn.net/images/p_blog_csdn_net/terryyoung/TC%20LPP%2002.jpg)
前者是基于整个荧幕作为座标基础去录制动作的座标;后者是基于窗口的,需要拖拉动作拖至对像窗口才开始录制。
如果你的测试对像固定是全屏的话,或者你的动作牵涉多个窗后的话,应该选择 Screen Coordinates 比较适合。不过,在另一台机回放的话,要留意电脑荧幕的解像度是否吻合。管理者应该预先为此安排好。
如果你的测试的动作只是对一个窗口的话,可以考虑使用 Window Coordinates 的。
LLP 录制后的编辑
录制完成后,首先会自动建立一个函数,Screen Coordinates 录制的话,就是生成一句 LLCollection1.LLP1.Execute 的语句,也就是执行LLP1 这个低层次动作纪录了,如上图。
然后,自己再编辑一下何时调用这函数便可。
而当你打开 LLCollection1 的 LPP1 的话,就会看到一个可视化的编辑画面,里面详细纪录了 Event (鼠标和键盘的动作)、Parameters (鼠标的座标或者键盘的 CharCode、以及 Delay, ms (动作与动作之间相隔的时间 [微秒])。
点击一行就可以进行微调编辑。
如果编辑鼠标动作,可以看到,它能纪录四种鼠标动作,分别是 Mouse Down, Mouse Up, Mouse Move 和 Mouse Wheel (滚轮)。
如果编辑键盘动作,可以看到,它纪录了 Key Up 和 Key Down 两种动作。
你还可以对一个或多个动作进行拖拉或者剪贴删除,以编辑动作的次序,或者贴进另一个 LLP 内。
右按介面的话,有几个值得提及的功能。
Add Event 是手工地加插鼠标或者键盘的动作。
如果你如上图一样,预先选择多个动作,Expand/Shrink Time for Selected Events… 是可以批次调整动作执行的时间间距的。
以上图为例,假设我原本录制花了大概 1 分钟完成,以以上的设置,就是将所有动作缩短到 10 秒内完成,而每个动作所需要的时间是 Evenly 平均分配的。假如有 10 个动作,也就是每个动作相隔 1 秒了。记住,如要缩短,就要推断一个合理的值,否则,你的测试对像也可能未能及时反应过来而间接导致一些不必要的错误。
另外,如果你选择的动作包含鼠标动作的话,你可以用Shift Coordinates for Selected Events… 来批次将座标的 xy 中心点移动。
以上图为例,就是批次向右水平移动 100 个 pixels (像素),及向上垂直移动 100 个 pixels。
假设原本的第一个动作是 Mouse Down X: 150, Y: 250 的话,编辑后就会变成 Mouse Down X: 250, Y: 150 了。
是否需要动用到这些功能是很视乎实际情况和需要的。如果过程时间不长的话,还不如重新录制再回放。如果只是测试对像介面上的少许改动,手工地批次编辑则可能更快。
也因为此,录制后未经修改的情况下,回放时的速度是和录制时的速度一样的。