測試面試題集錦(五)| 自動化測試與性能測試篇(附答案)


本文為霍格沃茲測試學院學員學習筆記。

本系列文章總結歸納了一些軟件測試工程師常見的面試題,主要來源於個人面試遇到的、網絡搜集(完善)、工作日常討論等,分為以下十個部分,供大家參考。如有錯誤的地方,歡迎指正。有更多的面試題或面試中遇到的坑,也歡迎補充分享。希望大家都能找到滿意的工作,共勉之!~

軟件測試工程師面試題

  1. 測試常見問題與流程篇
  2. 測試工具篇
  3. 計算機網絡知識與數據庫篇
  4. Linux 與 Python 編程技能篇
  5. 自動化測試與性能測試篇
  6. 軟素質篇(10 大靈魂拷問)與反問面試官篇

自動化測試相關

包含 Selenium、Appium 和接口測試。

1. 自動化代碼中,用到了哪些設計模式?
  • 單例模式
  • 工廠模式
  • PO模式
  • 數據驅動模式
2. 什么是斷言?
  • 檢查一個條件,如果它為真,就不做任何事,用例通過。如果它為假,則會拋出 AssertError 並且包含錯誤信息。
3. UI 自動化測試中,如何做集群?
  • Selenium Grid,分布式執行用例
  • Appium 使用 STF 管理多設備
  • Docker+K8S 管理集群
4. 怎么對含有驗證碼的功能進行自動化測試?
  • 萬能驗證碼
  • 測試環境屏蔽驗證
  • 其他操作不推薦
5. 如何優化和提高 Selenium 腳本的執行速度?
  • 盡量使用 by_css_selector() 方法
  • by_css_selector() 方法的執行速度比 by_id() 方法的更快,因為源碼中 by_id() 方法會被自動轉成 by_css_selector() 方法處理;
  • 使用等待時,盡量使用顯示等待,少用 sleep(),盡量不用隱式等待;
  • 盡量減少不必要的操作:可以直接訪問頁面的,不要通過點擊操作訪問;
  • 並發執行測試用例:同時執行多條測試用例,降低用例間的耦合;
  • 有些頁面加載時間長,可以中斷加載;
6. 接口測試能發現哪些問題?
  • 可以發現很多在頁面上操作發現不了的 bug;
  • 檢查系統的異常處理能力;
  • 檢查系統的安全性、穩定性;
  • 前端隨便變,接口測好了,后端不用變;
  • 可以測試並發情況,一個賬號,同時(大於 2 個請求)對最后一個商品下單,或不同賬號,對最后一個商品下單;
  • 可以修改請求參數,突破前端頁面輸入限制(如金額);
7. Selenium 中隱藏元素如何定位?
  • 如果單純的定位的話,隱藏元素和普通不隱藏元素定位沒啥區別,用正常定位方法就行了(這個很多面試官也搞不清楚);
  • 元素的屬性隱藏和顯示,主要是 type=“hidden” 和 style=“display: none;” 屬性來控制的,接下來在元素屬性里面讓它隱藏,隱藏元素可以正常定位到,只是不能操作(定位元素和操作元素是兩碼事,很多初學者傻傻分不清楚),操作元素是 click,clear,send_keys 這些方法;
  • JS 操作隱藏元素;
8. 如何判斷一個頁面上元素是否存在?
  • 方法一:用 try…except…
  • 方法二:用 elements 定義一組元素方法,判斷元素是否存在,存在返回 True,不存返回 False
  • 方法三:結合 WebDriverWait 和 expected_conditions 判斷(推薦)
9. 如何提高腳本的穩定性?
  • 不要右鍵復制 xpath(十萬八千里那種路徑,肯定不穩定),自己寫相對路徑,多用 id 為節點查找;
  • 定位沒問題,第二個影響因素那就是等待了,sleep 等待盡量少用(影響執行時間);
  • 定位元素方法重新封裝,結合 WebDriverWait 和 expected_conditions 判斷元素方法,自己封裝一套定位元素方法;
10. 如何定位動態元素?
  • 動態元素有 2 種情況,一個是屬性動態,比如 id 是動態的,定位時候,那就不要用 id 定位就是了;
  • 還有一種情況動態的,那就是這個元素一會在頁面上方,一會在下方,飄忽不定的動態元素,定位方法也是一樣,按 f12,根據元素屬性定位(元素的 tag、name的步伐屬性是不會變的,動的只是 class 屬性和 styles 屬性);
11. 如何通過子元素定位父元素
  • 使用element.parent方法
12. 平常遇到過哪些問題? ?如何解決的
  • 可以把平常遇到的元素定位的一些坑說下,然后說下為什么沒定位到,比如動態 id、有 iframe、沒加等待等因素;
13. 一個元素明明定位到了,點擊無效(也沒報錯),如果解決?
  • 使用 JS 點擊,Selenium 有時候點擊元素是會失效;
14. 測試的數據你放在哪?
  • 對於賬號密碼,這種管全局的參數,可以用命令行參數,單獨抽出來,寫的配置文件里(如 ini);
  • 對於一些一次性消耗的數據,比如注冊,每次注冊不一樣的數,可以用隨機函數生成;
  • 對於一個接口有多組測試的參數,可以參數化,數據放 YAML,Text,JSON,Excel 都可以;
  • 對於可以反復使用的數據,比如訂單的各種狀態需要造數據的情況,可以放到數據庫,每次數據初始化,用完后再清理;
  • 對於郵箱配置的一些參數,可以用 ini 配置文件;
  • 對於全部是獨立的接口項目,可以用數據驅動方式,用 excel/csv 管理測試的接口數據;
  • 對於少量的靜態數據,比如一個接口的測試數據,也就 2-3 組,可以寫到 py腳本的開頭,十年八年都不會變更的;
15. 什么是數據驅動,如何參數化?
  • 參數化的思想是代碼用例寫好了后,不需要改代碼,只需維護測試數據就可以了,並且根據不同的測試數據生成多個用例;
16. 其他接口都需要登錄接口的信息,怎么去讓這個登錄的接口只在其他接口調用一次?
  • 使用單例模式
  • 使用自定義緩存機制
  • 使用測試框架中的 setup 機制
  • pytest 中 fixture 機制
17. 接口產生的垃圾數據如何清理?
  • 造數據和數據清理,需用 python 連數據庫了,做增刪改查的操作測試用例前置操作,setUp 做數據准備后置操作,tearDown 做數據清理
18. 怎么用接口案例去覆蓋業務邏輯?
  • 考慮不同的業務場景,一個接口走過的流程是什么樣的,流程的邏輯是什么樣的,什么樣的參數會有什么樣的結果,多場景覆蓋;

性能篇

1. 性能測試指標包括哪些
  • 最大並發用戶數,HPS(點擊率)、事務響應時間、每秒事務數、每秒點擊量、吞吐量、CPU 使用率、物理內存使用、網絡流量使用等。
  • 前端需主要關注的點是:
    • 響應時間:用戶從客戶端發出請求,並得到響應,以及展示出來的整個過程的時間。
    • 加載速度:通俗的理解為頁面內容顯示的快慢。
      流量:所消耗的網絡流量。
  • 后端需主要關注的是:
    • 響應時間:接口從請求到響應、返回的時間。
    • 並發用戶數:同一時間點請求服務器的用戶數,支持的最大並發數。
    • 內存占用:也就是內存開銷。
    • 吞吐量(TPS):Transaction Per Second, 每秒事務數。在沒有遇到性能瓶頸時:TPS=並發用戶數*事務數/響應時間。
    • 錯誤率:失敗的事務數/事務總數。
    • 資源使用率:CPU占用率、內存使用率、磁盤I/O、網絡I/O。
    • 從性能測試分析度量的度角來看,主要可以從如下幾個大的維度來收集考察性能指標:
    • 系統性能指標、資源性能指標、穩定性指標
2. 如果一個需求沒有明確的性能指標,要如何開始進行性能測試?
  • 先輸出業務數據,如 pv、pu、時間段等,計算出大概的值,然后不斷加壓測到峰值
3. 介紹 JMeter 聚合報告包括哪些內容?
  • 請求名、線程數、響應時間(50 95 99 最小 最大)錯誤率、吞吐量
4. 如果有一個頁面特別卡頓,設想一下可能的原因?
  • 后台:接口返回數據慢,查詢性能等各種問題
  • 前端:使用 Chrome 工具調試,判斷 JS 執行久或是其他問題
  • 網絡問題
5. 說一說項目中的實際測試內容
  • 根據自己項目中的經驗實話實說,有沒有經驗很容易露餡。
6. 介紹一下 JMeter 進行性能測試的過程
  • 結合自己的項目經驗聊。大家也可以自行搜索。
7. 介紹一下 JMeter 和 LoadRunner 的區別
  • 詳細的不展開了,最重要的是相對來說 LoadRunner 的笨重、昂貴、閉源,理念和生態都落后,而 JMeter 是開源、可定制化開發,功能強大易用,並且在互聯網大廠都已經有非常成熟的落地方案(主流的互聯網公司基本都在使用 JMeter+ELK+Grafana+Influxdb 這套架構),可以說是進 BAT 大廠必備技能。還不會 JMeter 的同學建議抓緊補起來。

更多內容,我們在后續文章分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM