本篇介紹線上日誌回放|線上流量回放、測試左移-http解析篇,接入報警篇見https://blog.csdn.net/weixin_42498050/article/details/105439833
線上日誌回放
平時測試可以訪問 :
JSON和GET請求字符串互轉
https://qqe2.com/jsontool/json2get
1.背景:由於搜索就2個接口,接口返回數據在6000-8000行。每次客戶端不同版本請求接口,接口返回的格式,取決於客戶端傳的sdkver、version、ver這三個字段。
每次在接口上線之前,讀取線上請求參數日誌,在預發環境改變以上3個傳參的最新值,做線上日誌回放,保證預發環境最新接口正常
2.用HashMap對appScene的來源做去重統計,再篩選出搜索業務線的場景
3.從數據庫讀取出日誌,每次讀取5000行,版本號爲線上最新版本即可,獲取每條SQL的查詢字段內是否存在content字段(裏面爲所有日誌,origialParam爲客戶端全部傳參)
4.解析xx.content.origialParam的json:找到字符串中{第一次出現的位置,截取字符串
5.把日誌裏的json請求轉化爲get請求,調用httpClient,拼接域名+接口名+傳參,解析response請求,對key value做斷言
// 參數格式化
private static List<NameValuePair> getParamsList(Map<String, String> paramsMap) {
if (paramsMap != null && paramsMap.size() != 0) {
List<NameValuePair> params = new ArrayList();
Iterator var2 = paramsMap.entrySet().iterator();
while (var2.hasNext()) {
Map.Entry<String, String> map = (Map.Entry) var2.next();
// 預發環境最新版本日誌回放,請求參數打開以下if else,註釋掉最後一行
if (map.getKey().equals("sdkver")){
params.add(new NameValuePair(map.getKey() + "", "310"));
}else if(map.getKey().equals("version")){
params.add(new NameValuePair(map.getKey() + "", "8.6.4"));
}else if(map.getKey().equals("ver")){
params.add(new NameValuePair(map.getKey()+"","8.6.4"));
}else{
// 參數格式化,commons-httpclient自帶的方法NameValuePair會自動將==轉爲=,還有特殊符號格式化
// NameValuePair是簡單名稱值對節點類型。多用於Java像url發送Post請求。在發送post請求時用該list來存放參數
params.add(new NameValuePair(map.getKey() + "", map.getValue() + ""));
}
// 線上版本日誌回放,請求參數註釋掉以上3個if else
// params.add(new NameValuePair(map.getKey() + "", map.getValue() + ""));
}
待續。。。