Web测试工具对比
针对xxx(java开发)软件进行测试,对winrunner7.0,Rational Robot,Quick Test 进行评测,评测主要包括易用性,扩展性,稳定性等三方面.
xxx登陆功能是使用最频繁的功能,为了把这部分功能让测试人员从手工测试中解脱出来,现在进行自动化测试实现。
首先,进行录制回放登陆操作目的是检验三种测试工具的易用性(功能前大与否)程度:
操作的步骤 : 启动ie,输入地址,输入用户名密码,登陆。
WinRunner 7.0
1. 启动WinRunner 7.0
2. 录制上边的操作步骤
脚本如下
点任务栏,启动ie
# Shell_TrayWnd set_window ("Shell_TrayWnd", 3); toolbar_button_press ("ToolbarWindow32_0", "T/ R¨ Internet Explorer mO ‰è Vh "); # Button Number 0; |
地址栏输入地址
# Browser Main Window_1 set_window ("Browser Main Window_1", 14); edit_set ("browser_main_edit_location", "http://192.168.1.42"); |
输入账号密码
win_type ("html_frame_2","admin<kTab>jetspeed<kReturn>"); win_mouse_click ("html_frame_2", 566, 33); win_check_gui("html_frame_2", "list1.ckl", "gui1", 1); |
录制完成后的脚本如上,测试回放发现粉色字体受环境影响很大,所以需要对脚本进行优化,改动后的脚本如下:启动ie,并且到http://192.168.1.42的地址
web_browser_invoke(IE,"http://192.168.1.42"); win_mouse_click ("html_frame_2", 402, 36); win_type ("html_frame_2","admin<kTab>jetspeed<kReturn>"); win_mouse_click ("html_frame_2", 566, 33); win_check_gui("html_frame_2", "list1.ckl", "gui1", 1); 替换脚本为一个函数 web_browser_invoke(IE,"http://192.168.1.42") |
3.回放 测试通过
替换原因 一.上边粉色部分脚本随机性较大,如果脚本移植到其他测试机器上,由于测试环境的改变(假如任务栏没有快捷方式图标,粉色脚本将无法回放下去),导致无法执行。替换为ie启动函数,不管ie安装在任何地方可以直接启动。
二.进行脚本优化,避免错误,没有修改前的脚本太冗长,修改后脚本减少,功能稳定。
Rational Robot:
1. 启动robot
2. 录制操作
脚本如下:
Sub Main
Dim Result As Integer Dim Temp as Integer //启动ie,连接到http://192.168.1.42 StartBrowser "http://192.168.1.42", "WindowTag=WEBBrowser" //让ie窗口获得焦点 Window SetContext, "WindowTag=WEBBrowser", "" //打开新的页面 Browser NewPage,"HTMLTitle=Dynaweb EPS 2003企业门户服务器","" //点用户名文本框 EditBox Click, "Name=username", "Coords=35,12" //输入用户名密码 InputKeys "admin{TAB}jetspeed" // 点登陆 PushButton Click, "Name=submit" //进入新页面 Browser NewPage,"HTMLTitle=Dynaweb EPS 2003企业门户服务器","" // 点退出连接 HTMLImage Click, "Index=7", "Coords=11,7" //关闭ie Window CloseWin, "", "" End Sub |
3.回放 测试通过
Quick Test 6.5
1. 启动quick test
易用性总结:
1. 操作简单但各个脚本都需要进行二次开发
2. 脚本语言的异同:
Winrunner 脚本支持c语言
Robot脚本支持vb脚本(可以扩展脚本语言支持 其他如 perl,java等语言)使测试人员选择度很大
Quick test脚本支持vbScript脚本
- 学习脚本:robot和quick test为vb语言,容易掌握,winrunner脚本为c语言,掌握有难度,短期内提高对测试人员要求比较高。
- 调试脚本:robot脚本支持step,animate等调式方式,winrunner和quick test支持step等几种调试方式,相互比较来看robot调试功能强大,比较直观。
- 测试环境兼容性:
改变测试环境配置,将ie打开后变化窗口大小,关闭,重新运行测试脚本。
Winrunner脚本回放失败,其他两种工具测试回放成功,对比发现由于winrunner脚本依靠坐标来确认对象位置,而robot和quick test是以对象来确认。稳定性上后两种测试工具更加占优。
如:winrunner脚本中函数win_mouse_click ("html_frame_2", 566, 33)以坐标来记录点击位置,当对象位置改变,脚本将无法执行。
针对winrunner有两种解决对象识别的方法:
1.坐标固定:启动ie后,使ie窗口最大化,窗口坐标得到固定,修改脚本后如下
web_browser_invoke(IE,"http://192.168.1.42");
//让窗口最大化,坐标固定了,这里不考虑机器分辨率的问题
win_max("Browser main Window");
win_mouse_click ("html_frame_2", 402, 36);
win_type ("html_frame_2","admin<kTab>jetspeed");
win_mouse_click ("html_frame_2", 566, 33);
win_check_gui("html_frame_2", "list1.ckl", "gui1", 1);
录制的脚本基本回放通过(这里没有考虑分辨率的情况,否则脚本开发难度增大。)这种方法不是根本解决方法。
2.让winrunner认识对象
解决方法是开发dll让winrunner引用,windows提供了mshtml对象,借用他可以实现winrunner认识对象。这里我用word的开发环境简单实现这个功能动态添加用户名密码(可以改写编译成dll给winrunner引用)。
主要代码(vb版本):
思路:ie加载网页后,枚举所有元素对象,找到要找的元素,然后赋值。这里是找username和password文本框,把用户名密码添加进去。
Dim hdoc As HTMLDocument
Dim eleColl As IHTMLElementCollection
Dim sElement As IHTMLElement
Dim i As Integer
扩展性评测,大家知道测试软件中,数据至关重要。如登陆测试中,需要验证所有用户是否可以成功登录。用手工测试工作量太大,利用测试工具脚本的强大功能,就可以减少工作量.对任意用户进行登陆测试,脚本从用户文件中读取数据,每次测试人员需要测试新的用户,只要添加用户到用户列表中,就可以自动测试新用户登陆是否成功。
1. Winrunner
设计user.txt文本格式:用户<kTab>密码<kReturn>
如: admin<kTab>jetspeed<kReturn>
脚本如下:
web_browser_invoke(IE,"http://192.168.1.42"); win_max("Browser main Window"); //打开文件 file_open("F:\\user.txt",FO_MODE_READ); //读取文件数据,填写用户名,密码 while(file_getline("F:\\user.txt",line)==0) { win_mouse_click ("html_frame_2", 402, 36); win_type("html_frame_2",line); win_mouse_click ("html_frame_2", 566, 33); } file_close("F:\\user.txt"); |
备注:由于winrunner脚本为语言为c,所以注意c语言特性,对于特殊字符需要利用转义字符“\”, file_open("F:\\user.txt",FO_MODE_READ),这里f:\user.txt,就需要加转义字符。
2. Robot
设计user.txt文本格式:用户 密码
如:admin jetspeed
脚本如下:
Sub Main
Dim Result As Integer Dim Temp as String dim FileNumber as integer Dim iPos as integer Dim UserName as string Dim pw as string 'Initially Recorded: 2003-12-22 17:07:58 'Script Name: Demo StartBrowser "http://192.168.1.42", "WindowTag=WEBBrowser" Window SetContext, "WindowTag=WEBBrowser", "" Browser NewPage,"HTMLTitle=Dynaweb EPS 2003企业门户服务器",""' FileNumber = FreeFile //循环读取文件中数据,登陆 //自读形式 打开文件 Open "f:\user.txt" For Input As #FileNumber Do While Not EOF(1) // 读取数据,进行处理 Line Input #FileNumber, Temp iPos = InStr(1,Temp," ") //提取用户名 UserName = left(Temp,iPos-1) //提取密码 pw = Right(Temp,len(Temp)-6) //找到用户,密码文本框,填写用户名,密码 EditBox Click, "Name=username", "Coords=35,12" Inputkeys UserName EditBox Click, "Name=password", "Coords=15,8" inputkeys pw //提交数据,退出当前用户 PushButton Click, "Name=submit" Browser NewPage,"HTMLTitle=Dynaweb EPS 2003企业门户服务器","" HTMLImage Click, "Index=7", "Coords=11,7" Loop Close #FileNumber //关闭IeWindow CloseWin, "", "" End Sub |
3. quick test
设计user.txt文本格式:用户 密码
如:admin jetspeed
脚本如下:
Dim iPos Dim UserName Dim pw Dim fso Dim ts Dim Temp Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.OpenTextFile("F:\user.txt",1) Do While not ts.AtEndOfStream Temp = ts.ReadLine iPos = InStr(1) |
总结:
1)功能基本实现,测试用例得到扩展
2)winrunner,quick test调试功能不够强大,错误提示不正确,robot错误信息提示简单。错误定位不准确。
3)quick test 有不稳定的地方。脚本开发完毕, 需要重新录制操作过程才能运行。可能跟设置有关系。
4) Quick Test 开发环境可以移植到vb开发环境中,vb中引用对象可以直接开发。
5)自动化测试经常多个脚本一起运行,不需要用户每次手工启动。在三种测试工具都可以达到多个脚本一起运行的目的。
例如:WinRunner中
将录制的脚本开发成函数.
1. 改动设置,file->test properties->test type(compiled module)。
2. public function login_ok()
{
加入脚本
}
Robot
1.录制的脚本加入到lib中
- 建立library source “demo”文件,整理测试脚本为函数
Sub Login_Ok()
加入测试脚本
End Sub
保存- 建立library head “demo”文件
Declare Sub login_ok basiclib “demo”- 在主脚本中添加头文件 demo
2.直接调用脚本
Callscript “test”
备注:第二种方法一般在所有测试脚本都是针对一个测试工程的时候用,他不能达到脚本共享的目的。QuickTest
1. 直接在脚本中添加新的action就可以达到连续测试的目的
Treeview中右键添加action copy就可以
稳定性评测:
三种测试工具在整个使用过程winrunner,quicktest测试工具测试环境因素影响比较大,录制和回访过程中出现很多问题。robot受环境影响相对比较小。
综合比较
从易用性,稳定性,扩展性来看WinRunner不太适合web的功能测试,他识别web对象能力比较差,现有脚本函数不能解决web对象元素的识别的问题,需要开发大量的脚本,来支持他对web测试能力,工作量大,对测试人员要求过高。前期投入过大,收益不明显。
文章来源于领测软件测试网 https://www.ltesting.net/