1. 程式人生 > >小米分散式測試平臺 (一)- 初識 Pecker

小米分散式測試平臺 (一)- 初識 Pecker

一、前言

小米分散式測試平臺(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、功能測試平臺

目前測試平臺主要實現了效能測試功能,現正在開發功能測試平臺。支援上傳測試用例併發起功能測試。

相關推薦

小米分散式測試平臺 ()- 初識 Pecker

一、前言 小米分散式測試平臺(Pecker)是一款整合各種測試的平臺。包括但不限於效能測試、功能迴歸測試、上線准入測試等。測試種類不限於 RPC、HTTP、自定義 Java 介面等等。 二、背景 你的服務跑的有多快?你的服務平均響應時間是多長?你的服務能抗多

基於python flask的自動化測試平臺()--實現第一個應用,hello,world

一個基本的應用需要的目錄如下 先為 app 包(檔案 app/__init__.py )建立一個初始化指令碼: from flask import Flask app = Flask(__name__) from app import views 然後建立第一個h

基於python flask的自動化測試平臺()--建立資料庫

說實話對於建立資料庫的原理我也不太懂,我只能把其他人的例子搬運過來然後自己進行修改成自己需要的樣子 一、建立配置檔案 aoto_test\config.py import os CSRF_ENABLED = True SECRET_KEY = 'ha-ha-ha'

基於python flask的自動化測試平臺()--模板繼承與導航欄構造

模板繼承使用的是flask中的模板繼承,在基礎模板中使用{% block content %}{% endblock %},然後在其他模板中通過 {% extends "base.html" %} {% block content%} 這裡為頁面模板區域 {% endb

基於python flask的自動化測試平臺()--建立虛擬環境及安裝flask

我們一個專案的開始就是建立虛擬的獨立執行環境,作者使用的是windows系統進行開發的,一下所講的都是在windows系統下的操作以及python3.6。      要使用虛擬環境就必須先安裝virtualenv依賴包,直接  pip install virtualenv

接口測試的另種方式 – 接口測試平臺

please bst log nginx ont sch 大致 安裝模塊 c-c 接口測試的另一種方式 – 接口測試平臺 文章目錄[顯示] 搭建的初衷 現狀 目前,基於我們組所需要測試的點,很大一部分都是跟接口相關的,不管是我們系統內部的接口還是第三方(外部系統)的接

測試平臺開發記錄(

文檔 直接 重新整理 繼續 框架 運行 自動化 一點 開發 最近幾個月最主要的工作就是測試平臺開發,由於內容比較多,我計劃分幾期來討論。 提到“測試平臺”測試會覺得比較高大上,其實就是“xx測試管理系統”,既然是一個管理系統,又是主要服務於測試的,所以,主要功能就是:管理接

從硬體生態到協議平臺小米 IoT 的下步是什麼?

小愛同學累計啟用裝置約 1 億臺,累計喚醒次數達 80 億次,9 月月活達 3400 萬,小米 IoT 已經連線了 1.32 億臺裝置(不含手機和膝上型電腦)——這是雷軍在今年小米 AIoT 大會上給出的最新「連線」成績單。http://www.kaiqiangadhesive.com/

CentOS下搭建Teuthology Ceph自動化測試平臺

Paddles及資料庫部署 安裝相關軟體 這李只列出一些必用的,每個人使用的環境不一樣,可能還會存在一些包沒有安裝的,搭建環境過程中,注意看輸出的日誌資訊,缺少什麼就安裝。 #yum install python-virtualenv postgresql po

Jmeter(四十分散式測試(轉!)

寄語路人休掩鼻,活人不及死人香。                   -------《隨園詩話》袁枚 轉自:https://www.cnblogs.com/imyalost/p/8306866.html   1、修改Contorller配置 開啟Contorller機下jmeter安裝檔案

多因子模型之因子(訊號)測試平臺----因子值的處理(

在前面一節,我們成功計算出來了因子值。 在開始今天的內容前,我們要先了解幾個概念。許多書本上,可能不會這樣講,這個僅僅是筆者的一些感悟。 0.幾種factor         先來弄清楚筆者自己總結的

介面測試的另種方式 – 介面測試平臺

文章目錄[顯示] 搭建的初衷 現狀 目前,基於我們組所需要測試的點,很大一部分都是跟介面相關的,不管是我們系統內部的介面還是第三方(外部系統)的介面。部分介面還涉及到對傳輸資料的加密解密處理,那麼,在日常的測試工作中,難免需要開發為我們提供加解密的工具或者我們自己編寫小工具進行測試。隨著介面數量

白話分散式儲存測試)明確測試目標

之前工作中做了很多儲存測試相關的事情,對儲存測試有一些想法,最近想用幾篇文章來介紹下分散式儲存測試相關的一些內容,這部分內容對學習儲存有很好的促進作用,歡迎大家關注~ 白話分散式儲存測試(一)明確測試目標 白話分散式儲存測試(二)熟悉測試工具 【將釋出在微信公眾號】 白話分散式儲存測試(三

文揭祕測試平臺中是如何將測試用例鍵轉化Jmeter壓測指令碼

                   ​    ​接上篇,一鍵轉化將介面測試平臺測試用例轉化成Jmeter壓測指令碼思路,這裡我首先在java 上面做

Python 接口測試

blog 系統環境變量 resp 環境變量 nbsp 們的 www nload uic 1. 概念: 接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的

c語言中fflush的運用為什麽沒有效果呢,測試平臺linux

*** file 語言 stdlib.h clu author 年齡 blog name 1 /************************************************************************* 2 > F

號站平臺 號站娛樂平臺註冊 地址是多少

地址 href bsp 娛樂 www targe ref 註冊 com 一號站平臺 一號站娛樂平臺註冊 一號站娛樂平臺註冊地址 一號站平臺註冊 一號站平臺官網一號站平臺 一號站娛樂平臺註冊 地址是多少

大數據平臺鍵安裝OS【定制化OS鏡像制作】

大數據 一鍵安裝 定制化 大數據平臺一鍵安裝OS大數據平臺一鍵安裝OS系列大數據平臺一鍵安裝OS【搭建腳本篇】定制化OS鏡像制作1.操作環境操作環境:VMware Workstarion 9 and vSphere client系統:CentOS -6.8-x86_64工具:gconf-edit

談談對測試工作的初識

生產環境 技術 運行 是否 所有 指導 業務 而是 系統 最近轉入了測試行業,是一名測試新人,想談一談我自己對測試的初步認識。 一個正常運行的項目,分為三個環境,本地環境、測試環境、生產環境; 研發的同事一般都是在本地環境操作,測試的同事在測試環境下操作,運營部的同事在生產

python結合excel數據輕松實現接口自動化測試

判斷 原因 一個 軟件測試 測試 相等 fin 完成 想去 在剛剛進入測試行業的時候,最開始也是做功能測試,我想很多夥伴和我一樣,覺得自動化測試都很高端,很神秘。迫不及待的想去學習作自動化測試。 以前比較常用數據庫+python做自動化,後面發現excel個人覺得更加適合,