溫馨提醒:本文共10000+字,適用測試小白轉行、測試老鳥跳槽,建議收藏慢慢看~~
相信每個準備軟件測試面試的同學,不管你是大學剛畢業,滿心憧憬著進入公司實習、非計算機行業轉行軟件測試、自學測試就業還是培訓后就業,都會面臨著眾多的疑問和不解,那就是該怎么走出著第一步,今天本文一次性告訴你,該怎么準備?
入行軟件測試的路有很多,訴求也是因人而已,你可以選擇自學、培訓入行,但按照全棧軟件測試的要求準備,可以適用不同行業要求;
1、學習方式
培訓方式入行,其實是最實惠、花費時間最少、有效的一種方式。
如果你不能脫產培訓學習,可以邊上班邊學習,充分利用好晚上、周末時間進行學習,充分利用網絡資源,在技能積累足夠的時候,選擇跳槽即可。
2、常見的測試工具
測試工具永遠是軟件測試人員的得力助手,不能完全依賴工具,但也不能沒有工具,在學習軟件過程中,要著中軟件測試工具的使用,下圖覆蓋初、中級軟件測試工程師所需具備的測試工具,要想學好,下手學習吧。
混在軟件測試職業圈,工具千千萬,不可能每個都會用,至少要知道有哪些工具可用,什么時候該用什么工具,每個工具能解決什么問題,然后再深入應用幾款工具即可,下面就帶大家總結一下。
測試管理工具
禪道:簡單好用,市場主流,互聯網行業居多
Jira:簡單好用
QC/ALM:復雜,收費,電信/金融行業使用較多
bugzilla:功能簡單
svn:代碼和文檔管理工具
git:但是多分支管理比svn好
接口測試工具
Jmeter(開源)
postman
SoapUI
推薦使用 jmeter 和 postman。
性能測試工具
loadrunner:大而全,要學精通還是有點難度,重量級工具,過去和現在都是行業老大
jmeter:基于java平臺的性能開源測試工具,其實也很強大,而且比較好用
Locust:基于python的一個性能測試工具
白盒測試工具
junit/testng:java下的單元測試框架
unittest/pytest:python下的單元測試框架
cppunit:跨平臺的c++單元測試框架
PhpUnit:Php語言下的單元測試框架
TestBed:一個重量級的白盒測試軟件,可以進行單元測試、集成測試、靜態測試,軍工行業常用
Klockword:靜態測試工具,軍工行業常用
持續集成工具
Jenkins:比較常見的一種CI工具
Hudson
網絡測試工具
以HTTP/HTTPs協議為主,網絡測試工具有:
wireshark
fiddler
charles
app自動化工具
appium:這個應該算是目前最流行的基于app的自動化測試框架了
uiautomator:安卓自動化測試框架,基本上支持安卓的所有事件操作
Monkey:安卓自帶的測試工具
Monkey Runner:Monkey改進版,支持自己編寫腳本測試,用Python語言
Robotium:一款國外的Android自動化測試框架,用法比較
web安全測試工具
appscan:算是用的非常多的一款工具了,掃描后能夠將絕大部分的漏洞找出來
fiddler:網絡抓包工具
burpsuite:暴力破解、抓包工具
skipfish:這是一個輕量級的安全測試工具,處理速度很快,每秒可處理2000個請求。
3、全棧軟件測試技能要求
先來看下軟件測試工程師的技術進階路線吧,從測試工程師入門,可以經歷功能測試、自動化測試(app、web、接口)、單元測試,最后可以定位測試開發工程師發展。
不要再道聽途說,軟件測試是一個點點點的行業了,那已經是老黃歷了,如果僅僅是點點點,是沒有任何競爭力的,給自己定個長遠點的目標,勇敢的跨出一步吧。
(1)通用軟件測試技術及理論
測試基礎理論是我們邁入軟件測試行業的基礎,不少人會以為這些是無用的,作為十年的測試老兵負責人的告訴你,這些東西決定著你對軟件測試理解的深度,決定著你將來能走多遠。這些也是各種中高端軟件測試技術、新技術的基礎。
軟件測試常見概念
軟件測試的分類
基于軟件生命周期的測試
軟件測試流程
黑盒測試方法
測試用例設計
測試用例執行及缺陷報告
測試報告
(2)測試環境配置
測試環境配置、搭建也是一個測試工程師必備的技能,這就要求你要對Liunx系統、mysql數據庫、docker等有一定的了解,至少這些知識可以作為測試的輔助,而不是包袱,也是你從測試工程師向測試開發工程師邁進的的基礎。
Mysql數據庫
Linux系統基礎
shell基礎
Redis數據庫
虛擬機測試環境管理
LAMP環境搭建
云服務器搭建
docker環境搭建
k8s環境搭建
(3)掌握至少兩門腳本語言
測試工程師還是要區別于開發的,開發可以在一個語言上縱向發展,但是作為測試工程師,就要要求掌握多種語言,以應付不同的項目、不同的團隊要求。建議大家以python為首,java語言為輔學習,查看各大招聘網站,基本上也是以這兩種語言為主的。
python基礎語法(主攻python棧自動化測試技術)
java基礎語法
html基礎
js基礎語法
svn
git/github
(4)UI自動化測試(web、app、小程序)
我們以python棧為主線,梳理自動化測試需要掌握的技術點,我們自動化又可以分為web端自動化技術、app端自動化測試技術及接口自動化測試技術。
UI端的自動化測試技術在經過前面幾年的發展及驗證,存在著很多自身的不足、性價比低的特點,企業需求也在逐漸減少。
python基礎
selenium
appium
requests
airtest
unittest
pytest
ddt
xlrd
pymysql
json
HTMLTestRunner
BeautifulReport
jenkins
git/github/svn
(5)接口測試(短期內需求猛增的技術)
接口測試是一種目前較為流行的測試方向,名字看起來特別的高大上,但是技術實現非常簡單,通俗點就是把瀏覽器做的事情(打包請求),我們自己手動來打包,并完成發送,通常市面上的主流的測試工具都可以實現打包的要求。
接口及接口測試的概念
HTTP請求報文
HTTP響應報文
TCP連接的三次握手、四次揮手
接口測試文檔的編寫和分析
Fiddler/charles抓包
postman(商用工具,很好用)
jmeter(強大,接口、壓力通吃)
requests(接口自動化,可以采用python+requests+pytest+ddt+git框架實現)
(6)性能測試技術
作為非功能性測試的技術,算是軟件測試的半壁江山,前幾年的輝煌,也在云服務慢慢被中小型企業接納的今天,逐漸沒落。
但是作為性能測試工具老大哥的Loadrunner,還是那個老大,但也終顯老態。
jmeter市場份額也在逐漸增加,慢慢趕超Loadrunner。
Locast作為后起之秀,背靠 Python 腳本語言,借助requests模塊組織腳本,可能更容易看清性能測試的本質。
(7)持續集成
隨著軟件系統越來越復雜,軟件測試越來越繁瑣,傳統的軟件集成模式也不再適應。
開發人員提交代碼至svn
測試人員檢出源碼
編譯打包
上傳服務器
部署啟動
開發測試腳本
完成測試
針對這種情況,持續集成被引入到測試工作中,協助測試人員進行自動化部署、啟動、測試,常用到的工具有,jenkins、docker、git/svn。
簡歷制作篇
簡歷是你展示給企業的第一名片,對你印象好壞,能不能吸引HR的目光,決定著你能不能進入面試環節,所以一個好的簡歷起到了至關重要的作用。
此處重點關注兩個點:
1、技能列表
把自己熟練掌握、掌握、熟悉、了解的技術、工具按照順序展示出來。
自己的亮點一定放在最顯眼的位置,直接抓住HR的眼光。
技術上要齊全,包括功能測試、接口測試、性能測試等,及其相關工具的使用。
對網絡協議、數據庫、Linux等也要有一定的基礎
對語言類,一般要掌握java、python兩種腳本語言的使用。
2、項目經驗
根據自己的實際工作經驗,梳理項目,可以分項目描述及項目職責兩部分即可。
三、常見面試題-智斗HR篇
作為軟件測試的面試者,整個面試過程都會與HR打交道,但是需要斗智斗勇的還是電話初面、終面談薪。
1、電話初面
要知道,初面是HR通過各種渠道(boss直聘、智聯、獵頭)獲得你的簡歷,初選后與你進行的第一次接洽,要知道現在的HR對你的理解都是從簡歷上來的,那這次電話面試很大層度上想了解下面幾點,【你只需要回答她想聽的即可】。
簡單自我介紹(一定體現關鍵字,其實就是你的優勢)
【在介紹完自己的基本信息之后,從項目、自己工作職責角度,逐步引出自己擅長的技術、工具等,通過間端的
介紹,讓面試官了解到簡歷中所看不到的一些信息】
你好,我叫xx,來自xx,畢業于xx。目前有兩年的功能測試經驗。最近的一份工作是xx公司,主要參與app系統測
試,負責xxapp,一款類似抖音的短視頻app功能測試,負責過的功能模塊有拍攝、上傳、搜索、推薦引擎等。
主要運用邊界值,等價類,錯誤推測等常見黑盒測試方法。
你的技能包括哪些方面(一般不會細究,一般都是依據技術部門提供的問題來問,他們都不一定知道答案,當然面的多了,也是懂一些的,不會太深,所以你大膽的說即可)
你的項目、行業(按照簡歷的實際情況說就行)
你上家公司為啥離職(這個找一個對自己有利的答案即可,切記吐槽前雇主)
最快的入職時間
上家公司名稱、位置、職位等(一般外包類的會問)
2、現場面試(二面、三面…)
如果電話初面沒問題,符合他們企業要求的話,就會約你線下二面,當然這塊以技術面試為主,也會有HR在場問一下HR關心的問題,已經幫梳理好了。
3、終面談薪
通過了技術面試,根據技術面試官的評級,HR就會根據崗位薪資范圍定薪,這次電話就是和你確定幾個情況,如果都能談妥,HR就可以發郵件申請發送offer了。
確定薪資(這個是在一定范圍內可以談的,雙雙都能接受即可)
是否可以在指定時間入職
入職帶的資料(離職證明、薪資流水、畢業證書、學歷證數等)
談薪技巧已經準備好了,注意查收:
四、常見面試題-技術篇
其實對面試題準備,無非下面幾點,我們只需要在面試前,分門別類去整理即可,有的需要去背、理解,有的需要去操作、使用,但不管怎樣,最終的要求都是能說出來,而且是轉化為自己語言說出來,這個很重要,如果存粹是背的,會給面試官留下不好的印象,只有自己真正理解了,才能獲得更多的機會。
下面每個部分,提供五六個面試真題,權當拋磚引玉。
1、測試環境問題
這塊主要是有關windows、linux、mysql、docker相關的內容,是屬于測試基礎技能。
(1)為什么使用數據索引能提高效率
數據索引的存儲是 有序的
在有序的情況下, 通過索引查詢一個數據是無需遍歷索引記錄的
極端情況下,數據索引的查詢效率為二分法查詢效率,趨近于log2(N)
(2)當前有兩張表,表A字段為id,name,address;表B字段為id,english成績 chinese成績:請以id關聯來那個張表并以enlish成績由高到低排序
(3)簡述ls,pwd,tail,sudo等linux命令的用途,使用方法
(4)如何關閉centos7的防火墻
(5)docker的作用是什么,簡單介紹如何在docker中搭建LAMP環境
2、測試基礎理論問題
測試理論、方法、原則相關的問題,是屬于測試入門級別技能。
(1)什么是回歸測試?
回歸測試是指修改了舊代碼后,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤的過程。
回歸測試策略包括:部分回歸測試及完全回歸測試。
回歸測試引入自動回歸,大幅降低系統測試、維護升級等階段的成本、提升了回歸測試的效率。
(2)如何測試一個 紙杯?
功能性:用水杯裝水看漏不漏;水能不能被喝到
安全性:杯子有沒有毒或細菌 可靠性:杯子從不同高度落下的損壞程度
可移植性:杯子在不同的地方、溫度等環境下是否都可以正常使用
兼容性:杯子是否能夠容納果汁、白水、酒精、汽油等
易用性:杯子是否燙手、是否有防滑措施、是否方便飲用
用戶文檔:使用手冊是否對杯子的用法、限制、使用條件等有詳細描述
疲勞測試:將杯子盛上水放 24 小時檢查泄漏時間和情況
壓力測試:用根針并在針上面不斷加重量,看壓強多大時會穿透
(3)Beta測試與Alpha測試有什么區別?
Beta testing(β測試),測試是軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試,開發者通常不在 測試現場。
Alpha testing (α測試),是由一個用戶代表在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作 環境下進行的受控測試。
(4)測試中的“殺蟲劑怪事”是指什么?
“殺蟲劑怪事”用于描述測試人員對同一測試對象進行的測試次數越多,發現的缺陷就會越來越少的現象。就像老用一種農藥,害蟲就會有免疫力,農藥發揮不了效力。這種現象的根本原因就是測試人員對測試軟件過于熟悉,形成思維定勢。
為了克服這種現象,測試人員需要不斷編寫新的測試程序或者測試用例,對程序的不同部分進行測試,以發現更多的缺陷。也可以引用新人來測試軟件,剛剛進來的新手往往能發現一些意想不到的問題。
(5)web系統測試點
針對web系統的測試點及測試思路,參考下面文章:
3、測試工具使用問題
(1)簡述Jmeter和postman工具的區別?
1.支持的協議不同
Postman只支持HTTP及HTTPs協議。
Jmeter支持HTTP、HTTPS、socket、POP3、smtp、JDBC的多種協議
2.步驟的實現(有區別)
Postman使用Collections管理用例,Jmeter是線程組管理用例
Postman和jmeter都是創建http請求
區別1:postman請求的請求URL是一個整體,jmeter分成了4個部分(協議、主機、端口、路徑)
區別2:postman可以在請求中直接填寫請求頭信息, jmeter需要通過添加http請求頭管理器添加請求頭
3數據用例的實現
區別1:jmeter比較適合進行數據與操作分離,而postman比較適合把數據和操作放在一起,顯然postman操作更簡單,jmeter更便于維護
區別2: postman也支持csv數據文件的導入,但是每次執行時都需要收工加載數據文件。不方便(所以只能做半自動化)
Jmeter可以進行完全自動化,特別是引入ant后效果更明顯
4斷言的實現
區別1:Postman有很多自帶的斷言函數,直接引用即可,操作非常方便。。。 jmeter也自帶斷言組件,操作非常直觀。 區別: postman用函數斷言, jmeter用元件進行斷言
區別2:jmeter支持正則表達式斷言,postman不支持
區別3:Jmeter的斷言更豐富。 postman需要通過編程來實現同樣的效果,所以難度更大
5執行
區別:默認執行,postman不能保存結果,jmeter可以報存結果
Postman可以通過newman實現批量執行和保存結果,jmeter可以通過ant實現批量執行和保存結果
6其他
Postman比較適合做手工接口測試,因為簡單,可以實現半自動化
Jmeter比較適合自動化接口測試,因為功能強大并且可以保存腳本,批量執行設置很容易
Postman一般用來做接口測試,用來發現BUG,驗證后臺程序
Jmeter可以進行接口測試及性能測試。
(2)monkey如何使用
(3)常見的ADB命令
捉蟲布道人:APP測試輔助神器之ADB
zhuanlan.zhihu.com
圖標
(4)postman工具進行接口測試
(5)fiddler的常用使用場景
fiddler的核心功能還是抓取HTTP/HTTPs報文,但也提供了mock、弱網等功能。
4、測試流程問題
(1)軟件測試流程
每個公司的測試流程都不盡相同,但大體是一致的:
需求評審(有開發人員,產品經理,測試人員,項目經理)
需求確定(出一份確定的需求文檔)
開發設計文檔(開發人員在開始寫代碼前就能輸出設計文檔)
想好測試策略,寫出測試用例
發給開發人員和測試經理看看(非正式的評審用例)
接到測試版本
執行測試用例(中間可能會補充用例)
提交bug(禪道系統錄入和跟蹤)
開發人員修改(可以在測試過程中快速的修改)
回歸測試(可能又會發現新問題,再按流程開始跑)
(3)自動化測試流程
5、大廠企業真題(是真題奧)
(1)JR頭條面試真題
(2)DY面試真題
測試資源免費領取~~~