最近在公司搞性能测试,发现系统级的性能测试相当于大爆炸类的测试,针对问题的定位不准确,需要针对发现问题的各个接口展开测试。
特分享loadrunner使用java协议制作的测试脚本
脚本中
vuser_init 和vuser_end为空
Action 是以下脚本
import lrapi.lr;
/*
* LoadRunner Java script. (Build: _build_number_)
*
* Script Description:
*
*/
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import com.zhe800.finagle.thrift.cart.*;
import java.util.ArrayList;
import java.util.List;
public class Actions {
int i;
private TTransport transport;
private TProtocol protocol;
private CartServ.Client client; //声明调用CartServ.Client的方法
private static final String IP = "192.168.5.128"; //声明调用服务器的IP地址
private static final Integer PORT = 12314; //声明调用服务器的IP端口
public int init() throws Throwable {
lr.start_transaction("建立连接"); //建立连接事务
transport = new TFramedTransport(new TSocket(IP, PORT));
protocol = new TBinaryProtocol(transport);
client = new CartServ.Client(protocol);
transport.open();
lr.end_transaction("建立连接", lr.AUTO);
return 0;
}// end of init
public int action() throws Throwable {
lr.rendezvous("create cart 1");
lr.start_transaction("加入购物车1");
Item item = new Item(); //添加商品信息
item.setProductId("<shangpinID>"); //添加商品ID <span style="font-family: Arial, Helvetica, sans-serif;"><shangpinID> 为参数化内容,以后< >均为参数化。</span>
item.setSkuNum("<shangpinSKU>"); //添加商品SKU
item.setCount(1); //商品数量
item.setPrice("0.60"); //商品价格
client.addItem("<userID>",item,1); //用户userkey
lr.end_transaction("加入购物车1", lr.AUTO);
lr.rendezvous("create cart 2");
lr.start_transaction("加入购物车2");
Item item1 = new Item(); //添加商品信息
item1.setProductId("<shangpinID2>"); //添加商品ID
item1.setSkuNum("<shangpinSKU2>"); //添加商品SKU
item1.setCount(1); //商品数量
item1.setPrice("0.60"); //商品价格 //
client.addItem("<userID>",item1,1); //用户userkey
lr.end_transaction("加入购物车2", lr.AUTO);
lr.rendezvous("delete cart 1");
lr.start_transaction("删除购物车1");
List<CartKey> list = new ArrayList<CartKey>();
CartKey cartKey = new CartKey();
cartKey.setProductId("<shangpinID>"); //删除商品ID
cartKey.setSkuNum("<shangpinSKU>");
list.add(cartKey);
client.deleteItem("<userID>",list,1); //删除用户userid
lr.end_transaction("删除购物车1", lr.AUTO);
lr.rendezvous("delete cart 2");
lr.start_transaction("删除购物车2");
List<CartKey> list1 = new ArrayList<CartKey>();
CartKey cartKey1 = new CartKey();
cartKey1.setProductId("<shangpinID2>"); //删除商品ID
cartKey1.setSkuNum("<shangpinSKU2>");
list1.add(cartKey1); //添加商品信息到list
client.deleteItem("<userID>",list1,1); //删除用户userid
lr.end_transaction("删除购物车2", lr.AUTO);
return 0;
}// end of action
public int end() throws Throwable {
lr.start_transaction("关闭");
transport.close();
lr.end_transaction("关闭", lr.AUTO);
return 0;
}
}
分享回放日志
Virtual User Script started at : 2014-09-24 12:03:42
Starting action vuser_init.
Notify: Transaction "建立连接" started.
Notify: Transaction "建立连接" ended with "Pass" status (Duration: 0.1459).
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Actions.
Rendezvous create cart 1
Notify: Transaction "加入购物车1" started.
Notify: Transaction "加入购物车1" ended with "Pass" status (Duration: 0.0385).
Rendezvous create cart 2
Notify: Transaction "加入购物车2" started.
Notify: Transaction "加入购物车2" ended with "Pass" status (Duration: 0.0346).
Rendezvous delete cart 1
Notify: Transaction "删除购物车1" started.
Notify: Transaction "删除购物车1" ended with "Pass" status (Duration: 0.0273).
Rendezvous delete cart 2
Notify: Transaction "删除购物车2" started.
Notify: Transaction "删除购物车2" ended with "Pass" status (Duration: 0.0194).
Ending action Actions.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Notify: Transaction "关闭" started.
Notify: Transaction "关闭" ended with "Pass" status (Duration: 0.0047).
Ending action vuser_end.
Vuser Terminated.
测试脚本参见:
http://download.youkuaiyun.com/detail/shen1936/7967329