Jmeter (底層語言是Java) 單進程併發
Loadrunner (底層語言是C) 多進程 性能更好,更穩定工具
Tomcat 線程模式(與Java有關的都是單進程)性能
lr的支持最大併發 跟license的容許數量一致測試
併發用戶數與進程數無關 取決於線程數spa
Jmeter 一個併發就是一個線程.net
Jmeter 錄製方法:一、代理錄製;二、badboy 工具錄製線程
Jmeter lib 目錄 放置依賴的jar 包 (之後工做中jar 放到該文件夾下)debug
保存Jmeter 腳本需選中測試計劃進行保存,不然保存內容不全3d
Jmeter 有嚴格的 做用域,注意層級關係代理
線程組比http 請求多了邏輯控制器
做用域的關係,執行順序
執行順序:先看做用域
線程組
配置元件
邏輯控制器
前置處理器
定時器
取樣器
後置處理器
斷言
監聽器
循環套循環
從最裏面的循環往外執行
思考:取樣器後面的步驟執行完畢後若是前置處理器或定時器還有未執行的,是執行前置處理器、定時器仍是Break 跳到配置元件?
答案:Break 跳到配置元件
後置處理器、斷言、監聽器 屬於一個層級的東西,不會嵌套循環,執行完後不會回到取樣器 而是break跳到配置元件
取樣器先後的東西都是做用於取樣器;
從線程組往下層層執行,能夠有多個同級,到監聽器後跳出到配置元件;
後置處理器、斷言和監聽器能夠理解爲同級別,都做用於取樣器
實踐經驗:用做用域控制執行順序
參數化:
Csv data set config: sharing mode - all thread – -- 惟一取值方式
全部線程;惟一+每次迭代,每次迭代的時候纔會變值,循環控制器不改變值的
全部線程之間共享,只打開一次文件
當前線程;順序+每次迭代,線程(vu)與線程間是同樣的,只有迭代的時候纔會變化值。線程組1 用戶1取1 ,用戶2取1,迭代用戶1取2,用戶2取2
(迭代的時候不一樣用戶之間拿到的數據是同樣的)
每一個線程,文件分別打開一次(第一行讀取)
當前線程組 : 順序+惟一,線程(vu)與線程之間是順序,線程組間內是惟一。線程組1跟線程組2的取值數據來源同樣,線程組1取1,線程組2也是取1;線程內是惟一 。用戶1取1,用戶2取2,迭代用戶1取3,用戶2取4
(惟一的時候不一樣用戶之間拿到的數據是互斥的)(組外沒有關係,當只有一個線程組時取值方式同「全部線程」)
同一個線程組,只打開一次文件
關聯:
Jmeter中的關聯是後置操做
A+ a重複一個或多個,優先取多(沒有空)+ 做用於前面的字符串
A? a重複零次或一次,? 做用於前面的字符串
A* a重複零次或更屢次,優先取多,* 做用於前面的字符串
「 . 」 取換行符之外的一個字符
「*」 取換行符之外的任意多個字符或0個字符,優先取多
「.*」 取換行符之外的任意一個或多個字符,優先取多
「.+」 同「.*」,但會剔除空字符串,優先取多
「.?」 0個或1個
「div.*div」 取換行符之外的任意一個或多個字符串,左邊包含div
「div(.*)div」 取換行符之外的任意多個字符串,左右兩邊包含div .會有兩個結果,一個包含左右邊界,一個刨掉了左右邊界
$1$ 取刨掉左右邊界之外的字符
關聯:建議用 .+ 或者 .* ,而後加上括號、左右邊界;
Sampler – debug sampler 可查看jmeter 中全部的參數化、關聯值
拓展:匹配18位身份證號 ^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
參考網址:http://tool.oschina.net/regex/#
檢查點:
響應斷言
調試腳本時,響應斷言查看結果樹去看
跑腳本時 添加監聽器-斷言結果 去看
Think time :
固定定時器 、高斯隨機定時器 。。。。。。
集合點:
定時器-Synchronizing timer
事務:
Logic controller - Transaction controller
僅一次控制器:once only controller 類比lr 中init end