關注公衆號【測試開發Guide】
回覆「java」:即可獲得java經典學習資料,帶你輕鬆入門java編程。
回覆「python」:免費獲取「python入門」高分好書,業餘時間偷偷變牛逼。
回覆「面試」:24個常見的測試面試題,你一定不想錯過。
回覆「書單」:獲取2020年軟件測試工程師必看的書單
回覆「測試用例」:獲取本人常用的 Excel 和 Xmind 測試用例模版
回覆「測試工具」:獲取 mac 和 windows 常用的測試工具
最近很多朋友都在說今年的互聯網行情不好,面試很難,不知道怎麼複習,我最近總結了一份在測試開發面試中比較常見的面試題合集,希望對大家有幫助。
本文共 4800 字,預計閱讀時間 13 分鐘,建議點贊+收藏再閱讀,防止丟失!只收藏不點贊都是壞人呀!
廢話少說,直上乾貨。
———— /目錄 / ————
-
什麼是軟件測試
-
軟件測試的目的是什麼?
-
白盒測試用例設計常用方法?
-
黑盒測試用例設計常用方法
-
什麼是灰盒測試?
-
列舉出你所瞭解的軟件測試方式
-
什麼是單元測試
-
單元測試、集成測試、系統測試、驗收測試、迴歸測試這幾步最重要的是哪一步?
-
集成測試和系統測試的區別,以及應用場景分別是什麼?
-
測試開發需要哪些知識?具備哪些能力?
-
請說一下手動測試與自動化測試的優缺點
-
自動化測試的運用場景舉例
-
軟件測試的核心競爭力是什麼?
-
測試和開發要怎麼結合才能使軟件的質量得到更好的保障
-
怎麼實施自動化測試
-
測試的相關流程
-
測試項目具體工作是什麼
-
BUG分級
-
APP性能指標有哪些?
-
APP測試工具有哪些?
-
BUG的生命週期
-
什麼是α測試和β 測試?
-
談談對敏捷的理解
-
什麼是壓力測試?壓力測試需要考慮哪些因素?
1、什麼是軟件測試?
軟件測試是在規定的條件下對程序進行操作,以發現錯誤,對軟件質量進行評估。
◆ ◆ ◆ ◆ ◆
2、軟件測試的目的是什麼?
軟件測試的目的在於(1)發現軟件的缺陷和錯誤(2)保證軟件的質量,確保能夠滿足用戶以及產品的需求。
軟件測試的目的是爲了找bug,並不是爲了驗證軟件沒有bug。
◆ ◆ ◆ ◆ ◆
3、白盒測試用例設計常用方法
靜態測試:不用運行程序的測試,如文檔測試、代碼檢查等
動態測試:需要執行代碼,接口測試、覆蓋率分析、性能分析、內存分析等。
邏輯覆蓋法:主要包括語句覆蓋,判斷覆蓋,條件覆蓋,判斷/條件覆蓋,條件組合覆蓋,路徑覆蓋等。
六種覆蓋標準發現錯誤的能力由弱到強的變化:
-
語句覆蓋,每條語句至少執行一次。
-
判斷覆蓋,每個判斷的每個分支至少執行一次。
-
條件覆蓋,每個判斷的每個條件應取到的各種可能的值。
-
判斷/條件覆蓋,同時滿足判斷覆蓋條件覆蓋。
-
條件組合覆蓋,每個判定中各條件的每一種組合至少出現一次。
-
路徑覆蓋,使程序中每一條可能的路徑至少執行一次。
◆ ◆ ◆ ◆ ◆
4、黑盒測試用例設計常用方法
等價劃分類,邊界值分析,錯誤推測法、因果圖法、場景法、正交試驗設計法、判定表驅動分析法、功能圖分析法等。
◆ ◆ ◆ ◆ ◆
5、什麼是灰盒測試?
灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於集成測試階段。目前互聯網的測試大多數都是灰盒測試。
◆ ◆ ◆ ◆ ◆
6、列舉出你所瞭解的軟件測試方式
按照軟件的生命週期劃分:單元測試、集成測試、系統測試、迴歸測試、驗收測試。
按照測試關注點劃分:功能測試、性能測試、穩定性測試、易用性測試、安全性測試。
按照測試實施者劃分:開發方測試(α測試)、用戶測試(β測試)、第三方測試。
按照技術/測試用例設計劃分:白盒測試、黑盒測試、灰盒測試。
按照分析方法劃分:靜態測試、動態測試。
按照測試執行方式劃分:手工測試、自動化測試。
按照測試對象劃分:程序測試、文檔測試。
7、什麼是單元測試
答:完成最小的軟件設計單元(模塊)的驗證工作,確保模塊被正確編碼。通常情況下是白盒的,對代碼風格和規則、程序設計和結構、業務邏輯等進行靜態測試,及早發現和解決不易顯現的錯誤。
8、單元測試、集成測試、系統測試、驗收測試、迴歸測試這幾步最重要的是哪一步?
答:這些測試步驟分別在軟件開發的不同階段對軟件進行測試,我認爲對軟件完整功能進行測試的系統測試很重要,因爲此時單元測試和集成測試已完成,系統測試能夠對軟件所有功能進行功能測試,能夠覆蓋系統所有聯合的部件,是針對整個產品系統進行的測試,能夠驗證系統是否滿足需求規格的定義,因此,我認爲系統測試很重要。
◆ ◆ ◆ ◆ ◆
9、集成測試和系統測試的區別,以及應用場景分別是什麼?
區別:
-
執行順序:先執行集成測試,待集成測試問題修復後,再做系統測試。
-
用例粒度:集成測試比系統測試用例更詳細,集成測試對於接口部分也要重點寫,而系統測試的用例更接近用戶接受的測試用例。
應用場景:
-
集成測試:一般包含接口測試,對程序的提測部分進行測試。測試方法一般選用黑盒測試和白盒測試相結合。
-
系統測試:針對整個產品的全面測試,既包含各模塊的驗證性測試和功能性測試,又包含對整個產品的健壯性、安全性、可維護性及各種性能參數的測試。測試方法一般採用黑盒測試法。
◆ ◆ ◆ ◆ ◆
10、測試開發需要哪些知識?具備哪些能力?
需要的知識:
軟件測試基礎理論知識,如黑盒測試、白盒測試等;
編程語言基礎,如C/C++、java、python等;
自動化測試工具,如Selenium、Appium等;
計算機基礎知識,如數據庫、Linux、計算機網絡等;
測試卡框架,如JUnit、Pytest、Unittest等。
具備的能力:
業務分析能力、缺陷洞察能力、團隊協作能力、專業技術能力、邏輯思考能力、問題解決能力、溝通表達能力和宏觀把控能力。
◆ ◆ ◆ ◆ ◆
11、請說一下手動測試與自動化測試的優缺點
手工測試缺點:
-
重複的手工迴歸測試,代價昂貴、容易出錯。
-
依賴於軟件測試人員的能力。
手工測試的優點:
-
測試人員具有經驗和對錯誤的猜測能力。
-
測試人員具有審美能力和心理體驗。
-
測試人員具有是非判斷和邏輯推理能力。
自動化測試的缺點:
-
不能取代手工測試。
-
無法運用在測試複雜的場景
-
手工測試比自動化測試發現的缺陷更多。
-
對測試質量的依賴性極大。
-
自動化測試不能提高有效性。
-
比手動測試脆弱,需要維護成本。
-
工具本身並無想象力。
自動化測試的優點:
-
對程序的迴歸測試更方便。
-
可以運行更多更繁瑣的測試。
-
可以執行一些手工測試困難或不可能進行的測試。
-
更好地利用資源。
-
測試具有一致性和可重複性。
-
測試的複用性。
-
增加軟件的信任度。
◆ ◆ ◆ ◆ ◆
12、自動化測試的運用場景舉例
-
線上迴歸(UI+接口)
-
手工測試難以執行的操作
-
簡單場景監控
-
穩定性測試(monkey+遍歷測試)
◆ ◆ ◆ ◆ ◆
13、軟件測試的核心競爭力是什麼?
答:早發現問題和發現別人無法發現的問題。
◆ ◆ ◆ ◆ ◆
14、測試和開發要怎麼結合才能使軟件的質量得到更好的保障
測試和開發可以按照V模型或W模型的方式進行結合。但應該按照W模型的方式進行結合比較合理。
V模型:
測試過程加在開發過程的後半段,比較被動。
W模型:
測試提前,甚至和開發是同步進行,測試不僅是程序,還包括需求和設計。W模型有利於儘早地全面的發現問題,降低軟件開發的成本,風險前置。
◆ ◆ ◆ ◆ ◆
15、怎麼實施自動化測試
-
明確測試目的。
-
判斷項目適不適合進行自動化測試。
-
對項目做測試分析。
-
制定測試計劃和測試方案。
-
搭建自動化測試框架。
-
設計或編寫測試用例。
-
執行自動化測試。
-
評估。
◆ ◆ ◆ ◆ ◆
16、測試的相關流程
按W模型:
需求測試 -> 概要設計測試 -> 詳細設計測試 -> 單元測試 -> 集成測試 -> 系統測試 -> 驗收測試
實際工作中的測試流程:
需求評審 -> 技術評審 -> case評審 -> 開發自測以及冒煙測試 -> 整體提測(集成測試) -> 迴歸測試 -> 系統測試 -> 驗收測試
◆ ◆ ◆ ◆ ◆
17、測試項目具體工作是什麼
-
搭建測試環境
-
撰寫測試用例
-
執行測試用例
-
寫測試計劃、測試報告
-
測試並提交BUG
-
跟蹤BUG修改情況
-
自動化測試
-
性能測試、壓力測試、安全測試等其他測試
◆ ◆ ◆ ◆ ◆
18、BUG分級
兩個維度去劃分
-
按BUG嚴重程度劃分等級:
-
blocker:系統無法執行,崩潰,或嚴重資源不足,應用模塊無法啓動或異常退出,無法測試,系統不穩定。常見的:嚴重花屏、內存泄漏、用戶數據丟失或破壞、系統崩潰/死機/凍結、模塊無法啓動或異常退出、嚴重的數值計算錯誤、功能設計與需求嚴重不符、服務器500等。
-
critical:影響系統功能或操作,主要功能存在嚴重缺陷,但不會影響到系統的穩定性。常見的有:功能未實現,功能錯誤、系統刷新錯誤、數據通訊錯誤、輕微的數值計算錯誤、影響功能及界面的錯別字或拼寫錯誤。
-
major:界面、性能缺陷、兼容性。常見的有:操作界面錯誤、邊界條件錯誤、提示信息錯誤,長時間操作無法提示、系統未優化、兼容性問題。
-
minor/trivial:易用性及建議性的問題。
-
-
按BUG處理優先級劃分:
-
immediate:馬上解決
-
urgent:急需解決
-
high:高度重視,有時間馬上解決
-
low:在系統發佈前解決或確認可以不用解決
-
◆ ◆ ◆ ◆ ◆
19、APP性能指標有哪些?
答:內存、CPU、流量、電量、啓動速度、滑動速度、界面切換速度、與服務器交互的網絡速度。
◆ ◆ ◆ ◆ ◆
20、APP測試工具有哪些?
接口測試:postman
性能測試:jmeter
抓包工具:chales、fiddler
UI自動化:uiautomator2、appium、atx
穩定性測試:monkey、maxim、uicrawler、appcrawler
兼容性測試:wetest、testin
內存、cpu、電量測試:GT、soloPi
弱網測試:chales
◆ ◆ ◆ ◆ ◆
21、BUG的生命週期
複雜版:
-
New(新的)
-
Assigned(已指派)
-
Open(打開的)
-
Fixed(已修復)
-
Pending Reset(待測試)
-
Reset(再測試)
-
Closed(已關閉)
-
Reopen(再次打開)
-
Pending Reject(拒絕中)
-
Rejected(被拒絕的)
-
Postponed(延期)
簡單版:
-
創建bug
-
分配bug
-
修復完待測試
-
關閉
-
重新開啓
-
無效
◆ ◆ ◆ ◆ ◆
22、什麼是α測試和β 測試?
α測試:在受控的環境下進行,由用戶在開發者的場所進行,開發者指導用戶測試,開發者負責記錄發現的錯誤和使用中遇到的問題。
β 測試:在開發者不可控的環境下進行,由軟件最終用戶在一個或多個客戶場所下進行,用戶記錄測試中遇到的問題,並定期上報給開發者。
◆ ◆ ◆ ◆ ◆
23、談談對敏捷的理解
提到敏捷,不得不聯想到瀑布開發。
瀑布開發按項目爲核心,一般都會有一個相對較長的項目週期,一開始把項目設計得大而全,完成項目並交付後,工作重心就會轉移到另一個項目去。
敏捷開發是以需求爲核心,一開始不會把產品設計得大而全,而是通過快速迭代的方式,不斷採集需求,不斷更新迭代。敏捷開發的開發週期更短,能夠快速試錯,快速迭代,敏捷開發比瀑布開發更順應目前的軟件開發趨勢。
敏捷開發也對應着有敏捷測試,測試環節貫穿整個迭代週期,從需求評審到發佈上線,都離不開測試快速跟進。
測試左移:需求評審、用例設計、自測工具、靜態代碼掃描等;
測試中:業務測試,接口測試,性能測試等;
測試右移:穩定性測試,迴歸測試,灰度測試等
◆ ◆ ◆ ◆ ◆
24、什麼是壓力測試?壓力測試需要考慮哪些因素?
壓力測試是在高負載情況下,對系統穩定性進行測試。在高負載的情況下,系統出現異常的概率要比正常負載時要高。高負載包含長時間運行、大數據、高併發等情況。
在做壓力測試時,一般要考慮環境因素、性能指標、運行時間等要素。
壓測環境最好和生產環境一致,假如要在生產環境進行壓測,需要在凌晨等在線用戶量極少的情況下進行。在生產環境測試時要做好數據隔離,生產環境需提供虛擬數據,採用虛擬賬號,避免對真實線上用戶造成影響。
性能指標包括,內存、CPU、TPS、QPS、網絡流量、錯誤統計等,這些指標需要監控。
壓測一般需要運行長時間,最好能夠通過長時間的壓測,繪製出曲線圖,這樣更容易觀察到性能瓶頸。
▼▼▼
以上,是我面試過程中常常會碰到的面試題,如果有不對的地方,歡迎在下方留言。
希望能夠對大家有所幫助。
長按識別下方二維碼關注公衆號
關注我的微信公衆號【測試開發Guide】,
回覆「java」:即可獲得java經典學習資料(我花200元買的),帶你輕鬆入門java編程。
回覆「python」:免費獲取「python入門」高分好書,業餘時間偷偷變牛逼。
回覆「面試」:24個常見的測試面試題,你一定不想錯過。