什麼是介面測試?為什麼要做介面測試?【建議收藏】

来源:https://www.cnblogs.com/cemaxueyuan/archive/2020/04/27/12790511.html
-Advertisement-
Play Games

1. 什麼是介面測試?為什麼要做介面測試? 介面測試是測試系統組件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。 由於如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試 ...


1. 什麼是介面測試?為什麼要做介面測試?

  介面測試是測試系統組件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。

由於如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,所以就要做介面測試。同時,介面測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,可以減少人工回歸測試人力成本與時間,縮短測試周期,支持後端快速發版需求。介面持續集成是為什麼能低成本高收益的根源。現在很多系統前後端架構是分離的,從安全層面來說,只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要後端同樣進行控制,在這種情況下就需要從介面層面進行驗證。前後端傳輸、日誌列印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。

2. 後端介面測試測什麼?

  從下麵這張圖可以看出後端介面測試主要測了些什麼:

3. 怎麼做介面測試?

  一般情況下,由於我們項目前後調用主要是基於http協議的介面,所以測試介面時主要是通過工具或代碼模擬http請求的發送和接收。所以我們下麵整理了一下使用Jmeter工具進行http介面測試。

  3.1 開發介面測試案例的整體方案

    第一步: 分析出測試需求,並拿到開發提供的介面說明文檔;

     第二步: 從介面說明文檔中整理出介面測試案例,裡面要包括詳細的入參和出參數據以及明確的格式和檢查點;

     第三步: 和開發一起對介面測試案例進行評審;

     第四步: 結合開發庫,準備介面測試案例中的入參和出參數據,並整理成csv格式的文件;

     第五步: 結合介面測試案例文檔和csv格式的數據文檔,做介面測試案例的自動化案例開發。

  3.2 介面自動化適用場景

    目前設計的自動化介面測試案例有兩個運行場景:

    (1)測試前置、開發自測:一個新的自動化介面測試案例開發完成後,直接發給介面對應的開發,安排在開發本地環境執行,一旦開發確認完成介面開發,就開始執行介面測試案例,基本上可以實時拿到測試結果,方便開發快速做出判斷。(開發本地運行的方式就是打開JMeter工具,導入JMX文件,開始執行可。)

    (2)回歸測試:開發本地測試通過後,或整個需求手工測試通過後,把自動化的介面測試案例做分類整理,挑選出需要納入到回歸測試中的案例,在持續集成環境重新準備測試數據,並把案例納入到持續集成的job中來,這些用於回歸的介面測試案例需要配置到持續集成平臺自動運行。

  3.3 介面測試環境準備

    Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

    Jmeter, 下載地址:http://jmeter.apache.org/download_jmeter.cgi

    插件的下載安裝地址: http://www.jmeter-plugins.org/

  3.4 創建工程

    1.打開Jmeter:下載好Jmeter後,雙擊bin目錄下的jmeter.bat文件:

    

    2.添加線程組:在“測試計劃”上點擊滑鼠右鍵-->添加-->threads(Users)-->線程組,添加測試場景設置組件,介面測試中一般設置為1個“線程數”,根據測試數據的個數設定“迴圈次數”。

    

    3.添加“HTTP Cookie管理器”:

    

    4.添加“Http請求預設值”組件,當被測系統有唯一的訪問功能變數名稱和埠時,這個組件很好用:

    

    5.在“HTTP 請求預設值”組件配置頁面,填寫被測系統的功能變數名稱和埠,http請求的實現包版本以及具體協議類型,線程組裡的所有“HTTP Sampler”可預設使用此設置。

    

    6.在“線程組”里添加“HTTP 請求”的Sampler

    

    7.在HTTP請求設置頁面,錄入被測介面的詳細信息,包括請求路徑,對應的請求方法,以及隨請求一起發送的參數列表:

    

    8.設置檢查點:在被測介面對應的“HTTP 請求”上,添加“響應斷言”:

    

    9.在設置頁面上添加對相應結果的正則表達式存在性判斷即可:

    

    10.添加監聽器:方便查看運行後的結果

    

    運行結果:

    

  上述步驟完成了一個簡單測試案例的創建,複雜測試案例均在此基礎上擴展完成。使用Jmeter工具開發的介面測試案例,一個子系統建議放在同一個 “測試計劃”中,流程測試可以通過“線程組”來區分,這樣也便於設定不同的測試數據個數。比較獨立的介面,可以統一放在一個線程組內,順序完成測試。

  流程性介面的測試:如果要測試的介面可以組成一個流程,只需要順序添加多個“HTTP 請求”的Sampler,各請求之間可以提取需要在上下文傳遞的數據作為參數,以保證流程中數據的一致性。

 

4. 介面測試持續集成

對介面測試而言,持續集成自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了介面自動化,主要應用於回歸階段,後續還需要加強自動化的程度,包括但不限於下麵的內容:

  a) 流程方面:在回歸階段加強介面異常場景的覆蓋度,並逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。

  b) 結果展示:更加豐富的結果展示、趨勢分析,質量統計和分析等

  c) 問題定位:報錯信息、日誌更精準,方便問題復現與定位。

  d) 結果校驗:加強自動化校驗能力,如資料庫信息校驗。

  e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高代碼覆蓋率。

  f) 性能需求:完善性能測試體系,通過自動化的手段監控介面性能指標是否正常。

5. 介面測試質量評估標準

  a) 業務功能覆蓋是否完整

  b) 業務規則覆蓋是否完整

  c) 參數驗證是否達到要求(邊界、業務規則)

  d) 介面異常場景覆蓋是否完整

  e) 介面覆蓋率是否達到要求

  f) 代碼覆蓋率是否達到要求

  g) 性能指標是否滿足要求

h) 安全指標是否滿足要求


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

-Advertisement-
Play Games
更多相關文章
  • 一、Spring框架瞭解 Spring框架是一個開源的框架,為JavaEE應用提供多方面的解決方案,用於簡化企業級應用的開發,相當於是一種容器,可以集成其他框架(結構圖如下)。 上圖反映了框架引包的依賴關係(例如:DAO的jar包依賴AOP的jar包,AOP的jar包依賴Core的jar包) 上圖也 ...
  • 線性SVM=線性分類器+最大間隔 間隔的形式化描述 SVM通過最大化`M`來求解參數`W`和`b`的,目標函數如下 拉格朗日乘數法, 軟間隔:加入容錯量 非線性SVM:特征空間。 常用的核函數 ...
  • 今天需要用Golang寫一個簡單的命令行小工具,雖然標準庫的flag包也能實現,但是實現起來有些麻煩,而且對多級子命令更不支持,於是在網上找了這幾個spf13、cobra和urfave/cli等,我反正不需要太複雜的,對比了下感覺cli這個庫看上去要相對簡單一些,於是就用這個庫開發了。 git庫地址 ...
  • 一、獲取class對象的三種方式 1.我們先寫一個基礎類 package com.bjpowernode.java_learning; ​ public class D112_2_Emploe112 { private String name; public D112_2_Emploe112(){ ...
  • String源碼分析 類結構 String類實現了Serializable可以被序列化 String類實現了Comparable可以進行比較 String類實現了CharSequence可以按下標進行相關操作 並且String類使用final進行修飾,不可以被繼承 屬性 構造方法 方法 靜態方法 j ...
  • 減少 Python 中迴圈的使用 如何以及為什麼應該在 Python 中減少迴圈的使用? Python 提供給我們多種編碼方式。這裡還要註意:不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交流 ...
  • 今天出了一個重磅消息,個稅起徵點從3500上調到5000啦! 廣大IT農民工的生活壓力又減輕了一些,有沒有 晚上加一個雞腿,要不要~這裡還註意:不管你是為了Python就業還是興趣愛好,記住:項目開發經驗永遠是核心,如果你沒有2020最新python入門到高級實戰視頻教程,可以去小編的Python交 ...
  • 本篇文章給大家介紹一下PHP連接MySQL資料庫的三種方式(mysql、mysqli、pdo),結合實例形式分析了PHP基於mysql、mysqli、pdo三種方式連接MySQL資料庫的相關操作技巧與註意事項。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。 PHP與MySQL的連接 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...