999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

HTTP接口自動化測試方法研究*

2016-10-28 08:27:22楊清玉李金麗陳吉蘭李志偉
網絡安全與數據管理 2016年18期
關鍵詞:信息

楊清玉,李金麗,陳吉蘭,李志偉

(中標軟件有限公司 操作系統測試認證中心,北京 100190)

?

HTTP接口自動化測試方法研究*

楊清玉,李金麗,陳吉蘭,李志偉

(中標軟件有限公司 操作系統測試認證中心,北京 100190)

研究了HTTP接口自動化測試方法,采用Python語言開發代碼,使用Request調用HTTP接口。提出了一種分層結構的自動化測試框架,將接口調用、測試用例和測試數據的代碼分層開發,生成基于HTML的測試報告。提出了兩種解決CSRF Token驗證問題的方案。該方法開發出的自動化測試腳本具有結構清晰、易維護等優點,能夠有效提高測試效率,降低測試成本。

HTTP接口;Python;Request;自動化測試

引用格式:楊清玉,李金麗,陳吉蘭,等. HTTP接口自動化測試方法研究[J].微型機與應用,2016,35(18):22-25.

0 引言

Web業務日趨復雜,系統愈加龐大,版本的發布周期變短,使得Web產品測試的難度極大地提高,工作量也大幅增加[1]。Web產品的測試中非技術性、重復性的測試工作占總的測試工作量比例比較大,因而需要大量的資源來保障Web產品的質量[2-3]。在開發Web產品時,開發過程中一般采用了分層的軟件體系結構,Web頁面通過HTTP協議向接口發送請求,后端處理請求返回結果。由于業務邏輯比較復雜,有著大量的接口,如果使用自動化測試代替手工測試,可以有效提高測試效率,降低測試成本。

1 HTTP協議

圖1 客戶/服務器模式的信息交換過程

超文本傳輸協議(Hyper Text Transfer Protocol, HTTP)是互聯網上應用最為廣泛的一種網絡協議。HTTP是基于請求和響應模式的無狀態應用層協議。其客戶/服務器模式的信息交換過程如圖1所示。信息交換過程分四個部分:建立連接、發送請求信息、發送響應信息和關閉連接[4]。

絕大多數的Web開發都是構建在HTTP協議之上的Web應用。本文所進行的自動化測試的對象為中標軟件有限公司的微云操作系統產品,該產品的Web接口為HTTP協議的接口。針對該接口的自動化測試,筆者采用Python語言進行代碼的開發,使用Request進行HTTP接口的調用。使用Eclipse并安裝PyDev插件作為集成開發環境,在自動化測試框架下開發自動化測試代碼。

2 Python和Request

Python是一個通用目的的編程語言,已經有很多年的發展歷程。這個穩定而成熟的語言是非常高層的、動態的、面向對象的和跨平臺的。Python可以在所有主流的硬件平臺和操作系統上運行。它繼承了傳統編譯語言的強大性和通用性,同時也借鑒了簡單腳本和解釋語言的易用性,語法簡捷清晰、可讀性強、便于維護,并且具有一致性和規律性、豐富的標準庫,以及許多可以很容易在Python中使用的第三方模塊。Python還可以被當做最適合入門程序員掌握的優秀語言,因為它免費、面向對象、擴展性強,同時執行嚴格的編碼標準[5]。

Request對象的作用是與客戶端交互,收集客戶端的Form、Cookies、超鏈接,或者收集服務器端的環境變量。Request對象是從客戶端向服務器發出請求,包括用戶提交的信息以及客戶端的一些信息。客戶端可通過HTML表單或在網頁地址后面提供參數的方法提交數據,然后通過Request對象的相關方法來獲取這些數據。Request的各種方法主要用來處理客戶端瀏覽器提交的請求中的各項參數和選項。

3 自動化測試框架介紹

3.1自動化測試框架設計思想

本文設計的自動化測試框架采用分層結構,依據模塊化、可復用、低冗余等原則,將代碼根據不同的功能分為若干個獨立的模塊,這里將一類模塊稱為一層。每一層都完成自己特定的任務,各層之間根據需要去進行調用。分層思想最先是在軟件開發過程中提出來的。當代碼量小的時候,采用這種模式會增加工作量;但是當代碼量變大時,采用這種模式可以使設計思路清晰,代碼冗余度變低,可擴展性更好,代碼維護更加方便,程序運行效率更高。

3.2自動化測試框架實現

自動化測試框架是由一個或多個自動化測試基礎模塊、自動化測試管理模塊、自動化測試統計模塊等組成的工具集合。本文的自動化測試框架如圖2所示,分為測試環境配置層、接口操作層、測試數據層、測試用例層、測試用例管理層等。每一層都實現自己特定的功能,并提供接口給其他層調用。

圖2 自動化測試框架

Config層:測試環境配置層,存儲測試環境相關設置參數。比如待測環境的IP、主機名、登錄用戶名、密碼等。

TestAPI層:接口操作層,對HTTP接口的調用進行封裝。比如獲取列表信息、添加、刪除、修改等。

TestData層:測試數據層,用于管理測試用例所需要用到的測試數據。Data文件的名稱需要與對應的Test Case名稱一致,以便數據解析。

TestCase層:測試用例層,每一個TestCase類均采用單元測試框架來構造,即每一個TestCase均繼承于unittest.testcase類。在實際的設計中,通過繼承unittest.testcase類,重寫并加入一些方法,從而形成了一個名為BaseTestCase的父類,全部的TestCase的類均繼承自這個父類。

TestSuite層:測試用例管理,包括測試用例執行的級別、每種測試級別對應的測試用例集以及日志記錄級別。

HTMLTestRunner層:測試報告管理模塊,用于生成測試報告,這個報告是基于HTML的,方便瀏覽和統計。

TestCenter層:測試管理層,是整個測試程序的入口。它實現了解析并找出需要執行的測試用例,執行測試用例腳本,并生成測試結果。

4 測試代碼開發

在具體的測試代碼開發過程中,主要編寫TestAPI層、TestCase層和TestData層的代碼。下面詳細介紹這三層代碼開發的模式。

4.1TestAPI層

這一層主要進行HTTP接口的調用。為了實現對接口的調用,首先,需要從項目組獲取圖3所示的接口說明。如果項目組沒有完整的接口說明文檔,可以結合firebug獲取。需要在Firefox瀏覽器中安裝firebug插件,啟用插件后,在瀏覽器上所進行的操作會被記錄下來。

圖3 接口說明

然后,編寫代碼調用HTTP接口。下面以添加用戶的HTTP接口調用代碼為例進行說明。

def addWebUser(self, data):

url=self.base_url+"Web_users/"

data=json.dumps(data)

r=requests.post(url=url,data=data,

headers=self.headers, verify=self.verify)

return {'status_code':r.status_code,

'result':json.loads(r.text)}

由于實際測項目中HTTP接口接收的參數格式和返回的信息是json格式,因此需要導入json模塊,并在調用接口前,使用json.dumps將參數轉換成json格式,對返回信息使用json.loads轉換成字典格式,以便后續使用。

4.2TestCase層

TestCase層用于存放編寫的測試用例,調用TestAPI層的方法??梢詫estCase層與實際的測試用例對應起來。當接口發生變化時,只需修改TestAPI中的代碼,而基本不需要修改或者只需要對TestCase層代碼進行很少量的修改。每一個測試用例用一個類表示,且均繼承自同一個父類BaseTestCase;而BaseTestCase則繼承自unittest.testcase類,所以,TestCase類均具有unittest.testcase類的屬性。在BaseTestCase類中定義了每個測試用例開始執行和結束時的動作以及一些case中用到的公共方法。

TestCase類的代碼包含四個部分:數據和實例初始化、測試環境準備、實際測試代碼、資源回收。代碼結構如下。

class ITC_EditUser_LegalName(BaseTestCase):

′′′

@summary:編輯用戶-用戶名合法

′′′

def setUp(self):

#第一部分——數據和實例初始化

#調用父類方法,獲取該用例所對應的測試數據模塊

self.user=super(self.__class__, self).setUp()

self.user_api=UserAPIs()

self.flag = True

# 第二部分——測試環境準備

#添加用戶

self.user_api.addUser(self.user.add_user)

def test_EditUser_LegalName(self):

#第三部分——實際測試代碼

#編輯用戶

def tearDown(self):

#第四部分——用例執行結束后的資源回收

#刪除用戶

self.user_api.deleteUser(data)

4.3TestData層

測試數據文件均存放在TestData層。每一個測試用例對應的測試數據文件均以.py格式的文件存在,且文件名與測試用例名(TestCase層中的類名)相對應。下面以添加用戶的測試數據文件進行說明。測試數據以變量的形式存在,其中XML格式的內容便于Python裝飾器的使用。

add_user={

"name":"abcd",

"password":"qwer1234"

}

xml_user_name = ′′′

′′′

5 自動化測試執行

5.1測試用例管理

測試用例管理使用XML文件以及對應的解析代碼來實現。測試用例執行的級別可以根據項目需要設置為全用例集、BVT用例集、模塊級用例集、特定用例集等。每種測試級別使用對應的XML文件進行配置和管理。日志級別包括顯示所有日志信息、只顯示錯誤和警告日志信息、顯示調試信息等。

下面以模塊級用例集的XML配置文件為例進行說明。module name為模塊名稱,description為對該模塊的功能描述,filename為該模塊對應的測試用例腳本存放的文件名稱,run為執行標志,如果為True表示執行,如果為False表示不執行。

5.2測試報告生成

測試報告采用unittest單元測試庫擴展的HTMLTestRunner.py,可以生成HTML的自動化測試報告。使用方法如下面代碼所示。

fp=file(result_file, 'wb')

runner=HTMLTestRunner(

stream=fp,

title=u"中標麒麟微云操作系統V2.0-HTTP接口自動化測試報告",

description=(

u"中標麒麟微云操作系統V2.0-HTTP接口自動化測試報告 "

u'測試執行方式:%s' % exec_type

)

自動化測試執行完成后,會在指定的目錄下生成測試報告。報告中顯示測試報告名稱、測試起始時間、測試時長、狀態(包括通過用例數、失敗用例數、錯誤用例數),顯示測試用例列表,可以展開顯示測試用例日志詳情,測試通過的用例綠色顯示,失敗的用例橙色顯示,錯誤的用例(一般是測試腳本有問題)紅色顯示,以便后續可以區分查看和分析。

6 CSRF Token驗證問題解決

跨站請求偽造(Cross-site Request Forgery,CSRF)是一種對網站的惡意利用。由于目標站無token/referer限制,導致攻擊者能以用戶的身份完成操作,達到各種目的。

為了提高Web的安全性,有些Web在提交Ajax請求時需要CSRF Token驗證。如何在調用HTTP接口的頭信息中設置正確的Cookie值,成為自動化測試HTTP接口的難點。筆者在實際項目測試中提出了兩種解決方案,這兩種方案都需要結合Firefox瀏覽器。

6.1通過Firefox瀏覽器獲取

在Firefox瀏覽器中安裝firebug插件,啟用firebug。手動登錄待測Web頁面。查看firebug中登錄操作的【網絡】-【XHR】-【頭信息】-【響應頭信息】-【Set-Cookie】的內容。

腳本流程圖如圖4所示。使用該方法由于需要模擬用戶進行瀏覽器登錄操作,因此需要導入selenium.Webdriver模塊。

圖4 通過Firefox瀏覽器獲取Cookie流程圖

6.2通過Logout接口和Login接口獲取

在Firefox瀏覽器上先手動登錄再退出待測Web頁面。查看Firebug中退出操作的【網絡】-【XHR】-【頭信息】-【請求頭信息】-【Cookie】的內容。

腳本流程圖如圖5所示。該方法相對于通過Firefox瀏覽器獲取的方法,效率更高。

7 結論

本文研究了HTTP接口自動化測試方法,采用Python語言開發代碼,使用Request調用HTTP接口。提出了一種分層結構的自動化測試框架,將接口調用、測試用例和測試數據的代碼分層開發,生成基于HTML的測試報告,方便瀏覽和統計。提出了兩種解決CSRF Token驗證問題的方案,并在實際項目中進行了應用。該自動化測試方法

圖5 通過Logout接口和Login接口獲取Cookie流程圖

開發出的自動化腳本結構清晰,容易維護,有效提高了測試效率,降低了測試成本。

[1] 王會青,馮秀芳. Web應用軟件測試方法的研究[J]. 太原理工大學學報,2007, 38(4):54-57.

[2] 瑁靜,鐘亦平,張世永. 基于協議分析的自動化Web性能測試[J]. 計算機工程,2005, 31(7):66-69.

[3] WASSERMANN G, Yu Dachuan, CHANDER A. Dynamic test input ceneration for Web apllications[J]. ISST’08, July, 2008:20-24.

[4] DOUGLAS E, COMER, DAVID L, 等. 用TCP/IP進行網際互連(第1卷)第4版[M].林瑤,蔣慧,杜蔚軒,譯. 北京:電子工業出版社,1998.

[5] CHUN W J. Python核心編程(第2版)[M]. 宋吉廣,譯. 北京:人民郵電出版社,2008.

陳吉蘭:(1986-),女,碩士,工程師,主要研究方向:軟硬件兼容性測試。

Research on automatic testing method for HTTP interface

Yang Qingyu, Li Jinli, Chen Jilan, Li Zhiwei

(Operating System Test and Certification Center,China Standard Software Co., Ltd., Beijing 100190, China)

An automatic testing method for HTTP interface was investigated. It used Python to develop codes and used Request to call the HTTP Interface. A hierarchical framework for automatic testing was proposed. In this framework, the codes of interface called, test cases and test data were developed separately. It generated test report based on HTML. In this paper, two solutions for the problem of CSRF Token verification were proposed. The automatic testing scripts developed with this method had the advantages of clear structure and easy to maintain. It could effectively improve the efficiency of testing and reduce the cost of testing.

HTTP interface; Python; Request; automatic testing

國家高技術研究發展計劃(863計劃)(2014AA123001)

TP311.5

ADOI: 10.19358/j.issn.1674- 7720.2016.18.006

2016-05-16)

楊清玉(1986-),女,碩士,工程師,主要研究方向:云計算技術、自動化測試技術。

李金麗(1974-),女,學士,高級工程師,主要研究方向:操作系統及相關應用軟件測試及自動化。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 福利一区三区| 尤物视频一区| 亚洲一区无码在线| 亚洲色图欧美一区| 71pao成人国产永久免费视频| 亚洲一欧洲中文字幕在线| 国产成人亚洲欧美激情| 欧洲亚洲一区| 午夜福利在线观看入口| 又黄又湿又爽的视频| 丝袜美女被出水视频一区| 欧美一区精品| 国产精品任我爽爆在线播放6080 | 亚洲国产清纯| 日本欧美中文字幕精品亚洲| 91青草视频| 国产在线精品99一区不卡| 成人一级黄色毛片| 亚洲首页国产精品丝袜| 热久久这里是精品6免费观看| 国产噜噜在线视频观看| 亚洲天堂高清| 欧美精品v欧洲精品| 婷婷在线网站| 天堂岛国av无码免费无禁网站| 欧美性久久久久| 亚洲第一天堂无码专区| 国产精品永久在线| 亚洲第一区在线| 99久久精品免费看国产电影| 国产精品主播| 亚洲动漫h| 亚洲欧洲综合| 91精品国产自产91精品资源| 老色鬼欧美精品| 精品国产免费观看| 国产午夜看片| 在线观看国产黄色| 成人在线亚洲| 九九九国产| 视频一区亚洲| 久久综合色天堂av| 中文成人在线视频| 欧美五月婷婷| 99这里只有精品在线| 久久精品波多野结衣| 免费可以看的无遮挡av无码| 精品伊人久久久香线蕉 | 久久午夜夜伦鲁鲁片无码免费| 亚洲美女一区二区三区| 久久香蕉国产线看精品| av无码一区二区三区在线| 国产成人精品一区二区三区| 欧美视频在线不卡| 久久中文电影| 99re视频在线| 欧美在线视频a| 久久亚洲精少妇毛片午夜无码| 欧美精品成人| 国产美女无遮挡免费视频网站| 999精品在线视频| 四虎综合网| 日本道中文字幕久久一区| 国产成人啪视频一区二区三区 | 麻豆AV网站免费进入| 无码久看视频| 伊人91在线| 99国产精品一区二区| 国产色爱av资源综合区| 中文无码精品a∨在线观看| 亚洲国产天堂久久综合226114| 中文字幕有乳无码| 国产亚洲成AⅤ人片在线观看| 国产男女免费完整版视频| 国产a v无码专区亚洲av| 国产精品自在线拍国产电影| 欧美日韩一区二区三区四区在线观看 | 国产伦片中文免费观看| 亚洲侵犯无码网址在线观看| 性69交片免费看| 97成人在线观看| 久久国语对白|