一、說明
jmeter與數據庫mysql已連接成功
二、需求
1、前置條件:
1、已user數據庫的前8位手機號碼作為行動計划的名稱
2、行動計划的日期是2018-10-17
2、操作步驟:
1)獲取到某個月份的行動計划,
2)設置參數進行循環添加行動計划
3)統計某個月份的行動計划數量
4)將行動計划標記為已完成
5)刪除某個月份下所有的行動計划
3、預期結果:
行動計划添加成功,並且刪除所有的某個月份下的行動計划成功
三、分析與實踐
實踐步驟:
1)首先添加一個jdbc connection configuration
2)添加一個jdbc request查詢出user數據庫的前8位mobile手機號碼
3)添加一個用戶自定義變量
4)確定是否查詢出數據
5)提取mobile的數據
6)驗證參數化是否成功
7)添加計數器
8)把mobile的值傳遞進去
9)設置線程數或者添加一個循環控制器
10)那我們的東西進行重新排序
1、需求:存在一個user表,表結構如下:
2、分析
1)要查詢出user數據庫的前8位mobile手機號碼,那么首先需要建立一個jdbc request,連接本地數據庫看,分別查出我們需要的mobile值
2)todo_start為了方便管理,這個值我們設置做成了一個變量,方便管理
3)查詢出所有的mobile,mobile值不一定只有一個,因此我們怎么確定每次取到的值作為參數去請求下一個接口?這里需要做一個循環
4)我事先不知道能夠查詢出某個月份的行動計划有多少條,那如何知道我們需要循環多少次?
3、實踐
1)首先添加一個jdbc connection configuration,連接的方式根據自己的數據庫定
2、添加一個jdbc request查詢出user數據庫的前8位mobile手機號碼
3、確定是否查詢出數據
這個時候可以使用添加查看結果樹,看看我們獲取到的mobile的值,如下是獲取到的結果
4、提取mobile的數據
查看jdbc request的request里面,查看底部的variable name填上你想使用的變量名,注意這個接口后面要自己用到,
5、參數化進行傳遞
如果直接將mobile傳入${mobile}會發現請求里面mobile參數化並沒有成功,那為什么會不成功呢,原來當使用 jdbc request 的結果作為參數時,要寫成 ${username_0}這樣子,username就是你的變量名,0 代表索引,索引是 0 就表示第一行,索引是 1 就表示第二行。
例如,我想取mobile查詢結果第 4 行的數據,那我的變量值就需要寫成 ${mobile_3},再看看上面mobile查詢結果是怎么展示的
6、添加計數器
由於我們從第 2 行開始取值,索引是 1,所以啟動填 1,每次我們往后多 1,所以遞增也填 1,最大值可不填,number format 就是數字格式,如果填 000,取值是 12,那最后會顯示為 012,而我們只需要本身的數字,所以就填 0,引用名稱就是后面需要用的變量名
有了計數器,能遞增了,那我們就需要
7、把mobile的值傳遞進去
我們上面說了 ${mobile_1}是取第二行,${mobile_2}是取第三行,依次類推,那我們要從第二行也就是索引等於 1 開始取,一直到最后。上一步添加的計數器就起作用了,我們設置的計數器是從 1 開始計數,每次遞增 1,那么跟我們想要的完全吻合,index 就是我們設置的計數器的變量名,可以直接用他來代替我們的索引 1,2,3,4 等等,那我們現在來把mobile 和index兩個變量拼接起來,這里如果你直接寫成 ${umobile_index} 或者 ${mobile_${index}}都是不行的,因為兩個變量不能直接拼接,需要用到一個函數 __V,不了解這個函數的可以百度看看,作用就是可以使 2 個變量可以拼在一起,所以我們拼接后的 mobile 變量應該是 ${__V(mobile_${index})}
8、設置線程數或者添加一個循環控制器
但是我們並不知道到底需要循環多少次或者需要設置多少線程數,才能讓mobile剛好傳完,這個時候,我們需要多加一個 jdbc request 了,來查詢出我們符合條件的數據有多少條。select count("mobile") from user where id between 1 and 8;就是查詢符合條件的數據總數,同理我們在 variable names 填上一個變量名,以供后面使用,這里我取 count
count 變量是我們之前查出來的所有數據的總數,這個總數是多少就說明我們需要多少線程或多少次循環。ok,那我們在 http 請求上右擊,點擊插入上級 – 邏輯控制器 – 循環控制器,循環次數,我們使用count 變量,由於 count變量查詢出來的結果肯定只有一個,那我們可以直接取結果的第二行數據,索引是 1,即${count_mobile_1},這樣就能把次數確定。這里其實不能用添加線程的方式來做,因為這幾個 jdbc request 都在這個線程里,如果設置多線程,jdbc request 也會多次請求,不合理,所以我們選擇更好的循環控制器
所有的東西都設置完了,就需要
9、重新進行排序后運行即可
參考鏈接:https://blog.csdn.net/u010978840/article/details/78227852