国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

接口測(cè)試全流程梳理和關(guān)鍵技術(shù)

2020-04-23 11:16張?jiān)?/span>魏強(qiáng)何永江付征
電子技術(shù)與軟件工程 2020年8期
關(guān)鍵詞:測(cè)試工具測(cè)試人員測(cè)試用例

張?jiān)?魏強(qiáng) 何永江 付征

(1.中國(guó)民航信息網(wǎng)絡(luò)股份有限公司 北京市 100000 2.北京市民航大數(shù)據(jù)工程技術(shù)研究中心 北京市 100000)

(3.沈陽民航東北凱亞有限公司 遼寧省沈陽市 110000)

1 引言

根據(jù)研發(fā)中心“松耦合,強(qiáng)管理”的技術(shù)原則,系統(tǒng)內(nèi)各軟件越來越多,各軟件之間通過接口進(jìn)行交互。自2020年開始,研發(fā)中心著力打造PSS 對(duì)外服務(wù)接口體系。因此,接口測(cè)試的需求近期明顯井噴。如何校驗(yàn)字段繁多結(jié)構(gòu)復(fù)雜的接口功能、如何設(shè)計(jì)規(guī)范化的測(cè)試用例、如何實(shí)現(xiàn)回歸測(cè)試是接口測(cè)試中的三大難點(diǎn)。

2 接口測(cè)試現(xiàn)狀

在2018年對(duì)Service API(簡(jiǎn)稱SAT)接口的測(cè)試過程中,我們發(fā)現(xiàn),手工測(cè)試存在報(bào)文拼接出錯(cuò)率高、字段覆蓋不全等諸多風(fēng)險(xiǎn)。經(jīng)研究,可以通過報(bào)文自動(dòng)化拼接的方式來實(shí)現(xiàn)接口的自動(dòng)化測(cè)試。

自動(dòng)化測(cè)試能大大減少人工投入、顯著提高工作效率。但是,由于自動(dòng)化測(cè)試的學(xué)習(xí)成本比較高,所以接口測(cè)試的自動(dòng)化目前還沒有大規(guī)模推廣和普及。本文通過讀取接口文檔、自動(dòng)生成字段結(jié)構(gòu)測(cè)試用例和字段校驗(yàn)用例等技術(shù)手段,使接口的自動(dòng)化測(cè)試流程化、工具化,從而達(dá)到減少學(xué)習(xí)成本、提高工作效率的目的。

3 接口測(cè)試全流程梳理

3.1 接口測(cè)試原理

接口,Application Programming Interface(API),在軟件領(lǐng)域泛指不同功能之間的交互通信部分。接口測(cè)試,一般與頁面測(cè)試進(jìn)行區(qū)分,是直接測(cè)試接口功能的一種測(cè)試類型。通過軟件測(cè)試的理論和方法去測(cè)試接口,找出接口的功能缺陷,從而驗(yàn)證服務(wù)端是否滿足了它所提供的服務(wù)。

3.2 接口測(cè)試流程介紹

接口測(cè)試流程根據(jù)軟件項(xiàng)目所采用的開發(fā)模式而略有不同,通常的測(cè)試流程如下:

(1)接口文檔分析;

(2)接口用例設(shè)計(jì);

(3)用例評(píng)審;

(4)接口測(cè)試環(huán)境搭建;

(5)接口用例執(zhí)行;

(6)缺陷提交;

(7)回歸測(cè)試;

(8)測(cè)試報(bào)告和交付物提交。

3.3 接口測(cè)試用例設(shè)計(jì)方法

圖1:Jenkins 自動(dòng)部署設(shè)置

圖2:自動(dòng)執(zhí)行時(shí)間設(shè)置

接口測(cè)試總體分為功能和非功能的測(cè)試。非功能方面一般需要測(cè)試接口的性能、安全方面,功能測(cè)試需求根據(jù)軟件測(cè)試的理論方法進(jìn)行用例的設(shè)計(jì)。常見的測(cè)試設(shè)計(jì)如下:

3.3.1 性能測(cè)試

(1)響應(yīng)時(shí)間;

(2)吞吐量;

(3)并發(fā)數(shù);

(4)服務(wù)器資源使用率(CPU、內(nèi)存、IO、網(wǎng)絡(luò)等)。

3.3.2 安全測(cè)試

(1)敏感信息是否加密;

(2)傳輸過程是否加密;

(3)日志系統(tǒng);

(4)惡意請(qǐng)求測(cè)試;

(5)SQL 注入測(cè)試。

3.3.3 功能測(cè)試

(1)業(yè)務(wù)功能測(cè)試(正向場(chǎng)景、反向場(chǎng)景、錯(cuò)誤場(chǎng)景);

(2)邊界分析測(cè)試(業(yè)務(wù)規(guī)則邊界、參數(shù)邊界);

(3)參數(shù)組合測(cè)試;

(4)異常情況測(cè)試(系統(tǒng)異常、網(wǎng)絡(luò)異常、重復(fù)請(qǐng)求、分布式測(cè)試、事務(wù)測(cè)試等)。

圖3:自動(dòng)執(zhí)行腳本設(shè)置

圖4:自動(dòng)發(fā)送結(jié)果郵件

圖5:查看結(jié)果

圖6:重點(diǎn)標(biāo)紅失敗的接口

3.4 接口用例執(zhí)行

對(duì)于接口用例的執(zhí)行,可以根據(jù)測(cè)試人員的能力選擇適合的測(cè)試方式,不同的測(cè)試方式會(huì)有效率、質(zhì)量上的差異。本文列舉了業(yè)界應(yīng)用最廣泛的3 種方式:

3.4.1 工具測(cè)試

常見的工具有SoapUI、Postman、Jmeter,采用工具測(cè)試對(duì)測(cè)試人員的能力要求較低,但是測(cè)試過程會(huì)由于測(cè)試工具的局限性而受到影響,如果測(cè)試工具不支持則不能滿足測(cè)試的特殊要求。

3.4.2 代碼測(cè)試

對(duì)測(cè)試人員有較高的代碼能力要求,測(cè)試通過編寫程序代碼來構(gòu)造自己的測(cè)試框架,并且可以根據(jù)自身的需求隨意的擴(kuò)展代碼,可以打造出完全符合需求的測(cè)試程序。

3.4.3 平臺(tái)測(cè)試

適用于較大型的軟件項(xiàng)目,項(xiàng)目組有測(cè)試開發(fā)人員專門編寫統(tǒng)一的、適合本項(xiàng)目或者本公司需求的接口測(cè)試平臺(tái)。如此打造的接口平臺(tái)可以不斷迭代功能,從而滿足層出不窮的需求,且對(duì)執(zhí)行測(cè)試的人員沒有較高的代碼能力要求。

圖7:抓取接口頁面的接口信息

3.5 中航信Service API項(xiàng)目接口測(cè)試實(shí)例

3.5.1 測(cè)試工具

由于項(xiàng)目組初期人員較少,測(cè)試人員沒有較強(qiáng)代碼能力,經(jīng)項(xiàng)目組研究選擇了SoapUI 作為測(cè)試工具。SoapUI 本身有著強(qiáng)大的接口測(cè)試功能和良好的用例管理功能,并且可以通過腳步插入的方式進(jìn)行功能擴(kuò)展,可以滿足SAT 的絕大部分測(cè)試需求。

圖8:生成SoapUI 格式的全字段請(qǐng)求

3.5.2 測(cè)試用例生成

使用Python 編寫工具從網(wǎng)頁版的API 文檔中抓取信息、生成請(qǐng)求并整合成SoapUI 的Test Suite 文件,根據(jù)接口逐一生成Test Suite 文件作為測(cè)試用例。技術(shù)細(xì)節(jié)請(qǐng)見第4 章。

圖9:生成SoapUI Test Suit

3.5.3 測(cè)試執(zhí)行

使用soapUI 工具導(dǎo)入生成的Test Suite,再在工具中進(jìn)行點(diǎn)擊、執(zhí)行。

3.5.4 回歸測(cè)試

將測(cè)試過的Test Suite 放在Git 倉庫中,使用Jenkins 集成測(cè)試環(huán)境、測(cè)試腳本,并在Jenkins 中設(shè)置每天早上自動(dòng)執(zhí)行Test Suite中的用例,自動(dòng)生成報(bào)告發(fā)送給相關(guān)人員。如圖1 至圖6 所示。

4 關(guān)鍵技術(shù)研究

4.1 使用測(cè)試工具

(1)SoapUI(開源接口測(cè)試工具);

(2)Python(測(cè)試程序開發(fā)工具),按照如下模塊:

1.bs4

2.Paramiko

3.ElementTree

4.2 程序概要設(shè)計(jì)

程序分為如下四部分:

(1)按照接口的url 地址,抓取頁面,返回接口信息;

(2)根據(jù)抓取接口,生成SoapUI 格式的全字段請(qǐng)求;

(3)步驟(1)和(2)的內(nèi)容,生成包含接口全部必填校驗(yàn)和字段內(nèi)容校驗(yàn)的Test Suit,供導(dǎo)入SoapUI 后自動(dòng)執(zhí)行:

1.根據(jù)接口信息,生成必填字段校驗(yàn),和字段內(nèi)容校驗(yàn)的正、反用例測(cè)試點(diǎn)和對(duì)應(yīng)的斷言;

2.必填字段測(cè)試請(qǐng)求和斷言:如是普通字段,則從全字段請(qǐng)求中移除此字段,如是數(shù)組中的一個(gè)元素,則清空此數(shù)組;

3.字段內(nèi)容校驗(yàn)測(cè)試請(qǐng)求和斷言:生成此字段的參數(shù)化soapUI請(qǐng)求,自動(dòng)為參數(shù)化字段分配此字段校驗(yàn)規(guī)則對(duì)應(yīng)的測(cè)試數(shù)據(jù),根據(jù)數(shù)據(jù),生成此soapUI 請(qǐng)求的斷言;

4.全部請(qǐng)求按照soapUI 的Test Suit 格式生成為一個(gè)xml 文件,供SoapUI 導(dǎo)入使用。

4.3 程序詳細(xì)設(shè)計(jì)

4.3.1 抓取接口頁面的接口信息

實(shí)現(xiàn)思路:

(1)Python 中著名的第三方庫BeautifulSoup 可以用于解析網(wǎng)頁;

(2)Confluence 頁面的授權(quán),可以通過http 訪問登錄頁面后保存cookie,使用cookie 驗(yàn)證以減少認(rèn)證時(shí)間;

(3)通過標(biāo)題名稱,控制訪問的頁面區(qū)間,通過輸入?yún)?shù)["req","res"],確定返回頁面的請(qǐng)求信息還是返回信息;

(4)把搜索到的信息,按照字典格式返回,共后續(xù)程序使用。

抓取接口頁面的接口信息如圖7 所示。

4.3.2 生成SoapUI 格式的全字段請(qǐng)求

實(shí)現(xiàn)思路:

(1)獲取到接口信息后,使用ElementTree,逐級(jí)構(gòu)造XML請(qǐng)求。

(2)若JSON 請(qǐng)求格式不能直接通過XML 轉(zhuǎn)換,需要按照如下步驟轉(zhuǎn)換:

1.讀取接口字典;

2.遍歷XML 請(qǐng)求,結(jié)合接口字段,判斷當(dāng)前節(jié)點(diǎn)類型:是普通接口,直接轉(zhuǎn)換,同時(shí)需要注意值類型的轉(zhuǎn)換;該節(jié)點(diǎn)下包含其他節(jié)點(diǎn),則此節(jié)點(diǎn)創(chuàng)建為數(shù)組結(jié)構(gòu),如A 字段,轉(zhuǎn)換為A:[],此節(jié)點(diǎn)下的結(jié)節(jié),不填寫名稱,而向此數(shù)組中添加值即可。

生成SoapUI 格式的全字段請(qǐng)求如圖8 所示。

4.3.3 生成SoapUI Test Suit

實(shí)現(xiàn)思路:

(1)使用此接口的全報(bào)文字段,作為后續(xù)請(qǐng)求生成的基礎(chǔ);

(2)解析全報(bào)文信息,可以把報(bào)文按照TestSuit,TestCase,Json 請(qǐng)求,XML 請(qǐng)求,參數(shù)設(shè)置、斷言這幾部分;

(3)通過Confluence 上的接口文檔,可以獲取每個(gè)請(qǐng)求字段的屬性,是否必填,類型,父節(jié)點(diǎn)等信息;

(4)對(duì)于屬性的校驗(yàn),可以通過程序自動(dòng)生成有效,無效等價(jià)類或者文件的方法,生成對(duì)應(yīng)的用例和斷言;

(5)對(duì)于M 字段的校驗(yàn),可以通過程序,自動(dòng)從全字段報(bào)文中,去除此字段,然后添加對(duì)應(yīng)的用例和斷言;

(6)這個(gè)腳本,其實(shí)是要給文本處理腳本,使用Python 抓取接口請(qǐng)求信息后,使用請(qǐng)求信息中內(nèi)容,生成符合SoapUI 接口要求的XML 文檔。

生成SoapUI Test Suit 如圖9 所示。

5 總結(jié)

通過對(duì)接口測(cè)試全流程、用例設(shè)計(jì)以及接口自動(dòng)化技術(shù)等的梳理,SAT 測(cè)試人員對(duì)相關(guān)的流程、范圍和方法等都有了全面深入的了解,能設(shè)計(jì)出更完善的測(cè)試用例,提高了測(cè)試質(zhì)量。此外,關(guān)鍵技術(shù)的研究,使得測(cè)試流程自動(dòng)化正逐步取代手工操作,大大提高了測(cè)試效率。同時(shí),隨著研究的深入和技術(shù)的不斷加強(qiáng),測(cè)試人員已經(jīng)有能力優(yōu)化測(cè)試流程,從而形成了雙向拉動(dòng)的良性循環(huán)。經(jīng)過一年的不斷實(shí)踐和改進(jìn),測(cè)試用例的平均設(shè)計(jì)時(shí)間已從3 天縮至1天,測(cè)試執(zhí)行效率提高了30%,接口的回歸測(cè)試周期也大大縮短。

接下來,將在工作中做更加全面的改進(jìn)和提升,使接口測(cè)試流程更加順暢、用例設(shè)計(jì)更加完善、自動(dòng)化程度更加提高,以進(jìn)一步提高接口測(cè)試的質(zhì)量和效率。

猜你喜歡
測(cè)試工具測(cè)試人員測(cè)試用例
基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
Http并發(fā)連接測(cè)試工具
基于混合遺傳算法的回歸測(cè)試用例集最小化研究
高校分析測(cè)試中心測(cè)試隊(duì)伍建設(shè)方案初探
手車式真空斷路器回路電阻測(cè)試電流線接頭研究
福祿克推出先進(jìn)的連接式測(cè)試工具系統(tǒng)
基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
犯罪心理測(cè)試人員素質(zhì)要求分析
軟件回歸測(cè)試用例選取方法研究
永定县| 泸定县| 彭泽县| 阳谷县| 依安县| 卓尼县| 溆浦县| 托克托县| 偏关县| 龙里县| 汤原县| 南江县| 肇源县| 来宾市| 阿图什市| 永安市| 城步| 忻城县| 扶风县| 安溪县| 水城县| 芦山县| 鹿邑县| 寻乌县| 西平县| 永康市| 龙江县| 清徐县| 乐亭县| 宁陕县| 镇平县| 方山县| 吴旗县| 靖安县| 金平| 莱州市| 乌兰浩特市| 沁水县| 苏尼特左旗| 绵阳市| 轮台县|