51Testing软件测试论坛

标题: ????????? [打印本页]

作者: 婧子    时间: 2008-4-20 17:56
标题: ?????????
我想测试一个登录页,设计的用例是使用存在的用户名,不存在的用户名等不同情况,现在录制了一个成功登录的脚本 ,然后使用驱动,在表中填写不同的输入,具体代码如下:
table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
                set_window("聚合首页 - 集美学村bbs站 - Powered by Discuz!NT",121);
                win_check_gui("聚合首页 - 集美学村bbs站 - Powered by Discuz!NT", "list1.ckl", "gui2", 1);
                edit_set("username",ddt_val(table,"username"));
                password_edit_set("password",ddt_val(table,"password"));
                button_press("登录");
       
}

现在的问题是要测不同情况下登录产生的不同提示 。例如输入正确用户名和密码,显示登录成功;输入正确用户名和错误密码显示密码错误,代码要怎么写?   
刚学winRunner,请指点!谢谢!
作者: lantianwei    时间: 2008-4-21 08:55
驱动文件中加一个期望结果,然后在脚本中进行比较

[ 本帖最后由 lantianwei 于 2008-4-21 10:54 编辑 ]
作者: snoopyzxbc    时间: 2008-4-21 09:48
或者可以事先捕捉到登陆成功的窗体和登陆失败的窗体,然后在进行判断
作者: 婧子    时间: 2008-4-21 10:00
感谢楼上两位的,还不是很明白,我再看看!
我目前的做法是这样的,可是觉得这样写很奇怪,用table_Row来标识输入,好象很傻呀
table = "default.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
                set_window("聚合首页 - 集美学村bbs站 - Powered by Discuz!NT",121);
               
                edit_set("username",ddt_val(table,"username"));
                password_edit_set("password",ddt_val(table,"password"));
                button_press("登录");
       
        if(table_Row==1){
                #用户名存在且密码正确
                obj_check_info("用户中心","enabled",1,10);
                obj_check_info("短消息","enabled",1,10);
                obj_check_info("进入BBS","enabled",1,10);
                web_frame_text_exists("聚合首页 - 集美学村bbs站 - Powered by Discuz!NT","欢迎您 ATHuang","前身北洋大学\.\.\. 详细 ","\[ 退出");
                obj_check_info("退出","enabled",1,10);
                obj_check_info("帮助","enabled",1,10);
       
                # 聚合首页 - 集美学村bbs站 - Powered by Discuz!NT
                set_window("聚合首页 - 集美学村bbs站 - Powered by Discuz!NT",44);
                web_link_click("退出");
       
        }else if(table_Row==2){
                #用户名不存在
                web_frame_text_exists("用户登录 - 集美学村bbs站 - Powered by Discuz!NT","用户不存在","户登录出现了1个错误"," 返回上一步");

                # Browser Main Window
                set_window ("Browser Main Window", 4);
                edit_set ("browser_main_edit_location", "http://bbs.jmu.edu.cn");
                toolbar_button_press("MainToolBar_2","Back");
        }else if(table_Row==3){
                #用户名存在但密码错误
                web_frame_text_exists("用户登录 - 集美学村bbs站 - Powered by Discuz!NT","密码或安全提问第1次错误, 您最多有5次机会重试","户登录出现了1个错误"," 返回上一步");
                # Browser Main Window
                set_window ("Browser Main Window", 4);
                edit_set ("browser_main_edit_location", "http://bbs.jmu.edu.cn");
                toolbar_button_press("MainToolBar_2","Back");

        }else{
                # Browser Main Window
                set_window ("Browser Main Window", 4);
                edit_set ("browser_main_edit_location", "http://bbs.jmu.edu.cn");
                toolbar_button_press("MainToolBar_2","Back");

        }
}
ddt_close(table);

[ 本帖最后由 婧子 于 2008-4-21 10:03 编辑 ]
作者: snoopyzxbc    时间: 2008-4-23 11:11
标题: 回复 4# 的帖子
我贴上一段我自己写的。LZ可以比较下

#==================================================================

#判断窗口是否存在,如果存在先关闭,如果不存在,则打开

#==================================================================
if(win_exists("{class:window,label:\"登录\",MSW_class:\"#32770\"}")==E_OK)
        {
        report_msg("窗口存在,请先关闭再打开");
        win_close("{class:window,label:\"登录\",MSW_class:\"#32770\"}");
        texit;
        }
else
        {
        invoke_application("C:\\Program Files\\telecom\\ec3.0\\ec.exe","","ec.exe",SW_SHOW);
        wait(10);
        }
#==============================================
#数据驱动,分别建立用户名和密码,测试组合包括:1、正确的用户名,错误的密码;2错误的用户名,正确的密码;3、错误的用户名错误的密码;4、正确的用户名正确的密码

#由于我的调试程序只能支持3次的失败验证,否则窗口会自动关闭。所以我这里只能比较三次失败校验
#==============================================
table="login.xls";
rc=ddt_open(table,DDT_MODE_READ);
if(rc != E_OK && rc != E_FILE_OPEN)
        {
        report_msg("open table error");
        texit;
        }
else
        {
        ddt_get_row_count(table,row_Count);
        for(i=1;i<=row_Count;i++)
                {
                ddt_set_row(table,i);
       
                # 登录
                set_window ("登录", 8);
                edit_set ("用户名:", ddt_val(table,"用户名"));
                edit_set("密 码:", ddt_val(table,"密码"));
                button_press ("确定");
                wait(3);
                if(win_exists("{class:window,label:\"错误\",MSW_class:\"#32770\"}",5)==E_OK)#这个窗口的判断我是通过GUI map先学好的。然后使用描述性编程放上去
                        {
                        win_mouse_click ("错误", 206, 38);
                        set_window("错误");
                        button_press ("确定2");#请注意与前面的button属性进行区别,这里我将它的逻辑名改为button2,并重新学习了GUI
                        wait(3);
                        }
                else
                        {
                        pause("用户名密码正确");
                        }
                }
        }
ddt_close(table);
作者: lantianwei    时间: 2008-4-23 14:24
标题: 回复 5# 的帖子
以上脚本中,如果密码是错误的就会抱错,但我们真实的意图应该是该用例其实也是通过的
作者: snoopyzxbc    时间: 2008-4-23 17:15
那我觉得如果是要严格的判断到底出错是由于用户名错了,还是密码错了导致的
那是否可以加一个edit_wait_info("用户名:","value","admin",10);#如果admin是这个正确的用户名
同样可以判断密码edit_wait_info("密码:","value","123456",10);#如果123456是正确的密码
作者: lantianwei    时间: 2008-4-23 19:58
标题: 回复 7# 的帖子
其实跟那没有关系,自动化要坚持一条:一切来源于用例(起码当前阶段是这样的)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2