針對此種情況,選用介面測試較為有效。
針對介面測試的自動化工具也很多,例如soup ui、postman、robotframework,甚至jmeter這樣的效能測試工具都可以進行介面測試。
robotframework測試框架有很多的第三方庫可以使用,採用的是填表的方式進行,較容易上手,但是無法深入底層的了解客戶端與伺服器的互動過程。jmeter這樣的專注效能測試的工具,進行介面測試,有點大材小用的感覺而且無法生成測試報告。但是這些工具靈活性不夠,也不完全適用於被測系統。
綜上考慮,決定自己開發乙個簡單的框架,優點是足夠靈活,可以隨時根據需求進行變更,後台使用的是python+flask進行開發,此次選用python 2.7.11進行框架的開發,python開發的速度很快,且容易上手,豐富的第三方庫,大大加快了開發速度和難度。
由於是框架,所以要考慮到框架的可重用性和可維護性。
其次,需要考慮到測試人員編寫測試用例的方便性,採用資料驅動的設計方式,將資料分層出來,與業務邏輯剝離。這樣測試人員就可以通過資料檔案專注的寫測試用例,不用關注**編寫,提高了效率。此次框架採用基本的excel進行資料管理。通過對excel 的讀取獲得資料。
之後將測試的結果生成html格式的測試報告傳送給相關開發人員。
requests
python中有許多針對http的庫,例如自帶的urllib2,但是自帶的urllib2編寫起來實在是太費精力,所以採用號稱"http forhumans"的requests庫。xlrd
xlrd使得python可以方便的對excel檔案進行讀寫操作,此次通過xlrd讀取excel檔案中的測試資料。get_conf:
讀取配置檔案,獲得郵件傳送的配置資訊,如smtpserver、receiver、sender等。md5encode:
部分資料採用md5加密後傳輸,所以需要把從excel讀取的資料進行md5加密。sendmail:
當測試完成後,將測試報告自動的傳送給相關開發人員。runtest:
此部分讀取excel中的資料,呼叫下方的inte***cetest方法,儲存inte***cetest返回的資訊。inte***cetest:
將runtest讀取的excel資料作為入參,執行介面測試,並將後台返回的資訊返回給runtestexcel的檔案格式如下圖,api purpose記錄介面的名稱,api host記錄主機位址,request methon記錄請求方式,可以選擇get或者post。
request data就是構造的測試資料,這裡需要注意其格式的書寫。
check point是檢查點的設定,當獲得資料後,需要跟檢查點的資料進行比對,如果符合,說明測試成功,反之失敗。
配置檔案的格式如下圖:
在這裡可以設定郵件傳送人、接收者、smtp伺服器位址以及使用者名稱密碼。需要根據實際情況進行改變。
由於所有的操作必須在系統登入之後進行,一開始沒有注意到cookie這一點,每讀取乙個測試用例,都會新建乙個session,導致無法維護上一次請求的cookie。然後將cookie新增入請求頭中,但是第二個用例仍然無法執行成功。後來用fiddler抓包分析了一下,發現cookie的值竟然是「每一次操作後都會變化的!!!」
所以只能通過session自動維護cookie。
在inte***cetest函式中,返回三個值,分別是http code,http返回值與session。再將上一次請求的session作為入參傳入inte***cetest函式中,在函式內部判斷session是否存在,如果不為none,那麼直接利用傳入的session執行下乙個用例,如果為none,那麼新建乙個session。
1. 框架十分簡陋,只是簡單想法的實現,對於編碼的細節沒有完善。
2. html的測試報告書寫起來比較麻煩,可以考慮引入第三方庫進行html測試報告的書寫,將生成的html檔案作為附件傳送。
3. 只是針對公司內部的軟體,換用其他平台就不適用,需要修改原始碼。
robot framework 介面自動化測試
介面測試比ui測試更有價值,如果專案時間緊張,測試介面更好一些,但每次都頻繁的手工填寫介面進行測試也浪費時間,下面給大家介紹一下很好的自動化測試框架robot framework,並且做介面自動化測試事半功倍。其返回值驗證和與資料庫連線進行增刪改查很方便,邏輯也很嚴謹,如果公司沒有造輪子推薦這麼做。...
Robotframework 介面自動化測試
1.目的 1 以雲平台為例 實現註冊 登入 更新apikey 新增專案 新增裝置 新增感測器 新增執行器 感測器每隔3s上報一次資料 1分鐘後與雲平台主動斷開連線的介面自動化測試。2 斷言每條用例是否執行成功。3 程式不管執行多少次都不報錯。2.robotframework環境搭建 1 安裝pyth...
python requests介面自動化測試 一
python requests環境部署 1.安裝python,配置系統環境變數 4.安裝requests庫 pip install requests 在進行介面自動化測試時,常用到的幾個requests庫方法。如下 get 不帶引數的請求 n requests.get 帶引數的請求 引數是以字典的形...