• 性能:参数化和关联


    功能点:
    1.单场景
    2.混合场景
    3.稳定性场景


    jmeter里面的并发是线程数
    流量是漏斗原理


    为什么要做参数化,原因只有两个

    1.为了避免数据库(unique属性)或者业务逻辑对该值的唯一性校验
    (写的操作一般是数据库校验,查询操作一般是业务逻辑校验)
    2.为了避免命中查询缓存对性能结果带来的失真
    不同的缓存形式:redis (服务器缓存), mysql (服务器缓存), 本地缓存
    本地缓存一般缓存 cookie,页面的css,js, 图片,框架样式缓存在浏览器里面
    服务器缓存一般是查询缓存,从库里查询缓存到内存里面,一般都要做参数化,避免命中查询缓存

    mysql去查询的过程:
    1.进行语法分析,有没有操作数据库操作表的权限,用户名密码对不对
    2.语义分析,sql到底对不对
    3.根据sql,生成这条sql的执行计划
    4.看这条执行计划在缓存里面在不在,如果命中了查询缓存,直接在缓存里面
    把结果返回,如果未命中查询缓存,就打开要操作的表按照你的执行计划从内存
    里面找到你的查询结果,如果要找的结果不在查询结果的话,就需要去硬盘里面去
    寻址,找到数据后把数据放到内存里面再返回


    如何避免参数化
    1.去掉数据库或者业务逻辑代码里面的唯一性校验
    2.关闭mysql的缓存


    一个并发跑十次
    十个并发跑一次



    什么叫做关联
    为什么要做关联

    关联:将服务器返回的动态变化的数据保存为一个变量,以供后面需要用到该值的请求进行使用
    关联只会在response里面去找动态变化的值,找到之后保存成一个变量

    需要做关联的内容:
    一,不跟数据库打交道
    请求逻辑对该值有合法性校验:
    1.验证码(图片验证码,短信验证码,邮箱验证码)
    2.用户身份的校验:session, token
    3.提交时间校验:时间戳
    大多数情况下特征:1、不是从服务器返回的值 2.奇奇怪怪没有任何规则/规律或者含义的字符

    二,跟数据库打交道
    增 insert :insert是否需要做关联取决于业务场景,关联值就是要建立关联关系的字段
    删 delete :关联where里面的id字段的值
    改 update :关联where里面的id字段的值
    查 select :关联where里面的id字段的值

    共同特征:int类型的值(身份证号除外) 大多数参数名称会带id类字样
    如果最终请求参数没有用户id之类的参数 不要自己去加 这类uid信息会通过cookie之类自动补全


    拿到一个压测需求去分析哪些步骤需要参数化哪些步骤需要关联:

    注册用户 参数化:手机,邮箱 关联:手机,验证码
    添加收货地址 关联:用户id 可以不用做参数化
    修改用户昵称 关联:用户id 参数化:用户昵称(昵称不能重复)
    浏览商品 参数化:商品id(避免命中查询缓存) 商家id
    添加购物车: 关联:用户id 参数化:商品id(因为上一步商品id做了参数化)
    生成订单再支付 关联:用户id 用户id2 参数化:商品id, 商家id
    查看订单 关联: 用户id 订单号
    查看物流 关联:用户id 物流号
    收货 关联 : 用户id 物流号 订单id
    退件 关联 : 用户id 物流号 订单id
  • 相关阅读:
    闭包
    值类型和引用类型的区别?
    计算机基础知识和基本操作
    Git常用命令
    任务八
    CSS任务七
    CSS任务六
    MySql+EF6,不能选实体框架6.x或者闪退
    以一定的格式生成最新的数据库流水号
    layui父窗体获取弹出窗体元素
  • 原文地址:https://www.cnblogs.com/liulilitoday/p/15899466.html
Copyright © 2020-2023  润新知