經(jīng)典測試工程師面試題(一)
經(jīng)典測試工程師面試題(三)
背景
為了擴展家里領(lǐng)導(dǎo)的測試知識水平和專業(yè)知識能力提升,以及為以后更好的面試做基礎(chǔ),特意從眾多測試相關(guān)題型整理出來腺逛,其中的答案僅供參考本砰。
什么是bug及汉?
沒有實現(xiàn)需求說明書列出的功能,出現(xiàn)了沒有需求說明書提到不該出現(xiàn)的事情焕阿;實現(xiàn)了多的功能咪啡;沒有實現(xiàn)應(yīng)該實現(xiàn)的邏輯。
開發(fā)人員修復(fù)缺陷后暮屡,如何保證不影響其他功能撤摸?
重新執(zhí)行測試用例,并且針對這個缺陷影響的相關(guān)點寫新的測試用例褒纲。
為什么選擇測試這行准夷?
因為其具有挑戰(zhàn)性和成就感,找一些系統(tǒng)隱藏的邏輯漏洞的時候莺掠,自己就非常的開心衫嵌。并且測試需要細(xì)心和耐心,自己可以很快的分析bug的來源彻秆。
簡單概述缺陷報告楔绞,并說明包括哪些項?
缺陷描述唇兑,缺陷的優(yōu)先級酒朵,缺陷的標(biāo)題,缺陷所屬版本號扎附,缺陷所屬的功能模塊蔫耽,操作步驟,預(yù)期效果留夜,缺陷原因匙铡,缺陷所屬的開發(fā)人員.
進(jìn)行測試時產(chǎn)生了哪些文檔或記錄图甜?
測試用例,測試報告鳖眼,測試日報
開發(fā)與測試的關(guān)系具则?
沒有開發(fā)就沒有測試,開發(fā)之后才開始測試具帮,
當(dāng)測試過程發(fā)生錯誤時,有哪幾種解決辦法低斋?
1.跳轉(zhuǎn)其他的測試流程
2.調(diào)用某個程序能繞過這個錯誤蜂厅,繼續(xù)后面的流程
什么是兼容性測試?
兼容性測試是檢查軟件在不同軟件平臺膊畴,硬件平臺上是否可以正常運行的測試掘猿。
主要查看軟件在不同操作系統(tǒng)、瀏覽器唇跨、數(shù)據(jù)庫中是否運行正常
軟件的評審一般由哪些人員參加稠通?其目的是什么?
參加人員:需求業(yè)務(wù)人員买猖、產(chǎn)品經(jīng)理改橘、項目經(jīng)理、開發(fā)人員玉控、測試人員
目的:查看軟件在未正式投入運行前是否還存在問題飞主。對于不同軟硬件平臺能否正常運行,是否有與客戶理解不一致的地方高诺,同時可以對一些可以改進(jìn)的地方再多加改進(jìn)碌识。
開發(fā)人員說不是bug時,你如何應(yīng)付虱而?
首先把自己的理由筏餐,并以需求說明書為自己的站點,如果開發(fā)人員還是不認(rèn)同牡拇,可以把自己的觀點和理由魁瞪,提交給產(chǎn)品經(jīng)理,由其去決定是否為一個bug
軟件測試項目從什么時候開始為什么惠呼?
需求確認(rèn)開始佩番,因為在需求階段,測試可以評審需求并進(jìn)行靜態(tài)測試罢杉,減少開發(fā)過程中的bug
您在以往的測試工作中都曾經(jīng)具體從事過哪些工作趟畏?其中最擅長哪部分工作?
做過web測試滩租,小程序測試赋秀,H5頁面測試利朵,后臺測試,接口測試猎莲。最擅長接口測試绍弟,自己給公司的業(yè)務(wù)流程寫過一套自動化框架,用于回歸業(yè)務(wù)流程
開發(fā)人員老是犯一些低級錯誤怎么解決著洼?
要求開發(fā)人員進(jìn)行自測樟遣,把這些問題在開發(fā)階段就解決好
通過缺陷管理系統(tǒng)對開發(fā)人員進(jìn)行控制
所有的軟件缺陷都能修復(fù)嗎?所有的軟件缺陷都要修復(fù)嗎身笤?
能修復(fù)豹悬,但不一定所有的缺陷都要修復(fù)
為什么盡量不要讓時間富裕的員工去做一些測試?
1液荸,非專業(yè)測試人員瞻佛,沒有組織性的測試工作,沒有規(guī)律和針對性娇钱,會影響到測試的質(zhì)量和版本更新的速度伤柄。
2,專業(yè)測試人員(但不是這個項目的測試員)這些人員不受測試計劃的時候和任務(wù)約定文搂,測試完畢后評估測試小組的工作質(zhì)量适刀,不利于bug管理。
在您以往的工作中煤蹭,一條軟件缺陷(或者叫Bug)記錄都包含了哪些內(nèi)容蔗彤?如何提交高質(zhì)量的軟件缺陷(Bug)記錄?
前提條件疯兼、測試環(huán)境然遏、操作步驟、預(yù)期結(jié)果吧彪、實際結(jié)果待侵、嚴(yán)重等級、版本信息姨裸,出現(xiàn)概率
問題描述和操作步驟要盡可能描述詳細(xì)秧倾,可以初步分析bug是客戶端的問題還是服務(wù)端的問題
您所熟悉的測試用例設(shè)計方法都有哪些?請分別以具體的例子來說明這些方法在測試用例設(shè)計工作中的應(yīng)用傀缩。
黑盒:
邊界值分析法:如參數(shù)的范圍0-128那先,輸入128,129,0這些值,查看是否有錯誤等
錯誤推測法:導(dǎo)入功能時赡艰,表格為空表格售淡,表格輸入1行,表格輸入10000行等
因果圖方法:組合參數(shù)邏輯圖
場景分析法:根據(jù)用戶操作模擬用戶操作
白盒:
邏輯覆蓋法,基本路徑測試
不能發(fā)現(xiàn)BUG的測試用例不是好的測試用例嗎揖闸?
不一定揍堕,要看情況,如果測試用例質(zhì)量高汤纸,沒有發(fā)現(xiàn)bug衩茸,說明開發(fā)質(zhì)量高。但一般程序都會有bug贮泞,如果沒有發(fā)現(xiàn)BUG楞慈,就要思索測試場景是否有遺漏,需求是否理解沒到位
測試用例需要哪些人來評審啃擦?
產(chǎn)品經(jīng)理囊蓝,開發(fā)人員,測試人員议惰,業(yè)務(wù)需求人員
靜態(tài)測試和動態(tài)測試有什么區(qū)別?
靜態(tài)測試:不運行程序乡恕,針對PRD等檢查代碼言询,審查代碼,靜態(tài)結(jié)構(gòu)分析傲宜,分析代碼質(zhì)量
動態(tài)測試:運行程序進(jìn)行黑盒測試和白盒測試
什么是內(nèi)存泄漏运杭、Http錯誤率、吞吐率函卒。響應(yīng)時間分別在web端和移動端是多少辆憔?哪些場景可以證明響應(yīng)超時?
內(nèi)存泄漏(Memory Leak)是指程序中己動態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無法釋放报嵌,造成系統(tǒng)內(nèi)存的浪費虱咧,導(dǎo)致程序運行速度減慢甚至系統(tǒng)崩潰等嚴(yán)重后果
HTTP錯誤率(HTTP error rate) 在選定時間段內(nèi),HTTP錯誤數(shù)量與請求數(shù)量的比率锚国。
吞吐率(Throughput) 是場景運行過程中服務(wù)器每秒的吞吐量腕巡。其度量單位是字節(jié),表示每個請求連接在任何給定的每一秒從服務(wù)器獲得的數(shù)據(jù)量血筑。
web端
當(dāng)用戶在2秒以內(nèi)得到響應(yīng)時绘沉,會感覺系統(tǒng)的響應(yīng)很快;
當(dāng)用戶在2-5秒之間得到響應(yīng)時豺总,會感覺系統(tǒng)的響應(yīng)速度還可以车伞;
而當(dāng)用戶在超過8秒后仍然無法得到響應(yīng)時,會感覺系統(tǒng)糟透了喻喳,或者認(rèn)為系統(tǒng)已經(jīng)失去響應(yīng)另玖,
場景:請求超時、頁面加載失敗
什么是接口測試
接口測試是測試系統(tǒng)組件間接口的一種測試。接口測試就是測試不同系統(tǒng)或模塊之間資源交互是否正確
為什么要做接口測試
因為在大部分系統(tǒng)和產(chǎn)品中日矫,資源數(shù)據(jù)都是核心赂弓,所以接口是需要要測試的,并且接口中大部分內(nèi)容都是數(shù)據(jù)哪轿,通過數(shù)據(jù)的對比可以推測系統(tǒng)和產(chǎn)品的邏輯盈魁,測試接口就是測試邏輯。所以很必要做接口測試
什么時候做接口測試
1.出現(xiàn)bug,通過接口測試窃诉,清晰找到bug的源頭杨耙,是前端還是后端的bug
2.回歸測試,利用接口測試原有的接口是否正常飘痛,保證之前的業(yè)務(wù)流程沒有受影響
3.接口開發(fā)完成后珊膜,可以做接口測試
接口測試的工具有哪些
soapUI、postman宣脉、jemeter车柠、insomnia、paw
接口測試的流程是什么塑猖?
1.接口的通過性驗證:數(shù)據(jù)正確輸入竹祷,是否正確返回結(jié)果。測試接口的正常場景和異常場景
2.邊界測試:不按照你接口文檔上的要求輸入?yún)?shù)羊苟,測試其邊界情況塑陵。比如說必填的參數(shù)不填,輸入整數(shù)類型的正常蜡励,超過參數(shù)取值范圍等
3.參數(shù)組合:如果接口中有參數(shù)需要組合用的令花,兩個參數(shù)是組合使用,測試其各種情況
4.異常驗證:測試冪等情況凉倚,并發(fā)情況兼都,事務(wù)測試等異常情況
5.接口安全:繞過驗證,敏感信息加密等情況
6.性能測試:響應(yīng)時間稽寒、并發(fā)數(shù)俯抖、吞吐量、服務(wù)器資源利用率
什么是單元測試瓦胎、功能測試芬萍、集成測試?
加分項:單元測試搔啊、功能測試柬祠、集成測試分別在web端、接口端负芋、移動端的定義漫蛔,你平時是怎么理解它們的嗜愈?
單元測試:是針對程序模塊來進(jìn)行正確性檢驗的測試工作
功能測試:在單元測試的基礎(chǔ)上,測試某一個功能點
集成測試:將所有模塊按照設(shè)計要求組裝成為子系統(tǒng)或系統(tǒng)莽龟,進(jìn)行集成測試
web端
單元測試/功能測試:頁面元素是否正確顯示其有效功能蠕嫁,如提交的action是否正確,搜索點擊是否執(zhí)行
集成測試:調(diào)用了后端接口的數(shù)據(jù)是否顯示正常毯盈,能否滿足需求
接口端:模塊/系統(tǒng)之前的調(diào)用剃毒,接口是否與設(shè)計相符,模塊組合后是否滿足需求
單元測試:某個函數(shù)/方法 寫的代碼是否達(dá)到編寫者的預(yù)期
功能測試:為實現(xiàn)一個功能點搂赋,調(diào)用幾個方法/函數(shù)
給定一個整數(shù)數(shù)組 nums 和一個目標(biāo)值 target赘阀,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個 整數(shù),并返回他們的數(shù)組下標(biāo)脑奠。
你可以假設(shè)每種輸入只會對應(yīng)一個答案基公。但是,你不能重復(fù)利用這個數(shù)組中同樣的元素宋欺。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
分別用C轰豆、Java、Python寫出相關(guān)代碼及測試用例
Python
def TargetSum(nums,target):
if len(nums) < 2:
return 0
for i in range(0,len(nums)-1):
for j in range (i+1,len(nums)):
if nums[i] + nums[j] == target:
return [i,j]
測試用例
def test_TargetSum1(self):
assert TargetSum([1,1,3,6,0,2],2) == [0,1]
def test_TargetSum2(self):
assert TargetSum([1],1) == 0
def test_TargetSum3(self):
assert TargetSum([6,2,4,3,1,2],4) == [1,5]
def test_TargetSum4(self):
assert TargetSum([2, 7, 11, 15],9) == [0,1]
Java
public int[] TargetSum(int nums[],int target){
Map<Integer, Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
return new int[] { map.get(temp), i };
}
map.put(nums[i],i);
}
return null;
}