前言:
隨着產品的快速迭代,自動化測試幾乎已經成為每個測試員都必須掌握的基本技能。大家都知道,產品在開發階段是不適合用自動化,但是當產品趨於穩定狀態,基本功能大體上不會改變的時候,自動化測試就會開始凸顯他的優勢。
這幾個月工作一直在做一個即時通訊的產品(web端,安卓、Ios),產品迭代的速度很快,一周更新2次。每次發布版本,就要保證基本功能是正常的,也就是我們所說的回歸測試,所以我決定要自己搭建一個接口自動化框架,來解決兩個我目前遇到的問題:
1)在開發提交新的接口前進行冒煙測試,以保證系統是能夠正常開展測試的
2)功能測試完成/bug回歸完成后進行回歸測試,保證bug修改完成后沒有引入新的問題
有了這個想法,就要開始行動啦,接下來會把這幾個月的學習和開發過程記錄下來,也算是自己的一個小實戰吧。
1.測試目的
隨着公司項目的不斷增大,接口的服務隨之增多,回歸的任務量越來越大,需要對接口進行定時回歸測試來保證系統的穩定性。
1)在開發提交新的接口前進行冒煙測試,以保證系統是能夠正常開展測試的
2)功能測試完成/bug回歸完成后進行回歸測試,保證bug修改完成后沒有引入新的問題
2.測試方法
目前我們的接口都是使用的http協議,其測試的基本原理是模擬前端(客戶端)向服務器發送數據,得到相應的響應數據,從而判斷接口是否可以正常的進行數據交換。
根據開發人員提供的接口訪問地址、入參格式、請求格式,進行接口請求數據拼接,並查看返回結果及返回報文、響應時間,檢查返回Json內容是否符合接口定義規范,是否符合預期的返回結果。
3.測試框架實現過程
第一階段:
1)基於python的unittest框架,完成單一接口的請求,並封裝成類
2)添加異常處理
第二階段:實現數據與代碼的分離
1)測試用例設計:具體的測試思路在第四部分會提到
2)測試數據放在excel里面,利用openpyxl去讀數據
3)將讀取出來的測試數據用什么類型去存儲?-字典
4)測試數據參數化?-ddt
5)寫回實際結果和測試結果
第三階段:
1)實現用例的可配置
2)日志設計,讓每一步操作都有跡可循
3)生成測試報告-HTMLReport
4)實現持續集成- jenkins
框架結構圖如下:
4.測試思路
首先根據接口文檔,了解清楚被測接口對應的、入參、出參及返回數據的Json 結構規范,根據測試場景進行測試。
1)理解接口參數,熟悉接口參數的輸入要求、輸入值范圍、必填項等;
2)理解接口輸出,熟悉返回json的結構構成、返回值類別、返回值范圍、返回data的不同類型等。
3)理解接口的邏輯、接口的業務關聯,熟悉技術方案中的接口相互關聯、依賴的關系,接口與接口之間的數據傳遞等。
4)尋找測試點,根據輸入(參數名、取值范圍)、輸出(參數名、返回值范圍)、關聯關系,進行測試點分析。
4.1 正常場景測試
嚴格根據接口文檔的定義,提供正確的參數名和參數,測試接口是否正常
4.2 異常場景測試
1)長度限制:如注冊時,輸入少於或大於11位的手機號
2)必填項判斷:必要參數為空,如登錄時,不輸入密碼
3)數據類型判斷:如要求傳入int類型,結果傳入string類型
4)數據正確性的判斷:如登錄時,輸入錯誤的手機號碼
5)重復值判斷:如注冊時,輸入一個已經存在的用戶名
4.3 邏輯場景測試
4.4斷言檢查
檢查接口請求返回的結果是否符合預期的結果:如狀態碼、數據庫判斷、數據值等等。
具體的斷言檢查需要根據業務場景來設定