介面自動化面試

2021-10-02 00:12:52 字數 3939 閱讀 7417

1、json和字典的區別?

json是一種輕量級的資料互動格式,以key-value鍵值對的形式來儲存資料,結構清晰,可以說是目前網際網路專案開發中最常用的一種資料互動格式。

字典,同樣是以key-value鍵值對的形式來儲存資料,是python中的一種資料型別。

2、你做介面自動化測試時,測試資料放在哪?

1)對於一些基礎配置,比如資料庫配置、通用賬號密碼可以放到配置檔案中。

2)介面測試需要用到的資料可以放到資料表或excel檔案中。

3、什麼是資料驅動?

資料驅動就是通過excel、xml或資料庫等資料結構來維護測試資料,通過相應的技術去處理,拿到測試資料用於測試,從而實現測試資料與**的解耦,資料驅動測試的本質是高階的引數化。

4.excel中如何設計你的用例?

1)所有的介面資訊維護在乙個表單

2)關於介面的用例資料維護在乙個表單

3)介面傳參一列來傳,通過構造json格式的字串即可解決傳多個引數的問題,同時提公升了用例的可維護性

5、excel中的資料怎麼拿出來?

通過第三方庫openpyxl來完成,專案只需要引入openpyxl庫,通過它提供的api即可完成excel的操作,甚至於我們自己也可以做一些二次封裝,使得操作更方便。一行資料就是乙個用例。

6、如果有些介面做了鑑權(需要鑑定許可權),怎麼實現這些介面的自動化測試?

首先需要明確介面是通過什麼機制來實現的鑑權

如果是通過會話id(jsessionid)來實現鑑權的,那麼先呼叫完登入介面–》拿到它返回的這個資料–》儲存起來–》後面再呼叫其他介面的時候直接帶上這個資料過去就可以了。

如果是通過token來實現鑑權的,那麼同樣只需要在呼叫完登入介面–》拿到它返回的這個資料–》儲存起來,後面操作同上。

a. 怎麼取到這個jsessionid或者token

這個資訊怎麼取首先得明白它是怎麼返回來的,可能為以下兩種方式:

登入介面的響應頭

登入介面的響應報文

需要找開發確認,不同方式不同取法。

b. 怎麼儲存這個sessionid或者token

檔案中(excel、properties檔案都可以)

資料庫**裡面自己定義的公共靜態變數,作為乙個共享的資料

c. 請求其他需要鑑權的介面時,怎麼帶過去這個資料

先找開發人員確認,再呼叫需要鑑權的這些介面怎麼攜帶這個鑑權的資訊(票)。一般不外乎這麼幾種:

拼接在url上傳過去用於伺服器驗證

設定到請求體中

通過請求頭帶過去

弄明白怎麼傳過去以後,就設法從儲存了這個鑑權資訊的地方取出來–》傳過去。

7、什麼是會話?

所謂會話就是session,而session是一種伺服器的快取技術,由伺服器端建立,使用者登入了系統,一般就會把登入使用者的資訊儲存到這個session物件中,然後把此會話對應的id(sessionid)返回,因此大部分系統都會用到session機制來實現鑑權。session儲存資料方式也是以key-value的形式。

8、什麼是token?

所謂token其實就是伺服器端返回的乙個字串(有點類似於:xys73494954sdhcdr83435這麼一串),這個資料是基於什麼演算法生成的需要找開發確認,一般這個資料是唯一的,伺服器每次返回的token都會不一樣。token之所以可以用來做鑑權,原理如下:

使用者a呼叫了登入介面–》登入了系統b–》伺服器端生成了乙個唯一的token資訊(假設為c),然後會拿使用者的編號id(假設為d)做了乙個對映:c-d,然後將這樣的對映關係存到資料庫或redis等快取中,然後再返回這個token給客戶端–》客戶端再呼叫其他需要鑑權的介面時,只需要將快取起來的這個token帶過去驗證–》伺服器根據此token檢查是否有登入使用者資訊來判斷此請求是否是乙個已登入授權的使用者。(這裡客戶端怎麼取到這個token,怎麼存,再次請求時怎麼帶過去,上面介面鑑權部分已解釋)。

9、某個介面請求,引數依賴上個介面的返回資料,怎麼處理(介面關聯)?

場景:b介面在呼叫的時候引數依賴於a介面的返回資料。

處理方案:

a介面呼叫完–》從響應中取出b依賴的這個引數–》儲存起來–》b呼叫的時候,取出這個資訊–》當做引數傳過去即可。

10、介面呼叫依賴第三方的介面b,而b介面還未提供給你,如何處理?

通過mock框架搭建自己的mock系統/平台(其實就是自己開發介面),模擬這個第三方介面mock乙個出來即可,這樣就解決了這個依賴。

11、你做介面自動化時怎麼做的資料驗證?

資料驗證主要包括兩個方面:

介面響應報文的驗證

利用jsonpath取出響應資料(大多數情況是json)中的關鍵字段的值,通過assert斷言這些關鍵字段的值是否符合預期。預期值和jsonpath取值表示式可以配置在excel中。

資料庫表資料的驗證

做表資料驗證要先明白兩點:

a. 表資料驗證首先得明白這個介面的基本業務,會影響到哪些表,哪些欄位的資料,然後才能準備查詢sql去有針對性的查資料。

b. 並不是所有用例的執行都會運算元據庫,影響到表資料,因此只有影響到了表資料的用例,才準備查詢指令碼。

具體做法:

excel用例準備aa,bb,cc三列,aa傳指令碼,bb,cc兩列分別用來回寫用例執行前的sql查詢結果和用例執行後的sql查詢結果,兩個資料對比即可知道資料變化是否滿足預期。

12、如何提公升測試效率?

1)減少excel讀寫,減少不必要的io操作。

2)excel資料讀取測試資料,全部儲存到靜態變數中。

3)excel資料回寫,盡量通過批量方式去寫。

13、你用過單元測試框架嗎,是什麼框架,有哪些常用操作?

用過,unittest、pytest,這些測試框架都支援我們去定義測試套件,達到管理我們測試用例**的作用,同時這些測試框架提供的一些豐富註解不僅能很方便的控制測試用例的執行順序來控制整個測試流程,還能為各種測試場景的實現提供支撐。

常用操作:

seutp,teardown,適合單個測試用例的初始化、環境清理。

seutpclass,teardownclass:適合測試類的全域性初始化、環境清理。

assert***x: 各種斷言方式

testloader的discover: 用來發現測試用例

testsuite的addtests: 用來裝載測試用例

@ddt 資料驅動

htmltestrunner:用來生成html測試報告

14、請簡單說一說get、post這兩種請求方法的區別?

get:

a. 一般對於從伺服器取資料的請求可以設定為get方式

b. get方式在傳遞引數的時候,一般都會把引數直接拼接在url上(例如:http://***?id=1&type=2)

c. get請求方法可以傳遞的引數資料量是有限的(因為一般引數是拼接在url上,而瀏覽器對於url的長度是有限制的)

d. get請求因為是直接將資料拼接在url上,所以安全性不如post強(相對),但是get的執行效率要快於post

post:

a. 一般往伺服器提交資料的請求會設定為post方式

b. post方式傳遞引數一般都會把引數放在請求體,而不會拼接在url

c. post請求方法可以提交的資料量不受限制

d. post請求傳參相對於get要安全(相對不是絕對),但是post的執行效率不如get。

15、在瀏覽器中輸入url,回車之後發生了什麼?

1)url 解析

2)dns 查詢

3)tcp 連線

4)處理請求

5)接受響應

6)渲染頁面

介面自動化

推薦一款適合開發的開源 該公司產品從資料庫,持續整合 ci 伺服器,問題和專案跟蹤工具,到介面自動化工具都應有盡有。是我見過比較系統的開發 這裡我們以介面自動化為主講解 pycharm frommenu 2.安裝python解析器 version 3或者version2隨便哪乙個都可以,本人自用ve...

介面自動化

1 get請求 2import requests 3 url 4 data 5 res requests.get url,data 直接用requests.get url,data 即可,其中.get表示為get方法,不需要對字典型別的data進行處理6 res res.text text方法是獲取...

介面自動化

介面 python request 單元測試 測試套件 斷言 自動化測試報告 web端 python selenium 單元測試 斷言 測試套件 自動化測試報告 移動端 斷言 測試套件 自動化測試報告 例如 coding utf 8 匯入介面的包 import requests get 網路請求 網...