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

        ?

        一個(gè)基于數(shù)據(jù)共享的接口開發(fā)平臺(tái)

        2020-10-09 11:01:23謝業(yè)欣
        軟件 2020年8期
        關(guān)鍵詞:數(shù)據(jù)共享

        摘 ?要: 在RESTful API(以下簡(jiǎn)稱接口)開發(fā)的設(shè)計(jì)、編碼、測(cè)試、維護(hù)工作現(xiàn)狀中,接口文檔工具、接口Mock工具、接口測(cè)試工具和接口自動(dòng)化測(cè)試技術(shù)的使用,產(chǎn)生了工作重復(fù)、耗時(shí)、難度大、數(shù)據(jù)不易分析的問題。為保障產(chǎn)品質(zhì)量的同時(shí)進(jìn)一步提高工作效率,提出了一個(gè)基于數(shù)據(jù)共享的接口開發(fā)平臺(tái)方案。通過共享接口設(shè)計(jì)過程中錄入平臺(tái)的數(shù)據(jù),在接口編碼、測(cè)試、維護(hù)工作過程中,充分復(fù)用接口數(shù)據(jù),解決了工作重復(fù)問題。通過整合這些輔助工具和技術(shù)到同一個(gè)平臺(tái)中,降低了工作難度,簡(jiǎn)化了工作流程。數(shù)據(jù)集中存儲(chǔ)、管理,解決了數(shù)據(jù)分散、不利于項(xiàng)目分析的問題。實(shí)驗(yàn)結(jié)果表明,使用該平臺(tái)后,工作效率提高了58.33%。在實(shí)際項(xiàng)目運(yùn)行中,達(dá)到了預(yù)期效果,縮短了項(xiàng)目周期,節(jié)省了項(xiàng)目成本,增加了企業(yè)收益。

        關(guān)鍵詞: 軟件項(xiàng)目管理;接口平臺(tái);質(zhì)量保障與工作效率;接口Mock;接口測(cè)試;接口自動(dòng)化測(cè)試;數(shù)據(jù)共享

        中圖分類號(hào): TP311.56 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.08.041

        本文著錄格式:謝業(yè)欣. 一個(gè)基于數(shù)據(jù)共享的接口開發(fā)平臺(tái)[J]. 軟件,2020,41(08):152-157

        【Abstract】: In the current status of design, coding, testing, and maintenance of RESTful API (hereinafter referred to as interface) development, the use of interface document tools, interface mock tools, interface test tools, and interface automation testing techniques has resulted in problems such as duplication of work, time-consuming, difficult, and difficult to analyze data. In order to ensure product quality and further improve work efficiency, an interface development platform scheme based on data sharing was proposed. By sharing the data entered in the platform during the interface design process, the interface data is fully reused during the process of interface coding, testing, and maintenance to solve the problem of duplication of work. By integrating these auxiliary tools and technologies into the same platform, the work difficulty is reduced and the work process is simplified. Centralized storage and management of data solves the problems of scattered data and difficult project analysis. The experimental results show that after using the platform, the work efficiency has increased by 58.33%. In the actual project operation, the expected results have been achieved, the project cycle has been shortened, project costs have been saved, and corporate profits have been increased.

        【Key words】: Software project management; Interface platform; Quality assurance and work efficiency; Interface mock; Interface test; Interface automated testing; Data sharing

        0 ?引言

        互聯(lián)網(wǎng)發(fā)展到今天,人們對(duì)互聯(lián)網(wǎng)應(yīng)用軟件的質(zhì)量和體驗(yàn)要求越來越高,如何在保障軟件質(zhì)量和追求極致體驗(yàn)的同時(shí),持續(xù)提高工作效率、降低成本、增加收益,不僅有助于企業(yè)在競(jìng)爭(zhēng)對(duì)手中脫穎而出,還有助于企業(yè)在長(zhǎng)遠(yuǎn)發(fā)展中持續(xù)占有主導(dǎo)地位。

        為滿足越來越多樣化的終端應(yīng)用軟件開發(fā), RESTful架構(gòu)被廣泛應(yīng)用。2000年Roy Thomas Fielding的博士論文中首次提出REST。RESTful架構(gòu)將網(wǎng)絡(luò)上的實(shí)體作為資源并用URI(統(tǒng)一資源定位符)唯一標(biāo)識(shí),客戶端和服務(wù)端之間傳遞這種資源的某種表現(xiàn)層(即某種數(shù)據(jù)格式),客戶端使用HTTP協(xié)議的四個(gè)動(dòng)詞(GET、POST、PUT、DELETE)對(duì)服務(wù)端資源進(jìn)行操作,實(shí)現(xiàn)資源的“表現(xiàn)層狀態(tài)轉(zhuǎn)換”[1]。

        RESTful架構(gòu)解耦前后端代碼,使用RESTful API(以下簡(jiǎn)稱接口)進(jìn)行通信,只需要一套統(tǒng)一的服務(wù)接口,就可以同時(shí)為Web、IOS、Android等應(yīng)用提供服務(wù)。代碼結(jié)構(gòu)清晰、標(biāo)準(zhǔn)統(tǒng)一、易于擴(kuò)展,還可以使前后端并行開發(fā),縮短了項(xiàng)目周期[2-5]。

        軟件的設(shè)計(jì)、編碼、測(cè)試、維護(hù),是軟件開發(fā)的主要過程[6],接口是軟件前后端通信的統(tǒng)一機(jī)制,在接口設(shè)計(jì)、編碼、測(cè)試、維護(hù)的過程中,做好質(zhì)量保障和提效工作,對(duì)于整個(gè)軟件項(xiàng)目尤為重要。因此,在做好接口質(zhì)量保障工作的同時(shí),如何進(jìn)一步提高工作效率,一直是各互聯(lián)網(wǎng)公司不斷探討的主題。

        1 ?接口開發(fā)過程中存在的問題

        如圖1所示,為接口開發(fā)過程中工作現(xiàn)狀與存在的問題。

        在接口設(shè)計(jì)過程中,前后端開發(fā)人員根據(jù)需求分析的結(jié)果,對(duì)接口進(jìn)行設(shè)計(jì),約定接口數(shù)據(jù)規(guī)則,并人為記錄到接口文檔工具中[2]。確保了接口開發(fā)過程的準(zhǔn)確性,提高了跨團(tuán)隊(duì)合作的工作效率。但錄入接口數(shù)據(jù)耗時(shí)、文檔維護(hù)成本高。

        接口編碼過程中,接口Mock工具為客戶端與服務(wù)端分別提供了符合接口數(shù)據(jù)規(guī)則的模擬數(shù)據(jù),解耦服務(wù)端-客戶端間的模塊依賴,實(shí)現(xiàn)真正的前后端分離開發(fā)[7],減少了缺陷出現(xiàn)的可能性,提高了產(chǎn)品質(zhì)量,縮短了項(xiàng)目周期[8]。但安裝Mock工具,根據(jù)接口文檔將接口數(shù)據(jù)錄入到Mock工具中,這些前置工作非常耗時(shí)。

        對(duì)新開發(fā)的接口進(jìn)行測(cè)試不僅可以更早地發(fā)現(xiàn)一些核心問題,還可以縮小定位、分析問題的范圍,有助于更快修復(fù)問題,進(jìn)而提高了缺陷修復(fù)效率[9]。但安裝工具,依照接口文檔將接口請(qǐng)求數(shù)據(jù)錄入到接口測(cè)試工具中[10-11],這些前置工作非常繁瑣、耗時(shí)。

        在快速增量迭代的工作實(shí)際中,要求在短時(shí)間內(nèi)對(duì)大量處于維護(hù)過程中的接口進(jìn)行回歸測(cè)試。接口自動(dòng)化測(cè)試,在很大程度上減輕測(cè)試人員的壓力,大大提高了軟件測(cè)試工作的效率[12-14]。同時(shí),避免了人為操作帶來的失誤,一定程度上提高了測(cè)試的準(zhǔn)確性。但根據(jù)接口文檔將接口數(shù)據(jù)錄入到自動(dòng)化測(cè)試腳本中,并開發(fā)、調(diào)試腳本,不僅耗時(shí),而且工作難度大、學(xué)習(xí)成本高。

        在接口設(shè)計(jì)、編碼、測(cè)試、維護(hù)過程中,接口文檔、接口Mock、接口測(cè)試、接口自動(dòng)化測(cè)試,都對(duì)產(chǎn)品質(zhì)量保障和提高工作效率起到了積極作用。但這些輔助工具和技術(shù)的使用,也帶來了如下問題:

        (1)每一個(gè)過程都需要錄入接口數(shù)據(jù),工作重復(fù)

        (2)工具安裝、開發(fā)環(huán)境部署等,繁瑣、耗時(shí)

        (3)測(cè)試人員要求具備開發(fā)測(cè)試腳本的能力,難度大、學(xué)習(xí)成本高

        (4)各個(gè)過程產(chǎn)生的數(shù)據(jù)分散、不易于收集進(jìn)行項(xiàng)目分析

        2 ?平臺(tái)方案設(shè)計(jì)

        2.1 ?工作流程設(shè)計(jì)

        針對(duì)接口開發(fā)過程中的工作重復(fù)、耗時(shí)、難度大、數(shù)據(jù)不易分析的問題,本文提出了一個(gè)基于數(shù)據(jù)共享的接口開發(fā)平臺(tái)解決方案。

        平臺(tái)基于現(xiàn)有的工具和技術(shù),整合了接口文檔工具、接口Mock工具、接口測(cè)試工具和接口自動(dòng)化測(cè)試技術(shù),使用數(shù)據(jù)庫統(tǒng)一管理數(shù)據(jù),支持接口文檔、接口Mock、接口測(cè)試、接口自動(dòng)化測(cè)試功能。

        共享接口設(shè)計(jì)過程中錄入平臺(tái)的數(shù)據(jù),在接口編碼、測(cè)試、維護(hù)過程中,充分復(fù)用接口數(shù)據(jù),無需再次人為錄入,解決了工作重復(fù)問題。無需安裝、部署任何工具和環(huán)境,無需具備編程基礎(chǔ),只需使用瀏覽器訪問,就可以使用,解決了工作耗時(shí)、難度大的問題。數(shù)據(jù)集中存儲(chǔ)、管理,解決了數(shù)據(jù)分散、不易項(xiàng)目分析的問題。

        如圖2所示,為平臺(tái)工作流程圖。在接口設(shè)計(jì)過程中,將接口數(shù)據(jù)人為錄入到平臺(tái)中。在接口編碼、測(cè)試、維護(hù)過程中,只需在平臺(tái)界面中選擇所需接口,就可以完成接口Mock、接口測(cè)試、接口自動(dòng)化測(cè)試。

        2.2 ?功能模塊劃分

        如圖3所示,該平臺(tái)的主要功能模塊有:接口管理,環(huán)境管理,接口Mock,接口測(cè)試,接口自動(dòng)化測(cè)試。接口管理,主要實(shí)現(xiàn)接口添加、修改、查詢、刪除功能。環(huán)境管理,主要實(shí)現(xiàn)環(huán)境添加、修改、查詢、刪除功能。接口Mock,主要實(shí)現(xiàn)Mock設(shè)計(jì)、執(zhí)行功能。接口測(cè)試,主要實(shí)現(xiàn)測(cè)試用例的設(shè)計(jì)、執(zhí)行、結(jié)果展示功能和測(cè)試用例管理(即測(cè)試用例的新增、修改、查詢、刪除)功能。接口自動(dòng)化測(cè)試,主要實(shí)現(xiàn)測(cè)試任務(wù)的創(chuàng)建、執(zhí)行、測(cè)試報(bào)告展示功能,測(cè)試任務(wù)管理(即新增、修改、查詢、刪除)功能,和測(cè)試報(bào)告管理(即詳情展示、查詢)功能。

        2.3 ?數(shù)據(jù)庫設(shè)計(jì)

        (1)概念結(jié)構(gòu)設(shè)計(jì)

        根據(jù)上述流程設(shè)計(jì)和功能模塊劃分可知,該平臺(tái)涉及到的數(shù)據(jù)有:接口數(shù)據(jù)、環(huán)境數(shù)據(jù)、Mock設(shè)計(jì)數(shù)據(jù)、Mock結(jié)果數(shù)據(jù)、測(cè)試用例數(shù)據(jù)、單接口測(cè)試結(jié)果數(shù)據(jù)、測(cè)試任務(wù)數(shù)據(jù)、測(cè)試報(bào)告數(shù)據(jù)。因Mock設(shè)計(jì)數(shù)據(jù)、Mock結(jié)果數(shù)據(jù)和單接口測(cè)試結(jié)果數(shù)據(jù),在后續(xù)的流程中不會(huì)被復(fù)用和查詢,故不作持久性存儲(chǔ),只作單次數(shù)據(jù)展示。因此,該平臺(tái)的數(shù)據(jù)庫設(shè)計(jì)實(shí)體和屬性有:

        環(huán)境:環(huán)境ID、名稱、描述、類型、IP地址、域名、最近更新時(shí)間、創(chuàng)建人。

        接口:接口ID、名稱、描述、URL、請(qǐng)求Headers、請(qǐng)求參數(shù)、請(qǐng)求協(xié)議、返回Headers、返回Body、最近更新時(shí)間。

        測(cè)試用例:用例ID、名稱、描述、驗(yàn)證內(nèi)容、最近更新時(shí)間。

        測(cè)試任務(wù):任務(wù)ID、名稱、描述、啟動(dòng)時(shí)間、測(cè)試頻率、最近更新時(shí)間。

        測(cè)試任務(wù)結(jié)果:任務(wù)結(jié)果ID、任務(wù)執(zhí)行狀態(tài)、測(cè)試報(bào)告。

        這些實(shí)體之間的聯(lián)系如下:

        1)一個(gè)Mock環(huán)境可以為多個(gè)接口提供Mock數(shù)據(jù),一個(gè)接口只能在這一個(gè)Mock環(huán)境中Mock數(shù)據(jù)(只有一個(gè)Mock環(huán)境)。因此,環(huán)境和接口具有一對(duì)多的聯(lián)系。

        2)一個(gè)接口可以設(shè)計(jì)多條測(cè)試用例,一條測(cè)試用例只能測(cè)試一個(gè)接口。因此,接口和測(cè)試用例具有一對(duì)多的聯(lián)系。

        3)一個(gè)測(cè)試環(huán)境中可以運(yùn)行多條測(cè)試用例,一條測(cè)試用例只能運(yùn)行在一個(gè)測(cè)試環(huán)境中。因此,環(huán)境和測(cè)試用例具有一對(duì)多的聯(lián)系。

        4)一個(gè)測(cè)試任務(wù)中可以包含多條測(cè)試用例,一條測(cè)試用例也可以存在在多個(gè)測(cè)試任務(wù)。因此,測(cè)試任務(wù)和測(cè)試用例具有多對(duì)多的聯(lián)系。

        5)一個(gè)測(cè)試任務(wù)運(yùn)行會(huì)生成多個(gè)測(cè)試任務(wù)結(jié)果,一個(gè)測(cè)試任務(wù)結(jié)果只能由一個(gè)測(cè)試任務(wù)生成。因此,測(cè)試任務(wù)和測(cè)試任務(wù)結(jié)果具有一對(duì)多的聯(lián)系。

        6)對(duì)該平臺(tái)進(jìn)行概念結(jié)構(gòu)設(shè)計(jì),用E-R圖表示其概念模型,如圖4所示。

        (2)邏輯結(jié)構(gòu)設(shè)計(jì)

        將E-R圖轉(zhuǎn)換為關(guān)系數(shù)據(jù)模型,如下:

        環(huán)境(環(huán)境ID,名稱,描述,類型,IP地址,域名,最近更新時(shí)間)

        接口(接口ID,環(huán)境ID,名稱,描述,URL,請(qǐng)求方法,請(qǐng)求Headers,請(qǐng)求參數(shù),請(qǐng)求協(xié)議、返回Headers,返回Body,最近更新時(shí)間)

        測(cè)試用例(測(cè)試用例ID,接口ID,環(huán)境ID,名稱,描述,驗(yàn)證內(nèi)容,最近更新時(shí)間)

        測(cè)試任務(wù)(測(cè)試任務(wù)ID,名稱,描述,啟動(dòng)時(shí)間,測(cè)試頻率,最近更新時(shí)間)

        生成測(cè)試任務(wù)(測(cè)試用例ID,測(cè)試任務(wù)ID)

        測(cè)試任務(wù)結(jié)果(任務(wù)結(jié)果ID,任務(wù)ID,任務(wù)執(zhí)行狀態(tài),測(cè)試報(bào)告)

        2.4 ?系統(tǒng)架構(gòu)設(shè)計(jì)

        如圖5所示,該系統(tǒng)架構(gòu)由:數(shù)據(jù)定義、設(shè)計(jì)、調(diào)度中心、執(zhí)行和管理平臺(tái)五部分構(gòu)成。

        (1)數(shù)據(jù)定義部分由接口定義和環(huán)境定義兩部分組成。

        接口定義,支持?jǐn)?shù)據(jù)模板定義,定義數(shù)據(jù)內(nèi)容包括接口名稱、接口描述、接口URL、請(qǐng)求方法、請(qǐng)求協(xié)議、請(qǐng)求參數(shù)、請(qǐng)求Headers、返回Headers、返回Body。服務(wù)于接口設(shè)計(jì)過程中對(duì)原始接口數(shù)據(jù)的錄入、編輯、查詢、刪除功能,通過管理平臺(tái)中的接口定義和管理界面可進(jìn)行數(shù)據(jù)操作。對(duì)外輸出接口描述數(shù)據(jù),便于在接口Mock、測(cè)試、自動(dòng)化測(cè)試過程中復(fù)用。

        環(huán)境定義,定義數(shù)據(jù)內(nèi)容包括環(huán)境名稱、環(huán)境描述、環(huán)境類型、IP地址、域名。對(duì)外輸出環(huán)境描述數(shù)據(jù),服務(wù)于接口Mock設(shè)計(jì)、接口測(cè)試用例設(shè)計(jì)時(shí),運(yùn)行環(huán)境的配置選擇,通過管理平臺(tái)中的環(huán)境定義和管理界面可進(jìn)行數(shù)據(jù)操作。

        (2)設(shè)計(jì)部分由Mock設(shè)計(jì)和測(cè)試設(shè)計(jì)兩部分組成。

        Mock設(shè)計(jì)部分,服務(wù)于接口Mock過程,用于設(shè)計(jì)Mock數(shù)據(jù)。在接口管理頁面中,選擇要進(jìn)行Mock的接口,設(shè)置Mock環(huán)境,生成接口Mock描述數(shù)據(jù),等待Mock被觸發(fā)。

        測(cè)試設(shè)計(jì)部分,服務(wù)于接口測(cè)試和接口自動(dòng)化測(cè)試過程,用于單接口測(cè)試用例和測(cè)試任務(wù)的設(shè)計(jì)和生成。在接口管理頁面中,選擇要進(jìn)行測(cè)試的接口,設(shè)置測(cè)試運(yùn)行環(huán)境,并設(shè)置接口響應(yīng)校驗(yàn)規(guī)則作為期望結(jié)果,生成單接口測(cè)試用例數(shù)據(jù),并在測(cè)試用例管理頁面中被統(tǒng)一管理。在測(cè)試用例管理頁面中,選擇多個(gè)測(cè)試用例,設(shè)置測(cè)試任務(wù)執(zhí)行的啟動(dòng)時(shí)間和間隔時(shí)間,組裝成一個(gè)測(cè)試任務(wù),并在測(cè)試任務(wù)管理頁面中被統(tǒng)一管理。

        (3)調(diào)度中心,主要實(shí)現(xiàn)了調(diào)度判斷和調(diào)度執(zhí)行功能,是銜接前端頁面操作和接口Mock、接口測(cè)試、接口自動(dòng)化測(cè)試模塊的橋梁,是平臺(tái)的核心功能。當(dāng)管理平臺(tái)中有執(zhí)行操作被觸發(fā)時(shí),調(diào)度中心首先會(huì)攔截被執(zhí)行接口的請(qǐng)求,然后解析請(qǐng)求數(shù)據(jù)中的運(yùn)行環(huán)境類型,來判斷是哪種類型的執(zhí)行操作被觸發(fā)。然后將攔截的請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)器上,并調(diào)度相應(yīng)的執(zhí)行模塊。

        (4)執(zhí)行部分由Mock執(zhí)行和測(cè)試執(zhí)行兩部分組成。

        Mock執(zhí)行,服務(wù)于接口Mock過程中的Mock執(zhí)行。首先,將Mock設(shè)計(jì)中生成的Mock數(shù)據(jù)作為請(qǐng)求數(shù)據(jù),向Mock服務(wù)器發(fā)起請(qǐng)求。然后,在接口數(shù)據(jù)庫表中查詢接口設(shè)計(jì)過程中定義的該接口的響應(yīng)內(nèi)容,作為Mock請(qǐng)求的響應(yīng)并返回。最后,展示在Mock結(jié)果查看頁面中。

        測(cè)試執(zhí)行,服務(wù)于接口測(cè)試和接口自動(dòng)化測(cè)試過程中的測(cè)試執(zhí)行。單接口測(cè)試用例執(zhí)行被觸發(fā)時(shí),首先會(huì)將測(cè)試設(shè)計(jì)中生成的測(cè)試用例數(shù)據(jù)作為請(qǐng)求數(shù)據(jù),向開發(fā)環(huán)境或者生產(chǎn)環(huán)境的服務(wù)器發(fā)起請(qǐng)求,并將響應(yīng)數(shù)據(jù)返回,展示在單接口測(cè)試結(jié)果查看頁面中。測(cè)試任務(wù)執(zhí)行被觸發(fā)時(shí),首先會(huì)解析測(cè)試執(zhí)行的啟動(dòng)時(shí)間和間隔時(shí)間,然后啟動(dòng)定時(shí)器。每當(dāng)滿足執(zhí)行條件時(shí),就運(yùn)行一次測(cè)試任務(wù)中的所有測(cè)試用例。每一次運(yùn)行,都會(huì)生成一個(gè)測(cè)試報(bào)告,并在測(cè)試報(bào)告管理頁面中被統(tǒng)一管理。測(cè)試報(bào)告內(nèi)容包括測(cè)試任務(wù)執(zhí)行結(jié)果概覽和任務(wù)中每條測(cè)試用例的執(zhí)行結(jié)果詳情。

        (5)管理平臺(tái)部分,實(shí)現(xiàn)了平臺(tái)前端頁面的展示、操作功能。用于數(shù)據(jù)操作和展示、流程觸發(fā)、狀態(tài)監(jiān)控、結(jié)果查看。包括接口、環(huán)境、測(cè)試用例、測(cè)試任務(wù)數(shù)據(jù)定義和增刪改查操作的管理,Mock、單接口測(cè)試、測(cè)試任務(wù)的執(zhí)行觸發(fā)以及測(cè)試任務(wù)執(zhí)行狀態(tài)監(jiān)控,Mock結(jié)果、測(cè)試結(jié)果展示以及測(cè)試任務(wù)執(zhí)行報(bào)告的展示、查詢管理。

        3 ?系統(tǒng)核心功能實(shí)現(xiàn)

        本系統(tǒng)使用基于JavaScript的Vue.js框架和Elemnet-ui組件庫來實(shí)現(xiàn)管理平臺(tái)的數(shù)據(jù)的展示和頁面的操作、跳轉(zhuǎn)等功能。使用基于Python編程語言的Django框架和DRF(Django REST framework)組件來實(shí)現(xiàn)服務(wù)端業(yè)務(wù)邏輯處理并提供Web API,主要實(shí)現(xiàn)了調(diào)度中心、執(zhí)行模塊。使用Django的Model層自帶數(shù)據(jù)庫ORM組件管理數(shù)據(jù),使用MySQL存儲(chǔ)數(shù)據(jù)。使用Nginx+uWSGI部署Web服務(wù)到Linux系統(tǒng)的服務(wù)器上。

        3.1 ?調(diào)度中心的實(shí)現(xiàn)

        如圖6所示,為調(diào)度中心的實(shí)現(xiàn)流程圖。當(dāng)前端界面觸發(fā)接口的Mock執(zhí)行、單接口測(cè)試執(zhí)行、測(cè)試任務(wù)執(zhí)行操作后,調(diào)度中心會(huì)攔截Axios請(qǐng)求,解析、匹配被執(zhí)行接口數(shù)據(jù)中配置的環(huán)境類型,并判斷是否為Mock環(huán)境。如果是,則將請(qǐng)求轉(zhuǎn)發(fā)至Mock服務(wù)器上,調(diào)用Mock執(zhí)行模塊;否則,將請(qǐng)求轉(zhuǎn)發(fā)至真實(shí)服務(wù)器上,調(diào)度測(cè)試執(zhí)行模塊。

        3.2 ?Mock執(zhí)行的實(shí)現(xiàn)

        如圖7所示,為Mock執(zhí)行的實(shí)現(xiàn)流程圖。Mock執(zhí)行模塊被調(diào)度后,將會(huì)在Mock服務(wù)器上完成Mock執(zhí)行功能,本系統(tǒng)中Mock服務(wù)器和系統(tǒng)服務(wù)器共用,因此,訪問Mock服務(wù)器即為訪問系統(tǒng)服務(wù)器,無需做重定向跳轉(zhuǎn)。首先會(huì)解析被攔截請(qǐng)求中的URL,然后查詢接口描述數(shù)據(jù)庫表中被定義的響應(yīng)數(shù)據(jù)模板,解析數(shù)據(jù)模板,生成隨機(jī)模擬數(shù)據(jù),并作為Mock響應(yīng)數(shù)據(jù)返回。隨機(jī)模擬數(shù)據(jù)的生成,使用了開源模擬數(shù)據(jù)生成器Mock.js。此處,復(fù)用了接口定義數(shù)據(jù),無需再次錄入數(shù)據(jù)。

        3.3 ?測(cè)試執(zhí)行的實(shí)現(xiàn)

        如圖8所示,為測(cè)試執(zhí)行的實(shí)現(xiàn)流程圖。測(cè)試執(zhí)行模塊被調(diào)度后,首先會(huì)判斷該次測(cè)試執(zhí)行是否為周期性執(zhí)行。如果是周期性執(zhí)行,則會(huì)先解析測(cè)試任務(wù)中設(shè)置的執(zhí)行開始時(shí)間和執(zhí)行頻次,然后啟動(dòng)定時(shí)器,輪詢檢查啟動(dòng)時(shí)間是否到,如果還沒到啟動(dòng)時(shí)間,則繼續(xù)等待;如果已到啟動(dòng)時(shí)間,則周期性地調(diào)用測(cè)試任務(wù)執(zhí)行單元。定時(shí)任務(wù)的執(zhí)行,使用Python的定時(shí)任務(wù)調(diào)度框架APScheduler中的BackgroundScheduler調(diào)度器實(shí)現(xiàn)。

        如果不是周期性執(zhí)行,則會(huì)直接調(diào)用測(cè)試任務(wù)執(zhí)行單元。首先判斷是否為測(cè)試任務(wù)。如果是測(cè)試任務(wù),則會(huì)生成測(cè)試執(zhí)行隊(duì)列,只要執(zhí)行隊(duì)列不為空,將循環(huán)調(diào)用單次單條測(cè)試用例執(zhí)行單元。否則,生成測(cè)試報(bào)告。測(cè)試任務(wù)執(zhí)行單元的實(shí)現(xiàn),使用Python單元測(cè)試框架unittest編寫和組織測(cè)試用例模板,使用unittest HTML的第三方報(bào)告庫HTMLTestRunner實(shí)現(xiàn)測(cè)試用例的執(zhí)行和測(cè)試報(bào)告的生成。

        如果不是測(cè)試任務(wù),則會(huì)直接調(diào)用單次單條測(cè)試用例執(zhí)行單元。首先,判斷被測(cè)試接口數(shù)據(jù)中配置的環(huán)境是否為測(cè)試環(huán)境,如果是,則將訪問測(cè)試服務(wù)器并返回測(cè)試數(shù)據(jù);否則,將訪問線上服務(wù)器并返回線上數(shù)據(jù)。測(cè)試服務(wù)器的訪問過程,使用Python的HTTP庫Requests來實(shí)現(xiàn)。

        4 ?運(yùn)行結(jié)果分析

        目前,該平臺(tái)已經(jīng)在項(xiàng)目中交付使用,運(yùn)行效果達(dá)到了預(yù)期。筆者從項(xiàng)目中隨機(jī)選取了50個(gè)接口作為樣本數(shù)據(jù)進(jìn)行了對(duì)比分析。如表1所示,為使用該平臺(tái)前后的運(yùn)行結(jié)果分析。

        使用該平臺(tái)前,完成一個(gè)接口的設(shè)計(jì),平均需要10分鐘,其中,約定接口數(shù)據(jù)規(guī)則需要4分鐘,錄入接口數(shù)據(jù)需要6分鐘;完成一個(gè)接口的Mock,平均需要10分鐘,其中,錄入接口數(shù)據(jù)需要5分鐘,Mock需要5分鐘;完成一個(gè)接口測(cè)試,平均需要30分鐘,其中,安裝測(cè)試工具和錄入接口數(shù)據(jù)需要25分鐘,設(shè)計(jì)和執(zhí)行測(cè)試用例需要5分鐘;完成一個(gè)接口的自動(dòng)化測(cè)試,平均需要10分鐘,其中,錄入接口數(shù)據(jù)需要5分鐘,設(shè)計(jì)和執(zhí)行自動(dòng)化測(cè)試用例需要5分鐘。因此,一個(gè)接口的設(shè)計(jì)、Mock、測(cè)試和自動(dòng)化測(cè)試,一共需要60分鐘。

        使用該平臺(tái)后,完成一個(gè)接口的設(shè)計(jì),平均需要10分鐘;完成一個(gè)接口的Mock,節(jié)省了50%的錄入接口數(shù)據(jù)的工作量,僅需要5分鐘;完成一個(gè)接口測(cè)試,節(jié)省了83%的安裝測(cè)試工具和錄入接口數(shù)據(jù)的工作量,僅需要5分鐘設(shè)計(jì)和執(zhí)行測(cè)試用例;完成一個(gè)接口的自動(dòng)化測(cè)試,節(jié)省了50%的錄入接口數(shù)據(jù)的工作量,僅需要5分鐘設(shè)計(jì)和執(zhí)行自動(dòng)化測(cè)試用例。

        由此可見,完成一個(gè)接口的設(shè)計(jì)、Mock、測(cè)試、自動(dòng)化測(cè)試需要的平均總工作量,使用平臺(tái)前為60分鐘/個(gè),使用平臺(tái)后為25分鐘/個(gè)。使用平臺(tái)后與使用平臺(tái)前相比,總工作效率提高了58.33%。

        5 ?結(jié)語

        本文從接口開發(fā)的設(shè)計(jì)、編碼、測(cè)試、維護(hù)工作現(xiàn)狀中進(jìn)行研究和分析,發(fā)現(xiàn)輔助工具和技術(shù)的使用,雖然在一定程度上保障了產(chǎn)品質(zhì)量和提高了工作效率,但也造成了工作重復(fù)、耗時(shí)、難度大、數(shù)據(jù)不易分析的問題。

        針對(duì)這些問題,提出了一個(gè)基于數(shù)據(jù)共享的接口開發(fā)平臺(tái)方案,將現(xiàn)有工具和技術(shù)整合到一個(gè)平臺(tái)中,無需安裝、部署任何工具和環(huán)境,無需具備編程基礎(chǔ),只需使用瀏覽器訪問,就可以使用,解決了工作耗時(shí)、難度大的問題。共享接口設(shè)計(jì)過程中錄入平臺(tái)的數(shù)據(jù),在接口編碼、測(cè)試、維護(hù)過程中,充分復(fù)用接口數(shù)據(jù),無需再次人為錄入,解決了工作重復(fù)問題。數(shù)據(jù)集中存儲(chǔ)、管理,解決了數(shù)據(jù)分散、不易項(xiàng)目分析的問題。平臺(tái)在滿足現(xiàn)有工作要求的同時(shí),降低了工作難度,簡(jiǎn)化了工作流程,進(jìn)一步提高了工作效率,確保了工作的準(zhǔn)確性。同時(shí),也為進(jìn)一步的項(xiàng)目分析提供了數(shù)據(jù)基礎(chǔ)。

        實(shí)驗(yàn)證明,使用該平臺(tái)后整體工作效率提高了58.33%。在實(shí)際項(xiàng)目中的運(yùn)行也達(dá)到了預(yù)期效果,縮短了項(xiàng)目周期,節(jié)省了項(xiàng)目成本,增加了企業(yè)收益。

        對(duì)項(xiàng)目數(shù)據(jù)提供數(shù)據(jù)可視化展示和分析,是接下來的一個(gè)重要優(yōu)化點(diǎn)。同時(shí),隨著版本的迭代,需要進(jìn)行回歸自動(dòng)化測(cè)試的用例數(shù)量越來越多,針對(duì)增量代碼進(jìn)行精準(zhǔn)回歸測(cè)試的需求,已經(jīng)提上了日程。

        參考文獻(xiàn)

        [1] 阮一峰. 理解RESTful架構(gòu)[EB/OL]. 2011[2020-07-01]. http://www.ruanyifeng.com/blog/2011/09/restful.html

        [2] 劉紅衛(wèi). 利用Node.js開發(fā)前后端分離的系統(tǒng)——以圖書館地方文獻(xiàn)系統(tǒng)為例[J]. 天津科技, 2018, 45(07): 67-70.

        [3] 孟祥雙. 前后端分離式WEB應(yīng)用開發(fā)研究[J]. 電子元器件與信息技術(shù), 2019, 3(06): 40-43.

        [4] 萬青. Web系統(tǒng)前后端分離架構(gòu)中的控制器優(yōu)化[J]. 科技經(jīng)濟(jì)導(dǎo)刊, 2019, 27(16): 28-29.

        [5] 周紹景, 應(yīng)杰, 潘宏斌, 等. RESTful架構(gòu)的應(yīng)用研究[J]. 數(shù)字技術(shù)與應(yīng)用, 2018, 36(05): 59-60.

        [6] 王立福, 孫艷春, 劉學(xué)陽. 軟件工程[M]. 北京: 北京大學(xué)出版社, 2009.

        [7] 潘詩瑤, 黃建明. Web應(yīng)用系統(tǒng)中的MOCK測(cè)試技術(shù)[J]. 軟件, 2016, 37(12): 214-218.

        [8] 王建, 羅政, 張希, 等. Web項(xiàng)目前后端分離的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件工程, 2020, 23(04): 22-24.

        [9] 蟲師. Web接口開發(fā)與自動(dòng)化測(cè)試[M]. 北京: 電子工業(yè)出版社, 2017: 4-1.

        [10] 劉國(guó)慶, 汪興軒. 基于Charles錄制會(huì)話的HTTP接口自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2019, 36(06): 7-13.

        [11] 楊夢(mèng)萌, 劉夢(mèng). 接口測(cè)試數(shù)據(jù)生成工具的設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技經(jīng)濟(jì)導(dǎo)刊, 2019, 27(28): 25.

        [12] 孫立哲. 輕量級(jí)接口自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)踐[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2020, 37(01): 27-30+36.

        [13] 張魯珊. 通用接口自動(dòng)化測(cè)試框架設(shè)計(jì)與應(yīng)用[J]. 電子技術(shù)與軟件工程, 2019(06): 49.

        [14] 王娜. 基于python的接口自動(dòng)化測(cè)試框架設(shè)計(jì)[J]. 電腦知識(shí)與技術(shù), 2020, 16(12): 246-248.

        猜你喜歡
        數(shù)據(jù)共享
        淺談天津氣象信息化發(fā)展現(xiàn)狀和發(fā)展趨勢(shì)
        數(shù)字化迎新系統(tǒng)宿舍分配模塊的設(shè)計(jì)與實(shí)現(xiàn)
        網(wǎng)絡(luò)時(shí)代電子文件和檔案管理的探索
        貴州大數(shù)據(jù)產(chǎn)業(yè)發(fā)展戰(zhàn)略理解和實(shí)施建議
        面向海上平臺(tái)機(jī)械電氣設(shè)備的數(shù)據(jù)共享平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
        淺談“營(yíng)配貫通”對(duì)供電企業(yè)的作用
        基于協(xié)同辦公的會(huì)議管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        高校一表通系統(tǒng)建設(shè)探究
        基于SOA架構(gòu)的中學(xué)精細(xì)化管理模式研究
        基于元數(shù)據(jù)映射機(jī)制的異構(gòu)數(shù)據(jù)操作
        国产精品美女久久久久| 日本不卡一区二区三区在线视频| 欧美亚洲精品suv| 亚洲一本到无码av中文字幕| 中文字幕在线久热精品| 久久综合这里只有精品| 亚洲一区二区三区,日本| 人妻av鲁丝一区二区三区| 日韩爱爱网站| 日韩av中文字幕亚洲天| 国产91在线|亚洲| 开心五月激情五月天天五月五月天 | 亚洲国产人成自精在线尤物| 国产美女主播视频一二三区| 国产精品_国产精品_k频道w| 国产精品成人午夜久久| 亚洲av永久青草无码精品| 精品熟女视频一区二区三区国产| 国产乱人对白| 成人免费视频在线观看| 91精品亚洲一区二区三区| 蜜桃视频第一区免费观看| 亚洲娇小与黑人巨大交| 欧美亚洲国产另类在线观看| 中文字幕你懂的一区二区| 日韩精品人成在线播放| 国产精品美女一区二区三区 | 国产av无码专区亚洲awww| 日本高清中文字幕一区二区三区| 久久精品天堂一区二区| 精品久久久少妇一区二区| 中文无码日韩欧| 伊人久久亚洲综合影院首页| 最好的99精品色视频大全在线| 国产a级三级三级三级| 欧美性群另类交| 国产精品一区二区三区蜜臀| 丝袜美腿一区二区国产| 中文字幕无码不卡一区二区三区 | 久久精品国产亚洲超碰av| 中文字幕日韩一区二区三区不卡|