• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Web應用系統(tǒng)中的MOCK測試技術

      2016-02-13 05:58:26潘詩瑤黃建明
      軟件 2016年12期
      關鍵詞:測試工具單元測試服務端

      潘詩瑤,黃建明

      (1. 北京郵電大學電子工程學院電子科學與技術專業(yè),北京 100876;2. 北京郵電大學,北京 100876)

      Web應用系統(tǒng)中的MOCK測試技術

      潘詩瑤1,黃建明2

      (1. 北京郵電大學電子工程學院電子科學與技術專業(yè),北京 100876;2. 北京郵電大學,北京 100876)

      近年來Web應用的市場占有率越來越高,Web開發(fā)技術也得到了飛速的發(fā)展。然而針對Web應用系統(tǒng)的測試卻不夠成熟。為了提高Web應用的開發(fā)效率和系統(tǒng)的穩(wěn)定性,研制出適用于Web應用的測試理論與框架日益迫切。MOCK測試技術是通過構建模擬對象實現(xiàn)對單元測試中的被測模塊孤立進行測試的技術。而本文針對Web應用系統(tǒng)的分布式等特性,結合Web開發(fā)的實際需求,對傳統(tǒng)軟件開發(fā)中的MOCK測試技術進行改進,并且提出了Web應用下MOCK自動化測試工具的系統(tǒng)架構,為Web應用系統(tǒng)的測試提供了一個高效的解決方案。

      計算機應用;Web應用系統(tǒng);軟件測試;MOCK測試

      本文著錄格式:潘詩瑤,黃建明. Web應用系統(tǒng)中的MOCK測試技術[J]. 軟件,2016,37(12):214-218

      0 引言

      隨著移動互聯(lián)網(wǎng)的普及與Web技術的不斷發(fā)展,以瀏覽器作為承載平臺的Web應用開發(fā)與解決方案越來越多。當今Web應用已經(jīng)不僅僅滿足于靜態(tài)頁面的展示,而是能夠獨立作為一個應用系統(tǒng)。隨著Web應用系統(tǒng)的廣泛應用,Web應用系統(tǒng)的測試也越來越受到人們的重視。Web應用系統(tǒng)具有異構、分布、并發(fā)和平臺無關等特性,這些特性都使得對Web應用系統(tǒng)的測試要比對傳統(tǒng)程序的測試更加困難。由于分布式系統(tǒng)的功能模塊經(jīng)常與其他模塊發(fā)生耦合,為進行單元測試引入了極大的不確定性。在此背景下,Mock技術于2001年被提出并且逐漸成為單元測試中不可或缺的技術。Mock是指在單元測試中,測試系統(tǒng)通過構造一系列符合預定義規(guī)則的模擬對象(Mock Object)來與被測試單元進行交互,從而判斷被試單元在正常邏輯,異常邏輯或壓力情況下能夠正常工作,返回預期的輸出結果。然而在Web應用系統(tǒng)剛剛興起不久的情況下,沒有可靠的Mock測試工具可用于Web應用場景下的Mock自動化測試[1]。

      本文對比了Web應用系統(tǒng)與傳統(tǒng)軟件的不同之處,闡述了Web應用系統(tǒng)測試所面臨的挑戰(zhàn)。通過對Web應用系統(tǒng)開發(fā)所面臨問題的分析,提出了Web應用系統(tǒng)下Mock測試的需求,創(chuàng)新性的設計了Web系統(tǒng)下Mock自動化測試工具的模型與架構,對指導Web場景下的Mock單元測試具有重要意義。

      1 Mock測試技術

      1.1 軟件測試概述

      互聯(lián)網(wǎng)時代的到來與計算機技術的發(fā)展,使軟件產(chǎn)品極大的改變了人們的工作與生活。與此同時,軟件產(chǎn)品的質(zhì)量也成為人們關注的焦點。為了避免軟件出現(xiàn)缺陷與漏洞,從而帶來巨大損失,在軟件分析、設計等各個開發(fā)階段,應對軟件進行嚴格的技術評審。軟件在編碼階段會被引入大量錯誤,由于人的能力有限,通過技術審查無法發(fā)現(xiàn)所有的錯誤。如果這些軟件漏洞與缺陷在軟件交付與投入使用時才被暴露出來,修復缺陷的成本會大幅提高,為軟件開發(fā)商和使用者造成巨大的損失。

      提早對軟件產(chǎn)品進行測試可以避免上述問題的發(fā)生。軟件測試就是在軟件開發(fā)的初始階段,對軟件的需求、設計及編碼進行嚴格的審查,及時的發(fā)現(xiàn)軟件產(chǎn)品的缺陷,確保產(chǎn)品的穩(wěn)定性與可靠性。軟件測試就是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程[2]。

      1.1.1 軟件測試模型

      在當前的軟件測試領域,最常見的軟件測試模型是V模型。V模型是80年代由Paul Rock提出,是目前使用最廣泛的一種模型。V模型是瀑布模型的變種,它明確的表明了測試過程的單元測試、集成測試、系統(tǒng)測試及驗收測試四個不同的階段,并且描述了這四個階段和開發(fā)過程的各個階段的對應關系。

      圖1 V模型Fig.1 the V Model

      V模型界定了測試存在于軟件開發(fā)的不同階段,并明確了軟件開發(fā)各個階段與測試各個階段的對應關系,是軟件工程中最常用的軟件測試模型。

      1.1.2 軟件缺陷的修復成本分析

      由圖1可知,軟件測試對應于系統(tǒng)開發(fā)的各個階段。而隨著軟件開發(fā)生命周期的不斷推移,修復軟件漏洞的成本也不斷提高。Boehm在《軟件工程經(jīng)濟學》一書中曾經(jīng)對軟件缺陷的修復成本進行過統(tǒng)計與分析[3]。在軟件的各個生命周期中,引入系統(tǒng)漏洞及軟件的修復成本如圖2所示。

      圖2 軟件各生命周期的漏洞修復成本Fig.2 The vulnerability repairing cost in the software life cycle

      從圖中可以看出,軟件漏洞的修復成本隨著軟件周期的推移呈指數(shù)型增長。因此,企業(yè)和開發(fā)者應在軟件開發(fā)初期,通過軟件測試盡早的發(fā)現(xiàn)問題并對系統(tǒng)漏洞進行修復,避免在產(chǎn)品發(fā)布后造成破壞性的后果。而在軟件測試中,單元測試處于軟件生命的最早期,因此,對單元測試技術的研究以及單元測試工具的開發(fā)都具有重要的意義。

      1.2 Web應用場景下的軟件測試

      12.1 Web系統(tǒng)的特性

      Web應用與傳統(tǒng)的軟件不同。Web應用軟件一般采用客戶機/服務器/數(shù)據(jù)庫的計算模式,在這種模式下,系統(tǒng)至少由三層體系結構組成:客戶端(瀏覽器)-應用服務器-數(shù)據(jù)庫服務器??梢园裌eb應用軟件看成是一個使用方便、接受全局訪問、具有圖形化界面的大的數(shù)據(jù)庫的前端。其結構示意圖如圖3所示。

      圖3 Web應用軟件結構Fig.3 The Structure of Web Application

      由圖3可以看到,由于Web應用系統(tǒng)具有分布式的特性,使用不同編程語言、具有不同邏輯功能的單元模塊之間相互依賴。這種依賴為Web系統(tǒng)的單元測試引入了不確定性,由于不同模塊的開發(fā)進度不同,單元測試常常無法順利的進行。

      1.2.2 Mock測試技術

      為了保證使軟件最小單元之間可以無干擾的獨立進行單元測試,保證測試結果的穩(wěn)定性,就必須為軟件測試提供一個細粒度的模擬對象。Tim Mackinnon,Steve Freeman和Philip Craig在XP2000會議上的一篇文章《Endo Testing: Unit Testing with Mock Objects》中提出了Mock objects的概念。Mock objects(簡稱Mocks)是用來代替與代碼協(xié)作對象的對象,它為代碼提供了具有特性屬性和方法的對象支持。使用Mock objects的技術叫做Mock技術,它是在單元測試基礎框架基礎上的擴展的代碼邏輯單元測試方法。Mocks通過隔離被測碼之間、被測試代碼和測試代碼之間的關聯(lián)程度,來簡化測試結構,避免被代碼因測試環(huán)境出現(xiàn)意外,而導致的復雜情況。它可以確保單元測試的獨立性,在一個時間段只對一個最小可測試單元進行測試,實現(xiàn)軟件漏洞的快速定位,提高開發(fā)和測試效率。

      2 Web系統(tǒng)下的Mock測試工具

      2.1 Mock測試需求

      由于Mock技術提供了與模塊具有相同數(shù)據(jù)結構和功能的模擬對象,非常適用于針對Web應用系統(tǒng)的單元測試中。使用Mock測試工具進行Web軟件的單元測試,可以非常好的解決以下場景中Web系統(tǒng)開發(fā)存在的問題。

      2.1.1 客戶端優(yōu)先場景

      在Web應用系統(tǒng)的開發(fā)過程中,前后端分離開發(fā)已經(jīng)成了主流高效的開發(fā)方式。在這種開發(fā)方式下,服務端和客戶端的開發(fā)人員可以各自獨立并行進行系統(tǒng)邏輯、界面、接口的開發(fā)工作,僅僅通過HTTP協(xié)議訪問API進行JSON數(shù)據(jù)的傳輸來實現(xiàn)服務端對客戶端的邏輯支持[4]。這種模式下,前端十分依賴來自后臺的JSON數(shù)據(jù),此時若后臺接口開發(fā)進度落后,前端沒有辦法使用數(shù)據(jù)進行頁面的填充,會很大程度上阻礙前端頁面開發(fā)的進行。

      2.1.2 服務端優(yōu)先場景

      而當服務端接口優(yōu)先完成開發(fā)時,由于客戶端開發(fā)的滯后,無法通過構建AJAX對象訪問服務端接口,測試接口的準確性。若服務端接口出現(xiàn)漏洞,則直到客戶端AJAX對象開發(fā)完畢才有可能被發(fā)現(xiàn),不滿足軟件測試應盡早進行的原則,同時有可能給系統(tǒng)帶來嚴重的損失。

      圖4 前后端分離開發(fā)模型Fig.4 The Separation of Frontend and Backend

      在這兩種場景下,引入Mock測試技術能夠有效的解決問題。Mock測試工具需要根據(jù)Web應用系統(tǒng)的開發(fā)需要動態(tài)構建出Mock API,返回與服務端具有相同數(shù)據(jù)模型的Mock數(shù)據(jù),是客戶端可以脫離服務端開發(fā)進度進行AJAX對象的開發(fā)和測試。同時Mock測試工具需要模擬出客戶端可能提供的請求參數(shù),測試服務端接口邏輯的正確性。

      2.2 Mock工具原型

      在Web系統(tǒng)開發(fā)過程中,由于服務端-客戶端開發(fā)進度的不同步,會引起相互無法為對方提供依賴對象的問題。因此,Mock測試工具需要為客戶端與服務端分別提供符合接口數(shù)據(jù)規(guī)則的模擬數(shù)據(jù)。由于Web系統(tǒng)的特殊性,服務端與客戶端通過HTTP訪問接口進行通信,因此,Mock測試工具應能夠通過開發(fā)者配置的項目接口文檔信息,在Mock測試工具所在的服務器地址動態(tài)的構建模擬接口(Mock API),并返回Mock數(shù)據(jù)。前端開發(fā)者可以訪問該Mock API獲取到與真實接口具有相同格式與含義的數(shù)據(jù),從而對自身的單元進行邏輯驗證。經(jīng)過設計的Mock測試工具模型如圖5所示。

      3 Mock自動化工具的設計

      3.1 業(yè)務流程

      根據(jù)上一章節(jié)對Web系統(tǒng)下Mock測試工具的模型的研究,可以設計出Mock工具的具體業(yè)務流程。開發(fā)人員應首先在Mock系統(tǒng)中錄入待測項目的接口信息,包括接口的URI,接口請求與請求參數(shù)的數(shù)據(jù)格式、數(shù)據(jù)類型、數(shù)據(jù)含義等參數(shù)。當接口信息被保存時,Mock服務器隨即對該接口進行構建,即提供了運行在Mock服務器上的Mock API支持[5]。此后,客戶端人員即可訪問該Mock API對其最小系統(tǒng)進行測試,服務端人員也可通過使用該Mock工具發(fā)送Mock請求,驗證接口路由邏輯的正確性[6]。完整的業(yè)務流程如圖6所示。

      圖5 Web系統(tǒng)下Mock測試工具模型Fig.5 The Mock Test Model in Web System

      圖6 Web系統(tǒng)下Mock測試流程Fig.6 The Technological Process in Mock Test

      3.2 系統(tǒng)架構

      根據(jù)上一節(jié)對Web系統(tǒng)中Mock測試的流程設計,可以設計出Mock測試工具的具體系統(tǒng)架構。由圖6可以看出,Mock工具要為開發(fā)者分別提供接口信息錄入的平臺界面,以及來自Mock服務端的API支持。因此,Mock工具系統(tǒng)架構可以分為Mock平臺與Mock服務器兩部分。Mock平臺為待測試系統(tǒng)的接口信息錄入提供入口,Mock服務器則主要為待測試模塊提供Mock API支持[7]。經(jīng)過設計的Web系統(tǒng)下Mock測試工具的最終系統(tǒng)架構,如圖7所示。

      開發(fā)者通過前面章節(jié)對Web系統(tǒng)下Mock測試的流程與Mock測試工具的系統(tǒng)架構設計,提出了在Web應用系統(tǒng)下應用Mock單元測試技術,實現(xiàn)Web應用開發(fā)的前后端分離,極大的提高了開發(fā)效率和系統(tǒng)的穩(wěn)定性,在Web應用開發(fā)領域具有重大的意義。

      圖7 Mock測試工具系統(tǒng)架構Fig.7 The Structure of Mock Test Tool

      4 結論

      Mock單元測試是針對軟件測試中由于被測試單元之間存在依賴性使測試變得復雜不可預料提出的重要解決方案,在軟件測試領域具有重要的地位。

      由于Web應用系統(tǒng)的開發(fā)和測試技術并不成熟,缺乏系統(tǒng)化的Mock測試思想及測試工具。因此,對

      Web應用場景下軟件測試的研究具有重要的意義。本文在對軟件單元測試技術進行深入研究,并對Web應用系統(tǒng)測試的特殊性進行闡述之后,提出了針對Web應用系統(tǒng)的Mock測試思想,并根據(jù)該思想進行了Web應用系統(tǒng)具體的Mock自動化測試工具的流程及架構設計。該架構針對Web應用系統(tǒng)的特殊性,創(chuàng)新性的提出了Mock API與Mock數(shù)據(jù)的概念,能夠極大的提高Web應用系統(tǒng)的開發(fā)及效率,解耦服務端-客戶端間的模塊依賴,實現(xiàn)真正的前后端分離開發(fā)。

      [1] PATTON R. Software Testing [M]. New York: John Wiley and Sons Ltd, 2007.

      [2] 隋智泉.一種改進的單元測試JUnit框架[J]. 電腦知識與技術, 2007(8): 479-480. SUI Z Q. An Improved JUnit Unit Testing Framework [J]. Computer Knowledge and Technology, 2007(8): 479-480 (in Chinese).

      [3] 鄧小鵬. Web應用測試技術進展[J]. 計算機研究與發(fā)展, 2007, 44(8): 74-81. DENG X P. Web Application Testing Technology [J]. Computer Research and Development, 2007, 44(8): 74-81(in Chinese)

      [4] 張福民. 信息系統(tǒng)開發(fā)中的自動化測試應用研究[D]. 大連: 大連海事大學, 2006. ZHANG F M. Automated Test Applications in the Development of Information System[D]. Dalian: Dalian Maritime University, 2006(in Chinese)

      [5] 伍向前. 單元測試中mock技術的研究和創(chuàng)新[D]. 大連:大連交通大學, 2008. Wu X Q. Mock Technology Research and Innovation in Unit Test [D]. Dalian: Dalian Railway Institute, 2008(in Chinese)

      [6] T Mackinnon, S Freeman, P Craig. Endo-Testing: Unit Testing with Mock Objects [J] Extreme Programming Examined, 2001(5): 287-301

      [7] 張敏. 面向Web應用的測試適配技術研究[D]. 山東: 山東師范大學, 2010 Zhang M. Test Adapter Technologies for Web Applications [d]. Shandong: Shandong Normal University, 2010(in Chinese)

      The Mock Testing Technology in the Web Application System

      PAN Shi-yao1, HUANG Jian-ming1

      (Beijing University of Posts and Telecommunications, Beijing 100876, China)

      In recent years, the market share of Web applications is increasing, and the Web technology is rapidly developed. However, the testing of Web application system is not mature enough. In order to improve the efficiency of Web application development and the stability of the system, it is urgent to develop a test theory and framework for Web applications. MOCK test is a technique to test the tested module isolated in the unit test by constructing the mock object. This paper in view of the characteristics of distributed Web application system, combining the actual needs of the Web application development, ameliorates the MOCK testing technology in traditional software development, and puts forward the system architecture of MOCK automated testing tools in the Web application, provides an effective solution for the testing of Web application system.

      Computer application; Web application system; Software testing; MOCK testing technology

      TP393.06

      A

      10.3969/j.issn.1003-6970.2016.12.046

      潘詩瑤(1992-),女,碩士研究生,計算機Web應用技術。

      黃建明,副教授,主要研究方向:多媒體技術、衛(wèi)星導航技術和智能通信等。

      猜你喜歡
      測試工具單元測試服務端
      邊緣智力兒童及其智力測試工具的研究進展
      Http并發(fā)連接測試工具
      云存儲中基于相似性的客戶-服務端雙端數(shù)據(jù)去重方法
      新時期《移動Web服務端開發(fā)》課程教學改革的研究
      消費導刊(2018年8期)2018-05-25 13:19:48
      在Windows Server 2008上創(chuàng)建應用
      福祿克推出先進的連接式測試工具系統(tǒng)
      一年級上冊第五單元測試
      一年級上冊一、二單元測試
      第五單元測試卷
      第六單元測試卷
      筠连县| 故城县| 宜黄县| 镇坪县| 两当县| 龙里县| 房产| 女性| 郸城县| 墨脱县| 龙陵县| 大田县| 赫章县| 安远县| 鸡西市| 葫芦岛市| 余江县| 叙永县| 安溪县| 时尚| 喀喇沁旗| 错那县| 汤原县| 永定县| 普兰县| 利川市| 英山县| 洛阳市| 满洲里市| 湘潭县| 阜新| 宜宾市| 横山县| 拜泉县| 乌拉特前旗| 饶平县| 灵川县| 兰溪市| 黑龙江省| 大埔区| 兴国县|