国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自動化實踐-全量Json對比在技改需求提效實踐

這篇具有很好參考價值的文章主要介紹了自動化實踐-全量Json對比在技改需求提效實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 背景

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

2 實踐成果

在這種需要對接口返回response做全量json對比的背景下,商家域新的自動化平臺新增了json全量對比的組件。在多個技改項目,比如服務拆分和BC流量拆分項目中這種比較大,花費人日比較多的項目測試中,應用了json全量對比驗證。在實踐過程中,比如原來要先寫自動化,把響應結果挨個驗證,或者在不同染色請求跟拆分前代碼分別執(zhí)行再對比結果。

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

3 實踐過程

3.1 源組件:JSONCompareUtils

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

引入方式:

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

方法名:JSONCompare

參數:JSON expect, JSON actual, Properties properties

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

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組件改造后適應于目前效能平臺適用的自動化平臺組件。

改造后的組件:

改造后的組件名:21471:?[JSON] 全量比對-兩Json傳入:對比接口提取返回與入參的json異同。

修改點:改成對比兩個接口提取返回,提取字段取名json1、json2。

入參保留propeties:返回多個時候的排序字段,沒有默認空,不排序。

舉例:"propeties": "$.data.order=order_no",$.data.order為list[Object],以Object中order_no排序后,再對list做對比。

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請求body:" + str(body))
    try:
        resq = requests.post(
            path,
            data = json.dumps(body),
            headers = headers,
            timeout=8
        )
        res = json.loads(resq.text)
        logger.info("======================artemis組件結果======================")
        logger.info(res)

        asserts.assertTrue(res["success"], msg="調用artemis-interface異常")
        asserts.assertEqual(str(res["data"]), "{}", msg="存在不一致比對數據 :")
    except Exception as e:
        logger.info(f'執(zhí)行JSON比對失敗【{str(e)}】')
        raise e
    return res
 

3.3 組件應用

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

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試?

?

步驟2: 添加組件

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

?

步驟3:對比上面兩個接口的提取的返回值

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

?

3.4 實踐場景

3.4.1 實踐一

提取接口返回全量標準被參照對比的標準json1,再提取新代碼中期望跟標準json1對比的json2,添加全量json組件,對比json1和json2的值。

測試場景:服務拆分技改類需求中需要對不同服務兩個或者多個接口返回response全量json結果對比的場景;

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

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

圖一

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

圖二

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

圖三

3.4.2 實踐二

返回json多次設置、多次對比數據。

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

json1、json2可進行多次設置、多次對比。

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

?

3.4.3 實踐三

全量json對比不同環(huán)境返回數據。

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

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

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試?

?

3.4.4 實踐四

全量json對比list結果返回順序不一致的數據。

測試場景:拆分前和拆分后的代碼相同接口返回response全量json需要先排序再對比結果的場景

Demo如下:

服務拆分的接口,請求是一個list數組,每次調用返回的list里面的順序可能不一致,可利用組件的參數先排序再對比json返回結果,兩個接口返回的json如下:

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試?

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

自動化實踐-全量Json對比在技改需求提效實踐,得物技術,自動化,json,測試?

4 結論

在實際測試過程中,技改的需占比也不小,幾乎每個迭代每個域都會有技改類的需求。本文為例,舉了幾個例子涉及提效需求點:

1.服務拆分技改類需求中需要對不同服務兩個或者多個接口返回response全量json結果對比的場景;

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

3.拆分前和拆分后的代碼相同接口返回response全量json需要先排序再對比結果的場景;

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

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

公司目前提供了很多現有的平臺和小工具,不同類型的技改需求可以利用平臺+小工具模式去實踐應用,適合的場景下合理地應用,可以達到事半功倍的效果。

*文/mango

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

未經得物技術許可嚴禁轉載,否則依法追究法律責任!文章來源地址http://www.zghlxwxcb.cn/news/detail-642090.html

到了這里,關于自動化實踐-全量Json對比在技改需求提效實踐的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 接口自動化測試實踐指導(下):接口自動化測試斷言設置思路

    接口自動化測試實踐指導(下):接口自動化測試斷言設置思路

    作者 : 石臻臻 , CSDN博客之星Top5 、 Kafka Contributor 、 nacos Contributor 、 華為云 MVP , 騰訊云TVP , 滴滴Kafka技術專家 、 KnowStreaming 。 KnowStreaming 是滴滴開源的Kafka運維管控平臺, 有興趣一起參與參與開發(fā)的同學,但是怕自己能力不夠的同學,可以聯系我,當你導師帶你參與開源! 。 在

    2024年01月18日
    瀏覽(29)
  • Jmeter接口自動化測試 —— Jmeter斷言之Json斷言

    ?json斷言可以讓我們很快的定位到響應數據中的某一字段,當然前提是響應數據是json格式的,所以如果響應數據為json格式的話,使用json斷言還是相當方便的。 還是以之前的接口舉例 添加一個Json斷言 維護上想要判斷的字段 查看結果 ? 我們將期望的值故意改成錯的545111看看

    2024年02月05日
    瀏覽(19)
  • Android常用9種自動化測試框架對比,Appium有哪些優(yōu)勢?

    Android常用9種自動化測試框架對比,Appium有哪些優(yōu)勢?

    隨著移動終端的普及,手機應用越來越多,也越來越重要。 App的回歸測試用例數量也越來越多,全量回歸也越來越消耗時間。 移動 APP自動化測試 的難點 移動 APP的UI自動化測試長久以來一直是一個難點,難點在于UI的”變”, 變化導致自動化用例的大量維護。 從分層測試的角

    2024年01月21日
    瀏覽(25)
  • Docker 自動化部署(實踐)

    Docker 自動化部署(實踐)

    docker search jenkins查看需要的jenkins鏡像源 docker pull jenkins/jenkins 拉取jenkins鏡像 docker images查看下載的鏡像源 docker ps 查看包含啟動以及未啟動的容器 docker ps -a查看啟動的容器 docker rm 容器id/容器名稱 刪除容器 docker rm -f 容器id/容器名稱 刪除容器(強制刪除容器,運行狀態(tài)也刪除

    2024年02月07日
    瀏覽(50)
  • 低代碼自動化測試的實踐

    低代碼自動化測試的實踐

    何為低代碼測試 傳統(tǒng)上,功能、 UI、端到端等測試自動化的實現都涉及編寫測試腳本,代替測試人員執(zhí)行重復的手動測試任務。自動化腳本的開發(fā)工作通常由 QA 工程師或開發(fā)人員完成,這需要編寫大量代碼。 而低代碼甚至無代碼的理念也是在自動化測試技術比較成熟之后出

    2024年01月17日
    瀏覽(18)
  • 朝夕光年游戲自動化測試實踐

    朝夕光年游戲自動化測試實踐

    朝夕光年是面向全球用戶與開發(fā)者的游戲研發(fā)與發(fā)行業(yè)務品牌,致力于服務全球玩家,幫助玩家在令人驚嘆的虛擬世界中一起玩耍與創(chuàng)造。 在游戲的研發(fā)過程中,游戲自動化一直是開展難度較大的工程,具體包括機房機架、設備調度、軟件框架、算法調校這些中臺建設,復雜

    2024年02月10日
    瀏覽(15)
  • 接口自動化測試工程實踐分享

    接口自動化測試工程實踐分享

    本文作者:歐海鋒,碧桂園服務高級測試工程師,致力于研究測試技術。 一、前言 接口自動化測試是一種軟件測試技術,它通過模擬用戶系統(tǒng)操作來對系統(tǒng)的接口進行自動化測試。接口自動化測試的目的是為了提高測試效率和準確性,同時降低測試成本和周期。以下是為什

    2024年04月17日
    瀏覽(25)
  • 懶人自動化生成e2e測試文件:JSON => playwright

    懶人自動化生成e2e測試文件:JSON => playwright

    本工具實現的是:使用簡單的 JSON 配置,生成可執(zhí)行的 playwright UI 測試文件。 然后通過項目內已經配置好的 playwright 配置實現 UI 測試。 工具工作流程: 期望達到的目的是: ? 基礎頁面(進入頁面)即獲取頁面快照對比 ? 等待頁面某些請求結束,才進行頁面快照對比 ??

    2024年02月16日
    瀏覽(27)
  • 如何在pytest接口自動化框架中擴展JSON數據解析功能?

    上期內容簡單說到了。params類類型參數的解析方法。相較于簡單。本期內容就json格式的數據解析,來進行闡述。 在MeterSphere中,有兩種方式可以進行json格式的數據維護。一種是使用他們自帶的JsonSchema來填寫key-value表單。另一種就是手寫json。 手寫json在日常工作中效率較低,

    2024年02月11日
    瀏覽(26)
  • 基于Java的接口自動化傳參是json格式,如何轉義

    廢話少說,直接貼剛新鮮完成的源碼; 框架是Java+springboot+mybatisplus+testng+jenkins+git

    2024年01月19日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包