• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

WinRunner 编码规范

发布: 2007-7-10 21:29 | 作者: 未知 | 来源: 51testing博客 | 查看: 437次 | 进入软件测试论坛讨论

领测软件测试网

    1 路径不能写死

    从一台机器拷贝到另一台机器上之后, WinRunner的脚本需要能够正常的运行。 测试脚本所依赖的所有的东东(gui maps, text files, compiled modules, dll’s)都要和测试脚本有一样的父级目录。

    例外:

    如果确实有需要的话,指向K drive中的永久文件的路径可以写死。(警告:当脚本在不同的机器上运行,读取存放在K drive中的同样的文件的时候,有可能会出现问题。)

错误的示范:

    reload("C:\\WR_TESTS\\Acceptance_6\\acceptance_functions");

正确的示范:

    reload(getvar("testname") & "\\..\acceptance_functions");

 

    2 采用缩进格式增强代码的可读性

错误的示范:

for(counter = count - 24; counter < count - 1; counter++)
{
list_get_item("ListBox",counter,item);
str = str & item & "\r\n";
}

正确的示范一:

for(counter = count - 24; counter < count - 1; counter++)

{
list_get_item("ListBox",counter,item);
str = str & item & "\r\n";
}

正确的示范二:

for(counter = count - 24; counter < count - 1; counter++){
list_get_item("ListBox",counter,item);
str = str & item & "\r\n";
}

 

    3 尽量避免将测试外部环境的依赖写死 不要将一些随着外部测试环境的变化而改变的信息写死。包括有:安装目录、DSN名、 数据库服务器名、数据库用户名、数据库密码。最好在测试脚本的开始就将这些东东定义为变量,这样你就没有必要在环境变化后,在整个脚本中作多次的修改,只要改一个地方就好了。

错误的示范一:

set_window(" SQL Server Login",10);
edit_set("Login ID:", "sa");
edit_type("Password:", "password");

正确的示范一:

db_username = "sa";
db_password = "password";

set_window("SQL Server Login",10);
edit_set("Login ID:", db_username);
edit_type("Password:", db_password);

 

错误的示范二:

invoke_application("C:\\iAvenue\\Windows\\UAdmin.exe","","c:\\Power_db",SW_SHOW);

正确的示范二:

install_dir = "c:\\iAvenue\\Windows";

invoke_application(install_dir & "\\UAdmin.exe","",getvar("testname") & "\\..\Power_db",SW_SHOW);

 

    4 将文本识别作为你的最后一个选择


    文本识别将占用大量的内存,而且还不稳定,同时在不同的 操作系统可能会出现不同的结果。所以只有在没有 其他的方法得到对象的信息的情况下才使用这种方式。不幸的是,这种情况经常发生,特别是当有对象不能被识别的时候。在下面的例子中,我们假设“Assign Date”是类:edit。

错误的示范:

obj_get_text("Assign Date", text);

正确的示范:

edit_get_text("Assign Date",text);

 

    5 不要使用额外的wait语句;在需要等待的时候,尽量使用同步函数 错误的示范:

wait(40);

 

正确的示范:

statusbar_wait_info("Status Bar","value","Sites processed = 20",40);

 

    6 不要将report_msg作为tl_step的替代

    在寻找一个错误的原因的时候,没有人愿意看测试脚本中的每一行语句的测试结果。如果测试结果中不是红就是绿的话,就更加清晰明了了。所以使用tl_step标识失败的步骤还是挺不错的。

错误的示范:

if(win_exists("Active Information Manager",1) == 0)
{
set_window("Active Information Manager", 1);
obj_get_text("AfxWnd42", text);
my_gui_checkpoint(text,"AIM.log");
}
else
report_msg("AIM failure! Window absent at startup");

 

正确的示范:

if(win_exists("Active Information Manager",1) == 0)
{
set_window("Active Information Manager", 1);
obj_get_text("AfxWnd42", text);
my_gui_checkpoint(text,"AIM.log");
}
else
tl_step("AimReportRuns",FAIL,"AIM window absent at startup");

 

7 通过使用正则表达式避免将多个窗口实例放在一个gui map文件中

8 添加注释以增强脚本的可读性 #Please add comments

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: winrunner


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网