Loadrunner测试脚本优化之参数化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011466469/article/details/78288775

背景:大多数使用Loadrunner做性能测试的人群中,都喜欢使用其录制脚本功能来开发性能测试脚本,然录制脚本简单容易上手,但是脚本的复杂及繁重代码块就显得不那么友好(视觉&脚本管理),这里撇开url和html的不同录制模式不谈,录制得多了,再使用loadrunner时,就不再喜欢录制功能了,因为比较麻烦要考虑工具本身与操作系统的兼容性、录制浏览器的版本的因素,所以比较喜欢直接使用loadrunner提供的函数来完成脚本的开发,也可以添加C语言开发完善脚本。话不多说直接切入主题:

1、loadrunner录制脚本结束后,会在view script模式中看到脚本代码,即loadrunner的相关函数:

web_add_cookie("")

web_url("")

web_custom_request("")

lr_think_time("")

web_reg_save_param("")

web_submit_data("")

2、对于上面的函数不多做解释,有些代码内容可以直接去掉;

      第一:web_add_cookie("") lr_think_time("") web_url("") 几乎都是可以删掉;如果需要模拟真实的用户行为,思考时间是有必要留住的,当然还有关键的url,图片、样式等url除外,因为毕竟不是做前端性能测试;

      第二:web_reg_save_param("")在没有和函数web_submit_data("")有关联性的情况下可以删除,怎样验证?就是先减掉关联函数,再回放脚本是否成功,如果成功则可以去掉,最后保存脚本即可;

      第三:对于必要的函数块,例如web_url("",EXTRARES "Url=http://", LAST); 在EXTRARES, LAST语句间的Url可以删掉;

3、如此这般经过上面的步骤,就已经对脚本精简了很多,只留下必要的函数代码块。

4、接下来就是脚本优化部分中的参数化,关联函数也是参数化的一部分,上下两个请求间的数据关联,即动态参数的传递;

Action()
{
//相册动态-->发布商品-->返回动态

    web_reg_save_param_ex("ParamName=shop_id",
                        "LB=shop_id\":\"",
                        "RB=\",\"watermark\":true",
                        "NotFound=warning",
                        SEARCH_FILTERS,
                        LAST);
    lr_think_time(3);

    lr_start_transaction("进入相册动态");

    web_custom_request("owner",
               "Url={requestUrl}/service/album/get_album_themes_list.jsp?act=owner&shop_id=&search_value=&search_img=&start_date=&end_date=&page_index=1&client_type=ios&token={userToken}&version=2302",
               "Method=POST",
               "Mode=HTTP",
               LAST);

    lr_end_transaction("进入相册动态",LR_AUTO);

    lr_start_transaction("进入编辑页");

    web_custom_request("get_all_tag",
               "URL={requestUrl}/service/album/album_group.jsp?act=get_all_tag&type=0&token={userToken}",
               "Method=GET",
               "Mode=HTTP",
               LAST);


    web_custom_request("get_formats",
               "URL={requestUrl}/service/album/album_theme_format_operation.jsp?act=get_formats&token={userToken}",
               "Method=GET",
               "Mode=HTTP",
               LAST);

    web_custom_request("get_tags",
               "URL={requestUrl}/service/album/album_theme_tag_operation.jsp?act=get_tags&goods_id=&token={userToken}",
               "Method=GET",
               "Mode=HTTP",
               LAST);

    web_custom_request("get_tags_1",
               "URL={requestUrl}/service/album/album_theme_tag_operation.jsp?act=get_tags&type=2&tagType=1&goods_id=&token={userToken}",
               "Method=GET",
               "Mode=HTTP",
               LAST);                 

    lr_end_transaction("进入编辑页",LR_PASS);

    lr_think_time(3);

    lr_start_transaction("新增商品成功");

    lr_start_sub_transaction("发布商品","新增商品成功");

    web_custom_request("save_theme",
               "Url={requestUrl}/service/album/album_theme_operation.jsp?act=save_theme&tagId=&client_type=ios&goodsNum=ABC_{randomNum}&main_imgs={images}&title=Testing_{randomNum}&token={userToken}&version=2302&personal=0&platform=app&share_type=-1&source_type=0",
               "Method=POST",
               "Mode=HTTP",
               LAST);

    lr_end_sub_transaction("发布商品",LR_AUTO);

    lr_start_sub_transaction("返回动态","新增商品成功");

    web_custom_request("owner_1",
                   "Url={requestUrl}/service/album/get_album_themes_list.jsp?act=owner&shop_id={shop_id}&search_value=&search_img=&start_date=&end_date=&page_index=1&slip_type=0&token={userToken}",
               "Method=POST",
               "Mode=HTTP",
               LAST);
    
    lr_end_sub_transaction("返回动态",LR_AUTO);
    
    lr_end_transaction("新增商品成功",LR_AUTO);
    
    return 0;
}

5、对上面的脚本进行解析,用户进入app首页即相册动态,点击+相机图标,添加自己的图片即发布商品;

web_reg_save_param_ex函数需要拿到用户自己的相册id(shop_id),获取用户自己的tag及format,发布商品成功;

用户的token、商品的图片地址、货号goods_num等进行参数化,以达到脚本的简单可读性;

6、这是通过fiddler/charles或chorme浏览器F12功能获取的接口url、method、param进行手动编写的性能测试脚本;常用的函数有:web_reg_save_param_ex()关联函数、lr_think_time()思考时间、lr_start_transaction(lr_end_transaction)事务函数、lr_start_sub_transaction(lr_end_sub_transaction)子事务函数、及关键的请求函数web_custom_request()【不受url或html模式影响】。

tips:web_reg_save_param_ex函数有一个Ordinal参数,不写就是默认取第一个,如果Ordinal=3,则代表取符合左右边界的第三个参数,如果Ordinal=ALL,则代表取符合左右边界的所有参数值,那么自定义的参数就不能直接引用{},而是需要带上角标,如:{xxx_01},还可以灵活使用lr_save_string(lr_paramarr_random("xxx_list"), "xxx_random");把关联参数list给随机化。见上一篇关联多个参数的使用方法https://blog.csdn.net/u011466469/article/details/88113615

猜你喜欢

转载自blog.csdn.net/u011466469/article/details/78288775