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

来源: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
更多相關文章
  • 😜博客全棧系統,個人blog+vue2 + node.js + express + mysql+uniapp 包含前端博客展示、後臺管理、node後端服務。包括前後臺完整基礎功能,微信小程式,H5,web前臺站點一鍵置灰,支持移動端適配;管理端常用增·查·改頁面內置代碼自動生成即可,sql文件已附... ...
  • 每個操作符擁有某一級別的優先順序,同時也擁有左結合性或右結合性。當操作符優先順序相同時,操作符的結合性就開始發揮作用了。若表達式中存在連續的相同優先順序操作符,由結合性決定哪個操作符先執行。 #include <stdio.h> void fun(int *p) { *p++; printf("%d ", ...
  • C語言知識點整理 一、 C語言簡介 1、 特點 ·結構化的程式語言(函數、程式的分割) ·有豐富的數據類型(44種運算符) ·結構緊湊,使用方便(語法限制不大嚴格,自由度高) ·具有自我擴充的能力(函數庫的擴充) ·有低級語言功能(可直接訪問物理地址) ·可移植性強(可在不同系統間運行) ·面向過程 ...
  • ##什麼是方法? ###基本介紹 在其他語言中也叫函數 System.out.println();類名.對象.方法; Java方法是語句的集合,它們在一起執行一個功能 方法是解決一類問題的步驟的有序集合 方法包含於類或者方法中 方法在程式中被創建,在其他地方被引用 設計方法的原則:方法的本意是功能塊 ...
  • pytest有兩種生成測試報告的方法(html和allure),今天就給大家一一介紹下 html 一.pytest-html基本語法 1.安裝:pip install pytest-html 2.查看版本:pip show pytest-html 3.生成測試報告基本語法: 語法一:pytest - ...
  • 寫在前面: 這篇博文記錄的不是python代碼、數據結構、演算法相關的內容,而是在學習、使用過程中遇見的一些沒有技術含量,但有時很令人抓耳撓腮的小東西。比如:python內置庫怎麼看、python搜索模塊的順序等。 Python學習過程中“我的困惑瞬間” 類庫、函數使用語法怎麼看:官網的文檔 內置庫怎 ...
  • hibernate的基本概念 hibernate是 輕量級的 ORM 框架,ORM全稱object/relation mapping [對象/關係 映射]。 orm概念 對象關係映射(Object Relation Mapping,簡稱ORM)是一種為瞭解決面向對象與關係資料庫存在的互不匹配的現象的 ...
  • 結果映射指的是將數據表中的欄位與實體類中的屬性關聯起來,這樣 MyBatis 就可以根據查詢到的數據來填充實體對象的屬性,幫助我們完成賦值操作。其實 MyBatis 的官方文檔對映射規則的講解還是非常清楚的,但考慮到自己馬上就會成為一名 SQL Boy,以後免不了經常跟 SQL 打交道(公司使用的也... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...