java实现在性能测试中进行业务验证实例

作者:FunTester 时间:2022-10-15 09:50:11 

引言

在性能测试过程中,验证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

标签:java,性能测试,业务验证
0
投稿

猜你喜欢

  • Spring Batch批处理框架使用解析

    2021-12-24 03:41:19
  • 解决mybatis update并非所有字段需要更新问题

    2022-12-09 10:20:55
  • Android实现 EditText输入手机号空格功能

    2021-09-17 00:29:27
  • C#中的multipart/form-data提交文件和参数

    2021-09-26 09:40:19
  • android系统在静音模式下关闭camera拍照声音的方法

    2021-09-04 00:34:20
  • 利用Java读取二进制文件实例详解

    2023-07-27 03:25:42
  • C#简单数字图像处理程序

    2022-03-07 05:16:31
  • C#多线程之线程池ThreadPool详解

    2021-10-30 23:59:45
  • 快速定位Java 内存OOM的问题

    2022-05-26 00:19:38
  • Android如何让WebView中的HTML5页面实现视频全屏播放

    2023-07-29 00:32:06
  • Android搜索结果显示高亮实例(有数据滑动底部自动刷新)

    2021-09-25 22:55:07
  • java使用Jdom实现xml文件写入操作实例

    2022-09-30 02:38:23
  • SpringBoot使用Thymeleaf自定义标签的实例代码

    2023-11-24 21:41:29
  • Linux下java环境配置图文方法

    2021-10-24 06:22:52
  • C#多线程系列之进程同步Mutex类

    2022-07-11 19:29:16
  • java比较器comparator使用示例分享

    2022-07-18 22:45:15
  • C#中循环语句:while、for、foreach的使用

    2022-05-01 02:42:55
  • C#中字符串的加密的源码

    2023-09-14 22:35:34
  • 超简单的几行代码搞定Android底部导航栏功能

    2022-08-03 09:26:56
  • Java通过匿名类来实现回调函数实例总结

    2023-06-26 12:30:42
  • asp之家 软件编程 m.aspxhome.com