一道面試題:百度首頁的測試用例設(shè)計
最近我被裁員,去面試的時候有這個題目:
以下內(nèi)容除說明百度出來的以外全部原創(chuàng)。。。拋磚引玉,僅供參考。
××××××××××××××××××××××××××××××××××
先來一個一般上測試人員最喜歡最常用的測試方法,邊界值法。
文本框邊界值,一般可以測試一下輸入字符的數(shù)量。
探索過程:
1.不輸入文字,直接按搜索----->頁面刷新,無變化---->結(jié)論1
2.復(fù)制粘貼一段很長的中文進入文本框----->被百度自動截取其中前100個字-->結(jié)論2
3.按下搜索按鈕,百度跳轉(zhuǎn)到搜索結(jié)果頁面,并提示“"××" 及其后面的字詞均被忽略,因為百度的查詢限制在38個漢字以內(nèi)”,將被自動截取的內(nèi)容復(fù)制粘貼到word,統(tǒng)計字數(shù)為38--->結(jié)論3
5.復(fù)制粘貼一段很長的中文、英文、空格、符號混合文本進入文本框----->被百度自動截取其中一段內(nèi)容。---->結(jié)果截取了100個字--->結(jié)論4
6.復(fù)制粘貼38個漢字進入搜索文本框,并中間加入62個連續(xù)空格后按下搜索----->搜索結(jié)果里最后一個漢字被忽略,因為前面有37個漢字加1個合并后的空格長度已達38.并且在文本框里原來62個空格的位置現(xiàn)在顯示一個空格--->結(jié)論5
關(guān)于文本框字符數(shù)的結(jié)論:
1.最小輸入值為0個字;
2.百度搜索文本框內(nèi)可輸入的最大字數(shù)是100個漢字;
3.百度搜索文本框的輸入值在點擊搜索按鈕后,會被截取前38個漢字,其后面的字詞均被忽略;
4.任意一個中文、英文、符號、空格在輸入進文本框內(nèi)第一次計數(shù)時均視同一個漢字;
5.連續(xù)的空格在點擊搜索按鈕后進行搜索時會自動合并,并轉(zhuǎn)化一個單獨的空格。
根據(jù)上述探索結(jié)果設(shè)計的文本框邊界值測試用例(思路):
1.輸入0個漢字:
什么也不輸入直接點擊搜索按鈕,點擊后應(yīng)刷新首頁
2.輸入38個漢字:
輸入38個漢字后點擊搜索按鈕,成功跳轉(zhuǎn)到搜索結(jié)果頁面
3.輸入39個漢字:
輸入39個漢字后點擊搜索按鈕,跳轉(zhuǎn)到搜索結(jié)果頁面,并在結(jié)果頁面上顯示“"×" 及其后面的字詞均被忽略,因為百度的查詢限制在38個漢字以內(nèi)”
4.輸入100個漢字:
輸入100個漢字后點擊搜索按鈕,跳轉(zhuǎn)到搜索結(jié)果頁面,并在結(jié)果頁面上顯示“"×" 及其后面的字詞均被忽略,因為百度的查詢限制在38個漢字以內(nèi)”
5.嘗試輸入100個以上的漢字:
嘗試輸入101個漢字,預(yù)期結(jié)果為嘗試失敗,只能輸入100個漢字。
6.英文、符號的測試:
以英文、符號作為輸入值,重復(fù)用例1到5,預(yù)期結(jié)果應(yīng)與漢字相同。
7.空格的測試:
復(fù)制粘貼38個漢字進入搜索文本框,并中間加入62個連續(xù)空格后按下搜索,預(yù)期搜索結(jié)果里最后一個漢字被忽略,并在結(jié)果頁面上顯示“"×" 及其后面的字詞均被忽略,因為百度的查詢限制在38個漢字以內(nèi)”同時,連續(xù)的空格應(yīng)在搜索后的文本框內(nèi)顯示為一個空格。
可能的問題或者待改進的地方:
1.結(jié)論4導(dǎo)致百度搜索支持的英文關(guān)鍵字長度不足。與同類網(wǎng)站谷歌的對比,同樣一段英文(約十幾個單詞)在谷歌里能正常搜索,在百度里會被截取前面38個字母。
2.結(jié)論1中不輸入關(guān)鍵字點搜索沒有任何提示,如果有提示會不會好一點。與同類網(wǎng)站谷歌對比,百度有明顯的刷新頁面動作,谷歌沒有刷新頁面(沒有刷新頁面進度條)。如果沒有刷新頁面動作會不會更好。
×××××××××××××××××××××××××××××××××××
然后是另一個測試人員最愛的測試,等價類法。
一般面試另一個經(jīng)常出的題目就是問一個三角形,輸入三個數(shù)字作為邊長,然后要判斷會變成正三角,等腰三角,還是普通三角,還是不能變成三角來劃分等價類。這種case的設(shè)計就是基礎(chǔ)的基礎(chǔ)。
但如果測百度首頁就比較復(fù)雜。因為用戶輸入值太多。
等價類可以這么劃:
按區(qū)間劃分。
按數(shù)值劃分。
按數(shù)值集合劃分。
按限制條件或規(guī)劃劃分。
按處理方式劃分。
三角形問題顯然按照數(shù)值和區(qū)間劃分了。但百度首頁的話就難劃了。
按區(qū)間劃 1.有意義的關(guān)鍵詞做輸入值,預(yù)期能搜出結(jié)果
2.無意義的關(guān)鍵詞做輸入值(比如用臉滾鍵盤來輸入一些亂七八糟的關(guān)鍵字),預(yù)期搜不出任何結(jié)果
按數(shù)值劃,不合適。
按數(shù)值集合劃分,不合適。
按限制條件或規(guī)劃劃分,不合適。
按處理方式劃分,需要知道百度是怎樣處理關(guān)鍵字的。也就是說知道內(nèi)部代碼邏輯,有幾種處理方式的話就可以劃幾個等價類,但是我不知道。。。
×××××××××××××××××××××××××××××××××××
第三種方法:寫case就是按照需求和標準來寫嘛
對于搜索引擎的測試需求和評價指標隨便百度了一下就找到了:
1)搜索覆蓋的網(wǎng)站或網(wǎng)頁數(shù)目及范圍;
2)結(jié)果的準確性,或者說相關(guān)度;
3)結(jié)果的全面性;
4)結(jié)果的時效性,比如說期望搜到最新的結(jié)果;
5)搜索的速度或者響應(yīng)時間
6)易用性
7)鏈接有效性、穩(wěn)定性等
對于這些我們可以一個個設(shè)計用例來測
比如
1.找一個很偏僻的小網(wǎng)站看看能不能被搜到。
2.挑一系列常用關(guān)鍵字,然后人工檢查搜索結(jié)果的相關(guān)度。
3.挑一系列常用關(guān)鍵字,然后人工檢查搜索結(jié)果的排序等等
其中的問題是,
1.這個偏僻的小網(wǎng)站應(yīng)不應(yīng)該被搜到呢。
2.我怎么知道這個搜索結(jié)果的相關(guān)度哪個應(yīng)該算高,哪個應(yīng)該算低。
3.我怎么知道這個搜索結(jié)果的哪個應(yīng)該排第一哪個應(yīng)該排第二。等等
這里應(yīng)該超出黑盒測試的范圍了。
假如能用白盒測試/自動化測試。常用方法有:
1.使用另一套完全不同的邏輯實現(xiàn)一套代碼,來對比結(jié)果。(不常用,代價太高)
比如說為了測試百度,我們自己寫了一個谷哥欠,然后對比兩者的搜索結(jié)果
2.按照現(xiàn)有代碼設(shè)計時的邏輯,人工計算驗證該代碼是否運行正確。(太難算。)
3.設(shè)計一些有一定通用性的規(guī)則,然后校驗。(推薦)
比如說,給你一個數(shù)據(jù)庫,告訴你里面所有記錄都是數(shù)字,那么寫腳本檢查數(shù)據(jù)庫的記錄,當發(fā)現(xiàn)有字母時,腳本可以報異常。
同樣,在百度里搜索一個關(guān)鍵字,然后根據(jù)預(yù)先定義好的某個規(guī)則,比如搜索結(jié)果頁面在相關(guān)度一樣的時候應(yīng)當以時間為排序標準,檢查出結(jié)果里有明顯違背時,腳本可以報異常。
4.其他?(我上面都是自己根據(jù)自己經(jīng)驗總結(jié)的,真實情況畢竟不清楚)
5.還有特別提一下易用性。
百度里面有:
1.下拉框提示
2.搜索結(jié)果頁提示”要找的是不是xxxx“
3.搜索結(jié)果頁提示”關(guān)鍵字里去掉引號可以找到更多xxx“
4.搜索結(jié)果頁提示”您輸入的網(wǎng)址是不是xxx“
等等,都可以用探索性測試的方法試出來。然后針對他們設(shè)計對應(yīng)的case。
×××××××××××××××××××××××××××××××××××
這樣就完了?
沒呢。。。百度首頁還有用戶登錄、導(dǎo)航、天氣預(yù)報、隨心聽、自定義主頁、各種鏈接等等。
就光從功能測試角度來看也有很多東西需要測。
版權(quán)聲明:本文出自 zhangting85 的51Testing軟件測試博客:http://www.51testing.com/?207573
原創(chuàng)作品,轉(zhuǎn)載時請務(wù)必以超鏈接形式標明本文原始出處、作者信息和本聲明,否則將追究法律責任。