[转载] 谈面试
[轉(zhuǎn)載] 自 oscarxie?的 談面試上?, 談面試下
2014-06-12
前段時(shí)間有新的產(chǎn)品需要招人,安排和參加了好幾次面試,以前有寫過關(guān)于最近電話面試的體會(huì)一文,這次談?wù)劸唧w的面試問題,在面試他人的同時(shí)也面試自己。
面試問題是參與面試同事各自設(shè)計(jì)的,我也不清楚其他同事的題目,就談?wù)勛约涸O(shè)計(jì)的其中2道題。
過去面試總是會(huì)有如何測試Google首頁,測試杯子,測試電話之類的,有偷懶的嫌疑,這次來個(gè)具體的,第一個(gè)題目如何測試下面這個(gè)表:
?
一、第一個(gè)問題設(shè)計(jì)測試用例
面試?yán)锏玫降暮芏嗷卮鹁褪且粭l條羅列,例如:
1. 界面顯示是否正常,各種瀏覽器、分辨率,文字是否顯示正常
2. 這個(gè)數(shù)據(jù)是否和數(shù)據(jù)庫一致
3. promote按鈕是否正常使用?
4. 上一頁下一頁按鈕是否正常
5. 列表標(biāo)題是否支持排序,排序功能是否正常(很奇怪,這個(gè)提到的人不多,類似的下拉列表的Autocomplete也很少人提到)?
6. ......?
?
比較少的聽到按照測試類型來設(shè)計(jì)的,例如界面測試用例、功能測試用例、大數(shù)據(jù)測試用例等等,
也沒有聽到按照正常用例和異常用例來羅列。
?
二、如果你來設(shè)計(jì)這個(gè)表,還會(huì)做哪些完善
1. 可能有些人注意到,這個(gè)結(jié)果總共有99523個(gè),提供的翻頁只有前進(jìn)后退,是否加個(gè)go to page的功能
2. 貌似我們以前見過列表翻頁還有提供第一頁和最后一頁,那是否也加上
3. 結(jié)果很多,是不是加個(gè)搜索(其實(shí)這個(gè)數(shù)據(jù)是搜索得到的)
4. 這個(gè)列表一頁只顯示10個(gè)結(jié)果,是否可以多顯示些,是否加個(gè)每頁顯示數(shù)目
...
問到第二個(gè)問題,有些面試人員就迷惑了,經(jīng)常聽到的是"我們都是根據(jù)需求測試的",那我問,你們對(duì)用戶體驗(yàn)關(guān)注么,
得到很多回答是"設(shè)計(jì)好的,我們只是測試下",被動(dòng)式的測試居多。
?
三、如果你來實(shí)現(xiàn)這個(gè)表會(huì)怎么做
1. 最簡單的,拉個(gè)控件,之后連接到數(shù)據(jù)庫,搞個(gè)dataset/datatable數(shù)據(jù)綁定讀取數(shù)據(jù)顯示
2. 直接連接到數(shù)據(jù)庫如果數(shù)據(jù)量大時(shí),前臺(tái)等待過久怎么辦,哦,有AJAX,異步獲取數(shù)據(jù)
3. 還有沒有更好的,預(yù)加載,生成10頁的結(jié)果放在服務(wù)端,這個(gè)技術(shù)在網(wǎng)購網(wǎng)站首頁的促銷商品大量使用
這是一個(gè)優(yōu)化的問題,可惜很多測試對(duì)于開發(fā)的設(shè)計(jì)實(shí)現(xiàn)沒有任何的興趣或是根本不去了解。
了解了下,有很多公司是不能看代碼的,能看代碼的也沒有編輯的權(quán)限,把測試定位成開發(fā)的服務(wù),但并沒有充分利用測試可以幫助開發(fā)定位錯(cuò)誤,
讓開發(fā)更快的修復(fù)缺陷,更多的是選擇讓測試熟悉業(yè)務(wù)。?
?
四、某位測試工程師自己寫了個(gè)自動(dòng)化腳本進(jìn)行翻頁,可是翻頁到1萬多結(jié)果的時(shí)候,瀏覽器崩潰了,你來研究下是什么原因
這個(gè)問題很多人思索后放棄了,那么我提示說崩潰的時(shí)候,瀏覽器占用了2G的內(nèi)存,極少有人提到查看日志。
1. 使用自動(dòng)化的時(shí)候,是否可以再寫個(gè)腳本監(jiān)控瀏覽器操作的資源使用情況
2. 內(nèi)部測試系統(tǒng)是否可以打開debug模式用來記錄日志
3. 是否可以查看開發(fā)代碼,看看開發(fā)實(shí)現(xiàn)翻頁部分的代碼
4. 和開發(fā)溝通,一起來排查錯(cuò)誤?
...
很失望,到這個(gè)問題很少得到滿意的答復(fù),測試的同學(xué)們?cè)趶V度上有所突破外是否也注重下深度,我自己也逐漸意識(shí)到這些問題,剛好作為面試題目。?
?
相似的問題,如何測試下拉列表,有興趣的同學(xué)可以練練手。
?
另一題目是關(guān)于文件讀寫
有一個(gè)文件,存放著地理信息,類似下面,想從里面取出IP地址用在其他地方,即如何從一個(gè)文件中取出IP地址存入另一個(gè)文件。
1.0.0.0|apnic debogon project|null|7|0r||12|0|22581|4|0|| 1.0.1.0|chinanet fujian province network|null|591|41||43|0|35075|4|0|| 1.0.2.0|chinanet fujian province network|null|591|41||43|0|35075|4|0|| 1.0.3.0|chinanet fujian province network|null|591|41||43|0|35075|4|0|| 1.0.4.0|level collins street|null|7|0r||12|0|3719|4|0|| 1.0.5.0|level collins street|null|7|0r||12|0|3719|4|0|| 1.0.6.0|level collins street|null|7|0r||12|0|3719|4|0|| 1.0.7.0|level collins street|null|7|0r||12|0|3719|4|0|| 1.0.8.0|chinanet guangdong province network|null|20|47||43|0|7392|4|0|| 1.0.9.0|chinanet guangdong province network|null|20|47||43|0|7392|4|0||...
?
這個(gè)第一步就很多人放棄了,理由基本上是"以前學(xué)校學(xué)過某某語言,后面工作就沒寫過代碼", 稍微好點(diǎn)的呢,"可以說下思路么",也行,那說下思路吧。??
少數(shù)人會(huì)想到使用awk命令直接在teminal運(yùn)行,也有想到寫個(gè)小腳本來讀取寫入。
應(yīng)該說不管開發(fā)測試,很多都是計(jì)算機(jī)相關(guān)專業(yè)畢業(yè)的,我想在現(xiàn)行教育體制下,大學(xué)里至少都學(xué)過C語言吧,可是有些測試人選擇測試職業(yè)后,
直接把Coding的技能拋棄了,注意,是自己拋棄了,雖然在公司工作上不用編碼,但是工作后呢,有沒有自己寫些東西。?
?
好了,假設(shè)寫了個(gè)小腳本,例如理想情況下第一豎線前都是IP地址,寫個(gè)python腳本如下:
1 #!/usr/bin/python2.4 2 # 3 4 import re 5 6 geofile=open('geo.csv','r') 7 lines=geofile.readlines() 8 for line in lines: 9 a=line.split('|') 10 ipfile=open('ip.txt','a') 11 print >> ipfile,a[0] 12 geofile.close() 13 ipfile.close()?
?
接下來請(qǐng)對(duì)寫的這個(gè)命令也好,腳本也好測試。
1. 正常用例
2. 異常用例
這個(gè)問題可以從2種角度入手,一種直接把它當(dāng)作黑盒來測試,不知道里面的實(shí)現(xiàn),提供不同的輸入文件查看輸出結(jié)果;另一種可以采用單元測試。
可惜很多面試人糾結(jié)在文件的第一列是不是IP地址,需要判斷。
?
腳本寫好了,也測試了,如果這個(gè)地理信息文件很大呢,具體點(diǎn),這個(gè)是全球地理信息文件,超過2G,你寫的這個(gè)腳本執(zhí)行要很久哦。
這又是個(gè)優(yōu)化問題,整個(gè)面試只有一位同學(xué)說可以采用分割文件的做法,先分割再合并,他也是提到使用awk命令的同學(xué)。
可惜沒有聽到使用多線程多進(jìn)程的方式。?
?
這次面試感慨頗多,面試的對(duì)象基本是工作2、3年的測試工程師,但對(duì)測試的認(rèn)識(shí)普遍還是幾年前的樣子,面試要求也是一再降低,統(tǒng)計(jì)下來,9個(gè)候選人能選中一個(gè)。
雖然外面宣傳的測試職業(yè)前途非常光明,不過在實(shí)際工作中,中小型企業(yè)測試人的地位普遍低于開發(fā),除了幾個(gè)大公司。
測試如果想要提高自己的地位,首先要提高自己的技能,不僅僅是在測試技術(shù)上,開發(fā)技術(shù)和對(duì)開發(fā)設(shè)計(jì)的理解也是需要提高的,這樣才能獲得和開發(fā)同等的交談資格
總結(jié)
- 上一篇: Jacob Java程序把Word文档直
- 下一篇: environment variable