51Testing软件测试论坛

标题: WEB并发测试怎么取出最后出现页面的内容? [打印本页]

作者: huangkai    时间: 2009-4-30 15:22
标题: WEB并发测试怎么取出最后出现页面的内容?
我现在要做的是一个网页的并发测试,除了测试压力外,还要对网页中出现的内容进行提取,应该怎么把所有跑成功的用户最后出现的页面的内容取出来呢?麻烦大家帮忙,谢谢了!!!
作者: shanxi    时间: 2009-4-30 15:23
标题: 你提取内容是怎么一个形式输出的?
图片 还是 html 还是其它
作者: huangkai    时间: 2009-4-30 15:31
原帖由 shanxi 于 2009-4-30 15:23 发表
图片 还是 html 还是其它

是以文字的形式输出的,内容如下
  <?xml version="1.0" encoding="UTF-8" ?>
- <netsunAuth>
  <username>niw2ota@toocle.com</username>
  <nounce>04171022171930771</nounce>
  <user_ok>2</user_ok>
  </netsunAuth>

红色的部分是我要提取的内容,它有三种情况,0、1、2,我想要把他返回的结果提取出来进行统计
作者: shanxi    时间: 2009-4-30 16:00
虽然我可以提供C++写的exe,但对于你来说这个是QTP能解决的问题

如果用LR,你需要把最后那个页面保存为文件形式,再准备一个程序去解析这个文件

[ 本帖最后由 shanxi 于 2009-4-30 16:03 编辑 ]
作者: huangkai    时间: 2009-4-30 16:02
原帖由 shanxi 于 2009-4-30 16:00 发表
虽然我可以提供C++写的exe,但对于你来说这个是QTP能解决的问题

但是QTP不能解决并发啊。。。怎么实现保存最后那个文件啊?

[ 本帖最后由 huangkai 于 2009-4-30 16:04 编辑 ]
作者: huangkai    时间: 2009-4-30 16:20
原帖由 xzf2001 于 2009-4-30 16:14 发表
你设置检查点不行吗?
然后用lr_output_message输出说成功。
在runtime setting 中的LOG 设置always send message。。记得是Controller 里面的runtime setting

可以啊,但是我想能把它们的内容取出来就更好了,因为每种情况对应不同的结果,如果实在取不出来也只有增加检查点了,
作者: huangkai    时间: 2009-4-30 16:58
原帖由 xzf2001 于 2009-4-30 16:41 发表
用关联可以吗?先用检查点判断,如果成功,就关联,并输出关联的东西

懂你的意思,但是不知道具体怎么操作,呵呵,我是新手
作者: huangkai    时间: 2009-4-30 17:16
原帖由 xzf2001 于 2009-4-30 17:13 发表
我也是新手,没操作过。。不晓得可以不,提供个想法而已。。。貌似不成功,呵呵。。。

··· 试试
作者: wwwux    时间: 2009-4-30 19:38
可以参考zee的这个循环打印web_reg_save_param保存的参数

http://www.51testing.com/?17369/action_viewspace_itemid_5632.html

Action()
{
    char buffer[128] = {0};
int j;
    int i;

  web_reg_save_param("param1",
  "LB=Content-Length: ",
  "RB=\r\n""",
  "NotFound=ERROR",
     "Ord=all",
  "Search=Headers",
  LAST);

web_url("www.hao123.com",
  "URL=http://www.hao123.com/",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t2.inf",
  "Mode=HTML",
  LAST);

//lr_save_string(lr_eval_string("{param1_count}"),"j");
   j=atoi(lr_eval_string("{param1_count}"));
   lr_output_message("the j is %d",j);

  for(i=1;i<=atoi(lr_eval_string("{param1_count}"));i++)
   {

   sprintf( buffer, "{param1_%d}", i);
     lr_output_message("the conut is %s.",lr_eval_string(buffer));

    }

  return 0;
}
作者: huangkai    时间: 2009-5-4 08:57
标题: 回复 13# 的帖子
感谢楼上提供的信息,谢谢了,学习中!!!
作者: huangkai    时间: 2009-5-5 08:34
标题: 回复 15# 的帖子
谢谢提供资料,正在研究!!
作者: qqdong    时间: 2009-5-12 21:57
请问楼主你最后使用完了吗?到底怎么测更好呢?还请公布~~期待
作者: Lennon    时间: 2009-5-12 23:35
标题: 额~~~~~~
把web_reg_save_param("user_ok", "LB=<user_ok>", "RB= </user_ok>", LAST); 放在最后一个请求前面。如果你对多个参数有兴趣,按照这个写法一样写。
   像上面这样,你那个加红的那个数字会存在参数user_ok中。
   然后有个问题是你如何在场景运行之后得知这个值。要回答这个问题那必须知道你究竟要干什么。
      如果你是要确定这个值是否为你想要的那个值比如说“2”
           在最后添加判断如下:
           //判断是否为2(当然2也可能是你参数化文件中的一个参数,有对应关系的。)
           if(strcmp(lr_eval_string("{user_ok}"),"2")!=0){
                            //如果不是2,则抛error并输出实际值
                             lr_error_message("user_ok is not 2. It's %s",lr_eval_string("{user_ok}"));
                      }
            如果你要确定每一个虚拟用户获得的这个值,比方说这个值是会变的。并且没有什么规律。也就是说你不能用如上的判断形势。那么直接用lr_error_message("user_ok is  %s",lr_eval_string("{user_ok}"));打出错误信息。这里用errormessage的原因是这些信息会在场景运行的时候直接出现在error中。比较方便查阅。同时也容易和运行的虚拟用户对应起来。
      如果你不想在运行的时候看到那么多错误,只想在最后去运行日志里面看的话那么可以参考以下方法
//放在action的最前面
      int id, scid;
            char *vuser_group;
//放在最后面
lr_whoami(&id, &vuser_group, &scid);
lr_out_message( "Group: %s, vuser id: %d, scenario id %d,user_id ",

        vuser_group, id, scid,lr_eval_string("{user_ok}"));
记得在control里面把enablelog关掉。确保日志里面只出现你指定的这些输出,不然相当的难找。运行完之后去res文件夹下面的log目录里面找你的日志。

      如果你对这个日志输出还是觉得繁琐不便于你后期的统计。那么请查阅fprintf。定制符合你口味的输出文件
作者: huangkai    时间: 2009-5-18 09:04
不好意思,有一段时间没上了,最近比较忙,因为时间的原因,我没有去细研究,我只是在零那里设置了一个检查点,把不是零的账号输入了出来!!!




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