介面自動化測試是個啥?如何開始?什麼是框架?帶你揭開神秘面紗

来源:https://www.cnblogs.com/caituotuo/archive/2022/05/21/16296668.html
-Advertisement-
Play Games

轉載請註明出處❤️ 作者:IT小學生蔡坨坨 原文鏈接:https://www.caituotuo.top/a3a8d0c0.html 大家好,我是IT小學生蔡坨坨。 今天,我們來聊聊介面自動化測試是什麼?如何開始?介面自動化測試框架怎麼做? 自動化測試 自動化測試,這幾年行業內的熱詞,也是測試人員進 ...


轉載請註明出處❤️

作者:IT小學生蔡坨坨

原文鏈接:https://www.caituotuo.top/a3a8d0c0.html


大家好,我是IT小學生蔡坨坨。

今天,我們來聊聊介面自動化測試是什麼?如何開始?介面自動化測試框架怎麼做?

自動化測試

自動化測試,這幾年行業內的熱詞,也是測試人員進階的必備技能,更是軟體測試未來發展的趨勢。

特別是在敏捷模式下,產品迭代速度快,市場不斷調整,客戶需求不斷變化,單純的手工測試越來越無法適應整個變化過程(迭代快,加班多)。測試人員如何快速響應並保證產品在上線後的質量能夠滿足市場要求(如何在上線一個新功能的同時快速對舊功能快速進行回歸,保證舊功能不被新功能影響而出現嚴重的Bug?)。

針對以上問題,採用自動化測試無疑是一個不錯的選擇,能夠做到在保證產品質量的同時提升測試效率

隨著行業內捲越來越嚴重,對於測試崗位的要求也是水漲船高,崗位招聘要求都會出現自動化測試的字眼,因此也是我們跳槽面試、升職加薪必備利器。

自動化測試又可分為介面自動化、Web UI自動化、App自動化,今天我們就來聊聊介面自動化測試。

介面自動化測試的價值

  1. 相比於UI自動化測試,介面自動化的維護成本更低,主要體現在以下幾個方面
    • 分層測試金字塔模型中,介面測試屬於第二層服務集成測試,與UI自動化測試相比,介面自動化測試收益更大、更容易實現、維護成本更低,有更高的投入產出比,因此是公司開展自動化測試的首選。
    • 前端頁面變化快,而且UI自動化比較耗時,比如等待頁面元素載入、添加等待時間、定位元素、操作元素、模擬頁面動作這些都需要時間,因此UI自動化實施起來比較困難。
    • 介面較穩定,介面的響應時間基本上都是秒級、毫秒級別,速度快,並且介面自動化本身也可以做一些有關聯的操作、全流程的操作,比如:註冊 --> 登錄 --> 修改個人信息。
  2. 測試復用性
  3. 快速回歸(提高回歸的覆蓋率、效率、穩定性)
  4. 可以運行更多更繁瑣的測試,自動化的一個明顯的好處是可以在較少的時間內運行更多的測試

介面自動化測試如何開展

工具選擇

  • Python/Java + Requests + Unittest/Pytest + HTMLTestRunner/Allure
  • RobotFramework:關鍵詞驅動的自動測試框架
  • 基於Web的自動化測試平臺(公司自主研發,成本較高,方便不懂編程也能使用)

自動化測試工具有很多,每種工具都有各自的優缺點,選擇適合自身實際情況的框架,落地實施才是重點,具體選擇哪種工具放在其他文章再說。

這裡使用Python + Requests + Pytest + Allure

舉個慄子

介面文檔(找了一個開放的介面用於測試)

介面信息:

名稱:全國高校信息查詢介面
描述:用於查詢全國高校信息
Host: www.iamwawa.cn
Request URL:/home/daxue/ajax
Request Method:POST
Content-Type: application/x-www-form-urlencoded
headers:user-agent:Chrome

參數:

名稱 類型 是否必填 描述
type String name,根據名稱查詢
keyword String 高校名稱,如:四川輕化工大學

請求示例:

POST /home/daxue/ajax HTTP/1.1
Host: www.iamwawa.cn
user-agent: Chrome
Content-Type: application/x-www-form-urlencoded
Cookie: PHPSESSID=sjsrn0drje6ds5fq9kouoo2r23
Content-Length: 54

type=name&keyword=四川輕化工大學

響應示例:

{
    "status": 1,
    "info": "查詢成功!",
    "data": [
        {
            "id": "2181",
            "name": "四川輕化工大學",
            "code": "4151010622",
            "department": "四川省",
            "city": "自貢市",
            "level": "本科",
            "remark": ""
        }
    ]
}
線性腳本
import requests

res = requests.post(url="https://www.iamwawa.cn/home/daxue/ajax",
                    headers={"user-agent": "Chrome"},
                    data={"type": "name", "keyword": "四川輕化工大學"})
assert res.status_code == 200
res_json = res.json()
print(res_json)
assert res_json["status"] == 1

使用以上代碼,最基礎最簡單的介面測試就做起來了,好的開始就是成功的一半。

但是,問題也隨之而來,線性腳本的缺點也暴露出來了:

  1. 測試的輸入和斷言都是捆綁在腳本中,易讀性差
  2. 無共用或重用腳本,可復用性低
  3. 線性腳本修改代價大,維護成本高,不便於後期優化
  4. 容易受軟體變化的影響,容易受意外事件的影響,引起整個測試失敗

所以,下一步就是如何優化線性腳本,也就是如何實現代碼的高內聚低耦合,也是介面自動化測試框架要解決的問題。

介面自動化測試框架

GitHub:https://github.com/itcaituotuo/api_auto_framework

  • base_api.py:對介面測試框架Requests進行二次封裝,完成對api的驅動

  • api:繼承base_api,將http請求介面封裝成Python方法

  • utils:CommonUtil,公共模塊,將一些公共函數、方法以及通用操作進行封裝,如:日誌模塊、yaml操作模塊、時間模塊

  • config:配置文件模塊,配置信息存放,如:URL、Port、Headers、Token、資料庫信息等

  • data:測試數據模塊,用於測試數據的管理,數據與腳本分離,降低維護成本,提高可移植性,如:yml文件數據

  • cases:測試用例模塊,用於測試用例的管理,這裡會用到單元測試框架,如:Pytest、Unittest

  • run.py:批量執行測試用例的主程式,根據不同需求不同場景進行組裝,遵循框架的靈活性和擴展性

  • logs:日誌模塊,用於記錄和管理日誌,針對不同情況,設置不同的日誌級別,方便定位問題

  • reports:測試報告模塊,用於測試報告的生成和管理,如:基於Allure生成的定製化報告


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分享嘉賓:牟娜 阿裡巴巴 高級演算法工程師 編輯整理:孫鍇 內容來源:DataFun AI Talk《定向廣告新一代點擊率預估主模型——深度興趣演化網路》 出品社區:DataFun 導讀: 本次帶給大家分享是阿裡媽媽在2018年做的模型上的創新——深度興趣演化網路(Deep Interest Evol ...
  • 一、概述 Oozie是一個基於工作流引擎的開源框架,依賴於MapReduce來實現,是一個管理 Apache Hadoop 作業的工作流調度系統。是由Cloudera公司貢獻給Apache的,它能夠提供對Hadoop MapReduce和Pig Jobs的任務調度與協調。Oozie需要部署到Java ...
  • B+樹索引的正確使用 索引並不是越多越好,索引創建越多,MySQL維護的代價越高,如果SQL未能完全使用到索引,創建索引的意義是不大的。 適用條件 表x,創建索引a,b,c。主鍵y。 全值匹配 select * from x where a = '' and b = '' and c = '' 當我 ...
  • 導讀: 線上社交媒體平臺的發展,帶來了細粒度檢索、視頻語義摘要等媒體智能服務的巨大需求。現有的視頻理解技術缺乏深入的語義線索,結合視頻中人物的社交關係才能更完整、準確地理解劇情,從而提升用戶體驗,支撐智能應用。這裡主要介紹我們將動態分析和圖機器學習相結合,圍繞視頻中的人物社交關係網路所開展的兩個最新 ...
  • 問題描述:發現主庫操作數據從庫沒有變動問題,可能原因是從庫重啟導致的無法同步問題。 排查思路: 1、查看主從複製狀態 發現從庫的IO和SQL進程都是no(正常狀態應該是yes) 註意:mysql replication中slave機器上有兩個關鍵進程,死一個都不行,一個是slave_sql_runn ...
  • Toolbar 新建項目會預設顯示ActionBar,ActionBar根據項目指定的主題來顯示,android:theam指定主題,在res/values/theams.xml中定義主題,因為用toolbar代替ActionBar,所以將parent主題設置為不帶ActionBar的主題,如下: ...
  • 在瀏覽器測試JavaScript的方法 JSFiddle Cross Browser Testing Tool Karam + Jasmine + Google Chrome CodePen JSBin Liveweave 測試JavaScript是一件很痛苦的事情。很多工具、技術和框架已經被開發出 ...
  • 摘要:本篇我們將以分析歷史股價為例,介紹怎樣從文件中載入數據,以及怎樣使用NumPy的基本數學和統計分析函數、學習讀寫文件的方法,並嘗試函數式編程和NumPy線性代數運算,來學習NumPy的常用函數。 一、文件讀入 :讀寫文件是數據分析的一項基本技能 CSV(Comma-Separated Valu ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文將以 C# 語言來實現一個簡單的布隆過濾器,為簡化說明,設計得很簡單,僅供學習使用。 感謝@時總百忙之中的指導。 布隆過濾器簡介 布隆過濾器(Bloom filter)是一種特殊的 Hash Table,能夠以較小的存儲空間較快地判斷出數據是否存在。常用於允許一定誤判率的數據過濾及防止緩存 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 「簡單有價值的事情長期堅持做」 這是成功最簡單,但也最難學的秘訣。不經過訓練,人很難意識到時間複利的威力。 仙劍奇俠傳的「十里坡劍神」和金庸群俠傳的「十級野球拳」,就是簡單的事情持之以恆反覆做,最後就有巨大的威力 唐家三少成為網文收入第一,最重要的一步是十四年從未斷日更 這樣的案例很多,一開始可能成 ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“我愛加班”。 面試開始,直入正題。 面試官: 看你簡歷上面寫著精通MySQL,我先問你事務的特性是什麼? 老生常談,這個還有誰不會背的嗎? 我: ...
  • 基礎知識 python是一門腳本語言,它是解釋執行的。 python使用縮進做為語法,而且python2環境下同一個py文件中不能同時存在tab和空格縮進,否則會出錯,建議在IDE中顯示縮進符。 python在聲明變數時不寫數據類型,可以type(xx)來獲取欄位的類型,然後可以int(),list ...
  • 為什麼要多線程下載 俗話說要以終為始,那麼我們首先要明確多線程下載的目標是什麼,不外乎是為了更快的下載文件。那麼問題來了,多線程下載文件相比於單線程是不是更快? 對於這個問題可以看下圖。 橫坐標是線程數,縱坐標是使用對應線程數下載對應文件時花費的時間,藍橙綠代表下載文件的大小,每個線程下載對應文件2 ...
  • 詳細講解python爬蟲代碼,爬微博搜索結果的博文數據。 爬取欄位: 頁碼、微博id、微博bid、微博作者、發佈時間、微博內容、轉發數、評論數、點贊數。 爬蟲技術: 1、requests 發送請求 2、datetime 時間格式轉換 3、jsonpath 快速解析json數據 4、re 正則表達式提... ...
  • 背景: 一般我們可以用HashMap做本地緩存,但是HashMap功能比較弱,不支持Key過期,不支持數據範圍查找等。故在此實現了一個簡易的本地緩存,取名叫fastmap。 功能: 1.支持數據過期 2.支持等值查找 3.支持範圍查找 4.支持key排序 實現思路: 1.等值查找採用HashMap2 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • 本章是系列文章的第八章,用著色演算法進行寄存器的分配過程。 本文中的所有內容來自學習DCC888的學習筆記或者自己理解的整理,如需轉載請註明出處。周榮華@燧原科技 寄存器分配 寄存器分配是為程式處理的值找到存儲位置的問題 這些值可以存放到寄存器,也可以存放在記憶體中 寄存器更快,但數量有限 記憶體很多,但 ...