自動化始終只是輔助測驗作業的一個手段,對于測驗人員而言,測驗基礎和測驗用例的設計才是核心,如果測驗用例的覆寫率或者質量不高,那將這部分用例實作為自動化用例的意義也就不大了,
那么,介面測驗用例應該怎么撰寫呢?
1、介面測驗
介面: 主要是子模塊或者子系統間互動并相互作用的部分,
這里說的介面是廣義的,客戶端與后臺服務間的協議;插件間通信的介面;模塊間的介面;再小到一個類提供的方法;都可以理解為介面,因此,可以分析,系統間的介面包含三部分:輸入、處理邏輯、輸出,
介面測驗: 是指標對模塊或系統間介面進行的測驗,
2、應該怎么分析一個介面?
獲取介面檔案: 和黑盒測驗一樣,我們是從需求檔案中去挖掘測驗點,設計測驗用例,對于介面測驗,同樣是有對應的介面檔案的,
分析介面檔案,提取測驗點:
1)輸入: 接受哪些引數、引數的型別、可選引數和必選引數等;根據輸入引數采用等價類、邊界值分析法等進行設計;
2)業務邏輯:對于一個介面,不同的輸入引數或組合,流程或狀態的轉移是不同,可以根據業務邏輯畫出流程圖或狀態轉移圖,確保每種狀態至少被訪問了一次;
3)輸出:根據檔案規定的輸出,反向設計測驗資料,使所有的輸出狀態都被包含了;
測驗用例: 同時對輸入、業務邏輯、輸出進行考慮時,肯定會存在用例的冗余,在最大限度覆寫業務功能和規則下,選取最優用例集合,同時,需要考慮例外資料和場景,
3、怎么確定用例的覆寫率?
在沒有特殊要求的情況下,至少需要考慮以下內容:
1)業務功能覆寫是否完整
2)業務規則覆寫是否完整
3)引數驗證是否達到要求(邊界、業務規則)
4)介面例外場景覆寫是否完整
如果介面需求還包含性能或者安全要求,還要對介面進行性能測驗和安全測驗,就需要考慮:性能指標是否滿足要求、安全指標是否滿足要求,
4、介面測驗發現的典型問題
介面測驗經常遇到的bug和問題,如下:
(1)傳入引數處理不當,導致程式crash;
(2)型別溢位,導致資料讀出和寫入不一致;
(3)因物件權限未進行校驗,可以訪問其他用戶敏感資訊;
(4)狀態處理不當,導致邏輯出現錯亂;
(5)邏輯校驗不完善,可利用漏洞獲取非正當利益等,
5、如何撰寫介面測驗用例?
創建介面測驗用例:
/home/csg/pyrequest-master/interface/add_event_test.py



對上述代碼進行分析:
1、在介面測驗之前,呼叫test_data.py檔案中的init_data()方法,初始化資料庫中的測驗資料;
2、創建AddEventTest測驗類,繼承unittest.TestCase類;
3、創建測驗用例,呼叫添加發布會介面,并驗證介面回傳的資料;
注意:
1、把JSON格式的結果轉化為字典賦值給self.result變數,加self的目的是在tearDown()方法中列印self.result變數,列印的結果可以在測驗報告中顯示,即將介面回傳資料列印出來;
2、如果不使用self,又想在報告中顯示每個介面回傳資料,就只能是在每個用例中print出result,相比來說,還是第一種方法比較方便,
集成測驗報告
當用例數量較多,就需要分類管理和執行,為解決這個問題,unittest單元測驗框架提供了discover()方法,然后再適用HTMLTestRunner生成HTML格式的測驗報告,
創建/home/csg/pyrequest-master/interface/run_tests.py檔案:

對上述代碼進行分析:
1、還是先呼叫test_data.py檔案中的init_data()函式來初始化測驗資料;
2、unittest框架提供的discover()方法查找interface目錄下,匹配到檔案名*_test.py結尾的測驗檔案;
3、now按一定格式生成當前時間;
4、將檔案名命名為now當前時間_result.html并且保存report目錄下;
5、HTMLTestRunner為unittest單元測驗框架的擴展,利用它提供的HTMLTestRunner()類來代替unittest單元測驗框架的TextTestRunner()類,運行discover中匹配到的測驗用例,生成HTML格式的測驗報告;
運行測驗腳本:python run_tests.py:
1、可能需要安裝configparser庫,pip install configparser;
2、在運行程序中,出現了錯誤:

應該是資料表里create_time欄位需要一個默認值,于是修改test_data.py檔案,給每個測驗資料都增加create_time默認值為當前時間,再次運行就沒有這個錯誤了;
3、但是繼續執行又出現了錯誤:

問了下度娘,應該是讀取檔案的時候使用的是ASCII編碼,而不是utf-8,自己多余,在每個測驗用例的開頭都增加了-*- coding:utf-8 -*-,畫蛇添足了,去掉后再次運行就沒這個錯誤了;
4. 但是運行結果全部是failed的,查看具體的error資訊:

原來還是要在每個測驗資料前加上utf-8編碼的宣告,但是每個用例的注釋資訊不能是中文,奇怪了,沒深入研究,反正都修改為英文后,再次運行成功了,
完整的自動化測驗報告如下圖所示:

6、總結
其實,作者自己完全的封裝了一個類似Robot的工具,這個好處是拋開了框架的束縛,可以自由的撰寫測驗用例的內容,只要是python的代碼,就可以采用這個工具,自由發揮測驗內容,并且結果的展示也比較豐富和友好,如果不打算研究Robot的,其實可以用這個工具,
在這里推薦一個我自己創建的軟體測驗交流群,QQ:735745871,群中會不定期的分享軟體測驗資源,測驗面試題以及測驗行業資訊,大家可以在群中積極交流技術,還有大佬為你答疑解惑,
?轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550451.html
標籤:其他
