软件测试面试题【2021模拟面试整理版(含答案)】
點擊上方藍色“程序員一凡”,選擇“設為星標”
主頁點擊“領取資料”獲取整理好的學習資源
一、問題預測
\1. 讓簡單介紹下自己(每次面試開場)
\2. 讓說下自己會的內容
\3. 看了哪些書籍(有問到)
\4. 了解過哪些技術博客/論壇(有問到)
\5. 是否了解軟件測試需要掌握哪些知識(問到類似問題)
\6. 之前面試過,覺得自己需要補充哪些?做了哪些行動?
\7. 為什么做測試,覺得自己做測試有哪些優勢?(有問到)
\8. 知道哪些Bug系統
9.測試用例的基本要素是?
二、介紹一下公司項目
三、技能方面
1、 數據庫方面常識
2、 linux操作
3、缺陷方面(有問到)
4、用例部分
5、軟件測試流程
6、網絡相關
7、測試工具
8、其他概念問題
四、你還有什么想問的嗎(必答)
五、簡歷模板
一、問題預測
你好,我叫xx,來自xx,畢業于xx。目前有兩年的功能測試經驗。最近的一份工作是xx公司,主要參與app系統測試,負責xxapp,一款類似抖音的短視頻app功能測試,負責過的功能模塊有拍攝、上傳、搜索、推薦引擎等。主要運用邊界值,等價類,錯誤推測等常見黑盒測試方法。
我熟悉軟件測試基礎理論和測試流程,測試方法等,有app測試、web測試、接口測試經驗。熟悉數據庫增刪改查操作,熟悉使用測試管理工具。
軟件測試,軟件測試的藝術、軟件測試實用教程,在我負責短視頻的推薦引擎測試期間看完了項亮的《推薦系統實戰》主要是推薦系統的評測部分。
博客園、測試窩論壇,CSDN一些博客(面試經驗:面試中會問具體哪些博客),和公眾號一諾教育軟件測試(搜狗測試、軟件測試資源分享)
軟件測試基礎知識,流程,測試用例方法,數據庫相關知識,抓包分析,接口測試、測試工具、性能測試等。
很多公司對性能測試和自動化測試工具有要求,由于之前的工作主要涉及的是功能測試,所以這方面的知識儲備不夠。不過最近我在學習這方面的知識,希望以后在工作中能深入學習。
我覺得我個人的性格比較適合做測試。我比較細心耐心,考慮事情比較全面,這樣對于我在設計測試用例時很有幫助,而且我能夠很好的與人協調溝通,當我們測試和開發發生溝通上的矛盾時我也能很好的解決,我平常喜歡刷微博、知乎看熱門評論,喜歡考究大眾心理,這有助于我站在用戶角度設計測試點。
禪道/bugzila等
9.測試用例的基本要素是?
版本號,功能模塊,優先級別,前置條件,步驟,預期結果,實際結果等。
二、介紹一下公司項目
xxapp,是一款集短視頻、游戲、直播、社交互動于一體的內容娛樂APP。公司大約一個月發布一個較大的版本,需求數20幾個-40幾個不等(用例數xx+),每個版本包括的需求www\wap、后臺以及客戶端的需求。項目分客戶端版本負責人、后臺版本負責人、H5版本負責人等,負責人牽頭及落實整個測試流程。我當過的角色有H5活動負責人、推薦引擎版本負責人、客戶端和后臺系統測試人員。負責過的模塊用例數大概是500左右。
三、技能方面
1、數據庫方面常識
l關系型數據庫:把復雜的數據結構歸結為簡單的二元關系(即二維表格形式),通過SQL結構化查詢語句存儲數據
典型產品:
Mysql:互聯網領域、大中小型網站,游戲公司,電商平臺等等。體積小、速度快、成本低、開放源代碼
Oracle:傳統大企業、大公司、政府、金融、證券等。安全性、成本高、
l非關系型數據庫:非關系型數據庫也被稱為NoSQL數據庫,NOSQL的本意是“Not Olnly SQL”。NOSQL為了高性能、高并發而生
其他分類
1)鍵值(Key-Value)存儲數據庫:主要是使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據。簡單、易部署、高并發
典型:Redis、Memcached
2)列存儲(Column-oriented)數據庫:應對分布式存儲的海量數據。如果我們有一個Person類,我們通常會一起查詢他們的姓名和年齡,而不是薪資。這種情況下,姓名和年齡就會被放入一個列族中,而薪資則在另外一個列族中。
典型:Hbase
3)面向文檔數據庫:數據存儲的最小單位是文檔
典型:Mongodb、Hive
Mongodb一個介于關系型數據庫和非關系型數據庫之間的產品。高性能、易部署、易使用,存儲數據非常方便。
Hive可以用來進行統計查詢,HBase可以用來進行實時查詢
一些增刪改查筆試題準備
(另起一篇)
2、linux操作
linux搭建測試環境,比如web系統服務搭建。
一些常見命令準備
(另起一篇)
3、缺陷方面(有問到)
描述一個你印象最深刻的bug
在做上傳視頻的測試時,發現華為榮耀V10上傳手機自帶相機專業模式錄制的視頻會閃退。而ios上傳同個視頻提示合成失敗。
我將手機自帶相機錄制的專業模式和普通模式錄制的同樣時長的視頻發到電腦上,用格式工廠軟件查看視頻的不同之處,之后發現視頻編碼是不同的。
我繼續網上查閱了視頻編碼方面的知識,發現mp4視頻有幾種編碼,而繼續測試驗證發現我們的app上傳的視頻只支持mp4視頻中的H.264編碼格式。于是提交了視頻上傳不支持非H.264格式的視頻。并補充完善了相關用例。
(因為在公司沒有查日志權限,所以其實應該先查日志)
4、用例部分
現場讓你設計個用例,比如水杯、凳子怎么測試?
首先說明的是,遇到這樣的測試題目,首先應該反問面試官,需求是什么樣的,比如是測什么樣的杯子。
因為設計測試用例的規則應該是根據需求分析文檔設計用例,客戶需求什么,就測試什么。
但是在沒有需求分析文檔的前提下,來設計測試用例,可以考查一個測試人員的基本功,比如考慮問題是否全面,設計測試用例的方法是否合理等。
一般是根據自己的日常經驗和測試的思維來設計測試用例。在設計測試用例時一般從以下幾個方面進行分析:功能測試,性能測試,界面測試,安全性測試,兼容性測試,可用性測試,可靠性測試,本地化/國際化測試。
例子(另起一篇)
5、軟件測試流程
公司嚴格規范測試流程和測試文檔,首先是參與需求評審,編寫測試計劃、測試方案、測試用例,進行測試方案及用例的測試組內部評審,外部評審。
提取部分一級用例提交研發自測,研發自測通過后開開始執行一輪系統測試。
測試過程中發現并提交、跟蹤問題。
問題修復后進行回歸測試。
一輪測試完成后對修復包進行冒煙測試,測試通過則進行二輪測試。
二輪測試完成后會進行需求交叉測試。
完成測試編寫系統測試報告提交驗收測試。驗收測試通過輸出驗收測試報告。
6、網絡相關
網絡協議,如TCP/UDP的區別?
1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付
3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的
UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
三次握手與四次揮手三次握手通俗版:
第一次握手:客戶端要和服務端進行通信,首先要告知服務端一聲,遂發出一個SYN=1的連接請求信號,”服務端哥哥,我想給你說說話”。
第二次握手:當服務端接收到客戶端的連接請求,此時要給客戶端一個確認信息,”我知道了(ACK),我這邊已經準備好了,你現在能連嗎(SYN)”。
第三次握手:當客戶端收到了服務端的確認連接信息后,要禮貌的告知一下服務端,“好的,咱們開始聯通吧(ACK)”。
到此整個建立連接的過程已經結束,接下來就是雙方你一句我一句甚至同時交流傳遞信息的過程了。
四次揮手斷開連接通俗版:
第一次揮手:雙方交流的差不多了,此時客戶端也已經結尾了,接下來要斷開通信連接,所以告訴服務端“我說完了(FIN)”,此時自身形成等待結束連接的狀態。
第二次揮手:服務端知道客戶端已經沒話說了,服務端此時還有兩句話要給客戶端說“我知道你說完了(ACK),我再說兩句&*…%¥”…
第三次揮手:此時客戶端洗耳恭聽繼續處于等待結束的狀態,服務器端也說完了,自身此時處于等待關閉連接的狀態,并對告訴客戶端,“我說完了,咱們斷了吧(FIN)”。
第四次揮手:客戶端收知道服務端也說完了,也要告訴服務端一聲(ACK),因為連接和斷開要雙方都按下關閉操作才能斷開,客戶端同時又為自己定義一個定時器,因為不知道剛才說的這句話能不能準確到達服務端(網絡不穩定或者其他因素引起的網絡原因)。
所以默認時間定為兩個通信的最大時間之和,超出這個時間就默認服務器端已經接收到了自己的確認信息,此時客戶端就關閉自身連接,服務器端一旦接收到客戶端發來的確定通知就立刻關閉服務器端的連接。
到此為止雙方整個通信過程就此終結。
這里要聲明一下:斷開鏈接不一定就是客戶端,誰都可以先發起斷開指令,另外客戶端和服務端是沒有固定標準的,誰先發起請求誰就是客戶端。
三次握手闡述:
在第一次消息發送中,A隨機選取一個序列號作為自己的初始序號發送給B;
第二次消息B使用ack對A的數據包進行確認,因為已經收到了序列號為x的數據包,準備接收序列號為x+1的包,所以ack=x+1,同時B告訴A自己的初始序列號,就是seq=y;
第三條消息A告訴B收到了B的確認消息并準備建立連接,A自己此條消息的序列號是x+1,所以seq=x+1,而ack=y+1是表示A正準備接收B序列號為y+1的數據包。
四次揮手闡述:
由于TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數據發送任務后,發送一個FIN來終止這一方向的連接,
收到一個FIN只是意味著這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。
首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。
(1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
(2)第二次揮手:Server收到FIN后,發送一個ACK給Client,確認序號為收到序號+1(與SYN相同,一個FIN占用一個序號),Server進入CLOSE_WAIT狀態。
(3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
(4)第四次揮手:Client收到FIN后,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號+1,Server進入CLOSED狀態,完成四次揮手。
7、測試工具
測試工具,無非這幾類:
自動化測試工具 (如QTP)
性能測試工具 (如loadrunner)
測試管理類 (如jira)
安全測試工具
滲透測試工具
8、其他概念問題
Beta測試與Alpha測試有什么區別
1、Alpha測試
Alpha測試是由用戶在開發環境下進行的測試,也可以是開發機構內部的用戶在模擬實際操作環境下進行的測試。開發者坐在用戶旁邊,這是在開發者受控的環境下進行的測試。由開發者隨時記錄下錯誤情況和使用中的問題。
2、Beta測試
Beta測試是由軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試。開發者通常不在測試現場,這是在開發者無法控制的環境下進行的測試。由用戶記錄下遇到的所有問題,定期向開發者報告。beta測試是以模擬真實的使用環境從而發現缺陷的一種測試
3、驗收測試
驗收測試是以用戶為主的測試,軟件開發和QA人員也應該參加,測試一般在用戶所在地進行,由用戶驗證軟件產品是否滿足了所有的需求的一系列的驗收測試工作。
僅限于做項目的公司,部門內部測試穩定后,根據合同中需求由發包商進行驗收測試。驗收測試的目的是為了以發現”未實現的需求”為目的,以評估”適合使用”為目標,該類測試的不是以發現缺陷為主要目的。
區別:兩者的主要區別是測試的場所不同。
Alpha測試是指把用戶請到開發方的場所來測試,beta測試是指在一個或多個用戶的場所進行的測試。Alpha測試的環境是受開發方控制的,用戶的數量相對比較少,時間比較集中。
而beta測試的環境是不受開發方控制的,誰也不知道用戶如何折磨軟件,用戶數量相對比較多,時間不集中。
一般地,alpha測試先于beta測試執行。通用的軟件產品需要較大規模的beta測試,測試周期比較長。如果產品通過了beta測試,那么就可以正式發行了。
Alpha測試在系統開發接近完成時對應用系統的測試;測試后仍然會有少量的設計變更。這種測試一般由最終用戶或其它人員完成,不能由程序或測試員完成。
Beta測試 當開發和測試根本完成時所做的測試,最終的錯誤和問題需要在最終發行前找到。這種測試一般由最終用戶或其它人員完成,不能由程序員或測試員完成。
四、你還有什么想問的嗎(必答)
我非常希望能夠加入公司,所以想請問您覺得我還有哪些地方比較不足,能否給一些建議?以及是否有復試時間呢?
有續集……
一個用心碼了這么多文字的人,往往渴望得到大家的認可。如果你覺得這篇文章對你有幫助,雙擊屏幕,給我點個贊呀!
一個沉默不語的人,未必像看著那般平庸。很有可能人家在悄悄做事,然后一鳴驚人。
公眾號主頁點擊領取資料
資源包暗號:一凡
不要只做收藏從未停止,行動從未開始的人,很多事情,做著做著就無師自通了。如果在做的過程中還能稍微加點思考,稍微看一些別人的經驗和做法,成長會更快,效果也會更好!加油吧,測試人!路就在腳下,成功就在明天!
我是一凡,用心輸出有價值的內容!
(文章越來越多,在考慮做一個文章分類導讀,同時歡迎投稿)
創作不易,不想被白嫖,各位的「點贊」就是一凡創作的最大動力,我們下篇文章見!
總結
以上是生活随笔為你收集整理的软件测试面试题【2021模拟面试整理版(含答案)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 缩略图不变形
- 下一篇: 条款9:避免隐藏标准形式的new