本文章轉(zhuǎn)載于搜狗測(cè)試
前言
基于對(duì)被測(cè)對(duì)象的功能實(shí)現(xiàn)了解勿璃,使用灰盒測(cè)試手段鸳慈,可以將測(cè)試覆蓋度進(jìn)一步提升充石,所以基于此目的進(jìn)行開發(fā)功能實(shí)現(xiàn)的講解是非常有必要的榛臼。
實(shí)現(xiàn)講解的必要性
舉例說明:搜狗瀏覽器的頁面靜音功能為例耳峦,我們對(duì)比一下黑盒測(cè)試和灰盒測(cè)試的覆蓋情況恩静。
需求說明:頁面靜音功能是這樣一個(gè)功能,當(dāng)瀏覽器打開的網(wǎng)頁中在播放聲音時(shí)蹲坷,通過操作狀態(tài)欄的一個(gè)開關(guān)按鈕驶乾,可以將網(wǎng)頁中的聲音靜音。
黑盒測(cè)試能夠考慮到的測(cè)試點(diǎn):
狀態(tài)欄的圖標(biāo)開啟/關(guān)閉時(shí)的狀態(tài)顯示循签。
不同網(wǎng)頁的靜音情況级乐。
多個(gè)網(wǎng)頁均存在聲音時(shí)開啟靜音的情況拉讯。
高速內(nèi)核頁面(Webkit)和兼容內(nèi)核頁面(Trident)分別靜音的情況抡爹。
……
以上測(cè)試點(diǎn)在不了解功能實(shí)現(xiàn)情況下,僅通過測(cè)試人員發(fā)散性思維考慮到的測(cè)試點(diǎn)产捞,測(cè)試覆蓋度還是存在一定局限性乞旦。下面我們將分析功能實(shí)現(xiàn)過程贼穆,進(jìn)一步拓展測(cè)試點(diǎn)。
開發(fā)實(shí)現(xiàn)了解
基于開發(fā)實(shí)現(xiàn)的過程了解兰粉,我們得到以下信息:
頁面靜音是通過Hook機(jī)制故痊,將發(fā)聲函數(shù)截獲后修改其返回值達(dá)到的。Hook的函數(shù)有:
waveOutWrite
DirectSound系列函數(shù):DirectSoundCreate玖姑、CreateSoundBuffer愕秫、SetVolume
Media Foundation
通過對(duì)以上Hook函數(shù)的返回值進(jìn)行修改進(jìn)而達(dá)到了靜音。
waveOutWrite-->waveOutSetVolume(0)// ? ? 通過SetVolume音量為0達(dá)到靜音
DirectSound-->SetVolume(0)// 同樣通過SetVolume音量為0達(dá)到靜音
基于以上功能實(shí)現(xiàn)的了解焰络,我們可以補(bǔ)充到的測(cè)試點(diǎn)有:
因?yàn)榱私獾絯aveOutWrite函數(shù)戴甩,進(jìn)而查資料了解到mid音樂格式是使用的這種函數(shù)播放,所以測(cè)試點(diǎn)補(bǔ)充mid音樂格式闪彼。
因?yàn)榱私獾紻irectSound函數(shù)甜孤,進(jìn)而了解到網(wǎng)頁中播放音樂的三種寫法:embed,bgsound备蚓,classid
_T("CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
進(jìn)而在測(cè)試點(diǎn)中補(bǔ)充不同的classid播放形式课蔬,如下:
'/** Windows Media Player 系列(不同面板樣式)? mp3格式 */
_T("CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6")
'/** Windows Media Player 系列(不同面板樣式)? wma格式 */
_T("CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95")
' /** Windows Media Player 系列(不同面板樣式)? rm avi格式 */
_T("CLSID:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA")
'/** Windows Media Player 系列(不同面板樣式)? mpg格式 */
_T("CLSID:05589FA1-C356-11CE-BF01-00AA0055595A")
因?yàn)榱私獾組edia Foundation函數(shù)播放音樂,進(jìn)而了解到這種函數(shù)是在win7以上系統(tǒng)所使用的技術(shù)郊尝,所以測(cè)試點(diǎn)補(bǔ)充不同操作系統(tǒng)類型。
因?yàn)榱私獾組edia Foundation函數(shù)有版權(quán)保護(hù)功能战惊,所以測(cè)試點(diǎn)補(bǔ)充受版權(quán)保護(hù)的音樂格式測(cè)試點(diǎn)流昏。
綜上所述扎即,對(duì)被測(cè)對(duì)象的功能實(shí)現(xiàn)了解,對(duì)于測(cè)試覆蓋度的提升是有很大幫助的况凉,所以開發(fā)實(shí)現(xiàn)講解流程很有必要谚鄙。
開發(fā)實(shí)現(xiàn)講解時(shí)機(jī)
編碼實(shí)現(xiàn)前。一般有經(jīng)驗(yàn)的開發(fā)人員在功能實(shí)現(xiàn)前刁绒,會(huì)將大致實(shí)現(xiàn)的框架結(jié)構(gòu)設(shè)計(jì)出來闷营,之后再在此框架基礎(chǔ)上進(jìn)行Coding。
如圖:搜狗瀏覽器通行證同步框架圖
編碼實(shí)現(xiàn)過程中知市。
編碼實(shí)現(xiàn)完畢提測(cè)時(shí)傻盟。
測(cè)試過程中代碼重構(gòu)優(yōu)化。
開發(fā)實(shí)現(xiàn)講解流程
1.實(shí)現(xiàn)講解人
由開發(fā)同學(xué)負(fù)責(zé)講解嫂丙。
由測(cè)試同學(xué)提出需求娘赴,由開發(fā)同學(xué)講解。
由測(cè)試同學(xué)提出需求跟啤,由團(tuán)隊(duì)中有Coding能力的測(cè)試同學(xué)(一般是測(cè)試開發(fā)工程師)進(jìn)行代碼調(diào)研诽表,進(jìn)而進(jìn)行講解。
2.實(shí)現(xiàn)講解的準(zhǔn)備
開發(fā)同學(xué):將實(shí)現(xiàn)過程提取準(zhǔn)備為電子版隅肥,以便在會(huì)議上快速講解完成竿奏。
例如:搜狗瀏覽器頁面靜音代碼實(shí)現(xiàn)流程圖,其中的技術(shù)細(xì)節(jié)和測(cè)試重點(diǎn)由開發(fā)提前準(zhǔn)備了電子版內(nèi)容腥放,在會(huì)議上進(jìn)行講解泛啸。
測(cè)試同學(xué):
在溝通功能實(shí)現(xiàn)前,測(cè)試同學(xué)提前做一些背景知識(shí)的了解捉片,例如上例中Hook技術(shù)平痰、頁面播放聲音的常見寫法。
提前準(zhǔn)備好要溝通的問題列表伍纫,可以記在本子上或電子版宗雇,溝通時(shí)一個(gè)接一個(gè)地提問,免得現(xiàn)想問題浪費(fèi)時(shí)間莹规。
3.實(shí)現(xiàn)講解中的注意事項(xiàng)赔蒲。
a.測(cè)試同學(xué)提問的問題建議不要太過開放性。
在溝通實(shí)現(xiàn)時(shí)的第一個(gè)問題良漱,如果是比較”大而泛”舞虱,溝通結(jié)果一般不會(huì)太理想,比如:“Cookie同步功能是怎么實(shí)現(xiàn)的母市?”
開發(fā)同學(xué)更喜歡回答一些具體的矾兜、技術(shù)性的、非開放性的問題患久。如果我們換個(gè)提問方式:
QA:瀏覽器不同進(jìn)程之間是如何傳遞數(shù)據(jù)的椅寺?
DEV:通過發(fā)送消息的方式浑槽,使用FileMappming進(jìn)行多進(jìn)程傳遞。
QA:傳遞的時(shí)機(jī)是什么時(shí)候返帕?
DEV:用戶在瀏覽器中登錄網(wǎng)站時(shí)桐玻,觸發(fā)了Cookie的讀寫操作時(shí)。
QA:瀏覽器是怎么檢測(cè)到用戶產(chǎn)生了登錄行為荆萤?
DEV:瀏覽器對(duì)網(wǎng)絡(luò)返回值中的Set-Cookie字段進(jìn)行了檢測(cè)镊靴,一旦發(fā)現(xiàn)該字段,則會(huì)解析其內(nèi)容并進(jìn)行保存和同步操作链韭。
……(借著以上問題繼續(xù)展開溝通)
b.提問問題的方式很重要偏竟。
以前小編和一位開發(fā)大牛聊過測(cè)試和開發(fā)溝通實(shí)現(xiàn)的議題,開發(fā)大牛表示梧油,他們更愿意測(cè)試同學(xué)是思考后帶著一些想法來溝通的苫耸,即便這種想法是錯(cuò)的,也是樂意歡迎的儡陨。所以褪子,我們可以準(zhǔn)備一些自己對(duì)這個(gè)功能實(shí)現(xiàn)過程的猜測(cè),然后用自己猜測(cè)的功能實(shí)現(xiàn)來進(jìn)行提問骗村。
例如:我們不知道Cookie數(shù)據(jù)如何進(jìn)行多進(jìn)程傳遞時(shí)嫌褪,我們可以猜測(cè)Cookie數(shù)據(jù)是不是保存在數(shù)據(jù)庫中,不同進(jìn)程讀取同一份數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)的交互胚股,然后帶著這種猜測(cè)來進(jìn)行發(fā)問:
QA:“多進(jìn)程數(shù)據(jù)同步是不是用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換的笼痛?”
DEV:“通過數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互可能存在這鎖的問題,所以我們不是通過這種方法而是用FileMappming文件映射的方式……”
……(順暢地交流起來)
c.紙上的交流比口頭交流好琅拌。
在溝通過程中缨伊,簡(jiǎn)單的問題可以口頭交流,但是復(fù)雜的問題建議在紙上畫著流程圖或者程序的框架圖會(huì)更加容易交流溝通进宝。所以刻坊,避免只停留在口頭上的溝通。
實(shí)現(xiàn)講解的記錄
記錄總結(jié)會(huì)議中的具體內(nèi)容形成電子版文檔党晋。
將總結(jié)內(nèi)容維護(hù)至模塊說明文檔谭胚。如下:
最后,根據(jù)實(shí)現(xiàn)講解內(nèi)容未玻,擴(kuò)充測(cè)試用例灾而。