1、mockServer

1.1什么是mockServer

moco=替代     Server=服务

mocoServer即为测试替身的服务

主要针对于单元测试的应用,主要应用于解除单元测试之间的依赖

java 简单mock java mock server_json

1.2mocoServer使用的场景

前端程序员

前端已经写好页面,但是后端的接口没有写好,

正确的姿势就是前端模拟后端的操作,具体方式如下

[
 {
     "request":
     {
     "method": "get",
     "uri": "/products"
   },
     "response":
 {
     "json":
 {
     "name": "我真帅",
     "type": "WEB",
     "version": "V1.0.0",
     "master": "aaaa",
     "description": "this is a test api"
       }
     }
   }
]

启动的命令为:


java -jar -moco-runner-0.10.0-standalone.jar http -p 12315 -c product.json


其中 -p 为制定端口 -c 为指定文件

启动成功的标识:


java -jar moco-runner-0.11.0-standalone.jar http -p 12306 -c product.json #启动后的输出 14 ⼆⽉ 2022 09:46:13 [main] INFO Server is started at 12306 14 ⼆⽉ 2022 09:46:13 [main] INFO Shutdown port is 58954 14 ⼆⽉ 2022 09:47:27 [nioEventLoopGroup-3-3] INFO Request received:


后端程序员

举例说明A给B服务一个车牌号,那么B返回车辆的其他信息

java 简单mock java mock server_postman_02

[
  {
    "request":
    {
      "method": "post",
      "uri": "/parking",
      "json":
      {
        "park": "B250BA"
      }
    },
    "response":
    {
      "json":
      {
        "park": "B250BA",
        "in": "2022-2-14 00:00:00",
        "out": "2022-2-14 12:00:00",
        "money": "$250",
        "master": "jiachao"
      }
    }
  }
]

 然后我们在postman当中进行测试

java 简单mock java mock server_java_03

 测试

在我们进行测试过程中,没有数据,解决方案如下

自己造数据

自己mock数据

具体方式如下

[
  {
    "request":
    {
      "method": "get",
      "uri": "/products"
    },
    "response":
    {
      "json":
      [
      {
        "name": "wo真帅",
        "type": "WEB",
        "version": "V1.0.0",
        "master": "bbb",
        "description": "this is a test api"
      },
      {
        "name": "wozuishuai",
        "type": "APP",
        "version": "V1.0.1",
        "master": "aaa",
        "description": "this is a test api"
      }
      ]
    }
  }
]

 2、性能测试相关知识

软件性能测试常用术语

2.1响应时间

一次操作完成后,也就是客户端发送请求到服务端后,服务端的响应数据时间,包含了用于等待和服务的时间

响应时间(Resoponse Time)=网络时间+应用程序的处理时间

java 简单mock java mock server_java 简单mock_04

 2.2并发用户数

性能测试的核心是验证当前系统是否支持现有用户的访问,也就是说系统可以承受同一时间段多少用户来访问系统

并发用户数:N个用户向服务发送请求

在线用户数:仅仅在线,但是并不代表发送了请求,僵尸用户

开发用户数秒可以说:不论从业务视角出发,还是服务端承受压力而言,描述的是同一时间同时向客户端发出请求的客户,某些时候也可以称为"并发测试",这中间主要体现的服务端承受的最大并发访问数。

2.3吞吐量

主要用于数据传输方面,也就是测试系统的执行效率。该术语用于描述数据传输速度(字节/秒或比特/秒),在某些情况下(如DB层面),吞吐量值得是操作的速度,也就是每秒操作数或者每秒业务数。或者可以说单位时间内客户端请求的数量,直接体现系统的性能承载能力。

2.4性能计数器

主要指的是性能测试过程中操作系统以及其他组件的一些数据指标

WebServer:HTTP连接数

应用Server:服务被部署的系统的CPU和内存资源

DataServer:IOPS

IOPS:该术语主要是针对数据库的,也就是每秒发生的输入/输出操作的次数,是数据传输的一个度量方法。用于磁盘的读写,IOPS值得是每秒读和写的次数。

性能测试的过程中,任何指标不能超过75%,一旦超过75%,说明可能存在瓶颈

2.5使用率

对于服务所请求的资源,使用率描述的所给定的时间区间内资源的繁忙程度。

Out Of Memory(OOM):内存泄漏

如果一个业务中,会使用到大量的内存资源,总的内存资源是4G,在⼀定数据量的情况下执⾏该 业务形态,内存使⽤率从100M⼀直占⽤到3G,然后随着业务形态内存资源得到释放呈下降的趋势,那么可以说内 存使⽤率最⾼为75%

2.6思考时间

思考时间英文名称是Think Time,也称为休眠时间,在业务视角,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。

2.7TPS/QPS

事务指的是某个操作或者是⼀组操作的组合,如登录的事务那么就是输⼊账户和密码,点击登录按钮跳转到登录成 功的⻚⾯并且信息都加载出来。TPS统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。QPS指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。

2.8相关测试理论

调度:

CPU密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大量的CPU

IO密集型:应用程序执行I/O,计算不多,会占用大量的内存资源 系统的最小粒度是线程,也就是说系统调度中粒度最细的就是对线程的调度。队列

线程优先级:

优先级程度是1-10 默认的优先级为5

队列:queue:先进先出原则