亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        自動化測試技術中Mock框架的建設與應用

        2017-07-05 10:37:59
        關鍵詞:系統(tǒng)

        孟 燕

        (杭州科技職業(yè)技術學院 信息工程學院,浙江 杭州 311402)

        ?

        自動化測試技術中Mock框架的建設與應用

        孟 燕

        (杭州科技職業(yè)技術學院 信息工程學院,浙江 杭州 311402)

        隨著商業(yè)應用系統(tǒng)的增多,為了快速響應用戶需求、加快版本交付、提高版本交付質量,有必要采用自動化測試來代替部分手工測試進行項目質量守護。自動化測試分為面向界面的Watchman自動化測試、面向后臺處理過程的Utplugin自動化測試和面向單元測試的Junit自動化測試,但缺乏面向接口的自動化測試。聯(lián)機接口的存在,使得應用系統(tǒng)可以實時訪問,快速對外提供業(yè)務反饋,但也加大了應用耦合度,給自動化測試帶來不便。為此,開展面向接口的Mock框架自動化測試建設,可以在測試中為應用解耦、接口測試提供必要條件,從而豐富自動化測試分層的框架,提高接口程序自動化守護的質量。

        Mock;自動化測試;應用解耦

        隨著商業(yè)應用系統(tǒng)信息化水平的提高,為了滿足業(yè)務發(fā)展的需要,客戶對軟件產品研發(fā)規(guī)模和頻度的要求也越來越高。而傳統(tǒng)的測試方法只會在整個軟件開發(fā)完畢且代碼“凍結”后才進行,加之耗時較長,不利于敏捷和迭代,約束了對業(yè)務需求的快速響應。為此,筆者開展自動化測試框架研發(fā)活動,旨在通過自動化測試工具加快應用開發(fā)成果集成,提高產品開發(fā)、測試的效率和質量,形成有效質量守護。在自動化測試框架研發(fā)過程中發(fā)現(xiàn),隨著商業(yè)應用系統(tǒng)復雜度和廣度不斷深入,為了支持各應用系統(tǒng)的聯(lián)動,衍生了上下游接口的相互訪問,并形成了功能強大的全功能系統(tǒng)。在項目開發(fā)過程中,存在各種應用內部或外部的調用關系,甚至與第三方系統(tǒng)建設存在依賴關系,而本系統(tǒng)極其缺乏這類自動化測試接口工具,為了降低日常研發(fā)測試的外部依賴程度,需要梳理接口自動化測試工具Mock的定義,明確Mock的建設目標[1-3]。

        通過Mock自動化技術中使用虛擬對象來替代真實的對象,可以消除測試案例中對主機接口、第三方應用和數(shù)據(jù)庫依賴等單節(jié)點的測試障礙,使開發(fā)人員或測試人員將精力集中在業(yè)務流程測試方面,從而更好地提高應用系統(tǒng)測試質量。

        近年來,國內外大型IT企業(yè)在Mock自動化研究中取得了一系列快速突破,如2013年開源社區(qū)GITHUB推出了基于MIT協(xié)議的開源Java測試框架Mockito[4],Mockito試圖通過移除“期望規(guī)范”來去除期望-運行-驗證模式,因此使接口耦合度降到最低,這樣的突出特性簡化了接口測試代碼,使其更容易閱讀和修改。 2014年6月,F(xiàn)acebook發(fā)布了一個Mock的開源工具Jest[5],用于快速、可靠地測試Web聊天應用,對于每一個需要測試的功能,Jest基于所模擬的功能創(chuàng)建一個與真實模塊具有相同形狀的對象,并給出測試返回值。

        1 Mock定義與Mock框架系統(tǒng)建設的目標

        Mock是指在測試一個對象A時,系統(tǒng)構造一些假的對象來模擬與A之間的交互,而這些Mock對象的行為是該系統(tǒng)事先設定且符合預期的。通過這些Mock對象來測試A在正常邏輯、異常邏輯或壓力情況下工作是否正常。引入Mock最大的優(yōu)勢在于:Mock的行為固定,其能確保當訪問該Mock的某個方法時總是能夠獲得一個沒有任何邏輯直接返回的預期結果。Mock對象的優(yōu)點在于隔絕其他模塊出錯引起本模塊的測試錯誤,隔絕其他模塊的開發(fā)狀態(tài),只要定義好接口,不用管其開發(fā)是否完成。

        本系統(tǒng)Mock建設的目標,首先必須是一個輕量的Web系統(tǒng),其不僅能支持應答而且至少需要支持4個層次的服務提供與用戶擴展,即協(xié)議層、解析層、匹配層和執(zhí)行引擎。其中,解析層提供常用的XML解析,用于解析接口報文交互用的XML報文;匹配層和執(zhí)行引擎能滿足個性化接口測試需求。當某層能力不足時,用戶可結合需求擴展,并繼續(xù)復用其他層次的現(xiàn)有能力,降低模擬器建設工作量。通過這4個層次的服務化,使得Mock取代第三方完成接口應答或響應,返回預期結果,從而實現(xiàn)接口程序測試的無人值守。

        2 Mock框架架構圖

        Mock框架主要解決的測試場景有:①真實對象具有不可確定的行為,可能會產生不可預測的結果(如股票的行情) ;②真實對象很難被創(chuàng)建(如具體的Web容器);③真實對象的某些行為很難觸發(fā)(如網(wǎng)絡錯誤) ;④測試需要詢問真實對象的被調用方式(如測試可能需要驗證某個回調函數(shù)是否被調用了);⑤有些對象操作耗時較多,而被測系統(tǒng)依賴于這類操作較多(如大文件讀寫操作);⑥一些異常邏輯在正常測試中是很難觸發(fā)的,通過Mock可以人為地控制觸發(fā)異常邏輯。

        假定被測系統(tǒng)的應用系統(tǒng)依賴于第三方應用提供的接口。當?shù)谌綉貌豢捎脮r,系統(tǒng)會將其替換為Mock,可提供各類接口模擬服務。Mock框架架構如圖1所示。

        圖1 Mock框架架構

        3 Mock分層系統(tǒng)的設計與實現(xiàn)

        3.1 Mock應用系統(tǒng)的設計思想

        Mock的設計思想是將接口的操作與數(shù)據(jù)的操作相分離,在實現(xiàn)樁程序時,只考慮對各種通信接口的包裝,而將條件和結果數(shù)據(jù)的構造交給使用者。這樣,同樣一個樁程序,只要是基于相同的通信協(xié)議,就可以模擬出任意行為,如①模擬一個HTTP或TCP接口,提供HTTP或TCP服務與應答;②根據(jù)不同上送的服務請求,返回不同的應答報文,如XML應答或JSON應答[6];③對各類網(wǎng)絡異常、交易異常提供用戶級、系統(tǒng)級的返回斷言信息進行容錯處理。

        3.2 Mock各分層具體實現(xiàn)邏輯

        Mock分層系統(tǒng)實現(xiàn)如圖2所示,協(xié)議層、解析層、匹配層和執(zhí)行引擎進行報文解析、格式化、規(guī)則匹配和應答功能,具體描述如下:①協(xié)議層主要處理接口協(xié)議的技術細節(jié),屏蔽各種協(xié)議的技術差異,讓解析層專注于業(yè)務數(shù)據(jù)的解析,將接口中業(yè)務數(shù)據(jù)根據(jù)不同的協(xié)議類型提取出來,再由解析器采用不同規(guī)則解析出具體的字段;②解析層提供各類解析器,用于解析不同格式的業(yè)務報文,解析后形成一系列鍵值,可為后續(xù)處理提供統(tǒng)一的數(shù)據(jù)格式;③匹配層[7]允許用戶指定不同的匹配方式和條件,例如當收到http接口請求時,預先使用固定的規(guī)則解析上送報文,形成一系列鍵值對,為匹配器的使用奠定基礎,然后用戶可以根據(jù)鍵值對的情況,選擇不同匹配方式和條件,指定不同的返回報文;④執(zhí)行引擎將一系列接口和執(zhí)行命令組合形成一系列原子命令,從而仿真各種測試場景[8-9]。

        圖2 Mock分層系統(tǒng)實現(xiàn)

        4 Mock各分層系統(tǒng)原型與評價指標

        4.1 Mock系統(tǒng)原型

        現(xiàn)通過IE或其他途徑發(fā)起以下http請求來簡述其原型實現(xiàn)過程。http://192.168.0.1:8080/TPS/udx/dpy?app=ndis&month=201408Mock在8080端口將收到接口請求,會這樣響應(其他協(xié)議類型的接口處理流程類似):

        (1)協(xié)議處理。按http協(xié)議處理請求數(shù)據(jù),解析到具體訪問的服務和業(yè)務數(shù)據(jù),端口:8080,服務:/TPS/udx/dpy,業(yè)務數(shù)據(jù):app=ndis&month=201408(實際上業(yè)務數(shù)據(jù)并非這樣一個字符串,但業(yè)務數(shù)據(jù)的含義與該字符串是等價的,在這里業(yè)務數(shù)據(jù)并沒有鍵值對的概念,其還是一個整體)。根據(jù)端口和請求的服務(/TPS/udx/dpy),Mock在現(xiàn)有Mock設置中尋找匹配的設置,若尋找不到則考慮是否轉發(fā)。而當前接口請求與上面的Mock設置可以相匹配時,則將基于該Mock設置進入下一響應步驟。

        (2)解析業(yè)務數(shù)據(jù)。使用當前Mock設置指定的解析器對業(yè)務數(shù)據(jù)進行解析,得到兩個鍵值對,業(yè)務數(shù)據(jù)app和month在這里被解析和細化為ndis和201408。

        (3)依次匹配并執(zhí)行原子命令。由于當前Mock設置了兩個匹配器(兩個匹配條件),將按順序逐一進行驗證。第一個匹配器為字段匹配器,要求存在字段app且值為ndis,從上一響應步驟的鍵值對可知,該要求是滿足的。此時匹配器匹配通過,將按順序執(zhí)行該匹配器下掛的所有原子命令:當前僅配置了一個Uri資源返回命令,Mock會從Uri(dpy_ndis.json)指定的資源文件以UTF-8編碼獲取文本,并作為應答報文返回給調用方。由于第一個匹配器匹配通過,將不再進行第二個匹配器的匹配工作。盡量找到一個能響應接口的Mock設置:若當前Mock設置的所有匹配器均未能匹配通過,Mock會根據(jù)IP和請求的服務,尋找下一個合適的Mock設置,并使用其嘗試去作響應,再回到第2個響應步驟匹配均失敗時,再次考慮轉發(fā)。若所有合適的Mock設置中所有匹配器均不通過,Mock將再次考慮是否轉發(fā)接口。Mock處理流程圖如圖3所示。

        4.2 Mock接口測試評價指標

        采用傳統(tǒng)接口測試與采用Mock接口測試的各個測試指標對比,如表1所示,可看出Mock接口自動化測試無論是對減少測試人力投入、提高測試質量還是減少環(huán)境依賴,都具有重要的研究意義[10]。

        圖3 Mock處理流程圖

        測試衡量指標傳統(tǒng)接口測試Mock接口測試測試投入開發(fā)與測試投入占比2∶1無人值守,報表系統(tǒng)支撐自動發(fā)郵件報告案例執(zhí)行情況測試路徑覆蓋率測試路徑覆蓋不全,且異常場景測試需要消耗更昂貴的投入所有if...else路徑覆蓋并生成程序覆蓋率進度和分支覆蓋率進度報告測試依賴搭建測試環(huán)境、準備測試數(shù)據(jù)常常需要一周時間且上下游溝通成本高自動化生成測試數(shù)據(jù),不依賴測試環(huán)境準備測試容錯性測試環(huán)境一旦出現(xiàn)問題或者受第三方接口開發(fā)進度影響,測試將受阻模擬第三方接口提供服務與應答測試案例復用性、測試質量測試案例復用率低、系統(tǒng)上線后暴露出很多問題通過可度量、可預測、可重復的自動化流程系統(tǒng)地提高軟件的質量和安全性

        通過上述實踐說明,在測試過程中如果存在第三方未完成開發(fā)或存在缺陷依賴的情況下,會導致自動化測試作業(yè)中斷[11],減弱自動化測試的效果,這時Mock能成功地與第三方系統(tǒng)開發(fā)進度解耦,減少各種環(huán)境依賴,取代第三方完成接口應答或響應,返回預期結果,提高自動化測試的穩(wěn)定性與通過率,從而提高自動化測試守護的質量。

        5 結論

        筆者通過Mock框架的建設與實施,闡述了Mock在模擬下游接口的響應和應答上的可替代性和穩(wěn)定性[12],Mock通過支持多種協(xié)議的解析和匹配,可為測試過程中的關鍵節(jié)點解耦,提高合作方測試的獨立性,從而較大地提高測試效率,最大程度地完成測試路徑覆蓋。與此同時,通過對Mock原型的研發(fā)和不斷升級,發(fā)現(xiàn)需要從應用研發(fā)場景、測試案例設計、代碼重構來對接口功能進行全流程和持久的質量守護,并最終實現(xiàn)接口自動化測試的無人值守,提高產品的質量,從而有效減少人工測試的壓力。

        [1] GRAHAM D,FEWSTER M.自動化測試最佳實踐[M].朱少民,張秋華,趙亞男,譯.北京:機械工業(yè)出版社,2013:15-18 .

        [2] KOSKELA L.測試驅動開發(fā)的藝術[M].李貝,譯.北京:人民郵電出版社,2011:21-24.

        [3] 朱菊,王志堅,楊雪,等.基于數(shù)據(jù)驅動的軟件自動化測試框架[J].計算機技術與發(fā)展,2006,16(5):18-23.

        [4] KOSKELA L.代碼覆蓋率簡介[EB/OL].(2004-01-01).http://www.javaranch.com/ newsletter/200401.

        [5] 南柯.Pageobject模式實現(xiàn)頁面元素分離[EB/OL].(2013-01-05) .http://www.51testing.com/html/87/300987-831789.html.

        [6] FOWLER M.Continuous integration[EB/OL]. (2010-03-01).http://www.martinfowler.com/articles/continuousIntegration.html.

        [7] 李首文,何貴兵.自動技術在軟件測試過程中的研究與實施[J].科技信息,2011(15):113-114.

        [8] 吳瑩.基于Selenium的Web自動化測試框架[J].科技傳播,2011(18):223-224.

        [9] 張永梅,陳立潮,馬禮,等.軟件測試技術研究[J].測試技術學報,2002(2):75-76.

        [10] 姚礪,束永安.軟件測試自動化關鍵技術的研究[J].安徽大學學報(自然科學版),2003,27(4):27-33.

        [11] 劉騰.軟件測試技術與自動化測試框架模型的研究與應用[J].電腦知識與技術,2009(26):28-31.

        [12] 呂誠昭,孟洛明.一個軟件測試自動化系統(tǒng):TSBAG[J].北京郵電學院學報,1993,16(1):8-14.

        MENG Yan:Lect.; College of Information Engineering, Hangzhou Vocational College of Science and Technology, Hangzhou 311402, China.

        Test Automation Technology in the Construction and Application of Mock Framework

        MENG Yan

        With the increasing of business system, in order to react to demand of users quickly, improve the quality and speed of project, it’s necessary to adopt auto-test to substitute manual test. Auto-test includes many types, such as interface-orient watchman test, process-orient utplugin test and java-orient test,but lack of interface-orient auto-test. The existence of online interface makes the application system can be real-time access, and provide business feedback quickly, but also increased the application of coupling.For the inconvenience of automated testing, this article hopes to interface-based Mock framework for automated testing and construction. For the application of decoupling, as soon as possible to carry out the interface test to carry out the necessary conditions to enrich the automation test layered framework to improve the quality of interface program automation daemon.

        Mock; auto-test; application of decoupling

        2095-3852(2017)03-0364-04

        A

        2017-01-07.

        孟燕(1981-),女,浙江杭州人,杭州科技職業(yè)技術學院信息工程學院講師,主要研究方向為軟件工程.

        TP311.51

        10.3963/j.issn.2095-3852.2017.03.024

        猜你喜歡
        系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        基于UG的發(fā)射箱自動化虛擬裝配系統(tǒng)開發(fā)
        半沸制皂系統(tǒng)(下)
        FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        一德系統(tǒng) 德行天下
        PLC在多段調速系統(tǒng)中的應用
        国产农村妇女毛片精品久久| 日本一区二区在线看看| 日韩精品视频av在线观看| 亚洲中文字幕国产视频| 9 9久热re在线精品视频| 日韩亚洲精品中文字幕在线观看| 特黄做受又硬又粗又大视频小说| 初尝黑人嗷嗷叫中文字幕| 99综合精品久久| 伊人婷婷综合缴情亚洲五月| 亚洲αv在线精品糸列| 午夜成人理论无码电影在线播放| 国产成人亚洲精品77| 欧美日韩中文字幕日韩欧美| 97中文乱码字幕在线| 色又黄又爽18禁免费网站现观看| 人妻无码aⅴ不卡中文字幕| 天堂在线www中文| 亚洲无码激情视频在线观看| 日产分东风日产还有什么日产| 亚洲国产一二三精品无码| 久久精品无码一区二区三区免费| 全免费a级毛片免费看视频| 无码熟妇人妻av在线c0930| 亚洲丰满熟女一区二亚洲亚洲| 国产两女互慰高潮视频在线观看| 國产一二三内射在线看片| 一区二区三区午夜视频在线观看| 人妻中文字幕日韩av| 精品国产一二三产品区别在哪 | 国产精品无码日韩欧| 亚洲人成在线播放a偷伦| 久久婷婷综合激情五月| 中文字幕av免费专区| 國产AV天堂| 综合中文字幕亚洲一区二区三区| 亚洲激情一区二区三区不卡| 久久99精品久久久久麻豆 | 麻豆人妻性色av专区0000| 2018天天躁夜夜躁狠狠躁| 欧美性大战久久久久久久|