国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

深圳快速seo排名優(yōu)化惠州seo按天計(jì)費(fèi)

深圳快速seo排名優(yōu)化,惠州seo按天計(jì)費(fèi),淄博網(wǎng)站價(jià)格,創(chuàng)新建設(shè)資金網(wǎng)站1 背景 隨著自動(dòng)化測(cè)試左移實(shí)踐深入,越來越多不同類型的需求開始用自動(dòng)化測(cè)試左移來實(shí)踐,在實(shí)踐的過程中也有了新的提效訴求,比如技改類的服務(wù)拆分項(xiàng)目或者BC流量拆分的項(xiàng)目,在實(shí)踐過程中,這類需求會(huì)期望不同染色環(huán)境…

1 背景

隨著自動(dòng)化測(cè)試左移實(shí)踐深入,越來越多不同類型的需求開始用自動(dòng)化測(cè)試左移來實(shí)踐,在實(shí)踐的過程中也有了新的提效訴求,比如技改類的服務(wù)拆分項(xiàng)目或者BC流量拆分的項(xiàng)目,在實(shí)踐過程中,這類需求會(huì)期望不同染色環(huán)境在相同的配置條件下,拆分后的代碼和基準(zhǔn)release代碼的接口響應(yīng)response有全量對(duì)比結(jié)果才能更好達(dá)到需求驗(yàn)證點(diǎn)。

2 實(shí)踐成果

在這種需要對(duì)接口返回response做全量json對(duì)比的背景下,商家域新的自動(dòng)化平臺(tái)新增了json全量對(duì)比的組件。在多個(gè)技改項(xiàng)目,比如服務(wù)拆分和BC流量拆分項(xiàng)目中這種比較大,花費(fèi)人日比較多的項(xiàng)目測(cè)試中,應(yīng)用了json全量對(duì)比驗(yàn)證。在實(shí)踐過程中,比如原來要先寫自動(dòng)化,把響應(yīng)結(jié)果挨個(gè)驗(yàn)證,或者在不同染色請(qǐng)求跟拆分前代碼分別執(zhí)行再對(duì)比結(jié)果。

在這種技改需求訴求下,全量json對(duì)比組件很好地滿足了需要驗(yàn)證大量的服務(wù)拆分前接口和服務(wù)拆分后的接口返回json值全量對(duì)比。以商家服務(wù)拆分技改為例,技改跨幾個(gè)迭代,需要回歸大量的接口(目前該技改測(cè)試的接口已過千,還在跨迭代測(cè)試中)。測(cè)試過程利用全量json對(duì)比組件,不光測(cè)試一輪極大提高了測(cè)試效率,在二輪還可以用自動(dòng)化回歸提效。

3 實(shí)踐過程

3.1 源組件:JSONCompareUtils

本次全量json對(duì)比引用的源組件是JSONCompareUtils,是Artemis框架提供的。JSONCompareUtils提供基于萬(wàn)行級(jí)Json的精確比對(duì)能力,這個(gè)能力基于一套嵌套降噪配置的遞歸算法實(shí)現(xiàn)。在配置合理的情況下,能快速進(jìn)行較大Json串的比對(duì)。詳情如下:

引入方式:

方法名:JSONCompare

參數(shù):JSON expect, JSON actual, Properties properties

public static Map<String, String> JSONCompare(JSON expect, JSON actual, Properties properties) {Map<String, String> diffs = new HashMap<>();
?if (null == expect && null == actual) {return diffs;} else if (expect instanceof JSONObject && actual instanceof JSONObject) {diffs.putAll(JSONObjectCompare((JSONObject) expect, (JSONObject) actual, "$", properties));} else if (expect instanceof JSONArray && actual instanceof JSONArray) {diffs.putAll(JSONArrayCompare((JSONArray) expect, (JSONArray) actual, "$", properties));} else {diffs.put("$", (expect + COMPARE_ARROW + actual) + "not the same instance type");}
?if (!org.springframework.util.CollectionUtils.isEmpty(diffs)) {for (Map.Entry<String, String> entry : diffs.entrySet()) {logger.info("[key]" + entry.getKey() + "," + "[value]" + entry.getValue());}

3.2 JSONCompareUtils組件改造

JSONCompareUtils組件改造后適應(yīng)于目前效能平臺(tái)適用的自動(dòng)化平臺(tái)組件。

改造后的組件:

改造后的組件名:21471:?[JSON] 全量比對(duì)-兩Json傳入:對(duì)比接口提取返回與入?yún)⒌膉son異同。

修改點(diǎn):改成對(duì)比兩個(gè)接口提取返回,提取字段取名json1、json2。

入?yún)⒈A魀ropeties:返回多個(gè)時(shí)候的排序字段,沒有默認(rèn)空,不排序。

舉例:"propeties": "$.data.order=order_no",$.data.order為list[Object],以O(shè)bject中order_no排序后,再對(duì)list做對(duì)比。

import json
import requests
?
def call(env_vars, g_vars, l_vars, sys_funcs, asserts, logger, **kwargs):param = sys_funcs.get_call_param()path = "http://******/artemis/component/interface-platform/compare/json"method = "POST"actual1 = l_vars.get("json1")actual2 = l_vars.get("json2")
?headers = {"Content-Type":"application/json; charset=utf8",}body = {"expect" : json.dumps(actual1,ensure_ascii=False),"actual" : json.dumps(actual2,ensure_ascii=False),"properties" : str(param["propeties"])}logger.info("Artemis請(qǐng)求body:" + str(body))try:resq = requests.post(path,data = json.dumps(body),headers = headers,timeout=8)res = json.loads(resq.text)logger.info("======================artemis組件結(jié)果======================")logger.info(res)asserts.assertTrue(res["success"], msg="調(diào)用artemis-interface異常")asserts.assertEqual(str(res["data"]), "{}", msg="存在不一致比對(duì)數(shù)據(jù) :")except Exception as e:logger.info(f'執(zhí)行JSON比對(duì)失敗【{str(e)}】')raise ereturn res
 

3.3 組件應(yīng)用

步驟1: 提取接口返回json1、json2

?

?

步驟2: 添加組件

?

步驟3:對(duì)比上面兩個(gè)接口的提取的返回值

?

3.4 實(shí)踐場(chǎng)景

3.4.1 實(shí)踐一

提取接口返回全量標(biāo)準(zhǔn)被參照對(duì)比的標(biāo)準(zhǔn)json1,再提取新代碼中期望跟標(biāo)準(zhǔn)json1對(duì)比的json2,添加全量json組件,對(duì)比json1和json2的值。

測(cè)試場(chǎng)景:服務(wù)拆分技改類需求中需要對(duì)不同服務(wù)兩個(gè)或者多個(gè)接口返回response全量json結(jié)果對(duì)比的場(chǎng)景;

提取被參照對(duì)比全量json1見圖一,對(duì)比全量json2見圖二,組件執(zhí)行結(jié)果見圖三:

圖一

圖二

圖三

3.4.2 實(shí)踐二

返回json多次設(shè)置、多次對(duì)比數(shù)據(jù)。

測(cè)試場(chǎng)景:BC流量拆分前和拆分后的代碼不同接口路由但是同一個(gè)業(yè)務(wù)功能,返回response全量json需要在不同染色多次對(duì)比結(jié)果的場(chǎng)景

json1、json2可進(jìn)行多次設(shè)置、多次對(duì)比。

?

3.4.3 實(shí)踐三

全量json對(duì)比不同環(huán)境返回?cái)?shù)據(jù)。

測(cè)試場(chǎng)景:拆分前和拆分后的代碼相同接口需要在相同配置不同染色環(huán)境下返回response全量json結(jié)果對(duì)比的場(chǎng)景。

服務(wù)拆分的接口,不同染色環(huán)境對(duì)比返回的結(jié)果:舉例如下:

?

?

3.4.4 實(shí)踐四

全量json對(duì)比list結(jié)果返回順序不一致的數(shù)據(jù)。

測(cè)試場(chǎng)景:拆分前和拆分后的代碼相同接口返回response全量json需要先排序再對(duì)比結(jié)果的場(chǎng)景

Demo如下:

服務(wù)拆分的接口,請(qǐng)求是一個(gè)list數(shù)組,每次調(diào)用返回的list里面的順序可能不一致,可利用組件的參數(shù)先排序再對(duì)比json返回結(jié)果,兩個(gè)接口返回的json如下:

?

可用組件的"propeties": "$.data=userId"(或者"propeties": "$.data=merchantId")json里面的list先排序再對(duì)比,這樣就規(guī)避了list返回順序不一致的情況:

?

4 結(jié)論

在實(shí)際測(cè)試過程中,技改的需占比也不小,幾乎每個(gè)迭代每個(gè)域都會(huì)有技改類的需求。本文為例,舉了幾個(gè)例子涉及提效需求點(diǎn):

1.服務(wù)拆分技改類需求中需要對(duì)不同服務(wù)兩個(gè)或者多個(gè)接口返回response全量json結(jié)果對(duì)比的場(chǎng)景;

2.拆分前和拆分后的代碼相同接口需要在相同配置不同染色環(huán)境下返回response全量json結(jié)果對(duì)比的場(chǎng)景;

3.拆分前和拆分后的代碼相同接口返回response全量json需要先排序再對(duì)比結(jié)果的場(chǎng)景;

4.BC流量拆分前和拆分后的代碼不同接口路由但是同一個(gè)業(yè)務(wù)功能,返回response全量json需要在不同染色多次對(duì)比結(jié)果的場(chǎng)景;

以上場(chǎng)景均能通過自動(dòng)化+全量json對(duì)比組件的方式去提效測(cè)試,且在后續(xù)回歸中直接用自動(dòng)化覆蓋回歸,尤其在商家服務(wù)拆分跨好幾個(gè)迭代涉及上千個(gè)接口的大的技改類需求中,達(dá)到明顯的提效效果。

公司目前提供了很多現(xiàn)有的平臺(tái)和小工具,不同類型的技改需求可以利用平臺(tái)+小工具模式去實(shí)踐應(yīng)用,適合的場(chǎng)景下合理地應(yīng)用,可以達(dá)到事半功倍的效果。

*文/mango

本文屬得物技術(shù)原創(chuàng),更多精彩文章請(qǐng)看:得物技術(shù)官網(wǎng)

未經(jīng)得物技術(shù)許可嚴(yán)禁轉(zhuǎn)載,否則依法追究法律責(zé)任!

http://m.aloenet.com.cn/news/28967.html

相關(guān)文章:

  • 龍崗住房和建設(shè)局網(wǎng)站百度推廣登錄平臺(tái)客服
  • 日照網(wǎng)站推廣今日熱榜
  • 夢(mèng)織網(wǎng)站短視頻seo推廣
  • 洞口做網(wǎng)站推廣信息怎么寫
  • 龍華高端網(wǎng)站設(shè)計(jì)愛站網(wǎng)關(guān)鍵詞查詢網(wǎng)站
  • 書畫網(wǎng)站 建設(shè)方案室內(nèi)設(shè)計(jì)培訓(xùn)
  • 各行各業(yè)網(wǎng)站建設(shè)獨(dú)立手機(jī)卡頓優(yōu)化軟件
  • 初中畢業(yè)想學(xué)動(dòng)漫專業(yè)抖音優(yōu)化排名
  • 厚街公司網(wǎng)站建設(shè)外貿(mào)營(yíng)銷型網(wǎng)站建設(shè)公司
  • 濟(jì)南地產(chǎn)行業(yè)網(wǎng)站開發(fā)友情鏈接賺錢
  • 小程序外包公司發(fā)展前景百度sem優(yōu)化師
  • 網(wǎng)站開發(fā)流程可規(guī)劃為哪三個(gè)階段新手怎么做seo優(yōu)化
  • 做網(wǎng)站培訓(xùn)商品推廣軟文范例100字
  • 重慶市建設(shè)工程招標(biāo)投標(biāo)交易信息網(wǎng)山西seo基礎(chǔ)教程
  • 分布式wordpress網(wǎng)頁(yè)seo
  • 外國(guó)優(yōu)秀網(wǎng)站設(shè)計(jì)青島關(guān)鍵詞優(yōu)化平臺(tái)
  • 網(wǎng)站建設(shè)做什么百度收錄查詢工具
  • 互聯(lián)網(wǎng) 政府門戶網(wǎng)站建設(shè)方案最新國(guó)際新聞50條簡(jiǎn)短
  • 網(wǎng)站后期維護(hù)費(fèi)用邯鄲seo營(yíng)銷
  • 做黃色網(wǎng)站怎么賺錢精準(zhǔn)防控高效處置
  • 價(jià)格劃算的東莞建網(wǎng)站公司優(yōu)化營(yíng)商環(huán)境評(píng)價(jià)
  • 東莞物流公司張家界seo
  • 江蘇 做網(wǎng)站推廣目標(biāo)怎么寫
  • 國(guó)外電商網(wǎng)站如何做icp備案網(wǎng)頁(yè)seo是什么意思
  • 泵 品牌網(wǎng)站建設(shè)深圳網(wǎng)站建設(shè)系統(tǒng)
  • 情人節(jié)給女朋友做網(wǎng)站線上推廣軟件
  • 南京公司網(wǎng)站開發(fā)合肥瑤海區(qū)
  • 一個(gè)jsp做的購(gòu)物小網(wǎng)站搜索引擎優(yōu)化的方法和技巧
  • wordpress文庫(kù)插件搜索引擎優(yōu)化的流程
  • wordpress裝在根目錄文件夾中_如何通過域名直接訪問?google關(guān)鍵詞seo