LoadRunner为什么录制不到文件下载呢?

2020-08-20 10:49发布

1条回答
乐xenia
1楼 · 2020-08-20 10:54.采纳回答

loadrunner录制下载文件,文件如何保存,如何获得服务器返回的文件名,保存文件时如何随机生成文件名

        在录制脚本的过程中,我们把下载文件的请求单独放到一个action中,我们先简单的分析一下录制下载文件的脚本,在脚本中只能看到这样一个下载的请求:   

?

1
2
3
4
5
6
web_url("download.php",
       "URL=http://211.147.208.141/cn/resources/download.php?id=386",
       "Resource=1",
       "RecContentType=application/force-download",
       "Referer=",
       LAST);

     对于如何保存到本地,loadrunner是无法记录的,执行脚本时客户端发出这个请求,服务器端响应后,loadrunner接收到了服务器响应的文件内容(我们可以在日志中看到文件的内容,不过是乱码),既然loadrunner可以接收到文件内容,那么我们完全可以使用关联函数来获得该内容,在通过C语言的文件函数把获得的内容写在本地。

        那现在遇到这样一个问题,使用关联函数如何定义获得服务器响应内容的左右边界呢?因为我们把这个请求写在了一个单独的action中,所以在这里我们只要把服务器响应的所有内容均获取下来写到本地,也就完成了下载文件的保存。

        下面看代码:

  

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Action()
  {
           int flen;        //定义一个整型变量保存获得文件的大小
      long filedes;    //保存文件句柄
      char file[256]="\0"//保存文件路径及文件名
 
 
      web_set_max_html_param_len("2000000");//设置页面接收最大的字节数,该设置应大于下载文件的大小
 
      web_concurrent_start(NULL);
 
           web_reg_save_param("filecontent",
           "LB=",
           "RB=",
           "Search=BODY",
            LAST);

        //使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容

    

?

1
2
3
4
5
web_reg_save_param("file",
   "LB=filename=\"",
   "RB=\"",
   "Search=all",
   LAST);

 

     //使用关联函数在服务器响应的头文件中获取下载文件名

  

?

1
2
3
4
5
6
web_url("download.php",
   "URL=http://211.147.208.141/cn/resources/download.php?id=386",
   "Resource=1",
   "RecContentType=application/force-download",
   "Referer=",
   LAST);

        //发出下载请求

  

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
web_concurrent_end(NULL);
 
     strcat(file,"c:\\");    //将“c:\\”这个路径保存到file中
   strcat(file,lr_eval_string("{file}"));//将获得的文件名拼接在file这个变量字符串之后
 
 
   flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); //获得文件大小
 
    if(flen > 0)
       {
        if((filedes = fopen(file, "wb")) == NULL)
        {
         lr_output_message("Open File Failed!", lr_eval_string("{filecontent}"));
         return -1;
        }
        fwrite( lr_eval_string("{filecontent}"),flen,1,filedes );
        fclose( filedes );
   }
 
    return 0;
   }


        好了,运行这段脚本完成文件下载并写到本地的操作

        如果我们需要重复保存这个文件到本地,如何解决重名问题呢,下面这段代码可以随机生成文件名

    

?

1
2
3
4
5
6
7
char file[256]="\0";
   char * chNumber
   chNumber=lr_eval_string("{Random}");  //生成随机数
 
strcat(file,"c:\\test");
   strcat(file,chNumber);
   strcat(file,".rar");

        此时file中保存着一个随机生成的文件名,然后使用文件函数以该文件名保存文件


相关问题推荐

  • 回答 20
    已采纳

    性能测试是基于功能、接口完整的情况下,对服务端进行压力测试、负载测试、疲劳测试、并发测试,来发现性能瓶颈。一、负载测试。负载测试的目的主要是为了测试软件系统是否达到需求文档设计的目标;例如一款软件在一定时期内,最大支持多少并发用户数,软件请...

  • 什么是基准测试?2020-08-12 15:46
    回答 4

    基准测试基准测试(benchmarking)是一种测量和评估软件性能指标的活动。在某个时候通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响,这是基准测试最常见的用途。其他用途包...

  • 回答 5

    一、平均响应时间:在每一个采样时间段,多个并发事务的平均响应时间;二、百分比响应时间:在某次测试中,有百分之y的请求,其响应时间在x秒以内;三、每秒事务数:针对每个选定的事务,在并发场景下,平均每秒服务器能处理完成多少次;四、Throuput:每秒从...

  • 回答 17
    已采纳

    响应时间、并发用户数、TPS、吞吐量、CPU利用率、内存使用率、在线并发用户数等

  • 回答 6

    计算机的性能测试时我们需要关注的指标有: RT:响应时间 TPS:每秒完成事务数CPU性能指标:利用率、负载 Mem:内存性能指标,可用物理内存、虚拟内存使用率 Disk:磁盘性能指标,Disk Time、IO等待 NetWork:网络指标,带宽使用率、任务队列长度TCP连接数,...

  • 回答 13
    已采纳

    性能测试主要包括以上几个方面

  • 回答 9

    在测试前,应该对测试结果有一个初步的估计。比如,性能(IO/CPU)应该是提升,还是降低,大概幅度会有多少。这样当测试结果与预估偏差极远时,很可能测试的过程或者方法是有问题的。1) 如果是已有模块,可以参考改模块历史的测试数据。看变化是否合理。2)...

  • 回答 9

    UI主要是软件的使用和操作,软件测试需要验证程序中的问题,好学不好学还是要看你是不是擅长程序,如果擅长那就好学,如果不擅长那就是UI好学

  • 回答 16

    一般在系统功能稳定没有大的缺陷之后开始执行。但前期准备工作可以从系统需求分析时就开始:性能目标制定、场景获取、环境申请等。

  • 回答 4

    性能测试的目的: 评估系统的能力----测试中得到的负荷和响应时间数据可被用于验证所计划的模型的能力,并帮助作出决策。识别体系中的弱点----受控的负荷被增加到一个极端水平,并突破它,从而修复体系的瓶颈或薄弱的地方。系统调优---重复运行测试,验证调...

  • 回答 4
    已采纳

    LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner , 企业能最大限度地缩短测试时间, 优化性能和加速应...

  • 回答 3

    手工测试者最适合成为领域专家,他们可以把相当复杂的业务逻辑存在最强力的测试工具——大脑里。而且手工测试速度比较慢,测试者就有时间可以观察分析细微的逻辑问题。速度虽然慢些,但是比较容易。...

  • 回答 8

    前言1.需要写明本文当编写的目的,是给那些人看的,能起到怎样的作用。2.本文档中出现的专业术语需要有个解释,非软件测试的人员能看懂。3.参考资料,也是我们编写测试计划的依据,说明你这个测试计划不是凭空而来。4.测试模块的优先级别,可以从这里看出系统...

没有解决我的问题,去提问