小米分布式测试平台 (一)- 初识 Pecker

转载自:https://mp.weixin.qq.com/s?__biz=MzU0OTQxNTA4Nw==&mid=2247483830&idx=1&sn=5b80f1a2335cfdc093ba799c1009d0b2&chksm=fbb17076ccc6f960cf892c0c7a1c801d7c7d3f558d9b9d9f16a8137c948576abbefc56843fd9&mpshare=1&scene=1&srcid=0813hZ6PWr8odS2gPUCw0qCj#rd

系列二:通用HTTP测试工具开发详解

一、前言

小米分布式测试平台(Pecker)是一款集成各种测试的平台。包括但不限于性能测试、功能回归测试、上线准入测试等。测试种类不限于 RPC、HTTP、自定义 Java 接口等等。

二、背景

你的服务跑的有多快?你的服务平均响应时间是多长?你的服务能抗多少流量,能抗多久?每次新服务上线或新活动上线前,相关研发同学通常会思考这几个问题。“这也许只有QA同学应该知道吧”。

流量猛增,服务雪崩,不应该啊!服务容量已经算上buffer了,为什么还是败在大流量之下?

在这样的背景之下,我们着手开发了小米分布式测试平台-Pecker。旨在尽最大可能解放研发人员生产力,提前发现服务瓶颈和缺陷,保证服务稳定运行。

小米分布式测试平台(Pecker)是一款集成各种测试的平台。包括但不限于性能测试、功能回归测试、上线准入测试等。测试种类不限于RPC、HTTP、自定义Java接口等等。

三、小米分布式测试平台介绍

测试平台采用了业界比较成熟的三层架构方案。如下:

Pecker架构
  • 最上层为控制台,用户在此层操作。例如创建相关测试任务、查看执行历史、报表等数据。

  • 中间层为调度层,对测试任务进行调度。

  • 最底层为容器云,即任务执行层。每个测试任务最终都是在Pod中执行并完成。

1、性能测试种类

目前我们实现了三种压测种类,分为RPCHTTP自定义Java接口压测。

压测类型

其中针对HTTP服务,我们引入了变量替换模式。

一个生动的栗子:假设现有一个HTTP GET请求为:http://www.mi.com/test?item=a,其返回值为:{"res": "a"}。针对这样的接口,我们不可能一直构造一个不变的请求,也不可能创建成千上百个类似的任务。

在测试平台上创建该任务时,可以定义为:http://www.mi.com/test?item=${item},其返回值为:{"res": "${res}"}。用户只需要上传包括${item}${res}的CSV文件,平台则会在请求前自动进行替换。

而且,对于HTTP的结果集验证,我们提供了三种校验。分别为:请求过程验证、HTTP状态码验证和用户自定义断言验证,下图为用户自定义响应断言:

检查点

平台提供的功能过于通用,用户想测试SQL操作,怎么办?

对于这种情形,我们在架构上完成了解耦的工作,将测试模块与测试客户端进行解耦,将测试模块与统计数据模块进行解耦。用户完全可以通过实现我们的接口完成测试。

public interface TestClient {
    default void setUp();
    SampleResult runTest();
    default void tearDown();
}

2、性能测试方式

性能测试平台目前提供了两种测试模式:用户增长模式和QPS增长模式。

测试方案

用户增长模式:每个测试阶段内用户数量固定,随着阶段的增加定量增加用户数。

例如:我们总共需要压测10个阶段,每阶段持续10分钟。初始阶段用户为1W,每个阶段递增1W。此模式现支持分布式测试模式。

QPS增长模式:每个测试阶段内固定QPS发送请求,随着阶段的增加定量增加QPS。

例如:我们总共需要压测10个阶段,每阶段持续10分钟。初始阶段期望QPS=1W,每个阶段期望QPS递增1W。此模式暂不支持分布式测试模式。

其底层实现方式为:动态计算响应时间、线程数和Delay方程式。

3、报表数据展示

报表数据我们提供了基础数据数据以及错误数据展示,如下:

数据报表

为了展示数据更加直观,我们同样提供了图数据:

测试数据

4、其他功能

因为性能测试多数为自动执行任务,使用者并不想每次都去控制台上手动操作。针对这种情况,我们开放了一些接口便于用户进行脚本运行或者Jenkins调度。

测试平台实际上模拟Client端操作,但用户想实时获取被压测服务的运行状态。针对这种情况,我们的统计模块可以动态展示打开JMX服务的CPU、内存以及GC相关数据。

JVM相关信息

5、与主流测试工具对比

与Jmeter和Gatling对比

性能 功能 数据展示
测试平台性能优于Gatling,与Jmeter相近 测试平台作为自研平台,其功能完备性要差于其他两个工具 测试平台在数据展示上要优于其他两个工具

四、未来规划

1、基准测试完善

测试平台目前处于高速开发阶段,为了不影响其性能,需要完善其基准测试,提供更多的测试场景以及基准数据。

2、接口平台

可以看到,极大多数性能压测都是对某些接口进行发起。后期我们提供更完备的接口平台。接口管理更方便,性能/功能测试一目了然。

3、功能测试平台

目前测试平台主要实现了性能测试功能,现正在开发功能测试平台。支持上传测试用例并发起功能测试。

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

推荐阅读更多精彩内容