探索性測試:如何利用經(jīng)驗知識拓展ET測試技能辨認(rèn)故障?
?傳統(tǒng)認(rèn)知中的軟件測試是一個使用測試用例設(shè)計技術(shù)設(shè)計用例并執(zhí)行測試用例的過程。
測試用例技術(shù)的目的是確保能夠更多地覆蓋、檢測軟/硬件錯誤,減少冗余測試。自動化測試或多或少地被認(rèn)為是機(jī)械地執(zhí)行測試腳本,將預(yù)定義的測試用例輸入被測系統(tǒng),對比系統(tǒng)輸出和預(yù)期結(jié)果。
然而,在實際的工程實踐中我們會發(fā)現(xiàn),現(xiàn)實世界的測試很少是基于嚴(yán)格、系統(tǒng)、以及完成記錄去運行預(yù)定義的測試用例。
相較于傳統(tǒng)的測試方法,探索性測試(ET)方法更具創(chuàng)造性。
測試設(shè)計、執(zhí)行和學(xué)習(xí)并行,不斷地學(xué)習(xí)、反饋、優(yōu)化測試方法并在實踐中應(yīng)用。但是ET通常被認(rèn)為是一種經(jīng)驗類方法或錯誤猜測法,更多地依賴隱性的經(jīng)驗知識,我們不否認(rèn)ET的這個特點。
容易理解的是:累積的經(jīng)驗知識可以幫助我們更好地進(jìn)行測試設(shè)計,可以幫助我們更好地辨認(rèn)測試過程中的異常或故障(例如,從日志中觀察到某個WARNNING輸出,如何確定它是否是軟件故障導(dǎo)致的異常輸出)。
這也是本篇文章討論ET圍繞的核心問題:如何辨認(rèn)故障。問題關(guān)鍵是:如何利用經(jīng)驗知識拓展ET測試技能辨認(rèn)故障。
那么,我們需要哪些經(jīng)驗知識呢?在這里,總結(jié)出了三大類經(jīng)驗,是我們提高ET測試技能時需要的,分別是:領(lǐng)域知識、系統(tǒng)知識、通用軟件技術(shù)知識。
一、領(lǐng)域知識
領(lǐng)域知識又可以分為用戶視角和應(yīng)用領(lǐng)域視角。
什么是用戶視角?在測試設(shè)計過程中我們經(jīng)常提倡的一個理念是:從用戶角度使用我們的產(chǎn)品。
1. 用戶視角
用戶視角要求了我們需要學(xué)習(xí)和了解真實用戶的使用習(xí)慣、方式,和在真實場景中我們產(chǎn)品的交互方式和內(nèi)部運行情況。
因此,用戶視角又可以分為:產(chǎn)品使用過程關(guān)聯(lián)的上下文情景,上下文中的信息內(nèi)容和表示形式,以及用戶真實使用案例。
(1) 產(chǎn)品使用過程關(guān)聯(lián)的上下文情景
測試人員通常是系統(tǒng)本身的常用用戶,具有豐富的使用經(jīng)驗。
當(dāng)測試人員意識到他們使用程序方式與實際用戶使用方式相沖突的時候他們會很快地改變測試策略或測試方法,而所有的測試失敗都與測試情景和測試上下文關(guān)聯(lián)。
因此,基于此我們在進(jìn)行ET測試的時候可以使用“產(chǎn)品使用過程關(guān)聯(lián)的上下文情景“經(jīng)驗知識提高我們的測試技能。
詳細(xì)來說,主要就是兩點:模擬用戶真實使用場景,準(zhǔn)備盡量真實的測試數(shù)據(jù)進(jìn)行測試。
(2) 上下文中的信息內(nèi)容和表現(xiàn)形式
當(dāng)測試人員模擬真實場景進(jìn)行測試的時候,需要理解和觀察情景中展現(xiàn)的上下文信息內(nèi)容和表現(xiàn)形式。
當(dāng)軟件系統(tǒng)以一種“不盡人意”的方式呈現(xiàn)數(shù)據(jù)、展現(xiàn)結(jié)果,或者展現(xiàn)錯誤的、有缺陷的數(shù)據(jù)時,那么可能會提醒測試人員,選擇更多測試數(shù)據(jù)樣本進(jìn)行測試,觀察軟件系統(tǒng)的表現(xiàn)方式。
例如:某個web系統(tǒng)頁面按鈕點擊無反應(yīng),或者某個輸入框輸入特殊字符導(dǎo)致頁面布局錯亂。這些案例都可以成為激發(fā)測試人員發(fā)散性思考的閃光點。
(3) 客戶真實案例中披露的問題
當(dāng)測試人員進(jìn)行探索性測試時,了解具體的真實案例、客戶所在,按照客戶的使用習(xí)慣測試軟件系統(tǒng),能夠提高識別軟件系統(tǒng)風(fēng)險的能力。
例如:當(dāng)測試人員測試一個新特性的向前兼容性時,導(dǎo)入了一個歷史的復(fù)雜數(shù)據(jù)導(dǎo)致軟件系統(tǒng)異常。這樣的案例在客戶真實情境中不乏多見,利用客戶真實案例評估或測試改變的特性有助于披露隱藏在軟件設(shè)計或開發(fā)中的風(fēng)險問題。
2. 應(yīng)用領(lǐng)域視角
應(yīng)用程序域視角代表的是應(yīng)用領(lǐng)域的相關(guān)知識,包括測試人員掌握的自然知識和應(yīng)用程序的理論、規(guī)則和技術(shù)細(xì)節(jié)域,而不是使用上下文。
我們把這透視分為兩種:概念性知識學(xué)科內(nèi)容,以及學(xué)科的實用知識物質(zhì)和工具。
(1) 概念性知識和學(xué)科內(nèi)容
概念性知識和學(xué)科內(nèi)容在此可以通俗理解為測試人員掌握的一些邏輯推理知識、測試經(jīng)驗等。
例如:測試人員根據(jù)某個web系統(tǒng)的頁面提示,推理、篩選得知是應(yīng)用前端問題還是應(yīng)用后臺程序問題。
(2) 對工具的實用性知識
工具可以幫助測試人員提高測試效率,對工具的熟悉和操作的熟稔度直接影響測試效率和測試結(jié)果分析。使用工具進(jìn)行測試,測試結(jié)果可以作為測試人員的參考。
總的來說,訓(xùn)練測試人員的探索性測試思維需要測試人員了解相關(guān)的領(lǐng)域知識。圖表總結(jié),該部分知識如下:
二、系統(tǒng)知識
應(yīng)用系統(tǒng)知識的兩個主要視角:交互特性和系統(tǒng)視角,以及單個特性和功能視角。
測試人員的對系統(tǒng)及其相關(guān)知識和理解特征可以進(jìn)一步分為知識的系統(tǒng)的工作機(jī)制、邏輯和交互相關(guān)知識。
1. 交互功能和系統(tǒng)內(nèi)視角
測試人員對系統(tǒng)及其相關(guān)知識和理解特征可以進(jìn)一步分為知識系統(tǒng)的工作機(jī)制、邏輯和交互,以及歷史版本故障。測試人員知道特性是如何一起工作的以及系統(tǒng)的基本工作邏輯。
測試人員了解系統(tǒng)應(yīng)該如何對某些事物做出反應(yīng),輸入數(shù)據(jù)或配置的各種變化和可以基于這種理解來認(rèn)識失敗。
重點是不一定是細(xì)節(jié)的準(zhǔn)確性,而是系統(tǒng)應(yīng)該如何反應(yīng)、系統(tǒng)是否有反應(yīng)、反應(yīng)是否正確。
例如:一個測試人員正在測試一個模擬現(xiàn)實生活的系統(tǒng)基于工程模型的情況。在這種情況下,通過觀察系統(tǒng)的響應(yīng)測試人員意識到系統(tǒng)未能正確反應(yīng)以變化的仿真參數(shù)和性能該模型。系統(tǒng)要么完全沒有反應(yīng),要么只反應(yīng)了一部分。
值得注意的是:了解工作機(jī)制、邏輯和互動是通過觀察整體反應(yīng)來應(yīng)用的,使系統(tǒng)的配置、狀態(tài)或數(shù)據(jù)發(fā)生變化或者通過模擬現(xiàn)實的使用場景。這方面的知識也被應(yīng)用于識別發(fā)生在不是直接在測試焦點中的區(qū)域,例如無意的變化。
最后,當(dāng)系統(tǒng)知識作為測試人員一個新特性時,將一致性啟發(fā)式以相似的特征和故障識別為基礎(chǔ),同一系統(tǒng)的新特性與類似特性不一致。
2. 單個特性和功能視角
單個特性和功能視角幾乎是每個測試人員經(jīng)常測試的類別,針對單個特性設(shè)計測試用例進(jìn)行測試。
在此,我們說明探索性測試技能的時候給大家建議的是:鍛煉測試人員分析日志的能力,要有敏感的“嗅覺”,能夠及時發(fā)現(xiàn)日志中的異常打印和錯誤信息,并逆向追蹤導(dǎo)致系統(tǒng)異常的場景、代碼等。
總結(jié)一下,本部分系統(tǒng)知識的分類和知識類型及使用方式如下表所示:
三、通用軟件工程知識
通用軟件工程知識指的是能夠明顯發(fā)掘的錯誤,不需要經(jīng)過深層分析。
例如:GUI層面的功能錯誤、布局錯誤,很容易讓測試人員一目了然判斷它是否是故障。
又例如:功能層面的可用性,可以讓測試人員參考用戶手冊很容易判定它是否滿足用戶需求,是否簡單可用。
它又可以分為通用正確性視角、可用性視角和直接錯誤視角。具體如下表所示:
總結(jié)
探索性測試是一種自由、靈活的測試風(fēng)格,近年來被許多測試人員推崇,相應(yīng)地也誕生了一些測試技巧,如局部探索性測試方法和全局探索性測試方法。
雖然我們不斷強(qiáng)調(diào)探索性測試不是單純的經(jīng)驗性測試,但卻也不能否認(rèn)豐富的經(jīng)驗為探索性測試帶來的好處。
本文從三個角度簡單闡述了如何豐富探索性測試經(jīng)驗,加強(qiáng)探索性測試技能,希望能對大家有所幫助。?