性能測試:JMeter筆記(日更)

前言:時隔一年,又開始在網上寫寫學習筆記博客,其實前段時間一直記錄在本地,有道雲、印象筆記,老是以爲沒有特別好用的筆記記錄。如今繼續想在網上寫筆記,其實以爲應該是要寫下本身的成長筆記,和你們分享,也許這種更像是一種監督,這樣才能堅持下去。加油!前端

這篇學習筆記,是閱讀【全棧性能測試修煉寶典】開始的。將會包括   【原理+實戰】!java

2019/09/22python

性能測試:早些年,是把錄製腳本、形成負載當成性能測試。mysql

     近年來,把定位、分析問題當成性能測試的核心技術。linux

     如今,不只要能定位、分析問題,還要把握性能變化趨勢web

     性能測試工程師可以幫助解決性能問題搞定測試中的各類不合理配置給出專業的優化建議sql

現狀:行業歷史緣由致使從事測試業務的工程師專一於業務,忽略了技術。因此立志學好性能測試,須要更加刻苦和堅持、自律和高效、專心了。docker

PS:目前本人是測試菜鳥一隻,剛畢業快三個月,只但願可以一步一步加油,專心一個方向再一個方向。加油吧!還要和我同樣的人兒!嘻嘻數據庫

扯淡這麼久,實際上是我每次看一本書都會看前言啥的給本身打打雞血!好咯。進入筆記部分。但願是乾貨!編程

 

第一部分:基礎篇(啓蒙篇、廢話篇)

第一章:性能測試方向職業發展方向

1.1爲啥選擇軟件測試(咱們要成爲不可替代)

  沒有技術含量的可代替的軟件測試會有危機感的。因此學習就是爲了讓本身無可替代。。。

 

1.2軟件測試的痛楚

  軟件測試人員技術通常,沒有開發和運維的技術功底(很不服氣hhh、‘但不得不認可)

  技術上帶來的問題:地位、重視度、待遇、成就感、壓力、加班、提高、穩定性(緣由:不是很核心價值)

  軟件項目研發的流程:需求調研分析-概要設計-詳細設計-編碼-測試-軟件交付準備-驗收。(測試位於末端,工期會被前面的佔用,因此測試時候通常回不多有充足的時間,在不增長測試資源的狀況下加班趕工在所不免,學習天然成爲一種奢望,還提啥提高技術呢?)

 

1.3軟件測試發展線路劃重點

  困境 !==悲觀,軟件測試的發展路線仍是很廣的。

暫時分爲如下發展線路:

  3個方向:業務路線、技術路線、管理路線

  4個象限:執行層、中層、中高層過渡、高層。

  一、業務路線:職位 QA經理、業務專家、產品經理、產品總監、行業諮詢顧問等

  二、技術路線:自動化測試工程師(編程+業務)、性能測試工程師、軟件開發工程師、安全測試工程師、系統分析師、測試總監、研發總監等

  三、管理路線:積累業務知識或提升技術儲備,可以出色完成完成本職工做,負責帶領團隊;崗位通常有測試Leader、測試主管、測試經理及測試總監等。

  執行層:

  (1)軟件測試--功能(初級--專職過渡階段)

  (2)軟件測試--性能(專職)

  (3)軟件測試--自動化(專職)

  (4)軟件測試--安全(專職)

  (5)軟件測試--白盒(專職)

  (6)軟件測試--業務(專職)

  (7)軟件測試--小組長、主管(管理路線)

  (8)軟件開發(專職)

  (9)質量保證工程師SQA(專職--業務線)

  中層,中級執行管理領導:

  (1)測試分析師(專職--領導過渡階段)

  (2)測試架構師初級(專職--領導過渡階段)

  (3)測試經理(執行領導--管理路線)

  (4)QA經理(執行領導--業務路線)

  (5)產品經理(執行領導--業務線)

  (6)項目經理(執行領導--技術路線)

  (7)系統分析師

  (8)測試培訓師

  中高層過渡:

  (1)測試總監(執行領導--高級領導)

  (2)產品總監(業務路線)

  (3)行業諮詢顧問(業務路線)

  (4)研發總監(技術路線)

  (5)項目總監(技術路線)

  高層:

  (1)CQO--首席質量高

  (2)CTO--首席技術官

  (3)CIO--首席信息官

  (4)CEO--首席執行官

 

1.4不只僅是性能測試

  全棧通常是技術方面的領導者。題目強大的學習功力,比較依賴搜索或者即時學習,根據需求和本身紮實的基本功,把一項或者某二項技能達到接近專科人員的能力。全棧是學習能力強、總結能力強、不斷總結和融會貫通提高實戰能力,善於分析因果找到問題和解決方案的複合型人才。

  做者認爲全棧測試比純測試更加有將來。要成爲複合型人才,是愈來愈多軟件測試者走上測試總監、技術總監、CTO等高級技術管理類崗位上必需要成爲的。

  軟件測試成爲複合型人才除了測試還須要的基本功:(1)需求 (2)代碼:代碼邏輯、數據庫、程序部署在的中間件知識、操做系統、硬件 (3)運維:測試自動化趨勢(功能自動化、性能自動化、測試環境自動化也就是持續集成),對系統涉及的中間件、數據庫、緩存等產品也要熟練運維。

  在測試行業想脫穎而出的話仍是一個技術爲關鍵。測試人員懂開發最好,天然價值更高。測試開發(自動化)兼具。

  測試崗位中,尤爲是以性能測試崗位須要具有的知識面最廣,涉及程序開發、數據庫、中間件、操做系統、硬件知識等,基本就是照着全棧測試的模板在培養了,突破手工測試選擇性能測試是一個好的方向,有了這個的積累就不只僅能作性能測試、也可作開發、測試開發(自動化)、架構等多種都行。

  

1.5招聘要求看崗位價值(需求決訂價值)

   廣州某公司-高級性能測試工程師(2-2.5w/月)

  • 計算機或相關專業本科及以上學歷;
  • 3年以上性能測試工做經驗,項目用戶羣十萬級,日活躍度十萬級,併發數近千;有金融項目性能測試經驗優先;
  • 熟練使用至少一種商業性能測試工具和開源性能測試工具,如LoadRunner;         
  • 具有必定的設計編碼能力,能熟練進行性能測試腳本編寫;                                   
  • 熟練掌握數據庫(Oracle或Mysql)各項性能參數設置、監控及優化;               
  • 熟練Java,熟悉C/S、B/S及其三層結構的開發模式;                     
  • 熟悉經常使用的應用服務器的配置調優;                                                       
  • 具備較強的業務分析能力,溝通表達能力和綜合協調能力,工做積極主動。  

 深圳某公司-性能測試工程師(1.4-1.8w/月)

  崗位要求:

  • 熟悉性能測試流程       
  • 熟悉經常使用中間件配置及調優,熟悉linux操做系統 
  • 熟悉mysql,DB2等數據庫 
  • 熟悉java編程語言,熟悉經常使用的web框       
  • 熟悉jmeter、loadrunner等性能壓測工具的使用           

有必定的抗壓能力,學習能力強

  任職資格:

  • 計算機相關專業本科學歷(特別優秀者可放寬至大專);   
  • 至少2年以上性能測試經驗,1年金融從業經驗   
  • 有銀行相關項目經驗,熟悉銀行信息系統架構,精通消費金融類業務系統優先 
  • 有信用卡相關開發或測試經驗優先

   上海某公司-性能測試工程師(0.9-1.3w/月)

  崗位職責:

  • 根據業務場景制定性能測試計劃及用例,收集並整理性能測試需求;
  • 測試腳本執行並收集監視數據;
  • 協助高級人員進行性能優化;
  • 根據測試數據進行分析並編寫測試報告;
  • 有強烈的責任心,工做態度嚴謹,獨立思考,具有良好的溝通能力和團隊合做精神。

  任職要求:

  • 大專及以上學歷,至少1年及以上性能測試經驗;
  • 熟悉LoadRunner,jmeter,fiddler等性能測試工具,可以執行性能測試;
  • 至少掌握1種經常使用編程語言(C、JAVA等);
  • 熟悉至少一種關係數據庫基礎知識;   
  • 具有較強的溝通能力,團隊精神好,責任心強,有較強的抗壓能力。

 

1.6性能測試技能樹

   

  一、測試工具

   工具使用了節省時間的,固然有時候還須要本身編寫程序來實現測試簡本。而且這兩個性能測試工具其實不止能作性能,還能夠作功能自動化迴歸、API和UI測試等均可以實現。並不非 要Selenium、WebDriver才能作自動自動化測試。

  二、測試基礎

  三、代碼:Java:目前國內相對普及

       python:膠水語言,測試行業中比較熱門的一門語言

  四、服務器性能診斷知識

    Linux:性能測試從業者必須掌握的系統之一,搭建環境、性能診斷都離不開。

    Windows Server:服務器操做系統,中小公司用的多

    數據庫:關係型數據庫(DB二、Oracle、SQLServer、MySQL等),NoSQL數據庫泛指非關係型數據庫

        非關係型臨時性鍵值存儲(memcached、Redis)、永久性鍵值存儲(ROMA、Redis)、面向文檔的數據庫(MongoDB、CouchDB)、面向列的數據庫(Cassandra、HBase)Hadoop等

  五、性能調優技能

    性能測試最難的就是定位性能測試瓶頸。

    性能調優:一是創建性能數據分析模型,收集相關資源和指標信息、分析背後的緣由;二是從系統工程,產品的上上下下涉及的全部方面進行優化,包括軟件產品、中間件、虛擬機、操做系統、硬件等。軟件產品包括系統架構、業務涉及、代碼實現、數據庫物理設計以及數據庫各類配置。

    對於測試來講:無論是腳本實現仍是測試過程當中的網絡監控,都須要針對通訊協議(見上圖),天然要熟悉這些。

  六、自動化/持續集成(工具見上圖)

    理用Jenkins和Hudson等持續集成工具將咱們性能測試搭建環境、執行等時間大幅度縮短。持續集成幫助咱們自動化代碼集成、環境集成、自動化測試執行和存儲和整理測試報告。

  七、雲計算和虛擬化

 

1.7小結

  持續加油,高度自律,嚴格要求。全棧測試,咱們能夠先朝着性能測試出發。且目前對性能測試工程師的要求就是全棧的要求。加油吧!

 

2019-09-23 00:27:01


 

2019/09/23

第二章:性能測試初體驗

前言(回顧):認識性能測試。性能測試是一項綜合性的工做,致力於暴露性能問題,評估系統性能趨勢。性能測試工做實質上是利用工具去模擬大量用戶操做來驗證系統可以承受的負載狀況,找出潛在的性能問題,分析而且解決;找出系統性能的變化趨勢,爲後續的擴展提供參考。並非簡單的錄製腳本。本章降帶你進入性測試的領域,體驗性能測試的大體格局和重點。

 

2.1性能測試的價值

  案例出真知【雙十一】【12306搶票】等,作好性能測試多麼重要,直接和辣麼多白花花銀子相關啊,動不動幾百億的雙十一啊。

  總結:要應對大規模的用戶共同使用一套系統,就必需要有相對應的強壯性能的系統。性能測試是系統的保障,上線前對系統進行性能測試是必不可少的。

  軟件測試分類:性能測試真的佔很大比,內容中佔了8個左右。性能測試是保障系統性能,提供良好的用戶體驗。

2.2性能測試流程

  先上圖(性能測試流程):性能測試應該符合項目管理流程。

  

  (1)業務學習:查看文檔,手工操做,瞭解系統功能。

  (2)需求分析:分析系統非功能性需求,圈定性能測試範圍,瞭解性能指標。

  (3)工做評估:分解、評估、資源投入

  (4)設計模型:圈定範圍以後,把業務模型映射成測試模型

  (5)計劃編寫

  (6)腳本開發

  (7)測試環境準備:性能測試環境包括服務器和負載機

  (8)測試數據準備

  (9)測試執行

  (10)缺陷管理

  (11)性能分析

  (12)性能調優

  (13)測試報告:測試工做的重要交付件,對測試結果進行報告,常見的指標說明(TPS、RT、CPU Using),發現的問題等

    主要交付件:測試計劃、測試腳本、測試程序、測試報告或者階段性測試報告。

  (14)評審

 

2.3性能測試成功與失敗因素

   掌握性能測試工具只是性能測試的萬里長征第一步,沒有必定的需求、開發和運維的專業能力,每每會吃一些苦頭。

  性能測試的幾個難點:(1)需求分析(2)場景設計(3)性能診斷調優(4)環境搭建和模擬

  性能測試的重要關注點講解:

    (1)評估系統,需求分析

    (2)場景設計,用例設計

    (3)測試執行、是否經過

      執行時常見的關注指標:響應時間(RT)、吞吐量(TPS)、事務成功率、硬件指標(CPU、內存、存儲、網絡)、穩定性、內存是否泄露、其餘(數據庫、中間件、緩存、JVM)

    (4)性能診斷調優

       要具有跨領域知識,例如開發、運維、數據庫、緩存等。

 

2.4不一樣角色看性能

2.5性能測試工具的選擇

  性能測試須要大量負載,這就須要工具的幫忙。可是工具並不似性能測試的核心,只是起到輔助。

  常見性能測試工具:HP的LR、Apache JMeter(開源)、Grinder(開源)、CompuWare公司的QALoad、Microsoft的WAS、RadView的Webload、IBM的RPT、OPENSTA等

2.6性能測試相關術語

  (1)負載

  (2)性能測試

    模擬用戶負載來測試系統在負載的 狀況i昂下,系統的響應時間、吞吐量等指標可以知足性能需求

  (3)負載測試

    必定軟硬件環境下,不斷加大負載(不一樣虛擬用戶數)來肯定在知足性能指標狀況下可以承受的最大用戶數。簡單說,就是幫咱們對系統進行定容定量,找到系統性能的拐點,給與生產環境規劃建議。性能指標包括TPS、RT、CPU Using、Mem Using等軟硬件指標。操做層面說,負載測試也是一種性能測試階段。

  (4)配置測試

  (5)壓力/強度測試

    必定軟硬件環境下,經過高負載的手段來使用服務器的資源(強調服務器資源、硬件資源)處於極限狀態,測試系統在極限狀態下長時間運行是否穩定,肯定是否穩定的指標包括TPS、RT、CPU Using、Mem Using等。

  (6)穩定性測試

    必定軟硬件環境下,長時間運行必定負載,肯定系統在知足性能指標前提下是否運行穩定。這裏並不強調負載處於極限狀態,這就是同上面壓力測試不同的地方。穩定性測試着重的是知足性能指標,系統的穩定性。

   (7)TPS

    每秒完成事務數。一般指每秒成功的事務數。

  (8)RT/ART

    響應時間/平均響應時間,指一個事務會花費多長時間完成。

  (9)PV

    每秒用戶訪問頁面的次數。用來分析平均每秒有多少用戶訪問頁面

  (10)Vuser虛擬用戶

  (11)Concurrency併發,分爲狹義和廣義

    狹義併發強調的是對系統的請求操做是徹底相同的,多使用於性能測試、負載測試、壓力測試、穩定性測試場景。

    廣義併發不限制對系統的請求操做,多適用於混合場景、穩定性測試場景。

  (12)場景

  (13)思考時間

  (14)標準差:標準差小,波動小,系統越穩定。包括響應時間標準差、TPS標準差等

 

2.7性能測試經過標準

  性能測試經過的標準包括服務端性能、前端性能和用戶體驗性能。

2.8性能測試的趨勢

  性能測試的深度「雲」計算化

  持續集成將會更好集成性能測試部分。目前已經有公司在用docker來作集成測試

  性能測試一部分併入devops(基於雲計算)

2.9總結

  性能測試工做中要注意的關鍵點比較多,首先要作好性能測試需求分析(由於不充足的性能測試分析將會致使性能工做的失敗),接下來要作好用例和場景設計,儘量復現實際負載,這樣執行的操做纔是可信賴和可參考的。執行過程當中要作好性能監控工做,爲問題分析提供數據支撐。

 

2019-09-25 23:44:15


 

2019/09/25

第三章:JMeter體系結構

3.1JMeter簡介

  JMeter的做用:一款開源桌面應用軟件,用來模擬用戶負載完成性能測試工做。企業可以以更低的成本使用JMeter進行性能測試構建工做。

  JMeter的測試範疇:能夠對Web進行測試,提供web錄製功能;另外還指出Java請求、JMS、EJB、WebService、JDBC、FTP、LDAP、SMTP、Junit、Mail、MongoDB、JSR223等的測試。方便擴張JMeter功能知足特定的測試需求。JMeter也支持Socket協議測試。JMeter也很方便進行性能測試自動化。總之,JMeter就是一款很是百變的性能測試工具。

  本章內容:JMeter體系結構、JMeter運行原理、JMeter運行環境。

 

2019-10-08  22:29:51  國慶假期加上節前比較忙,如今從新更新。求不打。。。

 

3.2JMeter體系結構

  名稱統一:       

   

 

 

 

 

 

 

 

 

 

 

第二部分:工具篇

第四章:JMeter腳本開發

 4.1JMeter工做區介紹

 

 

 

 一、目錄樹:存放測試計劃中設計的元件,執行過程當中默認從根節點開始順序遍歷樹上的元件。3.0後就好像沒有工做臺了。在目錄樹區域中添加進來的都是元件。

二、測試計劃編輯區

三、菜單欄

 

4.2 JMeter Http協議錄製

一、BadBoy第三方工具錄製

  BadBoy就是一個瀏覽器模擬工具,支持錄製回放功能,還能夠調試。

  做用:能夠用來作自動化的測試(由於有捕獲表單數據功能)、也能夠進行對Web頁面進行診斷,診斷系統響應快慢和響應數據的大小。

  這裏關注的是BadBoy的錄製功能。

  錄製的腳本直接導出生成.jmx格式的文件,正式JMeter的腳本保存格式,實際上就是一個XML格式的文件。

  錄製方式兩種:一種是Request方式(模仿瀏覽器發哦那個表單信息到服務器,每個資源都將做爲請求發送),一種是Navigation方式(記錄用戶鼠標操做。相似QTP,回放時模擬一個點擊)。工具菜單欄上點擊 ‘N’能夠換成Navigation格式。基於Jmeter腳本要求,選用request方式錄製

  BadBoy的錄製總結:

    (1)打開BadBoy,初始界面默認開啓了Request的錄製模式,默認是錄製狀態。

    (2)地址欄輸入請求的頁面,回車或者點擊工具欄➡開始進行錄製

    (3)BodBoy腳本目錄結構:Test Suite 1:默認的根節點,相似JMeter中測試計劃根節點。

        Test1:測試活動的根節點,理解成一個業務功能的腳本存放在此目錄中

        Step1:測試活動的步驟,當業務功能比較長,能夠劃分多步驟。

    (4)導出導成jxm格式

  

二、自身HTTP代理方式錄製

原理:解析網絡數據包,按照HTTP協議包裝成HTTP Request、HTTP Response等對象,這些對象就是咱們能識別的東西。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第五章:JMeter負載和監聽

 

...

相關文章
相關標籤/搜索