java实现在性能测试中进行业务验证实例
作者:FunTester 发布时间:2022-10-15 09:50:11
标签:java,性能测试,业务验证
引言
在性能测试过程中,验证HTTP code和响应业务code码是比较基础的,但是在一些业务中,这些参数并不能保证接口正常响应了,很可能返回了错误信息,所以这个时候对接口进行业务验证就尤其重要。下面分享一个对某个资源进行业务验证的Demo。
改接口请求资源详情,其中有一个字段是表示该用户对于该资源的操作状态,踩赞类型:1-赞,2-踩,3-取消赞,4-取消踩。
改压测一个接口,但是需要两个接口的数据提供数据,一个是登录,一个是操作改资源的接口。
点赞和资源详情的方法
具体的项目结构之前讲过,主要解决了请求方式,身份验证的问题,这里不再细说登录以及如何将身份令牌传递给。下面分享一下点赞和资源详情的方法代码,两者分属两个模块未在一个类里面,我这里单独挑出来:
/**
* 点赞和踩
*
* @param resId 资源id
* @param operation 操作类型(踩赞类型:1-赞,2-踩,3-取消赞,4-取消踩)
* @return
*/
public JSONObject likeOrNot(int resId, int operation) {
String url = FlowApi.LIKE_OR_NOT;
JSONObject params = getParams();
params.put("isCoursePackage", 0);//标识是否课程包 0-否 1-是
params.put("operation", operation);
params.put("resId", resId);
params.put("resType", 5);//1-课件;2-题集;3-教学资料;4-课程包;5:题目
JSONObject response = getPostResponse(url, params);
output(response);
return response;
}
/**
* 课程包详情
*
* @param resid 资源ID 1030167
* @return
*/
public JSONObject courseDetail(int resid) {
String url = LauncherApi.COURSE_DETAIL;
JSONObject params = getParams();
params.put("id", resid);
JSONObject response = getPostResponse(url, params);
// output(response);
return response;
}
压测脚本
下面是压测脚本,是用Groovy写的,方便在服务器上调试,但是跟Java有些不同,如果用编译器的童鞋请注意编译器异常,有些找不着引用对象的时候需要手动,或者忽略这些异常:
public static void main(String[] args) {
def argsUtil = new ArgsUtil(args)
def thread = argsUtil.getIntOrdefault(0, 2)
def times = argsUtil.getIntOrdefault(1, 2)
def threads = []
thread.times {
threads << new ThreadLimitTimesCount<Integer>(it, times) {
def resid = 1030167
def operation = getRandomInt(4)
def drive
@Override
public void before() {
super.before()
def base = new OkayBase(it)
def flow = new Flow(base)
flow.likeOrNot(this.resid, this.operation)
this.drive = new Launcher(base)
sleep(1000)
}
@Override
protected void doing() throws Exception {
def response = this.drive.courseDetail(this.resid)
int anInt = response.getJSONObject("data").getInt("like_state");
if (anInt != 3) fail();
}
@Override
protected void after() {
}
}
}
new Concurrent(threads).start()
allOver();
}
在doing()
方法中response的响应处理可能会抛出异常,fail()
是一个封装的抛出通用运行异常的方法,用来标记响应失败,在框架中会捕捉doing()
方法的异常,并记录统计线程运行过程的数据。有兴趣参考性能测试框架第二版。
来源:http://162m.cn/86td


猜你喜欢
- 本文实例为大家分享了Android实现支付宝支付密码输入界面的具体代码,供大家参考,具体内容如下效果图:主要代码:import java.u
- 本文实例讲述了Java8新增的重复注解功能。分享给大家供大家参考,具体如下:一 点睛在Java 8以前,同一个程序元素前最多只能使用一个相同
- 前言用户注册功能是每一个系统的入口门面功能,很多人可能会以为很简单,不就是一个简单的CRUD吗?其实不然,要把前后端功能都做出来,页面跳转也
- 想必我们在做项目的时候,都会遇到服务端与客户端交互数据。一般情况下我们都会采用json格式或者xml格式,将服务端的数据转换成这两种格式之一
- 上篇文章我们讲解了使用Hibernate Validation来校验数据,当校验完数据后,如果发生错误我们需要给客户返回一个错误信息,因此这
- 访问修饰符都知道是什么,但是在这之前没有深入的去研究和探索,每天都接触的东西应该清楚才可以。最基础的三个访问修饰符:public 、priv
- 本文实例讲述了C#实现读取DataSet数据并显示在ListView控件中的方法。分享给大家供大家参考。具体如下:/*lvStudentLi
- postman测试传入List<String>参数第一步:设置headersContent-type 的值为applicatio
- Eureka注册中心/服务发现框架Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中
- 本文实例为大家分享了Android实现手势密码功能的具体代码,供大家参考,具体内容如下首先声明一下,九宫格布局是从网上扒了一个大神写好的,大
- 1. 定义栈:线程运行时需要的内存空间,一个栈存在多个栈帧。栈具有先入后出,后入先出的特点。栈帧:每个方法运行时需要的内存(局部变量表、操作
- RocketMQ发送消息我们在使用RocketMQ发送消息时,一般都会使用DefaultMQProducer,类型的代码如下:Default
- SpringBoot默认使用HikariDataSource数据源定义数据源:存储了所有建立数据库连接的信息。通过提供正确的数据源名称,你可
- 我们通常在使用Java 调用脚本的时候,会使用 Runtime 类如:// 打开浏览器并访问 http://localh
- 摘要:Java8通过Function获取字段名,解决硬编码,效果类似于mybatis-plus的LambdaQueryWrapper。本文总
- 本文实例为大家分享了C#十五子游戏的具体代码,供大家参考,具体内容如下using System;using System.Collectio
- 上一篇博文《Android中Handler使用浅析》通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了
- 求一个n阶行列式,一个比较简单的方法就是使用全排列的方法,那么简述以下全排列算法的递归实现。首先举一个简单的例子说明算法的原理,既然是递归,
- 关于C# Timer类 在C#里关于定时器类就有3个C# Timer使用的方法1.定义在System.Windows.Forms
- 前几天,收到 AS 发布的 3.0 更新,就迫不及待的更新了,更新后发现整个界面的画风都变了,和 IDEA 更像了本人是命令行重度使用患者,