什麼是局部探索性測試
局部探索性測試是James A. Whittaker提出的探索性測試方法中的一種(包括:局部探索性測試、全局彈縮性測試),通過該方法測試人員可以不必了解許多的測試信息(比如:項目環境信息、産品元素等等)就可以完成測試任務。
局部探索性測試的重點是指導測試人員結合自身經驗、專業知識,以及軟件在具體操作下的響應情況進行測試設計和執行測試。
局部探索性測試的關注點
局部探索性測試主要關注5個方面:用戶輸入、狀态、代碼路徑、用戶數據和執行環境。為什麼要關注這5個方面呢?因為所有軟件幾乎都可以簡化為四個任務:輸入數據、執行運算、存儲數據、輸出結果。
用戶輸入
用戶輸入簡而言之就是輸入是程序外部引發的,并且使得軟件執行了某些代碼。
設想一下:假如存在一個簡單的輸入框,可以接受字母和0-10000範圍内的數字,那麼可以存在多少種輸入?至少是26*10000種(其中還不包括區分大小寫字母)。
由此可見,對于軟件來說,僅僅是一個小功能,都存在太多的輸入或輸入的組合,而測試人員想要窮盡所有的輸入進行測試幾乎是不可能的。
1)如何測試用戶輸入
James A. Whittaker建議我們可以參考以下幾個方面測試用戶輸入。
對于開發人員而言,合法輸入即是能夠使程序正常運行的值,而非法輸入即是輸入值進入程序後會觸發錯誤代碼處理。
開發人員通常通過輸入篩選器、輸入檢查和使用異常三種方式定義錯誤處理程序。從測試人員角度,對于這三種輸入方法的檢查,可以考慮以下方面:
常規輸入指的是程序定義的、開發人員計劃中的輸入,也是用戶經常使用的輸入。非常規輸入可以是那些使用極少的輸入,或在開發人員計劃之外的輸入。
例如:常見的輸入測試來說,非常規輸入可以試試特殊字符@¥%&等。
開發人員必須設定一些默認輸入(可以是定義的參數或者NULL參數),這些輸入測試人員在測試時可以不做什麼操作,選擇使用默認值。用戶自定義輸入是用戶忽略開發人員預置的輸入,輸入自己想要的内容。
從測試人員角度,可以從以下方面考慮:
列出程序可能的輸出結果,選擇感興趣的結果逆推得到可能的輸入組合。把輸入和輸出配對是常用的一種手段,可以保證所有有趣的場景都被測試覆蓋到。
2)小結
局部探索性測試關于用戶輸入的測試點建議,總結如下圖所示:
狀态
設想一個場景:安裝一個軟件,初次安裝和再次安裝是不是能完全等同?答案肯定是不能。因為初次安裝和再次安裝,環境配置、資源初始情況是不同的。
初次安裝可能需要設定一些環境變量,而再次安裝時這些環境變量可能因為卸載時未被清理而保留下來,因此不需要設定。
再者,初次安裝硬件資源(内存、磁盤容量)和再次安裝肯定是有所差異的,再次安裝有可能會因為初次安裝卸載後的殘留文件占用硬件資源,導緻再次安裝失敗(假設硬件資源緊張情況下)。
而這些,由于輸入造成的累積效應或程序内部變量數值發生的變化,稱作狀态的改變。
1)如何測試軟件狀态
可以從以下方面考慮:
如果兩個或多個輸入存在某種關聯,那麼他們應該放在一起測試。
而在測試過程中,我們需要觀察狀态信息對結果的影響,以此來确定需要輸入的組合。例如:安裝某個軟件,需要設定所需磁盤空間大小,但需要大于128MB,而 硬件空間隻剩餘500MB。
此時,設計軟件安裝測試時,超過500MB由于磁盤空間不足安裝失敗,則應該考慮到硬件軟件配置範圍應在128MB到500MB之間。
當一個輸入導緻狀态信息變更時,多次同樣的輸入會導緻一串狀态變化。如果這些變化累加起來,就需要考慮是否會導緻溢出。
例如:對軟件接口進行壓力測試時,内存等資源消耗會逐漸上升,試着觀察加壓持續一段時間後,軟件内存釋放是否及時,是否導緻了内存溢出。
代碼路徑
一個程序有很多條代碼路徑,測試人員需要了解不同的輸入在程序内部運行構成的路徑。
如何測試代碼路徑
例如:測試人員可以使用UML流程圖工具,如visustin繪制出代碼路徑。
在測試過程中,畫出代碼路徑圖,使用最短路徑法、長路徑法等進行測試,觀察程序在運行過程中的狀态或輸入數據的變化。
用戶數據
測試人員有時可能會面臨這樣一種情況:為什麼我們測試時沒有發現的故障,使用真實數據測試時故障就出現了。
這是因為真實數據通常包含了測試人員不了解的相互關系和結構,而且測試人員也無法憑空推測出真實數據的相互關系和結構。那麼應該如何測試用戶數據呢?
1)如何測試用戶數據
測試用戶數據時,需要考慮到真實數據的幾個特點:量大、隐私性、安全性。
随着用戶數據庫不斷被增删修改,長年累月積累下來的數據量會非常大。而量大時就會引發存儲問題。
例如:我們測試環境模拟數據量大小為10GB,而真實數據量大小為100GB,這就會引發大體量問題下的存儲、運算、處理等問題,而這些問題可能在我們測試環境中不容易被觸發。
此外,用戶數據的隐私和安全問題也是測試時必須考慮的。當我們測試使用真實數據時,需要保護真實數據不被篡改、增删,且真實數據中的隐私(例如用戶賬号、密碼等)不被暴露或惡意竊取。
運行環境
當我們把軟件安裝到一個嶄新且它從來沒見過的環境中時,可能會失敗。為什麼呢?因為環境本身也是一種輸入源。所以測試人員在産品發布前應盡量嘗試各種各樣的環境。
1)如何測試運行環境
運行環境包括什麼呢?總體來說,就是使用的操作系統和當前配置,以及同一操作系統上可能會和軟件交互的其他程序,還包括網絡連接情況、帶寬、性能等因素。
運行環境測試可以從兼容性方面考慮,如:軟件兼容性、硬件兼容性、系統兼容性、網絡兼容性、接口兼容性等。
指的是當前軟件與其他競品和非競品軟件的兼容性,是否可以同時運行。
例如:曾經著名的“3Q大戰”,要求用戶隻能在360殺毒軟件和QQ軟件中二選一使用,其實就是非兼容性的體現。
指的是指多個獨立的硬件設備能否在操作系統的統一調度下協調工作發揮性能互不排斥。
例如:不同的服務器生産廠商對内存、硬盤等插槽都有設定,要求符合響應規格的内存條或硬盤才能在其服務器上使用。這就是硬件兼容性的要求和體現。
系統兼容性大家并不陌生,指的是對操作系統特定的要求。系統兼容性又可以分為:相同操作系統不同版本兼容性,以及不同操作系統兼容性。
查看軟硬件在不同網絡類型(如熱點、WIFI、2G/3G/4G/5G)下的運行情況。
例如:5G推廣後,某些早前的手機不支持5G網絡使用。
接口兼容性在軟件測試中也時常觸及,軟件接口兼容通常表現在接口參數的兼容性。
例如:某個程序對外查詢接口V1版本需要傳入2個參數,而V2版本需要傳入3個參數,而這種改變會影響其他調用該程序接口的應用。因此該程序在涉及或處理時需要考慮到接口兼容性。如其他應用不傳入第3個參數時,該程序提供默認值。
2)小結
局部探索性測試關于運行環境的測試點建議,總結如下圖所示:
總結
測試本身是個很複雜的工作,需要測試人員結合自身經驗、知識、技能等方面,才能有效地進行。
本文講述了James A. Whittaker《探索式軟件測試》一書中關于局部探索性測試的5個方面,及相應的某些啟發點。最後總結為下圖:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!