自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

換個角度思考性能測試問題和學(xué)習(xí)性能測試實踐

開發(fā) 開發(fā)工具
市面上現(xiàn)在有非常多關(guān)于性能測試的書籍,其中不少書籍都能夠系統(tǒng)地介紹性能測試。今天我想通過另一種方式來介紹性能測試,那就是通過提出一些關(guān)于性能測試的問題,然后針對問題進行思考。

性能測試對于大部分測試人員都是一個神秘地帶,因為在很多公司,性能測試都是由一個性能測試團隊來做,所以普通測試人員沒有機會接觸到真實的性能測試,因而很難學(xué)習(xí)到很多新的測試實踐知識。

市面上現(xiàn)在有非常多關(guān)于性能測試的書籍,其中不少書籍都能夠系統(tǒng)地介紹性能測試。今天我想通過另一種方式來介紹性能測試,那就是通過提出一些關(guān)于性能測試的問題,然后針對問題進行思考。希望通過不一樣的方式讓讀者以另外一種視角來思考和學(xué)習(xí)性能測試實踐。

1. 如何在敏捷開發(fā)中做性能測試?

敏捷開發(fā),由于其持續(xù)集成、快速反饋等特點,需要性能測試工具支持輕量化、集成CI服務(wù)器、全代碼化等特性,所以傳統(tǒng)的性能測試工具比如JMeter和LoadRunner等已經(jīng)很難適用于敏捷開發(fā)。在敏捷開發(fā)中,性能測試應(yīng)該需要具有以下特點:

(1) 性能測試是持續(xù)集成和持續(xù)發(fā)布的一部分,盡可能早的發(fā)現(xiàn)性能問題,從而降低修復(fù)成本。這樣可以使得很多性能問題在開發(fā)過程中被持續(xù)的盡快發(fā)現(xiàn)。建議將性能測試寫成故事放到每個迭代里面去,見下圖:

??

(2) 性能測試腳本易讀,易維護。比如代碼化的腳本Gatling,Locust等。下面是Gatling的DSL示例代碼:

?Gatling的DSL示例代碼?

(3) 可視化,報表易讀,每個人都能及時了解狀況 。下圖為Jenkins集成了一個Gatling插件后所展現(xiàn)的Gatling持續(xù)測試報表。

??

通過在敏捷開發(fā)中做持續(xù)的性能測試,使得性能測試也可以:小步快跑->快速反饋->持續(xù)改進->持續(xù)交付。

2. 如何通過數(shù)據(jù)分析更有效的做性能測試?

大部分情況下大型項目的性能測試需要的時間和人力都非常高,因為:

  • 用戶并發(fā)要求高,測試硬件成本高
  • 測試功能點多,測試量大
  • 耐久性測試,測試時間長

其次是測試的有效性差,因為測試人員在測試環(huán)境中很難模擬真實用戶的操作,比如訪問的順序分布,訪問的強度分布以及用戶端的各種訪問參數(shù)。

為了解決這兩個問題,應(yīng)該通過用戶數(shù)據(jù)分析來獲得真實的用戶行為數(shù)據(jù),并用其來構(gòu)造性能測試用例,其中可以用下面這個漏斗模型來進行思考:

??

通過這個漏斗模型可以知道,為了快速得到真實有效的性能測試數(shù)據(jù)模型,需要通過篩選并整合真實的用戶數(shù)據(jù),而并不是靠測試人員在實驗室中想象出來的數(shù)據(jù)。

那如何進行用戶行為分析呢?下面嘗試用三個例子來進行說明。

***個例子是一個用戶注冊流程,通過用戶行為的數(shù)據(jù)分析可以得到每個功能點上用戶的訪問量。見下圖:

??

圖中展示了用戶注冊流程的6個步驟,分別是:

  • Getting Started
  • Account Information
  • Personal Information
  • Financial Information
  • Review Information
  • Thank You Page

其中***個步驟有18606次訪問,然后有71%的訪問用戶選擇繼續(xù),但是只有13131(70.6%)到達了第二個步驟。最終只有925(5%)的用戶完成了注冊。由此可以知道不同步驟的真實訪問比例,從而得到性能測試的數(shù)據(jù)模型和策略。

第二個例子是用戶使用的瀏覽器的數(shù)據(jù)統(tǒng)計,如果性能測試需要模擬不同的瀏覽器,那么這些數(shù)據(jù)分析結(jié)果也可以用以確定瀏覽器在性能測試中的權(quán)重。

??

通過這個統(tǒng)計表可以知道使用IE瀏覽器的用戶最多,所以在生成性能測試數(shù)據(jù)的時候應(yīng)該多生成一些基于IE瀏覽器的數(shù)據(jù),比如User-Agent等。

第三個例子是統(tǒng)計的用戶訪問地區(qū),對于有些大型的互聯(lián)網(wǎng)應(yīng)用是需要進行多地區(qū)模擬來測試不同地區(qū)互相訪問時的性能。這個數(shù)據(jù)統(tǒng)計結(jié)果可以幫助其設(shè)計更有效的這類性能測試用例。

通過這個統(tǒng)計表可以知道英國的用戶訪問量最多,而美國的訪問量第二。如果應(yīng)用服務(wù)器部署在美國,那么就應(yīng)該盡可能的在英國架設(shè)測試服務(wù)器,通過在英國的測試服務(wù)器來測試美國的應(yīng)用服務(wù)器,從而測試跨國網(wǎng)絡(luò)的性能,并且還需要在產(chǎn)品環(huán)境檢測英國到美國的網(wǎng)絡(luò)性能,從而及時發(fā)現(xiàn)性能問題。

通過對這些真實用戶數(shù)據(jù)的分析,可以設(shè)計更有效的性能測試模板,下面是一個性能測試模板的樣例,其中每個功能點上圓圈中的數(shù)字代表這個功能點在真實環(huán)境中的用戶訪問權(quán)重。權(quán)重越大的功能點在整個性能測試模板中應(yīng)該測試量更大,所花費的成本更高。

??

常見的Web系統(tǒng)用戶數(shù)據(jù)跟蹤與分析工具有:

  • Adobe SiteCatalyst:功能強大,使用繁瑣,收費(貴)
  • Google Analytics: 功能較強,使用方便,免費和收費
  • 百度統(tǒng)計/騰訊分析:功能一般,免費

使用數(shù)據(jù)分析來生成數(shù)據(jù)模型的流程如下:收集數(shù)據(jù)->分析數(shù)據(jù)->生成測試數(shù)據(jù)模板->使用數(shù)據(jù)模板。

3. 對大規(guī)模集群系統(tǒng)做性能測試應(yīng)該注意什么?

通常中小型公司的IT系統(tǒng)都不使用大規(guī)模的集群,而只有大型公司才會大規(guī)模使用集群,導(dǎo)致很多測試人員沒有機會實踐和了解基于集群的性能測試。如果想學(xué)習(xí)基于集群的性能測試,除了常規(guī)的測試集群系統(tǒng)性能以外,還可以從以下幾個方面進行思考,從而學(xué)習(xí)基于集群系統(tǒng)的性能測試:

  • 測試環(huán)境的真實性,由于大規(guī)模集群包含很多節(jié)點和服務(wù),所以搭建和產(chǎn)品環(huán)境一樣的測試環(huán)境的成本很高,導(dǎo)致測試環(huán)境的規(guī)模一般都比產(chǎn)品環(huán)境小很多。那測試這樣的測試環(huán)境還有什么意義?
  • 一般集群都會使用負(fù)載均衡,但是由于存在多種負(fù)載均衡算法和配置,那么怎么才能保證負(fù)載均衡功能是按照設(shè)計和配置的進行工作?
  • 除了對集群系統(tǒng)進行整體的性能測試外,還需要單獨對不同的服務(wù)和節(jié)點進行性能測試嗎?

所以針對集群系統(tǒng)做性能測試不僅僅能測試系統(tǒng)的性能,還可以解決以上三個問題:性能規(guī)劃,配置測試,隔離測試。

(1) 性能規(guī)劃

對于一個大型的服務(wù)器應(yīng)用系統(tǒng),一般情況下都是由規(guī)?;募航M建而成的。所以測試這類基于集群的服務(wù)器系統(tǒng)的時候,也需要將測試環(huán)境配置成和產(chǎn)品環(huán)境類似的集群系統(tǒng)。不過因為成本的原因,測試環(huán)境中的集群規(guī)模大都要小很多??梢酝ㄟ^測試小規(guī)模的集群,然后使用其測試結(jié)果,并通過數(shù)學(xué)建模推算產(chǎn)品環(huán)境的性能或者對產(chǎn)品環(huán)境進行性能規(guī)劃。由于每個集群系統(tǒng)擁有各自不同的架構(gòu),配置和服務(wù),所以其數(shù)學(xué)模型也是不同的。

(2) 配置測試

通過更改集群系統(tǒng)的各種配置,并在不同的配置下對集群系統(tǒng)進行性能測試,從而獲得***配置。比如輔助開發(fā)人員完成集群功能的開發(fā)與驗證,比如負(fù)載均衡算法,熱備等;以及輔助運維團隊配置和調(diào)試產(chǎn)品環(huán)境的集群配置等。

(3) 隔離測試

對于集群系統(tǒng)的服務(wù)或者節(jié)點,開發(fā)這些服務(wù)的團隊?wèi)?yīng)該在隔離(stub)第三方依賴的環(huán)境下,各自對自己團隊開發(fā)的服務(wù)進行獨立的性能測試。從而盡早發(fā)現(xiàn)性能問題,盡早修復(fù),避免在集群環(huán)境下發(fā)現(xiàn)同樣的問題,增加調(diào)試和時間成本。

大規(guī)模集群系統(tǒng)基本都是復(fù)雜架構(gòu),環(huán)境也都是較為復(fù)雜的組織結(jié)構(gòu),而只有深入理解整個業(yè)務(wù)流程,系統(tǒng)架構(gòu)以及環(huán)境結(jié)構(gòu)才能有效地設(shè)計測試方案。

4. 性能測試中的測試數(shù)據(jù)有幾種類型?

測試數(shù)據(jù)一直是軟件測試中的一個頭疼的問題,特別是在性能測試中測試數(shù)據(jù)尤為重要,因為越真實的數(shù)據(jù)越能獲得更好的結(jié)果。對于測試數(shù)據(jù)的類型可以分為以下四種:單一型,隨機型,模板型,真實型。

(1) 單一型

它是通過錄制或者觀察,使用一個或者一類單一的測試數(shù)據(jù)來進行性能測試。這種數(shù)據(jù)的構(gòu)建簡單,但是數(shù)據(jù)過于單一,無法模擬真實用戶。由于其數(shù)據(jù)構(gòu)建簡單,所以可以用于敏捷開發(fā)中的早期性能測試。

(2) 隨機型

它是通過一些簡單的數(shù)據(jù)規(guī)則,并結(jié)合隨機算法生成的測試數(shù)據(jù)。這種數(shù)據(jù)和單一型比較,雖然增加了隨機性,但是仍然缺乏真實性,并且其構(gòu)建成本和性能問題的分析成本也相對較高。它可以用于上線前的大規(guī)模的多樣化的綜合性能測試。

(3) 模板型

它主要是通過數(shù)據(jù)分析并生成模板來構(gòu)建測試數(shù)據(jù)。雖然它較隨機型在一定程度上增加了用戶真實性,但是準(zhǔn)備數(shù)據(jù)的成本很高。在項目成本和資源允許范圍內(nèi),可以結(jié)合模板型和隨機型的方法,從而更為有效的進行性能測試。

(4) 真實型

它是通過直接導(dǎo)出或者重定向產(chǎn)品數(shù)據(jù)來做性能測試數(shù)據(jù)。它完全是真實的用戶數(shù)據(jù),構(gòu)建成本較低,但是存在數(shù)據(jù)安全性的問題,比如數(shù)據(jù)泄露。在數(shù)據(jù)安全性可以得到有效保護的情況下是可以使用真實型數(shù)據(jù)來進行性能測試。

測試數(shù)據(jù)生成和管理對于一個大型項目的性能測試是十分重要的,所以如何高效的生成有效的測試數(shù)據(jù)成為了首要的任務(wù)。通過這四種測試數(shù)據(jù)類型,可以快速的判斷在項目當(dāng)前階段適合使用那種類型的數(shù)據(jù),從而避免一些彎路。

5. 其他問題

除了以上問題和思考,我還準(zhǔn)備了一些其他的基本問題給讀者自己去思考,從而通過思考問題來學(xué)習(xí)性能測試。

  • 性能測試主要包含哪些類型以及分別的作用是什么?
  • 前臺頁面的性能測試應(yīng)該注意哪些問題?
  • 對于并發(fā)用戶很少但是穩(wěn)定性要求很高的系統(tǒng)需不需要做性能測試?為什么?
  • 對于后臺有大量異步批處理需求的系統(tǒng)應(yīng)該怎樣進行性能測試?
  • Profiling是不是性能測試?什么時候應(yīng)該做它?
  • 常見的性能測試工具有哪些?怎么選擇性能測試工具?
  • 如果測試環(huán)境和產(chǎn)品環(huán)境的硬件配置不同,如何通過測試環(huán)境的測試結(jié)果評估產(chǎn)品環(huán)境的性能?
  • 在設(shè)計性能測試用例時需不需要考慮Think Time?
  • 中小型項目的性能測試都需要注意些什么?
  • 性能需求的來源有哪些?
  • 如何使用云服務(wù)進行超大規(guī)模性能測試?

【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號:思特沃克,轉(zhuǎn)載請聯(lián)系原作者】

??戳這里,看該作者更多好文??

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2016-10-25 13:46:25

深度學(xué)習(xí)機器學(xué)習(xí)性能提升

2011-03-15 16:34:36

Iptables性能

2018-08-29 13:57:40

前端性能測試Html5

2019-01-16 09:00:00

DevOps性能測試軟件

2022-11-24 09:01:26

HTTPHertz架構(gòu)

2010-01-05 14:37:39

JSON POST

2022-09-22 08:05:23

架構(gòu)

2011-06-08 16:59:04

性能測試載測試壓力測試

2020-05-18 07:00:00

性能測試壓力測試負(fù)載測試

2010-03-03 17:43:12

Android系統(tǒng)

2012-06-28 10:18:01

數(shù)據(jù)庫

2011-12-15 09:55:47

javanio

2012-12-18 13:32:45

IBMdW

2009-09-22 17:41:07

Hibernate性能

2023-09-13 14:47:34

性能測試開發(fā)

2017-11-20 16:17:50

智慧城市

2010-03-01 18:21:08

Python測試

2014-01-09 09:24:32

Linux滲透測試滲透測試

2012-12-27 15:46:33

系統(tǒng)測試以太網(wǎng)交換機

2019-01-11 17:47:54

華為云
點贊
收藏

51CTO技術(shù)棧公眾號