背景
目前軟件測試趨勢逐漸從傳統(tǒng)向敏捷過渡,新的測試模式會帶來更多挑戰(zhàn),測試人員的能力要求隨之也會提升,當(dāng)然提升的方面不僅僅局限于代碼能力(自動化測試是敏捷測試的基礎(chǔ))、工具、框架、平臺等等。
用例設(shè)計(jì)的能力(思維認(rèn)知)也是重中之重,一切的核心都是人,只有思維認(rèn)知的整體綜合提升才能做到 “以不變應(yīng)萬變”。往往技能是可以很輕易復(fù)制和淘汰的,但是思維方式卻不會。不要試圖想現(xiàn)在學(xué)什么、會什么去滿足什么,而是要考慮你能夠適應(yīng)什么 ?

但是,由于軟件測試門檻偏低,導(dǎo)致大部分測試人員的基礎(chǔ)能力比較薄弱,尤其是理論基礎(chǔ)( 至于什么原因懂得自然懂),大部分人往往在自我提升的過程中追求自動化、工具、框架、平臺等等相關(guān)技術(shù)提升。往往忽視了最重要的用例設(shè)計(jì),測試用例才是軟件測試的基礎(chǔ),所有的測試活動都是需要靠測試用例來開展的.
即使是敏捷測試有一部分聲音開始推崇“去用例化”(這里說的去用例化并不是不寫用例,而是摒棄了傳統(tǒng)寫用例文檔的方式),而探索性測試活動依然是敏捷流程中很重要的環(huán)節(jié),因此一個(gè)測試人員的用例設(shè)計(jì)能力至關(guān)重要。
筆者這里將從白盒測試和黑盒測試兩個(gè)方面去回顧學(xué)習(xí)如何結(jié)合科學(xué)有效的測試方法進(jìn)行對用例的設(shè)計(jì)。
一、白盒測試

白盒測試的方法總體上分為靜態(tài)分析方法和動態(tài)分析方法兩大類:
- 靜態(tài)分析:是一種不通過執(zhí)行程序而進(jìn)行測試的技術(shù)。靜態(tài)分析的關(guān)鍵功能是檢查軟件的表示和描述是否一致,有無沖突或者歧義??梢院唵卫斫鉃?Devops 流程中常用的靜態(tài)掃描 sonarQube
- 動態(tài)分析:是當(dāng)軟件系統(tǒng)在模擬的或真實(shí)的環(huán)境中執(zhí)行之前、之中和之后,對軟件系統(tǒng)行為的分析。動態(tài)分析包含了程序在受控的環(huán)境下使用特定的期望結(jié)果進(jìn)行正式的運(yùn)行。它顯示了一個(gè)系統(tǒng)在檢查狀態(tài)下是正確還是不正確。開發(fā)人員寫的單元測試。
白盒測試技術(shù) (White Box Testing) : 深入到代碼一級的測試,使用這種技術(shù)發(fā)現(xiàn)問題最早,效果也是最好的。該技術(shù)主要的特征是測試對象進(jìn)入了代碼內(nèi)部,根據(jù)開發(fā)人員對代碼和對程序的熟悉程度,對有需要的部分進(jìn)行在軟件編碼階段,開發(fā)人員根據(jù)自己對代碼的理解和接觸所進(jìn)行的軟件測試叫做白盒測試。
這一階段測試以軟件開發(fā)人員為主,比如在 JAVA 平臺使用 Junit 系列工具進(jìn)行測試, Junit5 目前的功能比較強(qiáng)大感興趣的可以去嘗試一下。
二、黑盒測試
從理論上講,黑盒測試只有采用窮舉輸入測試,把所有可能的輸入都作為測試情況考慮,才能查出程序中所有的錯(cuò)誤。實(shí)際上測試情況有無窮多個(gè),不僅要測試所有合法的輸入,而且還要對那些不合法但可能的輸入進(jìn)行測試。這樣看來,完全測試是不可能的,所以我們要進(jìn)行有針對性的測試,通過制定測試案例指導(dǎo)測試的實(shí)施,保證軟件測試有組織、按步驟,以及有計(jì)劃地進(jìn)行。

黑盒測試行為必須能夠加以量化,才能真正保證軟件質(zhì)量,而測試用例就是將測試行為具體量化的方法之一。具體的黑盒測試用例設(shè)計(jì)方法包括等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測法、因果圖法、判定表、正交試驗(yàn)設(shè)計(jì)法、場景法等。
黑盒測試( Black Box Testing )的內(nèi)容主要還是覆蓋全部的功能,可以結(jié)合兼容,性能、安全等方面進(jìn)行,根據(jù)軟件需求,設(shè)計(jì)文檔,模擬客戶場景隨系統(tǒng)進(jìn)行實(shí)際的測試,這種測試技術(shù)是使用最多的測試技術(shù)涵蓋了測試的方方面面,可以考慮以下方面:
- 正確性 (Correctness) :計(jì)算結(jié)果,命名等方面
- 可用性 (Usability) :是否可以滿足
- 邊界條件 (Boundary Condition) :輸入部分的邊界值
- 性能 (Performance) : 正常使用的時(shí)間內(nèi)系統(tǒng)完成一個(gè)任務(wù)需要的時(shí)間,多人同時(shí)使用的時(shí)候響應(yīng)時(shí)間在可以接受范圍內(nèi)
- 錯(cuò)誤恢復(fù) (Error Recovery) :錯(cuò)誤處理的能力,包括突然間斷電,輸入臟數(shù)據(jù)等,可以了解一下目前的混沌工程。
- 安全性測試 (Security) :不僅要考慮本身系統(tǒng)的安全問題還需要考慮業(yè)務(wù)本身的安全性問題。
- 兼容性(Compatibility) :不同瀏覽器,不同應(yīng)用程序版本在實(shí)現(xiàn)功能時(shí)的表現(xiàn)。
優(yōu)缺點(diǎn)
黑盒測試的優(yōu)點(diǎn):適用于功能測試、可用性測試及可接受性測試;對照說明書測試程序功能;可測試長的、復(fù)雜的程序的工作邏輯,易被理解。
黑盒測試的缺點(diǎn):不可能進(jìn)行完全的、毫無遺漏的輸入測試,有一些軟件Bug或人為設(shè)置的故障通過黑盒測試是無法檢測出來的。正是因?yàn)楹诤袦y試的測試數(shù)據(jù)來自規(guī)格說明書,這一方法的主要缺點(diǎn)是它依賴于規(guī)格說明書的正確性。實(shí)際上,人們并不能保證規(guī)格說明書完全正確。如在規(guī)格說明書中規(guī)定了多余的功能,或是漏掉了某些功能,這對于黑盒測試來說是完全無能為力的。
最后
以上是簡單了解了兩種測試方法的相關(guān)概念,后面會詳細(xì)針對白盒測試和黑盒測試方法的學(xué)習(xí)記錄。