• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于JMeter、Ant和WeTest的傭金管理系統(tǒng)接口自動化測試程序開發(fā)

    2020-03-16 02:31:26張嘉杰
    電子技術(shù)與軟件工程 2020年24期
    關(guān)鍵詞:腳本調(diào)用校驗

    張嘉杰

    (中國人民財產(chǎn)保險股份有限公司軟件開發(fā)中心廣州分中心 廣東省佛山市 528200)

    1 背景介紹

    傭金管理系統(tǒng)是一款保險類辦公系統(tǒng),具有傭金申請、提取、結(jié)算、計稅等功能,采用微服務(wù)結(jié)構(gòu)設(shè)計,前后端分離,具體業(yè)務(wù)邏輯在后端中臺實現(xiàn),共有數(shù)百個微服務(wù)接口。如果所有接口均由人工測試,將是十分大的工作量。為提高測試效率,減少人工測試工作量,實現(xiàn)快速迭代及回歸測試,非常有必要使用自動化方法對這些接口進行測試。

    2 技術(shù)手段介紹

    Apache Ant 是由Apache 軟件基金會提供的一個將軟件編譯、測試、部署等步驟聯(lián)系在一起的自動化工具,Ant 由Java 語言開發(fā),所以可以跨平臺。Ant 由一個內(nèi)置任務(wù)和可選任務(wù)組成,通過XML文件來定義構(gòu)建,通過分析XML 文件,調(diào)用target 樹來執(zhí)行測試腳本、監(jiān)控測試指標及生成測試報告等任務(wù)。[1]

    Apache JMeter 是Java 桌面應(yīng)用程序,可用于應(yīng)用程序的壓力測試、功能測試、回歸測試等,通過創(chuàng)建帶有斷言的腳本來驗證被測程序返回了期望的結(jié)果。JMeter 支持HTTP、SOAP 等多種服務(wù)器/協(xié)議類型,支持通過錄制/回放方式獲取測試腳本,高可移植,采用多線程框架,允許通過多個線程并發(fā)取樣以及通過獨立的線程組對不同的功能同時取樣,支持以緩存和離線的方式分析和回放測試結(jié)果。JMeter 可以作為Web 服務(wù)器與瀏覽器之間的代理網(wǎng)關(guān),以便捕獲瀏覽器的請求和Web 服務(wù)器的響應(yīng),如此就可以很容易地生成測試腳本,通過線程組來模擬真實用戶對Web 服務(wù)器的訪問。[2]

    WeTest 是騰訊出品的一款測試平臺,具有創(chuàng)建用例、用例管理、自動生成測試任務(wù)和測試報告等功能。WeTest 可以和TFS、DevOps 等平臺深度整合,實現(xiàn)接口測試的自動化運行及管理。

    DevOps 是一組過程、方法與系統(tǒng)的統(tǒng)稱,用于促進開發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運營和質(zhì)量保障之間的溝通、協(xié)作與整合。DevOps 流水線可實現(xiàn)代碼變成程序包的自動化持續(xù)集成、程序包測試并發(fā)布到生產(chǎn)環(huán)境的自動化持續(xù)部署、程序包線上自動化持續(xù)運維,具有無縫對接、靈活配置、高度自動、質(zhì)量內(nèi)建、灰度發(fā)布等特點。在代碼庫通過拉取請求將代碼從個人分支合并到開發(fā)分支并自動觸發(fā)合入流水線,能夠完成代碼掃描、安全掃描、單元測試等。可以每日定時或手動觸發(fā)流水線,完成測試環(huán)境部署、自動化接口測試、自動化端到端測試等。本程序正是利用DevOps 流水線的定時觸發(fā)自動化測試功能,實現(xiàn)數(shù)百個接口測試腳本的每天運行。

    3 整體流程介紹

    筆者整合Ant 自動化構(gòu)建工具、JMeter 測試腳本編寫工具、WeTest 測試平臺、DevOps 流水線等技術(shù)手段,開發(fā)出接口自動化測試程序。整體流程如圖1 所示。

    圖1:整體流程圖

    圖2:Ant 路程圖

    圖3:報告生成腳本流程圖

    筆者根據(jù)系統(tǒng)數(shù)百個接口功能,使用JMeter 分別開發(fā)出相應(yīng)的接口測試腳本,這些接口測試腳本是整個接口自動化測試程序的基礎(chǔ)。接著將編寫好的接口測試腳本部署到WeTest 測試平臺上,供該平臺批量調(diào)用。由于WeTest 平臺部署在服務(wù)器上,執(zhí)行速度遠比把腳本部署在單機電腦上執(zhí)行快。根據(jù)筆者的經(jīng)驗,數(shù)百個腳本在WeTest 上執(zhí)行只需要十分鐘左右,而在單機電腦上執(zhí)行則需要多于一小時。WeTest 任務(wù)創(chuàng)建成功后,將任務(wù)掛載到DevOps流水線,設(shè)置流水線每天將開發(fā)代碼、測試代碼重構(gòu),并且運行WeTest 任務(wù),即可實現(xiàn)每天批量運行接口測試腳本。但目前版本的WeTest 測試結(jié)果可讀性較差,只能逐個接口點擊,不便于直觀地查看測試結(jié)果。為此,筆者編寫報告生成腳本,根據(jù)WeTest 的若干個查詢接口獲取測試結(jié)果,并將其整合成測試報告和結(jié)果詳情文件。最后部署Ant 定時調(diào)用報告生成腳本,實現(xiàn)定時批量測試、自動生成測試報告。

    4 Ant流程介紹

    Ant 構(gòu)建工具負責(zé)調(diào)用JMeter 報告生成腳本,主要涉及文件build.xml 的配置,程序流程如圖2 所示。

    Ant 執(zhí)行的操作主要由run 中的test 和report 組成,具體配置如下:

    其中,test 負責(zé)執(zhí)行報告生成腳本weTestReport.jmx,該腳本負責(zé)收集WeTest 測試結(jié)果,并將其整理生成jtl 文件,具體配置如下:

    report負責(zé)將腳本生成的jtl文件轉(zhuǎn)換成可讀性更好的html文件。這里需要注意的是,轉(zhuǎn)換的jtl 文件是腳本根據(jù)WeTest 結(jié)果匯總的jtl 文件,而不是腳本自身運行的jtl 狀態(tài)文件,具體配置如下:

    5 報告生成腳本介紹

    報告生成腳本主要負責(zé)獲取WeTest 測試結(jié)果,并將結(jié)果整理匯總成定制格式的測試報告。腳本讀取配置文件獲取環(huán)境信息,調(diào)用WeTest 接口獲取指定報告編號,根據(jù)報告編號獲取報告匯總信息,其中包括任務(wù)名稱、用例總數(shù)、執(zhí)行成功用例數(shù)、執(zhí)行失敗用例數(shù)等,篩選出執(zhí)行失敗用例名稱,逐次調(diào)用接口獲取各個用例的執(zhí)行詳情,匯總成初步的測試結(jié)果,同時根據(jù)用例執(zhí)行結(jié)果生成定制格式的測試報告。流程如圖3 所示。

    圖4:JMeter 接口測試腳本流程圖

    圖5:查詢隨機數(shù)據(jù)步驟實現(xiàn)

    圖6:設(shè)置入?yún)⒉襟E實現(xiàn)

    WeTest 接口返回報告信息以JSON 格式程序,使用主流的JSON 包解釋方法可以方便地提取出狀態(tài)信息,數(shù)據(jù)結(jié)果如下所示。

    圖7:查詢預(yù)期數(shù)據(jù)步驟實現(xiàn)

    圖8:調(diào)用接口步驟實現(xiàn)

    圖9:校驗數(shù)據(jù)步驟實現(xiàn)

    圖10:異常場景步驟實現(xiàn)

    6 接口測試腳本介紹

    程序?qū)崿F(xiàn)自動化測試的基礎(chǔ)是測試腳本,筆者編寫的接口測試腳本使用數(shù)據(jù)程序分離模式,將接口地址配置信息、數(shù)據(jù)庫配置信息獨立于腳本存放,腳本負責(zé)具體測試流程的執(zhí)行。下面以查詢類接口測試腳本為例,說明腳本編寫思路及具體代碼實現(xiàn)。

    6.1 整體流程

    筆者根據(jù)需求文檔、接口文檔、數(shù)據(jù)庫文檔等信息,設(shè)計測試用例和測試數(shù)據(jù),編寫的腳本先根據(jù)接口地址配置信息、數(shù)據(jù)庫配置信息初始化執(zhí)行環(huán)境,查詢隨機測試數(shù)據(jù),設(shè)置接口傳入?yún)?shù),編寫預(yù)期測試結(jié)果,調(diào)用接口,設(shè)置響應(yīng)斷言,校驗實際結(jié)果和預(yù)期結(jié)果是否一致。測試腳本流程如圖4 所示。

    6.2 查詢隨機數(shù)據(jù)

    在查詢隨機數(shù)據(jù)步驟中,筆者根據(jù)接口的具體業(yè)務(wù)邏輯功能,從目標數(shù)據(jù)表中查出已有數(shù)據(jù)作為后續(xù)設(shè)置入?yún)⒉襟E的基礎(chǔ)。查詢隨機數(shù)據(jù)步驟實現(xiàn)如圖5 所示。

    6.3 設(shè)置入?yún)?/h3>

    查詢隨機數(shù)據(jù)后,根據(jù)查詢結(jié)果獲取隨機行數(shù),并將目標字段值存放在JMeter 自帶變量vars 中。設(shè)置入?yún)⒉襟E實現(xiàn)如圖6 所示。

    6.4 查詢預(yù)期數(shù)據(jù)

    接口自動化測試的關(guān)鍵之一是獲取正確的預(yù)期數(shù)據(jù),以此才能將接口返回的數(shù)據(jù)作比對校驗,同時獲取預(yù)期數(shù)據(jù)又是一個難點,因為根據(jù)接口業(yè)務(wù)邏輯的復(fù)雜程序,查詢邏輯可能涉及眾多外部系統(tǒng)、數(shù)據(jù)權(quán)限、數(shù)據(jù)轉(zhuǎn)換等操作,因此要寫好查詢預(yù)期數(shù)據(jù)邏輯,要充分分析需求文檔、接口說明文檔、數(shù)據(jù)庫說明文檔、業(yè)務(wù)邏輯代碼等。查詢預(yù)期數(shù)據(jù)步驟實現(xiàn)如圖7 所示。

    6.5 調(diào)用接口

    設(shè)置好入?yún)⒑?,即可用保存的?shù)據(jù)調(diào)用接口,調(diào)用接口步驟實現(xiàn)如圖8 所示。

    6.6 校驗數(shù)據(jù)

    完成測試用例的三大要素設(shè)計,即預(yù)期結(jié)果、執(zhí)行操作、實際結(jié)果后,需要將預(yù)期結(jié)果和實際結(jié)果作充分比對校驗,以此判斷接口是否按照預(yù)定設(shè)計正確地完成功能實現(xiàn)。對于查詢接口,關(guān)鍵是比對預(yù)期結(jié)果和實際結(jié)果是否一致,而如何高效地完成比對校驗工作,又是腳本設(shè)計的關(guān)鍵。筆者根據(jù)系統(tǒng)的實際情況,結(jié)合腳本測試經(jīng)驗,編寫了眾多公共方法,并將其保存為獨立的程序包。腳本分別獲取接口返回數(shù)據(jù)、查詢預(yù)期數(shù)據(jù),設(shè)置目標校驗字段,調(diào)用適配系統(tǒng)業(yè)務(wù)功能代碼的公共校驗方法,代碼整潔的同時實現(xiàn)了校驗工作的高效執(zhí)行。

    校驗數(shù)據(jù)步驟如圖9 所示。

    6.7 異常場景

    接口測試不但要包含覆蓋業(yè)務(wù)邏輯的正例測試,還要有各種異常場景測試,如輸入數(shù)據(jù)邊界值、非法數(shù)據(jù)、無效數(shù)據(jù)等場景。筆者根據(jù)接口業(yè)務(wù)邏輯代碼,找出所有可以顯式、隱式觸發(fā)接口功能錯誤的場景,并以此涉及異常場景測試用例。異常場景測試步驟實現(xiàn)如圖10 所示。

    6.8 其它操作類型腳本設(shè)計思路

    除了上述的查詢類腳本,接口測試腳本還涵蓋增加類、修改類、刪除類腳本,限于篇幅所限,羅列設(shè)計思路如下,不展開闡述。

    增加類腳本:

    (1)設(shè)置接口輸入?yún)?shù);

    (2)調(diào)用接口;

    (3)查詢預(yù)期插入數(shù)據(jù);

    (4)校驗預(yù)期數(shù)據(jù)是否與接口輸入?yún)?shù)一致。

    修改類腳本:

    (1)查詢數(shù)據(jù)庫已有數(shù)據(jù);

    (2)設(shè)置接口輸入?yún)?shù);

    (3)調(diào)用接口;

    (4)查詢預(yù)期修改數(shù)據(jù);

    (5)校驗預(yù)期修改數(shù)據(jù)是否與接口輸入?yún)?shù)一致。

    刪除類腳本:

    (1)查詢數(shù)據(jù)庫已有數(shù)據(jù);

    (2)設(shè)置接口輸入?yún)?shù);

    (3)調(diào)用接口;

    (4)查詢預(yù)期刪除數(shù)據(jù);

    (5)校驗預(yù)期刪除數(shù)據(jù)是否存在。

    7 總結(jié)

    根據(jù)實際工作需要,筆者使用Ant、JMeter、WeTest 等技術(shù)手段,開發(fā)了傭金管理系統(tǒng)接口自動化測試程序。程序全量覆蓋系統(tǒng)的中臺服務(wù)接口,全程自動運行,實現(xiàn)了接口的快速迭代及快速回歸測試,大大提高了測試效率。經(jīng)過一段時間的實際運行,程序運行情況良好,發(fā)現(xiàn)了多個被測接口的設(shè)計缺陷,為系統(tǒng)質(zhì)量的提升作出了重要的貢獻。限于筆者經(jīng)驗所限,本文所述內(nèi)容難免有錯漏之處,懇請同行批評指正。

    猜你喜歡
    腳本調(diào)用校驗
    酒駕
    安奇奇與小cool 龍(第二回)
    核電項目物項調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
    電子測試(2018年14期)2018-09-26 06:04:24
    爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
    快樂假期
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    大型電動機高阻抗差動保護穩(wěn)定校驗研究
    電測與儀表(2015年1期)2015-04-09 12:03:02
    基于加窗插值FFT的PMU校驗方法
    望奎县| 正宁县| 迁安市| 蒙阴县| 长岭县| 阜阳市| 射洪县| 德安县| 富阳市| 东乡族自治县| 洛浦县| 扶沟县| 喜德县| 颍上县| 正蓝旗| 阜阳市| 北海市| 城固县| 通榆县| 陇川县| 昭平县| 大洼县| 柳林县| 防城港市| 甘谷县| 桃源县| 敦煌市| 潼南县| 饶阳县| 贵州省| 丽水市| 长丰县| 靖州| 汉源县| 深水埗区| 淄博市| 新丰县| 自治县| 收藏| 江源县| 墨脱县|