(1)咱們測試的接口屬於哪一類?前端
一般都是B/S架構,由客戶端調用,或模擬客戶端調用服務器提供的請求接口,由服務器完成處理並返回一個應答的過程。python
例如 webservice接口 http接口 jms接口 hessian接口mysql
(2)HTTP接口傳遞數據最經常使用的方式?git
get和post最經常使用。github
get是從服務器上獲取數據 適用場景:在作搜索接口 商品信息接口web
post是向服務器上傳送數據 適用場景:在作數據添加修改刪除時或圖片上傳等時能用到sql
(3)HTTP接口測試的類型?shell
① get請求無參數 ② get請求有參數 ③ post請求帶參數數據庫
(4)日常是怎麼測接口的?json
參數組合、接口安全(繞過前端驗證、繞過身份受權、參數是否加密、密碼安全規則)、異常驗證(必傳非必傳、參數類型、入參長度)
性能測試
用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。