python API自動化(接口測試基礎與原理)

1.接口測試概念及應用

? ? ? ? ? ? ? ? 什么是接口

?接口是前后端溝通的橋梁,是數據傳輸的通道,包括外部接口、內部接口,內部接口又包括:上層服務與下層服務接口,同級接口

????????????????外部接口:比如你要從 別的網站 或 服務器 上獲取 資源或信息 ,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的。比如說:支付接口,沙箱,Mock.....
????????????????

? ? ? ? ? ? ? ? ?內部接口方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口。比如:bbs系統,有登陸模塊,有發帖模塊等等,那你要發帖就必須先登陸,那么這兩個模塊就有交互,我們在測試的時候都用通過工具才能調試和測試

????????????????????????

? ? ? ? 如圖所示,我們提供了賬號密碼,通過http協議接口訪問服務器,服務器再通過接口訪問資料數據庫和代碼進行校驗 ,校驗的接口通過服務器返還給客戶端進行響應

? ? ? ? ?什么是接口測試:接口測試分為兩種手段:手工測試、自動化測試

? ? ? ? ? ? 接口測試是對系統或組件之間的接口進行測試,主要校驗數據的交換、傳遞和控制管理過程,以及相互邏輯依賴關系。而接口自動化測試是讓程序代替人為對接口項目進行自動化驗證測試的過程

? ? ? ? ? ? ? ? 手工測試:頁面--登錄功能時候--對登錄接口測試

? ? ? ? ? ? ? ? 自動化測試:自動、無人值守--知識點:CICD--持續集成

? ? ? ? ? ? ? ? 我們進行測試應該借助某些工具去完成:postman、jmeter 、代碼等

? ? ? ? ? ? ? ? 接口測試的意義? ? ? ? ? ? ? ??? ? ? ? ? ? ?

????????? ? ? ?1.項目成本、時間成本---更低

? ? ? ? ? ? ? ? 2.更早進入測試環節---效率

? ? ? ? ? ? ? ? 3.接口(不會頻繁變動)--- 節約成本

? ? ? ? ? ? ? ? 4.跳過前端的校驗(正則),直接訪問接口。(確定前端和后端同時做校驗)---安全著想

????????????????

2.HTTP請求的核心概念及原理

重點HTTP的請求頭、請求體、響應碼解析

? ? ? ? ? ?核心請求四要素:

? ? ? ? ? ? ? ? 1.接口URL:IP地址+端口+路徑

? ? ? ? ? ? ? ? ?2. 接口請求參數:用戶名 密碼

? ? ? ? ? ? ? ?3. 接口請求方法:get post delete put...

? ? ? ? ? ? ? ? ?4. 接口響應報文

? ? ? ? ? ? ? ? 縮略的詞:

????????????????????????URL: 統一資源(圖片、網頁、視頻...)定位符(地方)--- 地址 :www.baidu.com

????????????????????????HTML: 超文本標記語言,特點:成對出現:內容--- 前端常用

????????????????????????HTTP: 常用的協議 --- 超文本傳輸協議

????????????????????????

? ? ? ? ? ? ? ? ? ? ? ? URL詳解:

????????????????????????協議:客戶端和服務器通訊的標準,http、https、ssh等

????????????????????????host: IP或域名,比如上面的localhost(127.0.0.1)- 本機

????????????????????????www.baidu.com (14.119.104.254) --- 背后都是對應的ip--相當于是對應的網絡的? ? ? ? ? ? ? ? ? ? ? ? ? 地址 ---某臺電腦程序:mysql :3306 、tomcat:8080、....(域名化方便記憶)

????????????????????????端口號:協議默認的端口號是可以省略的(http:默認端口80、 https:默認端口? ? ? ? ? ? ? ? ? ? ? ? ? ? 443、ssh:默認端口22)

????????????????????????資源路徑:資源存放的位置,資源可以是各種超文本信息,如音頻、視頻等,如? ? ? ? ? ? ? ? ? ? ? ? ? ? ?上:/index.php

?????????????????????????參數:如 ?m=Home&c=Goods&a=goodsInfo&id=46 ;格式:用?與URL的主體部? ? ? ? ? ? ? ? ? ? ? ? ? ?分分開,參數的格式 參數名=參數值 ,有多個參數時用&拼接即可

? ? ? ? ? ? ? ? ? HTTP詳解:

????????????????????????HTTP: 常用的協議 --- 超文本傳輸協議:請求--- 響應協議 ----

? ? ? ? ? ? ? ? ? ? ? ? 怎么通信的呢?TCP/IP協議

? ? ? ? ? ? ? ? ? ? ? ??HTTP包含哪些請求:請求行、請求頭、請求體????????? ? ? ? ??

? ? ? ? ? ? ? ? ? ? 請求行:請求方法、請求地址(URL)、協議版本

? ? ? ? ? ? ? ? ? ? 請求頭:很多字段、看不懂,系統固定的。告訴服務器我需要什么樣的資源、描述? ? ? ? ? ? ? ? ? ? ? ?對應的請求。

? ? ? ? ? ? ? ? ? 注意:cookie(鑒權)、content-Type(告訴我們傳輸數據的格式是什么,要和請求體? ? ? ? ? ? ? ? ? ? 當中的數據格式一一對應)

????????????????????????Content-Type取值與body傳值方式對應關系:

????????????????????????

? ? ? ? ? ? ? ? ? ? ?請求體:請求參數--- 后面再說--- 這個接口的對應的參數:get請求一般是在url當? ? ? ? ? ? ? ? ? ? ? ? ? ? 中;post一般在body當中

HTTP的請求方法

? ??

????????????????????????

? ? ?響應的詳解:?

?響應行、響應頭、響應正文 ---通過對應的請求得到對應的響應數據?

????????響應行: 協議版本、狀態碼、狀態信息? ? ?

????????常見的狀態碼有哪些?

????????1xx:指示信息--表示請求已接收,繼續處理

????????2xx:成功--表示請求已被成功接收、理解、接受

????????3xx:重定向--要完成請求必須進行更進一步的操作

????????4xx:客戶端錯誤--請求有語法錯誤或請求無法實現

????????5xx:服務器端錯誤--服務器未能實現合法的請求

????????常見狀態碼:? ? ?

  • 200 OK//客戶端請求成功
  • 400 Bad Request//客戶端請求有語法錯誤,不能被服務器所理解
  • 401 Unauthorized//請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
  • 403 Forbidden//服務器收到請求,但是拒絕提供服務
  • 404 Not Found//請求資源不存在,eg:輸入了錯誤的URL
  • 500 Internal Server Error//服務器發生不可預期的錯誤
  • 503 Server Unavailable//服務器當前不能處理客戶端的請求,一段時間后可能恢復正常

????????響應頭

告訴客戶端我返回的一些數據的情況,比如大小、時間、返回數據格式...

? ? ? ? 響應正文

具體的響應數據得到以后,我們對應的前端會進行渲染,得到用戶能夠看明白的? ? ? ? ? ? ? ?數據格式及樣式等等。

5.接口測試

? ? ? ? ? ? ? ? 接口測試流程

????????????????
?

? ? ? ? 我們來看一個注冊接口的用例

? ? ? ? ? 我們先來看看文檔

????????

????????接口URL : 協議+域名+路徑 + 公共參數

http://shop-xo.hctestedu.com?s=api/user/reg&application=app&application_client_type=weixin

????????請求方法:POST

? ? ? ? ? 請求參數:需要和請求頭的content-type?一?一?對應

? ? ? ? ? ?正常情況:? ? ? ? ??

  1. 有些接口文檔會告訴你這個字段是什么請求類型---直接選擇即可
  2. 一般用form表單提交 (字段相對比較少),【默認】
  3. 提交的有對應的圖片:from-data
  4. 字段非常多,或者它的數據{XXXX:XXXX}:raw-json

? ? ? ? 響應數據:? ? ??? ? ??

? ? ? ? ? ? ?--- 期望結果:

? ? ? ? ? ?1. 輸入正確的數據:注冊成功

? ? ? ? ? ? ?2. 輸入已經存在的數據:賬號已存在

? ? ? ? ? .... --- 測試用例設計 (請求參數不同數據的組合)

? ? ? ??執行CASE---工具JMeter

????????????????

  • 測試計劃:測試起點,所有組件的容器
  • 線程組:代表一定數量的用戶
  • 取樣器:向服務器發送請求的最小單元
  • 邏輯控制器:結合取樣器實現一些復雜的邏輯
  • 前置處理器:在請求之前的工作
  • 后置處理器:在請求之后的工作
  • 斷言:判斷請求是否成功
  • 定時器:負責請求之間的延遲間隔。常用的有固定,高斯,隨機
  • 配置元件:配置信息
  • 監聽器:收集結果

我們填入對應的值

? ? ? ? 添加監聽器收集結果

????????

響應=== 實際結果 --- 進行獲取:msg字段 ---json提取器

測試用例===期望結果

我們可以通過添加斷言來判斷結果是否符合預期

????????

????????

????????????????????????

請求默認面板

????????

? ? ? ? 可以把不會經常修改的參數放入其中

????????

環境變量 --- 這種不會經常改動的東西---就得這么去做

設置變量 --- 用戶定義的變量 --- 引用變量:${變量名}

我們設置了環境變量之后我們http里的請求就如下所示

????????

數據驅動(DDT)--把接口數據提取出來? ? ?

  1. 數據準備階段
  2. 利用csv進行引用

? ? ? ? 我們再加入循環控制器?循環我們的用例數

? ? ? ? 再修改斷言

接口測試當中,怎么解決是誰的問題?--判別是誰就是有個通用的:token(軟件當中的身份證號)

????????

  1. 登錄 --- 登錄成功之后會在響應數據或者請求頭當中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通過登錄用戶去加入購物車 :請求數據會需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url

接口關聯

【接口關聯】:通過登錄用戶去加入購物車

  1. 登錄 --- 登錄成功之后會在響應數據或者請求頭當中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通過登錄用戶去加入購物車 :請求數據會需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url
  3. ...
  4. ...

Jmeter怎么連接數據庫

? ? ? ? 1.填寫如下數據,并且取一個名字

2. 填寫請求:需要引用上面的名字,正常寫對應的sql --- 會有多個數據:sqlname+ 下標

3. 在測試計劃當中必須引用對應的jar包

? ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19490.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19490.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19490.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringMVC框架學習筆記(四):模型數據 以及 視圖和視圖解析器

1 模型數據處理-數據放入 request 說明&#xff1a;開發中, 控制器/處理器中獲取的數據如何放入 request 域&#xff0c;然后在前端(VUE/JSP/...)取出顯 示 1.1 方式 1: 通過 HttpServletRequest 放入 request 域 &#xff08;1&#xff09;前端發送請求 <h1>添加主人…

使用dockerfile快速構建一個帶ssh的docker鏡像

不多說先給代碼 FROM ubuntu:22.04 # 基礎鏡像 可替換為其他鏡像 USER root RUN echo root:root |chpasswd RUN apt-get update -y \&& apt-get install -y git wget curl RUN apt-get install -y openssh-server vim && apt clean \&& rm -rf /tmp/…

在SpringBoot項目中實現切面執行鏈功能

1.定義切面執行鏈頂級接口 AspectHandler /*** 切面執行鏈**/ public interface AspectHandler {/*** 設置排除項* param excludes*/default void setExcludes(List<String> excludes) {}/*** 獲取排除項* return*/default List<String> getExcludes() {return ne…

事務與并發控制

事務&#xff08;Transaction0&#xff09;&#xff1a;要么全做&#xff0c;要么全不做&#xff1b; 事務ACID&#xff1a;原子性Atomicity&#xff1b;一致性Consistency&#xff1b;隔離性Isolation&#xff1b;持久性Durability&#xff1b; 并發操作問題&#xff1a; 1.…

基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask

基于RNN和Transformer的詞級語言建模 代碼分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循環神經網絡RNN(GRU或LSTM)和 Transforme…

汽車IVI中控開發入門及進階(二十二):video decoder視頻解碼芯片

前言: 視頻解碼器在許多汽車、專業和消費視頻應用中仍有需求。Analog Devices是模擬視頻產品領域的行業領導者,提供一系列視頻解碼器,可將標準(SD,standard definition)和高清(HD,High definition)分辨率的模擬視頻高質量轉換為MIPI或TTL格式的數字視頻數據。典型的應…

【AI大模型】如何讓大模型變得更聰明?基于時代背景的思考

【AI大模型】如何讓大模型變得更聰明 前言 在以前&#xff0c;AI和大模型實際上界限較為清晰。但是隨著人工智能技術的不斷發展&#xff0c;基于大規模預訓練模型的應用在基于AI人工智能的技術支持和幫助上&#xff0c;多個領域展現出了前所未有的能力。無論是自然語言處理、…

算法刷題筆記 差分矩陣(C++實現)

文章目錄 題目前言題目描述解題思路和代碼實現 題目前言 這道題是一道差分算法的拓展題型&#xff0c;是算法刷題筆記到目前為止我認為最困難的題目之一。因此&#xff0c;這篇題解博客的過程記錄也最為詳細&#xff0c;希望能夠為你帶來幫助。 題目描述 輸入一個n行m列的整…

JavaScript的垃圾回收機制

No.內容鏈接1Openlayers 【入門教程】 - 【源代碼示例300】 2Leaflet 【入門教程】 - 【源代碼圖文示例 150】 3Cesium 【入門教程】 - 【源代碼圖文示例200】 4MapboxGL【入門教程】 - 【源代碼圖文示例150】 5前端就業寶典 【面試題詳細答案 1000】 文章目錄 一、垃圾…

匹配字符串

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模塊&#xff0c;用于實現正則表達式的操作。在實現時&#xff0c;可以使用re模塊提供的方法&#xff08;如search()、match()、finda…

深入理解Redis:多種操作方式詳解

Redis&#xff08;Remote Dictionary Server&#xff09;是一款高性能的開源鍵值存儲系統&#xff0c;廣泛應用于緩存、會話管理、實時分析等領域。它支持多種數據結構&#xff0c;如字符串、哈希、列表、集合和有序集合等&#xff0c;提供了豐富的操作命令。本篇博客將詳細介紹…

信息系統項目管理師0603:項目整合管理 — 考點總結(可直接理解記憶)

點擊查看專欄目錄 文章目錄 項目整合管理 — 考點總結(可直接理解記憶) 輸入、輸出、工具和技術 歷年考題直接考輸入,輸出、工具和技術的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考題 項目章程是正…

CasaOS玩客云安裝全平臺高速下載器Gopeed并實現遠程訪問

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

BufferQueue 的工作原理

bufferQueue 是 Android 圖形棧中的一個核心組件,它在生產者和消費者之間傳遞緩沖區(buffer)。它通常用于圖形緩沖區管理,特別是在 SurfaceFlinger 和其他圖形相關的組件中。理解 BufferQueue 的工作原理對開發高性能圖形應用和解決圖形渲染問題非常有幫助。 BufferQueue …

基于Python的酒店客房入侵檢測系統的設計與實現

基于Python的酒店客房入侵檢測系統的設計與實現 開發語言:Python 數據庫&#xff1a;MySQL所用到的知識&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系統功能實現 酒店客房入侵管理界面 結合上文的結構搭建和用戶需求&#xff0c;酒店客房入侵檢測系統的…

【Unity Shader入門精要 第12章】屏幕后處理效果(一)

1. 原理和過程 屏幕后處理是綁定攝像機的&#xff0c;通過抓取當前攝像機渲染的圖像作為 SrcTextrue&#xff0c;然后按需依次調用處理接口&#xff0c;對 SrcTexture 進行處理&#xff0c;最后將處理完成的 DstTexture 顯示到屏幕上&#xff0c;整個過程的調度通過 C# 腳本完…

使用 C++ 在當前進程中獲取指定模塊的基址

C 實現 , 獲取指定模塊在該進程中的基址 1、流程: 獲取進程的所有模塊信息–>遍歷模塊列表 2、實現&#xff1a; // 我自己定義的 typedef struct moudle_date_ {HANDLE mhandle; // 句柄char mname[64]; // 名稱char* date; // 數據DWORD mdword; // 基址…

【機器學習】Adaboost: 強化弱學習器的自適應提升方法

&#x1f308;個人主頁: 鑫寶Code &#x1f525;熱門專欄: 閑話雜談&#xff5c; 炫酷HTML | JavaScript基礎 ?&#x1f4ab;個人格言: "如無必要&#xff0c;勿增實體" 文章目錄 Adaboost: 強化弱學習器的自適應提升方法引言Adaboost基礎概念弱學習器與強學習…

存儲器容量小才使用SRAM芯片,容量較大時使用DRAM芯片。為什么?

在計算機系統中&#xff0c;存儲器容量的選擇涉及到多種因素&#xff0c;包括成本、速度和復雜性。SRAM&#xff08;靜態隨機存取存儲器&#xff09;和DRAM&#xff08;動態隨機存取存儲器&#xff09;是兩種常見的內存類型&#xff0c;它們在設計和應用上有顯著的不同。以下是…

【藍橋杯嵌入式】 第六屆國賽

目錄 題目 配置 注意事項 代碼 - 默寫大師 EEPROM讀寫函數 LED驅動函數 ADC采集 上電初始化 LCD 按鍵 PWM互補輸出 全部代碼 hardware.c hardware.h control.c control.h main.c 題目 配置 注意事項 復制LCD的工程&#xff0c;先配置資源 --- 勾選完選項一…