接口自動化測試面試題(3)

一、json和字典dict的區別

首先python裏面的基礎數據類型有:int、str、 float、list、bool、tuple、dict、set這幾種類型,裏面沒json這種數據類型。

JSON( 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規範)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成爲理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。

由於你的代碼是python寫的(也有可能是php,java,c,ruby等語言),但是後端接口是java寫的(也有可能是其它語言),不同的語言數據類型是不一樣的(就好比中國的語言和美國的語言數據類型也不一樣,中國的一般說一隻羊,一頭牛,美國都是 a /an這種單位),所以就導致你提交的數據,別的開發語言無法識別,這就需要規範傳輸的數據(傳輸的數據都是一個字符串),大家都遵循一個規範,按一個標準的格式去傳輸,於是就有就json這種國際化規範的數據類型。

json本質上還是字符串,只是按key:value這種鍵值對的格式來的字符串b = '{"a": 1, "b": 2, "c": true}'

二、測試的數據放在哪?
1.對於賬號密碼,這種管全局的參數,可以用命令行參數,單獨抽出來,寫的配置文件裏(如ini)
2.對於一些一次性消耗的數據,比如註冊,每次註冊不一樣的數,可以用隨機函數生成
3.對於一個接口有多組測試的參數,可以參數化,數據放yaml,text,json,excel都可以
4.對於可以反覆使用的數據,比如訂單的各種狀態需要造數據的情況,可以放到數據庫,每次數據初始化,用完後再清理
5.對於郵箱配置的一些參數,可以用ini配置文件
6.對於全部是獨立的接口項目,可以用數據驅動方式,用excel/csv管理測試的接口數據
7.對於少量的靜態數據,比如一個接口的測試數據,也就2-3組,可以寫到py腳本的開頭,十年八年都不會變更的
 
三、什麼是數據驅動,如何參數化?
 
 
 
四、下個接口請求參數依賴上個接口的返回數據
這個很容易,不同的接口封裝成不同的函數或方法,需要的數據return出來,用一箇中間變量a去接受,後面的接口傳a就可以了
可以參考登錄的cookie或token
五、依賴於登錄的接口如何處理
參考requests的方法
 
六、依賴第三方的接口如何處理
這個需要自己去搭建一個mock服務,模擬接口返回數據
mock服務搭建需要自己能夠熟練掌握,面試會問你具體如何搭建 ,如何模擬返回的數據,是用的什麼格式,如何請求的

七、不可逆的操作,如何處理,比如刪除一個訂單這種接口如何測試

此題考的是造數據的能力,接口的請求數據,很多都是需要依賴前面一個狀態的
比如工作流這種,流向不同的人狀態不一樣,操作權限不一樣,測試的時候,每種狀態都要測到,就需要自己會造數據了。
平常手工測試造數據,直接在數據庫改字段狀態。那麼自動化也是一樣,造數據可以用python連數據庫了,做增刪改查的操作
測試用例前置操作,setUp做數據準備
後置操作,tearDown做數據清理

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

跟上面一樣,造數據和數據清理,需用python連數據庫了,做增刪改查的操作
測試用例前置操作,setUp做數據準備
後置操作,tearDown做數據清理

九.一個訂單的幾種狀態如何全部測到,如:未處理,處理中,處理失敗,處理成功

跟上面一樣,也是考察造數據,修改數據的狀態

十、get和post的區別
 
十一、post請求的四種參數形式是什麼
application/x-www-form-urlencoded 
multipart/form-data 
application/json 
text/xml
十一、公司有用到第三方服務,出了問題,打電話給第三方,第三方不承認,這時候日誌又顯示不到錯誤,應該怎麼處理
 
1、單獨調用第三方服務,查看返回結果;
2、引入mock機制,假如正常返回的情況下,測試我們的系統是否存在問題;
3、建議開發增加日誌,詳細記錄調用第三方接口的過程,記錄調用前接口入參,返參等信息;

十二、接口自動化中的關聯怎麼處理?

將請求返回的結果反射到類屬性中,使用setattr()函數,下個請求調用這個類

十三、自動化測試怎麼校驗結果?

使用斷言,預期結果值和實際結果值進行對比;

十四、自動化使用的測試框架是什麼?簡述自動化框架的設計、維護

1、自動化使用的測試框架:
語言:python
測試框架:unittest(assertEqual,assertTure,assertFalse)
接口調用:requests(API非常簡潔)
數據驅動:ddt(裝飾器:ddt類,unpack測試方法裝飾器解包時候,data測試方法裝飾器,可迭代的數據類型)
注:普通用戶,管理用戶,數據庫,配置文件---基礎數據
數據管理:openpyxl(excel,CSV,json,yaml,txt)
數據庫交互:pymysql ---根據數據庫選擇相應的第三方模塊來完成
數據格式的轉換:eval,json
日誌處理:logging ---清晰的執行過程,快速定位問題
持續集成:Jenkins(通過插件HTML Publisher/git/Email Extension)進行自動構建,生成HTML,發送郵件
 
2、自動化框架的設計、維護:
1、數據與代碼分離,(數據驅動)==數據驅動框架==
例如:參數不一樣,響應不一樣
2、結構分層(數據層,用例層,邏輯性)
邏輯層:公用的方法,封裝起來,避免用例層的代碼冗餘
數據層:例如,設計Excel,excel讀取,參數化替換等
用例層:存放測試用例
 
十五、在接口自動化測試中都用到了哪些包:
pymysql:連接數據庫
ddt:
requests:
urllib:
xlrd:
xlwt:
xlutils:
 
十六、根據什麼來做斷言?
1、協議狀態碼: 200,404,503   2、業務狀態碼:status:0   3、業務數據

十七、具體的在這個項目中自動化怎麼應用到實際的,您對自動化結果的分析

完成所有的自動化測試框架的設計和實現後,進行接口測試,然後集成到jenkins,配置定時執行,生成html報表,查看測試通過率,查看接口的功能

每次發版時,進行迴歸測試,新功能開發未提測前

 十八、做好測試計劃的關鍵是什麼?

明確測試目的,增強測試計劃的實用性,保證測試用例的實用性和覆蓋率,完全需求文檔和規格指標書等,嚴格界定測試周期,測試輪次,測試覆蓋模塊等

十九、super 是幹嘛用的?在 Python2 和 Python3 使用,有什麼區別?爲什麼要使用 super?請舉例說明。

super 用於繼承父類的方法、屬性。super 是新式類中才有的,所以 Python2 中使用時,要在類名的參數中寫 Object。Python3 默認是新式類,不用寫,直接可用。使用 super 可以提高代碼的複用性、可維護性。修改代碼時,只需修改一處。

父類:
class Car():
    def __init__(self,make,model,year):
       self.make=make
       self.model=model
       self.year=year
def .....
 
class ElectricCar(Car):
    def __init__(self,make,model,year):     --------初始化父類的屬性
       super().__init__(make,model,year):
    def ....
子類就可以使用父類的屬性
 

二十、L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3],用一行代碼得出 [11, 1, 2, 3, 5]

答:list(set(L))

二十一、L = [1, 2, 3, 4, 5],L[10:]的結果是?

答:空列表[]

二十二、list= [1, 2, 3, 4],如何得出 '1234'?

list=[1,2,3,4]
list2=''
for in list:
    list2=list2+str(i)
print(list2)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章