接口自動化面試題

1.可以大體講一下大家接口自動化框架是怎麼搭建的嗎?html

好的,咱們採用unittest和ddt數據驅動思想搭建測試框架,(對數據excel讀取、yaml配置、Requests接口請求、Re參數化、Pymysql數據庫效驗、日誌等模塊實現封裝),其中,用前端

1.Openpyxl來處理excel,存儲測試數據(用例數據)python

2.pyyaml來配置文件(configparse,pyyaml)mysql

  1. Pymysql來鏈接mysql數據庫,執行sql數據,進行數據效驗

4.Requests請求庫,來向接口發起請求sql

5.使用logging模塊來建立日誌器,記錄項目中的日誌信息數據庫

6.使用HttpTestRunner來生成HTML測試報告json

7.使用re模塊來實現參數化(正則匹配)api

8.使用動態建立屬性(類屬性)的機制來實現接口之間的依賴  (setattr getattr)瀏覽器

好比:咱們項目中客服指派訂單的時候,須要上一個接口訂單ID,首先要對上一個接口發送請求,獲取訂單id,經過實例化對象,建立屬性名,獲取屬性值,從而實現指派訂單接口的成功請求。安全

分層設計

爲了提高接口自動化測試框架的拓展性、穩定性、完整性,進而提高測試效率,每每會將測試框架工程化,

整個流程會分爲不一樣的層級,每一個層級之間保持相對獨立

cases

測試執行邏輯層,用於存放全部的測試用例類

configs

配置層,用於存放當前框架中的全部配置信息(使用不頻繁,修改不頻繁的數據)

datas

測試數據層,用於存放全部的測試數據,測試參數(可使用excel,json,yaml,數據庫來存儲)

libs

自定義庫文件層,用於存放自定義或者二次開發的庫文件

logs

日誌層,用於保存運行框架過程當中產生的全部有效日誌信息

reports

報告層,用於保存全部的測試報告文件(通常爲html報告)

scripts

腳本封裝層,用於保存全部的操做封裝模塊(yaml,excel,log.mysql,requests,參數化等)

run.py

用例啓動文件,使用套件加載用例,批量執行並生成報告

9.使用Jenkins來實現持續集成

a.Jenkins如何配置定時任務?

1.首先構建觸發器

2.勾選Build peroidically

3.輸入框中配置觸發時間

00 12 ** 3  每週三 12點

好比 咱們週三中午的時候運行自動化腳本,發送測試報告

2.接口自動化的流程?

a.需求   --需求文檔、接口文檔

b.評審

c.用例

d.編寫自動化腳本

e.jenkins持續集成--定時執行腳本,生成報告

f.報告

g.發送郵件

h.提bug

3.你的項目中接口用例有多少?每次大概執行多長時間?

咱們項目有65個接口;大概1200條用例,執行時間大概半個小時

4.Get和post區別?

  1. get是不安全的,由於在傳輸過程,數據被放在請求的URL中,

post的全部操做對用戶來講都是不可見的   (安全性)

2.Get傳送的數據量較小,這主要是由於受URL長度限制

Post傳送的數據量較大,通常被默認認爲不收限制 (傳輸量)

  1. get執行效率卻比post方法好,get是form提交默認方法 (效率性)

5.cookie與session的區別

  1. cookie數據存放在客戶的瀏覽器上,session數據放在服務器上

  2. cookie不是很安全,別人能夠分析存放在本地的cookie並進行cookie欺騙考慮到安全應當使用session

  3. session會在必定時間內保存在服務器上,當訪問增多,會比較佔用你服務器的性能考慮到輕服務器性能方面,應當使用cookie

  4. 單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie

  5. 因此我的建議:

將登錄信息等重要信息存放爲session

其餘信息若是須要保留,能夠放在cookie中

6.Http和https區別?

https協議須要到CA申請證書,通常免費證書較少,於是須要必定費用。http是超文本傳輸協議,信息是明文傳輸,https則是具備安全性的ssl/tls加密傳輸協議。

7.在接口自動化中,如何讓token不失效?

1.調用登陸接口,拿到獲取的token

2.將拿到的token放在header中,調用確認登陸接口

3.確認登陸接口調用成功,接口返回信息正常

8.下個接口請求參數依賴上個接口的返回數據?

不一樣的接口封裝不一樣的函數或方法,須要的數據return出來,用一箇中間變量a去接收,

後面的接口傳a就能夠了

9.接口測試中依賴登陸狀態下的接口如何測試?

本質是:在每次發送請求時須要帶上session或cookie才能發送成功,在構建post

請求時添加必要的session或者cookie

10.依賴於登陸的接口如何處理?

登陸接口依賴token的,能夠先登陸後,token存到一個yaml或者json或者ini的配置文件裏面

後面全部的請求去拿這個數據就能夠全局使用了

若是是cookies的參數,能夠用session自動關聯

11.依賴第三方的接口如何處理?

這個須要本身去搭建一個Mock服務、模擬接口返回數據

mock能夠用在單元測試過程當中,還有一個用途,當前端開發在開發頁面的時候,須要服務端提供API接口,此時服務端還沒開發完成,或者說沒搭建測試環境,這時候前端開發會本身mock一個api服務端,本身給本身提供調用接口的返回數據。

12.接口產生的垃圾數據如何清理?

造數據的數據清理,須要python鏈接數據庫,作增刪改查操做

測試用例前置,setUp作數據準備

後置操做,tearDown作數據清理

14.不可逆操做,如何處理,好比刪除一個訂單這種接口如何測試?

主要靠手工測試造數據,直接在數據庫改字段狀態。自動化也同樣,造數據能夠用python鏈接數據庫,作增刪改查的操做

測試用例前置,setUp作數據準備

後置操做,tearDown作數據清理

15.你的項目中接口用例有多少?每次大概執行多長時間?

咱們項目有65個接口,大概1200條用例,執行時間大概半小時左右。

16.接口自動化的參數你是如何實現的?說說你的想法?

我會用python中Re模塊中的sub方法去替換

17.如何使你的接口自動化測試用例直接跳過前面幾條,直接執行第 7 條?

能夠在 Excel 建立一列,指定是否跳過,而後在用例時,過濾掉這些用例

使用條件判斷,經過 case_id==7 來決定是否執行

18.如何使你的接口自動化腳本,對於同一個請求讓同一個用戶請求屢次?

在 Excel 中設置相關執行次數的字段,在 ddt 數據驅動時,使用代碼來控

制執行次數。

params和data區別

 因爲get請求無請求體,post請求有請求體

  使用params參數時,默認會把參數附加到url後面,因此發送get請求時應使用params參數

  使用data參數時,參數會存放到請求體中,因此發送post請求時不能使用params,應使用data,除非接口及支持get又支持post,一樣get請求也不能使用data參數

爲何要對requests進行封裝?

1.經過封裝,我能夠直接把全部的請求參數統一使用字典來傳遞

好比,咱們接口須要的數據也就是測試數據每每會保存在excel表裏面,那麼咱們取到後是字符串類型,字符串類型是沒法做爲請求參數傳遞的,全部我每次都要作數據轉換,再傳遞給接口,爲了節省這個過程,我只須要把這個過程封裝到個人requests裏便可,每次取數據後會自動給我處理

第二,當我想保持某個狀態時,不想每次都初始化一個session對象,那麼我能夠把它封裝到個人reuqests裏面,之後直接調用便可

如何使用Seesion解決接口保持狀態?

  初始化Session實例,經過這個實例調用request()方法發送請求

說說接口測試的流程,介紹一下request有哪些內容?

1.流程:獲取接口文檔,依據文檔設計接口參數,獲取響應,解析響應,校驗結果,判斷測試是否經過

2.request內容:

封裝了各類請求類型,get,post等;

以關鍵字參數的方式,封裝了各類請求參數,params,data,headers,token等

封裝了響應內容,status_code,json(),cookies,url

session會話對象,能夠跨請求

做者:arvin_one
連接:https://www.jianshu.com/p/190d510d8c36 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索