LR接口压力测试脚本范例


    做过一段时间的接口测试任务,下面把一段接口测试的脚本分享出来:


Action()

{

   

        int rev=0;

 

        web_service_call( "StepName=getPlanData_104",

                  "SOAPMethod=PlanDataServiceService|PlanDataServicePort|getPlanData",

                  "ResponseParam=response",

                  "Service=PlanDataServiceService",

                  "ExpectedResponse=SoapResult",

                  "Snapshot=t1450164946.inf",

                  BEGIN_ARGUMENTS,

                  "xml:request="

                           "<request>"

                                    "<planId>1</planId>"

                                    "<complexTypeName>PLANORDER</complexTypeName>"

                                    "<pageIndex>1</pageIndex>"

                           "</request>",

                  END_ARGUMENTS,

                  BEGIN_RESULT,

                  "response=Response",

                  END_RESULT,

                  LAST);

 

        

 

        rev =lr_save_searched_string(lr_eval_string("{Response}"),1500,0,"<responseXmlType=\"DynamicParameter\"><head>",0,2,"result");

 

        if(rev>=0)

        {

                  lr_output_message("交易成功!");

 

        }

        else

        {

                  lr_output_message("交易失败,返回值为:%s",lr_eval_string("{result}"));

 

        }

 

        return 0;

}

----------------------------------------------------------------------------------------

    Action()
{

//首先调用web_reg_find()这个注册函数,我们接口的正常返回结果都是<Code>0</Code>
    web_reg_find("Search=Body", //定义查找范围
    "SaveCount=result", //定义查找计数变量名称
    "Text=<Code>0</Code>", //定义查找内容
     LAST);

 //发送请求
 web_submit_data("FollowersGetByName",
  "Action=
http://10.240.248.103:7004/Following/FollowersGetByName.ashx?",
  "Method=POST",
  ITEMDATA,

//Name后面的值都是接口参数值,可以参考开发人员提供的接口设计文档或者录制脚本获得

//接口的参数值一般都要参数化,尽可能的模拟真是场景
  "Name=userid","Value={NewParam}",ENDITEM,
  "Name=snsid","Value=6000",ENDITEM,
  "Name=username","Value={myUserName}",ENDITEM,
                LAST);

  

//刚才的web_reg_find()注册函数派上用处,可以对结果进行统计

  if (atoi(lr_eval_string("{result}")) > 0) //判断如果<Code>0</Code>
                                               //字符串出现次数大于0
        lr_output_message("Log on successful."); //在日志中输出Log on successful
    else
  //如果出现次数小于等于
       lr_error_message("Log on failed"); //在日志中输出Log on failed

 return 0;
}


-------------------------------------------------------------------------------------------------------3例------------------

描述:这是一个接口压力测试,调用JAVA编写的一个函数,对返回值进行校验,代码如下:
import lrapi.lr;
import com.lr.test.*;
public class Actions
{
        public int init() throws Throwable {
                return 0;
        }//end of init
        
        public int action() throws Throwable {             
            String email ="<email>";
        String address_url ="http://192.168.1.12:8080/interface/index.php/v1/fun?email="+email+";
            String result = "";            
            lr.rendezvous("ReadGO");
            lr.start_transaction("FUN");
            lr.start_sub_transaction("A","FUN");            
            lr.start_sub_transaction("B","FUN");
            lr.start_sub_transaction("C","FUN");
            result = test.getHttpByUrl(address_url);
            //结果A
            if(!test.getString(result,"NUM").equals("12") && test.getString(result,"Letter").equals("A"))
                {                
                        lr.end_transaction("FUN", lr.PASS);
                        lr.end_sub_transaction("A", lr.PASS);
                        lr.end_sub_transaction("C", lr.FAIL);
                        lr.end_sub_transaction("B",lr.FAIL);
                        lr.error_message(email);
                        
            /结果B
            }
                else if (test.getString(result,"NUM").equals("12") && test.getString(result,"Letter").equals("A"))
                {
                        lr.end_transaction("FUN", lr.PASS);
                        lr.end_sub_transaction("A", lr.FAIL);
                        lr.end_sub_transaction("B",lr.PASS);
                        lr.end_sub_transaction("C", lr.FAIL);                
                        lr.error_message(email);
                        
            //结果C
            }
                else if(test.getString(result,"Letter").equals("C"))
                {
                        lr.end_transaction("FUN", lr.PASS);
                        lr.end_sub_transaction("A", lr.FAIL);                
                        lr.end_sub_transaction("B",lr.FAIL);
                        lr.end_sub_transaction("C", lr.PASS);
                        lr.error_message(email);
            }
                else
                {
                        lr.error_message(result);
                        lr.end_transaction("FUN", lr.FAIL);
                        lr.end_sub_transaction("A", lr.FAIL);                
                        lr.end_sub_transaction("B",lr.FAIL);
                        lr.end_sub_transaction("C", lr.FAIL);
            }            
            return 0;
        }//end of action

        public int end() throws Throwable {
                return 0;
        }//end of end
}

问题:
1、如果压力只执行一次(Run until completion),通过事物数和打印email个数一致;如果压力持续执行几分钟,打印email个数会大于通过的事物数,这是怎么回事?
2、一般压力测试只执行一次(Run until completion),还是持续执行一段时间呢?
3、对于我的代码,这样做是否合适呢,有其他更好的方法吗?
4、有跳过前端直接测试Redis处理能力的思路、方法或者例子吗?

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值