接口自動化測試面試題詳解(2)

(1)我們測試的接口屬於哪一類?

      通常都是B/S架構,由客戶端調用,或模擬客戶端調用服務器提供的請求接口,由服務器完成處理並返回一個應答的過程。

      例如 webservice接口   http接口   jms接口   hessian接口

(2)HTTP接口傳遞數據最常用的方式?

      get和post最常用。

      get是從服務器上獲取數據   適用場景:在做搜索接口  商品信息接口

      post是向服務器上傳送數據   適用場景:在做數據添加修改刪除時或圖片上傳等時能用到

(3)HTTP接口測試的類型?

      ① get請求無參數    ② get請求有參數     ③ post請求帶參數

(4)平常是怎麼測接口的?

      參數組合、接口安全(繞過前端驗證、繞過身份授權、參數是否加密、密碼安全規則)、異常驗證(必傳非必傳、參數類型、入參長度)

      性能測試

      用postman工具測,其次用jmeter測試

(5)webservice接口如何測試的?

      用soapui工具測試

(6)接口測試的步驟?

      大體流程是:① 閱讀API接口文檔   ② 編寫測試用例   ③ 根據測試用例進行API的手工測試(開發API工具、使用工具進行測試 )

(7)沒有文檔如何做接口測試?

      與開發溝通,然後整理出接口文檔,也可以自己試着抓包看接口請求參數,然後不懂的跟開發溝通。

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

      不同的接口封裝成不同的函數或方法,需要的數據return出來,用一箇中間變量a去接收。後面的接口傳a就可以了。

(9)在手工接口測試或者自動化接口測試過程中,上下游接口有數據依賴如何處理?

      用一個全局變量來處理依賴的數據

(10)接口測試中依賴登錄狀態的下的接口如何測試?

      本質是:在每次發送請求時需要帶上session或cookie才能發送成功,在構建post請求時添加必要的session或者cookie

(11)依賴於登錄的接口如何處理?

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

      後面所有的請求去拿這個數據就可以全局使用了

      如果是cookies的參數,可以用session自動關聯

(12)依賴第三方的接口如何處理?

      這個需要自己去搭建一個mock服務、模擬接口返回數據

      mock是一個開源的框架,在github上可以下載到。

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

(13)接口產生的垃圾數據如何清理?

      造數據的數據清理,需用python連接數據庫,做增刪改查操作

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

      後置操作,tearDown做數據清理

(14)測試的數據你放在哪兒?

      測試的數據分很多種,千萬不能說寫在代碼裏,因爲數據是不能寫死在代碼裏的。

      測試數據放到.py文件的開頭,對於少量的,固定不變的數據是可以的。

      測試數據存放總結:

             ① 對於一些一次性消耗的數據,比如註冊,每次註冊不一樣的數,可以用隨機函數生成

             ② 對於一個接口有多組測試的參數,可以參數化,數據放yaml,text,json,execl等都可以

             ③ 對於反覆使用的數據,如訂單的各種狀態需要造數據的情況,可以放到數據庫,每次數據初始化,用完後再清理

             ④ 對於郵箱配置的一些參數,可以用ini配置文件

             ⑤ 對於全部是獨立的接口項目,可以用數據驅動方式,用execl/csv管理測試的接口數據

             ⑥ 對於賬號密碼,這種管全局的參數,可以用命令行參數,單獨抽出來,卸載i配置裏(如ini)

             ⑦ 對於少量的靜態數據,比如一個接口的測試數據,也就2-3組,可以寫到python腳本的開頭,十年八年都不會變更的。

(15)json和字典的區別?

     json是一種輕量級的數據交換格式。json本質上還是字符串,只是按key:value這種鍵值對的格式來的字符串。

     如:a = {'a':1, 'b': 2}  這是字典

           a = '{'a': 1, 'b': 2}'  這是json

(16)不可逆操作,如何處理,比如刪除一個訂單這種接口如何測試?

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

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

     後置操作,tearDown做數據清理

(17)一個訂單的幾種狀態如何全部測到。如:未處理、處理中、處理失敗、處理成功?

     也是一樣,造數據,通過python連接數據庫,修改數據的狀態

(18)python如何連接數據庫操作?

     PyMYSQL是在python3.x版本中用於連接mysql服務器的一個庫

     mysqldb是在python2中使用的

      - 首先導入模塊(提前pip安裝)  import pymysql  或者 import mysqldb

      - 打開數據庫連接   db = pymysql.connect("localhost", "username", "psw", "db_name")

      - 創建一個遊標對象  cursor = db.cursor()

      - sql查詢語句   sql = "select * from emp"

      - 執行sql語句  cursor.execute(sql)

      - 獲取所有記錄列表   cursor.fetchall()  然後for循環遍歷

      - 關閉數據庫連接  db.close()

(19)做接口測試過程中發現過哪些bug?

      比如:測試體現金額的提交,有一天數據庫裏插入了一個提現金額爲負數的,開發要你復現,你在頁面上怎樣測試都沒錯誤,那是前端做了限制。可以繞過前端,直接用接口工具去直接請求接口,或者用fiddler去抓包,抓到接口劶修改金額爲負數。

(20)當一個接口出現異常,你是如何分析異常的?

      用fiddler工具抓包或者瀏覽器上按F12調試。app上就用fiddler設置代理,去看請求報文和返回報文。

      查看後端日誌,xshell連上服務器,查看日誌。

(21)如何模擬弱網設置?

      fiddler和charles都可以模擬,平常說的模擬丟包,也就是模擬弱網測試。

      通過charles設置延遲,進行模擬不同的網絡:配置好charles後,正常聯網,選擇throttle settings設置弱網環境

          thtottle preset選擇弱網環境目標:2G或3G;也可以在Bandwidth中選擇上傳下載數值(kbps)

      通過fiddler模擬弱網:打開fiddler ->rules ->customer rules ->會出現一個fiddler script編輯器窗口,

           利用ctrl+F組合鍵調出搜索對話框,鍵入m_Simulate進行搜索,找到如下代碼框:

        

           upload代表上傳速度,download代表下載速度。自定義修改之後,保存後退出。

           繼續在fiddler界面上找到rules-> perfomance-> 點擊Simulate Modem Speeds,完成弱網模擬功能的打開。

(22)怎麼分析bug是前端的還是後端的?

      先抓包看請求報文,對着接口文檔,看請求報文有沒問題,有問題就是前端發的數據不對。

      請求報文沒問題,那就看返回報文,返回的數據不對,那就是後端開發的問題。

(23)http接口和web service接口測試區別是什麼?

      傳統web service:  有一套完整的協議標準,其中有soap協議,用來進行消息的傳遞。

            soap請求是HTTP POST的一個專用版本,遵循一種特殊的xml消息格式  Content-type設置爲:text/xml任何數據都可以xml化。

            web service的好處是:不用擔心大小寫問題

                                                 不用擔心中文urlencode問題

                                                 代碼中不用多次申明認證(賬號、密碼)參數

                                                  傳遞參數可以爲數組、對象等

             由於web service要進行xml解析,速度可能會有所降低。

      現在HTTP完全可以替代web service。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章