• 全栈性能测试教程之性能测试理论(一) mockserver应用


    1、mockServer

    1.1什么是mockServer

    moco=替代     Server=服务

    mocoServer即为测试替身的服务

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

    1.2mocoServer使用的场景

    前端程序员

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

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

    1. [
    2. {
    3.     "request":
    4.     {
    5.     "method": "get",
    6.     "uri": "/products"
    7.    },
    8.     "response":
    9. {
    10.     "json":
    11. {
    12.     "name": "我真帅",
    13.      "type": "WEB",
    14.      "version": "V1.0.0",
    15.      "master": "aaaa",
    16.      "description": "this is a test api"
    17.       }
    18.      }
    19.    }
    20. ]

    启动的命令为:

    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返回车辆的其他信息

    1. [
    2. {
    3. "request":
    4. {
    5. "method": "post",
    6. "uri": "/parking",
    7. "json":
    8. {
    9. "park": "B250BA"
    10. }
    11. },
    12. "response":
    13. {
    14. "json":
    15. {
    16. "park": "B250BA",
    17. "in": "2022-2-14 00:00:00",
    18. "out": "2022-2-14 12:00:00",
    19. "money": "$250",
    20. "master": "jiachao"
    21. }
    22. }
    23. }
    24. ]

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

     测试

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

    自己造数据

    自己mock数据

    具体方式如下

    1. [
    2. {
    3. "request":
    4. {
    5. "method": "get",
    6. "uri": "/products"
    7. },
    8. "response":
    9. {
    10. "json":
    11. [
    12. {
    13. "name": "wo真帅",
    14. "type": "WEB",
    15. "version": "V1.0.0",
    16. "master": "bbb",
    17. "description": "this is a test api"
    18. },
    19. {
    20. "name": "wozuishuai",
    21. "type": "APP",
    22. "version": "V1.0.1",
    23. "master": "aaa",
    24. "description": "this is a test api"
    25. }
    26. ]
    27. }
    28. }
    29. ]

     2、性能测试相关知识

    软件性能测试常用术语

    2.1响应时间

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

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

     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:先进先出原则

  • 相关阅读:
    ubuntu基础操作(1)-个人笔记
    【Hack The Box】linux练习-- SolidState
    Android系统的Ashmem匿名共享内存子系统分析(2)- 运行时库cutils的Ashmem访问接口
    2023年AI生成音频研究报告
    【经验分享】运用云服务器实现挂机手机网课的操作,部分手机软件适用
    Delayed 延时任务
    高并发系统架构设计之实战篇:计数系统之计数器设计
    springboot房屋租赁合同报修系统java-ssm
    独家首发!openEuler 主线集成 LuaJIT RISC-V JIT 技术
    自己实现str
  • 原文地址:https://blog.csdn.net/csdnchengxi/article/details/128154153