文章介紹了使用JMeter進(jìn)行數(shù)據(jù)庫用戶表數(shù)據(jù)登錄接口測試的操作步驟,包括設(shè)置數(shù)據(jù)庫連接、數(shù)據(jù)取樣、循環(huán)登錄場景配置等,并提供了具體的配置細(xì)節(jié)和調(diào)試方法。
聲明:本文所記錄的僅本次操作學(xué)習(xí)到的知識點(diǎn),其中商城IP錯誤,請自行更改。
背景:獲取數(shù)據(jù)庫用戶表中的數(shù)據(jù)進(jìn)行登錄接口測試。
思路:
- 引用jar包【測試計(jì)劃】。
- 設(shè)置數(shù)據(jù)庫的連接信息,取變量名db1--數(shù)據(jù)源【配置元件】。
- 數(shù)據(jù)取樣器引用數(shù)據(jù)源,填寫查詢sql,定義用戶名密碼變量名【取樣器】。
- 循環(huán)登錄場景【循環(huán)控制器】:計(jì)數(shù)器、拼接變量。
1.配置
(1)下載
夸克網(wǎng)盤
鏈接:https://pan.quark.cn/s/934385c13d1f
提取碼:j12w
![]()
(2)Navicat直接解壓即可
2. 認(rèn)識JMeter
(1)配置元件【JDBC Connection Configuration】
??一個數(shù)據(jù)庫連接池配置。一個測試計(jì)劃可以有多個JDBC Connection Configuration,但是可以通過創(chuàng)建池的變量名稱來區(qū)分開來。
(2)取樣器【JDBC Request】
??主要是向數(shù)據(jù)庫發(fā)送 JDBC 請求(sql 語句),并獲取返回的數(shù)據(jù)集。需要和數(shù)據(jù)庫連接池配置(JDBC Connection Configuration)一起使用。
(3)配置元件【計(jì)數(shù)器】
??循環(huán)遞增生成數(shù)字,可以在線程組任意地方添加計(jì)數(shù)器。
(4)配置元件【調(diào)試取樣器】
??生成一個包含JMeter變量或?qū)傩灾档臉颖?/strong>,并且這些值可以在組件【查看結(jié)果樹】的響應(yīng)窗格中看到。
3.【JDBC Connection Configuration】
(1)引用MySQL的jar包
??點(diǎn)擊【測試計(jì)劃】點(diǎn)擊【瀏覽】,選擇【mysql-connector-java-5.1.48-bin.jar】。
![]()
![]()
(2)新建【JDBC Connection Configuration】
??線程組【右擊】【添加】【配置元件】【JDBC Connection Configuration】
![]()
(2)設(shè)置【JDBC Connection Configuration】
① Variable Name for created pool:創(chuàng)建池的變量名稱:db1。需要定義一個變量名來區(qū)分每個數(shù)據(jù)庫連接池,一個線程組可以有多個連接池,所以每個連接池變量名需唯一(在后面JDBC Request時(shí)需要用到)。
② Database URL:數(shù)據(jù)庫連接URL,本次配置:jdbc:mysql://商城IP:端口/數(shù)據(jù)庫名
③ JDBC Driver class:數(shù)據(jù)庫驅(qū)動,下拉選擇:com.mysql.jdbc.Briver
④ Username:數(shù)據(jù)庫登錄用戶名
⑤ Password:數(shù)據(jù)庫登錄密碼
![]()
4.【JDBC Request】
(1)新建【JDBC Request】
線程組【右擊】【添加】【取樣器】【JDBC Request】
![]()
(2)設(shè)置【JDBC Request】
① Variable Name of Pool declared in JDBC Connection Configuration:數(shù)據(jù)庫連接池配置的名稱:db1。
② Query Type:sql 語句的類型,這里選擇Select Statement。
③ Query:SELECT username,pwd FROM sxo_user LIMIT 5
④ Variable names:保存sql語句返回查詢結(jié)果字段、用,分隔、后面登錄設(shè)置參數(shù)時(shí)需用到:sqlusername,sqlpwd。
![]()
(3)查看結(jié)果樹
![]()
5.調(diào)試取樣器
在開發(fā)腳本的時(shí)候調(diào)試用的:添加調(diào)試取樣器后在查看結(jié)果樹中能看到在腳本中所有參數(shù)化變量所取的值,這樣有利于排錯。右擊整個線程組,新建【調(diào)試取樣器】。
調(diào)試經(jīng)歷:設(shè)置好【JDBC Connection Configuration】與【JDBC Request】后,就可以新建【調(diào)試取樣器】與【查看結(jié)果樹】查看執(zhí)行結(jié)果。
(1)新建【調(diào)試取樣器】
【右擊】【添加】【取樣器】【Debug Sampler】
![]()
(2)【查看結(jié)果樹】
通過結(jié)果總結(jié)JMeter讀取數(shù)據(jù)庫表中的數(shù)據(jù),是通過【變量名_序號=值】的方式依次讀取,最后再通過【變量名_#=總數(shù)】的方式給出讀取的總次數(shù)。
![]()
6.【HTTP請求默認(rèn)值】
??養(yǎng)成習(xí)慣,把多個接口訪問同一個服務(wù)器地址提取出來,設(shè)置http請求默認(rèn)值。
![]()
7.【循環(huán)控制器】
(1)新建【循環(huán)控制器】
??右擊【線程組】【添加】【邏輯控制器】【循環(huán)控制器】
(2)配置【循環(huán)控制器】
??① 循環(huán)次數(shù):${sqlusername_#}
????由于這次是從數(shù)據(jù)庫表中讀取數(shù)據(jù),而讀取數(shù)據(jù)的方式是通過【變量名_序號】的形式。而這里還有一個特例,就是【變量名_#】的值統(tǒng)計(jì)了總數(shù),所以循環(huán)次數(shù)是通過【變量名_#】取值獲?。?span style="color: rgba(255, 0, 0, 1)">${sqlusername_#}。
![]()
8.【計(jì)數(shù)器】
由于是從數(shù)據(jù)庫表中讀取數(shù)據(jù),且通過【變量名_序號】的形式,所以這里還需要【計(jì)數(shù)器】來保存【序號】,這個序號是為了【登錄】HTTP請求時(shí)給參數(shù)賦值需要用到。
sqlusername_1=XXX
sqlusername_2=XXX
... ...
sqlusername_#=5(總數(shù))
(1)新建【計(jì)數(shù)器】
在【循環(huán)控制器】層級下【添加】【配置元件】【計(jì)數(shù)器】
![]()
(2)設(shè)置【計(jì)數(shù)器】
① Starting Value:初始值,默認(rèn)為0,long整型。數(shù)據(jù)庫讀取是從序號1開始,這里設(shè)置:1。
② 遞增:1。
③ Maximum value:同【循環(huán)控制器】一樣,設(shè)置:${sqlusername_#}。
④ 引用名稱:自定義一個變量名稱,設(shè)置:n,后面【登錄】HTTP請求會用到。
![]()
9.HTTP請求【登錄】
(1)新建【HTTP請求】
??在【循環(huán)控制器】層級下新增【登錄】
(2)設(shè)置【HTTP請求】
① 名稱:登錄。
② 請求方法:選擇POST。
③ 路徑:?s=api/user/login&application=app&application_client_type=weixin。
④ 參數(shù)accounts,值:${__V(sqlusername_${n})}。
參數(shù)取值方式:一般通過 ${變量名} 的方式就可以參數(shù)取值成功,但是這次變量名不同,它是由變量名拼接序號【變量名_序號】的方式而來的變量名,不能通過${變量名_序號}的方式取值,需先通過__V()函數(shù)把變量名跟序號拼接在一起,然后再通過${}來進(jìn)行取值。
第一步【拼接】:__V(變量名_序號)==__V(sqlusername_${n}),拼接的才是變量名的一個整體。注意:這里是兩個下劃線_連在一起__,而不是一個下劃線_。
第二步【取值】:${第一步}==${__V(sqlusername_${n})}
正確的寫法:${__V(固定變量名_${序號})},例如:${__V(sqlusername_${n})}。
錯誤的寫法:${_V(固定變量_${序號})}、${__V(固定變量_序號)}、${_V固定變量_${序號}}、__V(固定變量_${序號})等等。
⑤ 參數(shù)pwd,值:123456。(數(shù)據(jù)庫密碼加密顯示,直接讀取還需要解密,先不管。測試賬號密碼基本上是123456)
⑥ 參數(shù)type,值:username。
![]()
(3)設(shè)置【斷言】
![]()
10.查看結(jié)果樹
(1)查看【查看結(jié)果樹】
![]()
![]()