每天資訊測試系統可以達到多大的併發

菜單

測試系統可以達到多大的併發

併發測試的方法

併發有4種測試方法。主要的差異點就是在併發測試的時候,是否會有連線的拆除。簡單總結如下:

方法1:用新建來測試併發——只有在拆除階段的時候,會有連線的拆除。

方法2:用併發的方式來測試併發,邊建立邊拆除——在達到期望的併發值後,開始有連線的拆除和新建。

方法3:用併發的方式來測試併發,從一開始就邊建立邊拆除——在達到期望併發值的過程中,就有連線的拆除和建立。

方法4:用併發的方式來測試併發,只建立不拆除——測試至始至終都不拆除

併發測試方法2:用併發的方式來測試併發,邊拆邊建立

測試場景(該方法適合於測試最好值)

場景1:驗證系統是否可以達到指定數值的的併發值。

場景2:在不知道系統併發的情況下,測試系統最大的併發值。

在這種測試模型下,會不斷的拆除會話和拆除會話,但是在每一秒來看,系統依然可以保持到一個設定的併發值。因此,在這種情況下,儀表上顯示的,累積的併發值(attempted值)會遠遠超過我們設定的併發值。此時對DUT來說,會測試到會話表的新建和拆除。

要點

如何配置load?Load的單位選擇conections或者simusers<由於新建=併發/時間,所以load裡爬坡階段的斜率,就等於此時的新建。為了避免併發測試受到新建測試的影響,所以此時斜率應該小於系統的新建值(建議在換句話說,要先測新建,再測併發)

測試用例3:驗證系統是否可以達到100w的併發

假設系統的新建為3000,需要驗證系統的併發是否可以達到100w。Load的設定如下圖所示:

特別注意,系統此時的新建值要低於系統的最大新建值(一定要“低於”,如果“等於”,也會在T2這段時間,也就是邊建邊拆的時候,出現失敗,詳細的說明可以參考下面的測試結果分析部分)

假設此時系統的新建為 3000 connections/sec

T1 = 100w/3000 = 333。3(寫334)

T2 希望的併發可以保持的時間(假設為120s)

本例設定T3 = T1

在aciton中,設定think time = T1,即 334s

測試系統可以達到多大的併發

特別說明:

設定think time = T1,效果是使得系統在達到希望測試的併發目標的時候(100w),沒有連線拆除。達到併發後,在T2這個時間段裡,是有連線的拆除和新建的

擴充套件說明:如果此時,設定think time = T1+T2,這時和本文描述的第一種測試方法,即“用新建的方式來測試併發”,效果是一樣的。

測試結果分析:

測試系統可以達到多大的併發

擴充套件說明

從方法1和方法2的結果對比中,已經可以看出,不同的效能測試方法,對系統的壓力的差異了。這點在效能測試設計中,和外測中需要特別注意。

例如本例的例子。假設系統的新建能力就只有3000,那麼在測試的過程中,特別在T2這一階段就很容易出現大量失敗。

測試用例4:測試系統可以達到多大的併發

測試系統可以達到的最大併發,和用例1的差異就是在最大負載的差異。

第一輪測試

一般會測試兩輪。第一輪的測試目的是找到一個性能的“預定值”:

先測試新建

根據系統的記憶體(可以知道一個流表佔用的記憶體大小,也可以知道用於流表的記憶體塊有多大),預估併發的最大值。

建立一個新的load。此時需要使用到stair階段:

測試系統可以達到多大的併發

總高度H= H1+H2 =預估系統最大的併發值 x ( 1 + 20%) 其中20%也是為經驗值。

H1= H x 80%

H2 = H x 40%

爬坡時間 T1 = H1 / 新建值 (這個新建值需要低於最大新建值,為了不讓新建影響併發,建議低於1/10)

每個階梯(h1)的爬坡斜率和H1部分的爬坡斜率一致。

設定think time = T1的時間

執行這個配置,注意觀察出現失敗的點(此時可以重點關注http transactions per second)。然後將出現失敗前的點,作為系統的最大併發值。

測試系統可以達到多大的併發

第二輪測試

以第一輪測試得到的最大併發值,進行測試,確認系統能夠穩定在該值。此時的測試方法和併發測試用例1的測試方法一致,不再贅述。

測試系統可以達到多大的併發

文章源於網路,不做任何商業用途~