天天看點

個人對測試的了解--性能測試

系列文章目錄

整理下個人對測試的一些想法和了解,個人之見。

文章目錄

    • 系列文章目錄
    • 整體思路
    • 工具
      • jmeter
      • loadrunner
      • gatling
      • locust
      • nmon
    • 自動化

整體思路

  1. 性能測試是一個很大的概念,從不同角度、深度來看,同樣一個測試可以有不同的稱呼。
  2. 并發測試、壓力測試、負載測試,從嚴格的定義上是指不同情況或者說不同層級的測試。以接口測試為例,并發測試是指在測試過程中使用并發手段發請請求;壓力測試主要是在測試過程中逐漸增大請求壓力(簡單的說就是更多并發)直到系統報錯所能承受的極限;負載測試是一般指在一定的壓力下(特定的并發、事務數控制等),系統較長時間運作,獲得其資源消耗情況的測試。就我個人而言,壓力測試通常是通過并發測試實作的,負載測試又可以算是壓力測試的一部分。實踐中不怎麼進行區分,一切以預期的結果資料為準。期望獲得什麼資料就叫什麼測試,還是接口測試為例,比如登陸接口,期望資料是系統能支撐的同時登陸請求的個數(假設這個接口是簡單的判斷接口,速度非常快,代理伺服器是nginx,設定了較小的連接配接數),我個人認為算并發測試,通過jmeter,建立測試腳本,配置一定的并發(要設定集合點)每個并發請求1次,多次測試中不斷增大并發,直到接口無法正常響應,臨界值就是系統能支撐的同時登陸請求的個數(能承受的并發極限)。
  3. 針對接口的性能的測試叫接口性能測試,針對整個系統的叫系統性能測試,針對存儲的測試叫存儲性能測試,命名看心情出,随時都能出一個新測試。
  4. 性能測試的名額相對較多,需要學習。以jmeter聚合報告為例,常見包括并發、延遲、95%line等、throughput、send、received。其他的好了解,重點是throuput,通常會叫吞吐,也作事務數(loadrunner中的Transactions),這個報告裡,是sample(比如一個請求,或者定義多個請求為一個事務)總數/運作時間,不同地方叫法不太一樣,或有細微差異,自行學習體會,項目組内部統一定義。
  5. 靈活制定測試計劃,要依據對産品需求的了解制定,不要為了測試而測試,例如一個接口,生産環境的下甚至都沒有調用,就不用測試了。
  6. 系統性能測試,不僅包含短時間大并發下的壓力測試,也要考慮到7*24小時(伺服器類型)運作的穩健性,還要考慮到随時間正常增長的諸如存儲資料的可用容量。例如一個業務系統,會保留大量業務日志,一段時間後,業務日志可能超出硬碟容量,引起系統崩潰,又或者資料量超過系統處理極限,無法進行一些處理操作。

工具

jmeter

jmeter天下第一

易學易用,可視化配置,指令行執行,支援分布式,除http外支援大量協定,特别是存在大量插件可用,也可以自行編寫基于java的sampler,靈活強大

jmeter有個搜集伺服器資訊的插件,可以和測試同時啟動,非常友善:https://jmeter-plugins.org/wiki/JMXMon/

  1. 下載下傳https://jmeter.apache.org/download_jmeter.cgi
  2. 安裝jdk
  3. 直接可用
  4. 在可視化界面配置腳本
  5. 使用指令行模式執行腳本

    使用自行百度或者參考:https://blog.csdn.net/u012810434/article/details/54380975

loadrunner

知道即可,現在為和Micro Focus旗下産品(hp的軟體業務和Micro Focus合并了),可以說是标杆級的應用,功能強大、權威、重量級,但是正常情況下不會使用(也用不起),可能會遇上一些測試需求要求使用loadrunner(外行的典型就是指定工具而非名額)

換了好幾個東家,中間有個V12版本是有社群版的,50并發限制

  1. 下載下傳社群版https://www.microfocus.com/en-us/products/loadrunner-professional/download
  2. 新版沒用過,自行百度學習,老的是三個元件:VUG(Virtual user generator)建立腳本,controller設定并發以及運作,analysis分析報告

gatling

使用Scala,支援大量并發

jmeter是java的,并發是通過線程實作的,會占用大量資源,一旦并發數增多隻能嘗試分布式運作,但就我個人經驗,分布式不好使,主要是項目原因,總不能測試機比系統伺服器還多。

scala可以簡單的認為是java的擴充版(自行百度),并發實作上并非直接使用線程,遠比基于java的jmeter輕量,節約資源。

  1. 下載下傳:https://gatling.io/open-source
  2. 實話說也沒怎麼用過,自行百度

locust

基于python,一個架構

也沒怎麼用過,都說是python了,簡單易上手,自定義開發友善,使用協程而非線程實作模拟并發,可以比jmeter單機模拟更多的并發

之前比較簡陋,要啥沒啥,需要二次開發。

并發能力高并不意味壓測能力前,搜了下别人的測試,locust預設的http庫存在性能問題,TPS不高(相較jmeter)。一般項目(單機部署)幾十并發就夠測出極限壓力了。

  1. pip 安裝
  2. 自行百度使用

nmon

linux用的系統監控軟體,友善測試時使用,輸出系統的資源使用情況

自動化

看項目需求,有些需求會是常态化7*24小壓力下穩定性測試,主要名額是報錯率和響應時間,以及系統資源消耗;

有些需求是需要搭配持續化建構測試。