使用Jmeter 代理服務器可以錄制測試腳本,只需要在瀏覽器中訪問相關的頁面,配置相關的過濾規(guī)則,即可獲取對應的接口請求地址、入?yún)?,非常方便?/p>
Jmeter 配置代理服務器
代理服務器獲取請求地址示例圖
Jmeter配置代理服務器之后,所有的請求都會經(jīng)過Jmeter,這樣就能錄制相關的請求地址、參數(shù)。
配置步驟
-
添加代理服務器
測試計劃 -> 添加 -> 非測試元件 -> HTTP 代理服務器
配置端口 7000 -
添加線程組,用來存放錄制的請求地址
測試計劃 -> 添加 -> 線程(用戶)-> 線程組 -
代理服務器綁定對應的線程組
在代理服務器對應的配置欄 Test plan content 選擇第2步配置的線程組
瀏覽器配置代理
本地需要配置代理,是相關的請求都經(jīng)過Jmeter服務器。配置代理的方式有多種,這里列舉2種:
- 瀏覽器插件配置
- windows網(wǎng)絡設置配置
Google 瀏覽器插件配置代理
安裝 FoxyProxy, 如果無法在線安裝,可以使用離線安裝包,地址
鏈接: https://pan.baidu.com/s/1NIe2pTISyzTX_0qJHJ8qew?pwd=96c2
提取碼: 96c2
安裝好插件之后,配置FoxyProxy
選擇 Options
選擇對應的選項
Edit Selection
注意,代理的端口地址需要和Jmeter代理服務器的一致,不然不會經(jīng)過Jmeter代理服務器,錄制不了腳本
windows 本地網(wǎng)絡配置代理
在網(wǎng)絡設置這里配置代理
啟動錄制,生成證書
生成證書
代理服務器哪里點擊啟動,就會彈出生成證書的提示
證書的路徑在Jmeter 的安裝目錄的 bin 文件夾下生成,如圖,
ApacheJMeterTemporaryRootCA.crt 文件
導入證書
Google瀏覽器安裝證書, 隱私和安全,管理證書
導入證書
Jmeter 配置證書
選項 -> SSL管理器
選擇對應的證書 ApacheJMeterTemporaryRootCA.crt,點擊Open
瀏覽器點擊頁面,錄制請求地址
可以看到對用的請求地址都記錄下來了
過濾配置源碼解析
過濾配置分為包含模式、排除模式
匹配的源碼如下:
org.apache.jmeter.protocol.http.proxy.ProxyControl#filterUrl文章來源:http://www.zghlxwxcb.cn/news/detail-800166.html
boolean filterUrl(HTTPSamplerBase sampler) {
String domain = sampler.getDomain();
if (domain == null || domain.isEmpty()) {
return false;
}
String url = generateMatchUrl(sampler);
CollectionProperty includePatterns = getIncludePatterns();
if (!includePatterns.isEmpty() && !matchesPatterns(url, includePatterns)) {
return false;
}
CollectionProperty excludePatterns = getExcludePatterns();
if (!excludePatterns.isEmpty() && matchesPatterns(url, excludePatterns)) {
return false;
}
return true;
}
private static String generateMatchUrl(HTTPSamplerBase sampler) {
StringBuilder buf = new StringBuilder(sampler.getDomain());
buf.append(':'); // $NON-NLS-1$
buf.append(sampler.getPort());
buf.append(sampler.getPath());
if (!sampler.getQueryString().isEmpty()) {
buf.append('?'); // $NON-NLS-1$
buf.append(sampler.getQueryString());
}
return buf.toString();
}
private static boolean matchesPatterns(String url, CollectionProperty patterns) {
if (USE_JAVA_REGEX) {
return matchesPatternsWithJavaRegex(url, patterns);
}
return matchesPatternsWithOroRegex(url, patterns);
}
返回 true 的地址就會記錄下來。默認使用的是正則表達式匹配的。整理出如下的測試方法,驗證請求的URL 是否匹配成功文章來源地址http://www.zghlxwxcb.cn/news/detail-800166.html
import org.junit.jupiter.api.Test;
import java.util.regex.Pattern;
public class JmeterProxyTest {
@Test
public void testInclude() {
String[] regexArr = {"dev.scd.com.cn.*"};
for (String regex : regexArr) {
Pattern pattern = Pattern.compile(regex);
String[] testUrls = new String[]{
"dev.scd.com.cn:8082/system/sysDept/tree",
"#"
};
for (String url : testUrls) {
if (pattern.matcher(url).matches()) {
System.out.println("regex " + regex + " match url " + url);
}
}
}
}
@Test
public void testExclude() {
String[] regexArr = {".*(.html|.js|.css|.png|.gif|.jpg|.ico|.woff).*", "dev.scd.com.cn:(\\d+)/endpointChat.*"};
for (String regex : regexArr) {
Pattern pattern = Pattern.compile(regex);
String[] testUrls = new String[]{
"localhost:8082/css/bootstrap.min.css?v=3.3.6",
"#/hm.gif?cc=1&ck=1&cl=24-bit&ds=1536x864&vl=382&et=0&ja=0&ln=zh-cn&lo=0<=1705326161&rnd=1568321180&si=8b02a318fde5831da10426656a43d03c&v=1.3.0&lv=2&sn=39926&r=0&ww=1536&u=https%3A%2F%2Fwww.macrozheng.com%2Fadmin%2Findex.html%23%2Foms%2Forder&tt=mall-admin-web",
"dev.scd.com.cn:9999/endpointChat/056/6cjc73m5/xhr"
};
for (String url : testUrls) {
if (pattern.matcher(url).matches()) {
System.out.println("regex " + regex + " match url " + url);
}
}
}
}
}
到了這里,關于Jmeter 測試腳本錄制器-HTTP 代理服務器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!