开发Mock服务做性能测试 (下)

上期背景已经做了介绍,为D公司的WMS性能压测做Mock挡板。
接下来是公司内部的OMS系统需要做压测了,整个链路的测试方式如下图


内部系统链路概略图

一、内部系统测试场景需求
 1. 大并发量测试:
   a) 需要有开关来控制订单数量,例如订单文件达到一定阈值时会自动把保存的订单数据从库表中读取出来批量生成测试订单数据;
   b) 测试过程可以随时停止;
   c) 手动输入命令后就立即开始把积累的测试数据全部发往被测系统;
   d) 可以统计执行的结果数据,形成简单的测试报告;
 2. 饱和测试
   (解释: 类似于负载测试的概念,让公司的各个服务系统都处于一直在工作状态,这时候再把需要的测试数据发往对应的测试系统来检查这时该系统的性能情况)
   a) 开关控制Mock服务的文件读取;
   b) 一旦有新的订单文件包上传就下载并解析,生成测试数据后就直接发往OMS,不再积累数量;
   c) 可以统计执行的结果数据,形成简单的测试报告;

二、设计测试解决方案
 1. Mock Service内部有三个功能模块:
   a) 定时任务:FTP文件扫描,用于处理原始订单文件的下载,解压,读取,入库等细节;
   b) 定时任务:测试数据扫描,用于处理入库后的测试数据的数量监控、生成测试数据、下发测试数据文件;
   c) Jmeter压测执行:接收测试人员指令,自动执行压测任务,收集测试结果数据;
   注:下图中3个橘色时钟图案表示Mock service三个模块


设计测试方案

三、详细设计
 1. 定时任务:FTP文件扫描 (spring boot + quartz)
   a) 实现ScanShipmentJob: 大并发量测试时,用于订单数据文件的处理;
   b) 实现ScanAutoJob: 饱和测试时使用,用于记录扫描到的数据文件并记录其批次;
 2. 定时任务:测试数据扫描(spring boot + quartz)
   a) 实现ScanShipmentJob: 大并发量测试时使用,用于一次性将测试数据文件下发至各个Jmeter slave;
   b) 实现ScanAutoJob: 饱和测试时使用,分批次下发至各个jmeter slave,并执行测试;
 3. Jmeter压测执行
   a) 增加接口/ship/run来,执行大并发量测试;
   b) 配置jmeter的执行时的测试数据文件路径、测试数据文件的名称、保存测试结果的文件路径;
   c) 编写shell命令,让/ship/run接口可以调用;
   d) 测试结果的统计;
 4. 创建表
   a) 表global_config:设置大并发量测试时,开关和需要积累生成测试数据的阈值;
   b) 表history_files:用于订单数据是一次性消费,所以需要保存FTP上已经扫描过的文件名称,避免重复下载;
   c) 表auto_config:设置饱和测试时,程序是否扫描FTP和自动发送订单的开关,用于饱和测试;
   d) 表auto_batch:记录每一次自动扫描FTP获得的tgz文件的数量以及发送后,该批次的数据的使用情况;
   e) 表result,统计jmeter运行结果;

四、实现
   a) 1个master和4个slave;
   b) 在master上jmeter/bin目录下设置scripts、run_test、results文件夹;
   c) 在4个slave上设置testdata文件夹在4个slave上;
   d) 测试数据的分片:在不同的slave上其测试数据名称相同,但里面的内容不能相同,因为订单数据的处理不能重复,一个订单号只能用一次;
   e) 在run_test文件夹下编写shell脚本:run_jmeter.sh;


jmeter部署

run_jmeter.sh内容

五、部分标结构
   a) auto_batch: 记录饱和测试时扫描到的数据信息:
       * batch_id: 用时间戳来标识某次任务执行扫描到的文件批次号;
       * batch_amount: 该批次文件中的订单数量;
       * is_used: 该批数据是否已经被创建为csv测试数据文件了;
       * batch_id: 用时间戳来标识某次任务执行扫描到的文件批次号;


auto_batch

   b) global_config:记录大并发测试时开关:
       * shipment_amount: 累积订单数量阈值;
       * shipment_switch: 定时任务扫描FTP文件服务的开关;
       * is_used: 该批数据是否已经被创建为csv测试数据文件了;
       * batch_id: 用时间戳来标识某次任务执行扫描到的文件批次号;


global_config

c) result: 从jmeter的jtl文件中统计结果:
       * phase: 订单处理有两种状态, 1代表过仓反馈,2代表出库确认;


result

d) shipment_confirm:记录订单数据的详细信息;

六、一些缺点和问题:
   a) 饱和测试的过程还是单线程的,模拟的近似度还不够;
   b) 没有实现压测的动态控制线程大小,在压测过程中只能以固定的线程数去执行;
   b) 在从FTP服务器下载数据时,会遇到有些时候,压缩文件很大,订单还没有完全复制完成,就被我扫描到了,并且下载,导致订单文件不全或丢失;这个问题已经解决,是由于FTP的设置需要指定FTPClient的文件传输类型,由于我们使用的默认类型为BINARY_FILE_TYPE,所以只要在初始化FTPClient对象时指定类型,ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE),并且必须在name,password都输入之后才能执行;如图:


ftp_client_init_issues.jpg

相关文章:开发Mock服务做双十一压测 (上)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

  • 2018年离开了自己工作过了7年的公司,从业务测试工作转变为测试开发,围绕公司的质量体系打造测试管理平台。跳出舒适...
    ArthasManu阅读 1,676评论 0 3
  • 通常做性能测试可以分为以下几个步骤.1、了解被测试应用的协议以及被测系统的组成架构;2、设计测试压力测试用例,编写...
    小白小白上楼梯12121阅读 1,215评论 0 0
  • 爱上阅读:爱之梦/微散文《遇见,未来的时光》 时光带去心灵的寄托,然后让我们想念,或许生命的美好,就在于...
    爱之梦BY阅读 863评论 1 31
  • 目录:《王子王然》目录 (1)终于到达了王城,父王、哥哥、小七、丞相,还有其他一众文武在王城正门迎接我的归来。我特...
    简书中的阿拉丁阅读 389评论 0 3
  • 【1】 “霞,它是公的!”阿贵盯着玻璃缸对我说。 “你怎么知道?”我很好奇,俯下身蹲着,把头也凑到玻璃缸前使劲看。...
    微疯铃铃阅读 1,058评论 20 15