1、當一個接口出現異常時你如何分析?
考察點:考察隊你們系統了解程度,接口了解程度
1、通過fiddle或Charles等抓包工具抓取請求報文,返回報文,與接口文檔對比
2、Xshell連接服務器,查看日志進行分析
3、中間件(nginx,tomcat)出問題,消息隊列,數據同步
2、在自動化測試過程中上下游接口有數據依賴如何處理?
考察點:有沒真正做過自動化
將依賴的參數提取出來做成全局變量,然后進行參數化
mock服務
3、依賴第三方數據的接口如何進行測試
考察點:是否有能力對接第三方系統
根據第三方的接口文檔寫一個mock服務
讓開發直接寫死參數
開發debug修改參數
4、cookie與session的區別
考察點:網絡基礎
session:保存在服務端,跟蹤用戶狀態
cookie:客戶端(瀏覽器,app),session放在cookie
區別:
存放位置不同
作用不一樣
session是會失效
5、selenium的工作原理
考察點:是否深入了解selenium
selenium是通過webdriver實現對瀏覽器的操作
工作流程:
打開一個webdriver
打開瀏覽器
發送命令給瀏覽器
瀏覽器執行對應的操作
我們可以把WebDriver驅動瀏覽器類比成出租車司機開出租車。
在開出租車時有三個角色:
- 乘客:他/她告訴出租車司機去哪里,大概怎么走
- 出租車司機:他按照乘客的要求來操控出租車
- 出租車:出租車按照司機的操控完成真正的行駛,把乘客送到目的地
在WebDriver中也有類似的三個角色:
工程師寫的自動化測試代碼:自動化測試代碼發送請求給瀏覽器的驅動(比如火狐驅動、谷歌驅動)
瀏覽器的驅動:它來解析這些自動化測試的代碼,解析后把它們發送給瀏覽器
瀏覽器:執行瀏覽器驅動發來的指令,並最終完成工程師想要的操作。
所以在這個類比中:
1. 工程師寫的自動化測試代碼就相當於是乘客
2. 瀏覽器的驅動就相當於是出租車司機
3. 瀏覽器就相當於是出租車
6、web自動化中如何處理多窗口?
考察點:經驗有沒那么豐富
1、先獲取當前頁面的headkle
2、獲取到新頁面的headle
3、很多窗口時候可以根據url地址去進行帥選
4、進行切換
7、web自動化過程中彈窗的處理
考察點:經驗問題
瀏覽器彈框、
alert彈框:driver.switch_to.alert
自定義彈框:模態框
先觸發,再定位
8、自動化過程中如何處理驗證碼
考察點:經驗問題
萬能驗證碼
開發寫死或注釋校驗的代碼
使用第三方識別驗證碼(花錢)
數據庫,redis,服務器日志查找
9、python為什么使用*args和 **kwargs?
考察點:python基礎
*args:不定長參數,不確定要傳對少個參數的時候
**kwargs:關鍵字參數,不確定要傳多少個關鍵字參數的時候
10、自動化測試在什么階段執行會帶來什么收益?
考察點:自動化實施階段,自動化的作用
接口自動化:前后端聯調完成后,接口測試,當我們功能測完后,做接口自動化
UI自動化:頁面功能穩定之后,做UI自動化
效率問題:提高回歸測試效率
回歸測試容易漏測問題
11、自動化測試框架包含哪些模塊?
考察點:有沒有真正設計過自動化框架
基礎方法,數據驅動,po分層,接口分層(業務與數據分離),工具包、配置文件、測試報告、日志
12、web ui自動化中顯性等待、隱形等待的區別?
智能等待:在一定的時間內,找不到元素,就會報錯
顯性等待:針對某一個元素,設置等待時間和輪循時間去查找
隱形等待:針對所有元素,設置一個等待時間,在設置的時間內,程序會不斷得檢查元素是否全部加載完成
13、如何提高selenium的腳本的執行效率與穩定性?
使用等待時,盡量使用顯示等待,少用sleep(),盡量不用隱式等待
多個if elif條件判斷,可以把最有可能先發生的條件放到前面寫,這樣可以減少程序判斷的次數,提高效率
降低用例的之間的耦合度
14、unittest與pytest的區別?
1、用例設計規則
2、用例前置與后置條件
3、斷言
4、測試報告
5、失敗重跑機制
6、參數化
7、用例分類執行