本文首發(fā)于「BY林子」,轉(zhuǎn)載請參考版權(quán)聲明。
不管是專業(yè)測試人員還是軟件行業(yè)其他角色,幾乎很少有人能分清楚各種軟件測試類型,比如最近看到有人說:
“功能測試等同于手動測試”
“功能測試也叫黑盒測試或者數(shù)據(jù)驅(qū)動測試”
……
的確,測試類型的概念沒有標準化的定義,而且在不同的語境下還會有不同的含義,因此,大家都混淆各種概念也是很正常的。但是,盡量搞清楚這些類型,對于我們更好地理解和實踐軟件測試還是很有幫助的。
于是,通過我對ChatGPT進行提問,對它回答不清晰或者不準確的內(nèi)容通過進一步提問澄清,最終我和ChatGPT pair 整理了這份軟件測試類型清單。
01 按照測試驗證的內(nèi)容分類
根據(jù)測試驗證的內(nèi)容是系統(tǒng)的功能需求,還是非功能需求,可以分為功能測試和非功能測試,而非功能測試還可以細分為不同的測試類型。
1.1 按測試內(nèi)容分類的測試類型
1. 功能測試:
功能測試主要驗證軟件系統(tǒng)的功能是否符合用戶需求和規(guī)格說明書的要求。
2. 性能測試:
性能測試主要用于測試軟件系統(tǒng)的性能,包括響應時間、吞吐量、負載能力等方面。通過這種測試類型,可以找出系統(tǒng)的性能瓶頸,以及在不同負載條件下的表現(xiàn)。
3. 可靠性測試:
可靠性測試主要用于測試軟件系統(tǒng)的穩(wěn)定性和可靠性,通常會通過模擬各種異常情況來測試系統(tǒng)的魯棒性,以及對異常情況的處理能力。
4. 兼容性測試:
兼容性測試主要用于測試軟件系統(tǒng)在不同硬件和軟件環(huán)境下的兼容性,通常會測試系統(tǒng)在不同操作系統(tǒng)、瀏覽器、設備和網(wǎng)絡環(huán)境下的表現(xiàn),以確保系統(tǒng)能夠在各種環(huán)境下正常工作。
5. 安全測試:
安全測試通常會測試系統(tǒng)的漏洞、安全性能、訪問控制等方面,以確保系統(tǒng)能夠抵御各種安全攻擊和威脅。
6. 可用性測試:
可用性測試主要用于測試軟件系統(tǒng)的易用性和用戶體驗。通常會測試系統(tǒng)的界面、操作流程、反應速度等方面,以確保系統(tǒng)能夠提供用戶友好的使用體驗,并滿足用戶的需求。
7. 容量測試:
容量測試主要用于測試系統(tǒng)在高負載情況下的容量和擴展性能,可以確定系統(tǒng)能夠承受的最大負載,并確定系統(tǒng)需要進行哪些優(yōu)化和調(diào)整,以達到滿足業(yè)務需求的性能要求。
8. 可維護性測試:
可維護性測試主要用于測試軟件系統(tǒng)的可維護性和可擴展性,可以確定系統(tǒng)的易維護性,以及系統(tǒng)在未來的擴展和修改方面的可行性和成本。
9. 可移植性測試:
可移植性測試主要用于測試軟件系統(tǒng)在不同平臺和環(huán)境下的可移植性和兼容性,可以確定系統(tǒng)能夠在不同的操作系統(tǒng)、硬件平臺和開發(fā)工具中正確地運行和展現(xiàn)。
10. 國際化測試:
國際化測試主要用于測試軟件系統(tǒng)在不同語言和文化環(huán)境下的本地化和國際化能力,可以確定系統(tǒng)是否能夠正確地處理不同的語言和字符集,以及在不同地區(qū)和文化背景下的正確表現(xiàn)。
11. 本地化測試:
本地化測試主要測試軟件在特定的語言、文化和地區(qū)設置下的功能和表現(xiàn),以確保軟件在該特定地區(qū)的用戶能夠正常使用,并且能夠滿足該地區(qū)的語言、文化和習慣等方面的需求。本地化測試通常需要對軟件進行翻譯、本地化調(diào)整、格式調(diào)整等處理。
12. 易用性測試:
易用性測試主要用于測試軟件系統(tǒng)的易用性和用戶體驗,可以確定系統(tǒng)的用戶友好性,以及系統(tǒng)是否能夠在不同的用戶群體中滿足用戶的需求和期望。
1.2 易混淆測試類型
1. 可用性測試與易用性測試:
可用性測試和易用性測試是相關(guān)但不同的測試類型。雖然它們都關(guān)注軟件系統(tǒng)的用戶體驗,但它們的重點和方法不同。
可用性測試主要關(guān)注系統(tǒng)在各種情況下是否可用。這包括測試系統(tǒng)的可靠性、可訪問性、易學性、效率和容錯性等方面??捎眯詼y試通常通過場景測試、用戶測試和技術(shù)測試等方法來評估系統(tǒng)的可用性。
而易用性測試主要關(guān)注系統(tǒng)的用戶友好性和易學性,以及用戶的滿意度和使用體驗。易用性測試通常通過用戶研究、人機交互測試和用戶調(diào)查等方法來評估系統(tǒng)的易用性。
2. 可移植性測試與兼容性測試:
可移植性測試是測試軟件在不同平臺和環(huán)境下的可移植性和可用性,主要關(guān)注的是軟件的可移植性,即能否在不同平臺和環(huán)境下正常運行和使用。而兼容性測試是測試軟件在不同硬件和軟件環(huán)境下的兼容性,主要關(guān)注的是軟件的兼容性,即能否在不同的操作系統(tǒng)、瀏覽器、設備和網(wǎng)絡環(huán)境下正常工作。
可以將兩者視為相互補充的測試類型,因為軟件的可移植性和兼容性都是非常重要的質(zhì)量屬性。雖然它們有一些相似之處,但是在測試的具體實現(xiàn)上,可移植性測試通常更注重跨平臺的測試,而兼容性測試則更注重跨環(huán)境的測試。
02 按測試粒度分類
2.1 按測試粒度分類的測試類型
單元測試: 測試軟件的最小單元——代碼中的單個函數(shù)或方法,以確保其行為符合預期,通常在開發(fā)階段由開發(fā)人員自行編寫和運行。
集成測試: 測試多個模塊組合成的集成軟件系統(tǒng),以確保模塊之間的接口和交互符合預期。集成測試可以分為頂部向下和底部向上兩種方式。
系統(tǒng)測試: 測試整個軟件系統(tǒng),包括所有集成的模塊和組件,以確保軟件的功能、性能、可靠性、兼容性、安全性等方面符合用戶需求和規(guī)格說明書的要求。系統(tǒng)測試通常由專門的測試人員進行。
2.2 ChatGPT的原分類
ChatGPT是將測試類型按照不同的測試階段分為:單元測試、集成測試、系統(tǒng)測試和驗收測試,但現(xiàn)在測試的階段已經(jīng)不是很明顯,各種測試可能并行,我不太喜歡按階段來分,于是啟發(fā)ChatGPT改成按照測試粒度分為單元測試、集成測試和系統(tǒng)測試。
而驗收測試則跟冒煙測試和回歸測試放到了一個維度,根據(jù)測試目的不同來劃分。
2.3 易混淆測試類型
1. 系統(tǒng)測試與系統(tǒng)級集成測試:
系統(tǒng)測試主要用于測試整個軟件系統(tǒng)是否符合需求和規(guī)格說明書,測試人員會對整個軟件系統(tǒng)進行測試,包括系統(tǒng)的功能、性能、可靠性、兼容性和安全性等方面的測試,以驗證軟件系統(tǒng)是否符合需求和規(guī)格說明書。
而系統(tǒng)級集成測試是集成測試的一種,它主要用于測試不同子系統(tǒng)之間的集成和協(xié)作能力,以及集成后系統(tǒng)的功能和性能等方面是否符合需求。測試人員會針對整個系統(tǒng)的集成進行測試,主要是驗證不同子系統(tǒng)之間的接口和交互是否正確,并且系統(tǒng)能夠按照預期的方式運行。
因此,系統(tǒng)測試和系統(tǒng)級集成測試都是針對整個軟件系統(tǒng)進行測試的,但它們的測試重點和測試目的是不同的。系統(tǒng)測試主要關(guān)注整個軟件系統(tǒng)是否符合需求和規(guī)格說明書,而系統(tǒng)級集成測試主要關(guān)注不同子系統(tǒng)之間的集成和協(xié)作能力是否符合需求。
2. 系統(tǒng)測試與端到端測試:
系統(tǒng)測試和端到端測試都是按照測試粒度的不同維度來分類的,但是涵蓋的范圍是有些不同的。
系統(tǒng)測試通常是從整體的角度來測試系統(tǒng)的可靠性、穩(wěn)定性、性能等方面的質(zhì)量屬性,常常會涉及多個模塊和組件的集成測試,例如在測試一個大型系統(tǒng)時,系統(tǒng)測試可能會包含多個模塊的集成測試,以及整個系統(tǒng)的端到端測試。
而端到端測試則更加關(guān)注整個系統(tǒng)在用戶場景下的完整性,即從用戶使用的角度出發(fā),測試系統(tǒng)是否能夠正確地完成預期的業(yè)務流程和交互功能,涵蓋的測試范圍通常會比系統(tǒng)測試更廣泛,包括前端、后端、數(shù)據(jù)庫、接口等多個方面。端到端測試通常也被稱為業(yè)務流程測試或場景測試。
因此,可以認為端到端測試是系統(tǒng)測試中的一個子集,它更加注重系統(tǒng)在用戶場景下的完整性和正確性。
03 按照對系統(tǒng)內(nèi)部的了解程度分類
ChatGPT給的分類維度是測試方法,個人覺得不是特別合適,進一步澄清為:是按照測試人員在測試過程中了解系統(tǒng)的內(nèi)部工作原理和結(jié)構(gòu)的程度來劃分的。
黑盒測試: 測試人員不了解系統(tǒng)內(nèi)部的實現(xiàn)細節(jié),只關(guān)注系統(tǒng)的輸入和輸出,根據(jù)系統(tǒng)規(guī)格說明或者其他文檔編寫測試用例,驗證系統(tǒng)是否符合需求和規(guī)格。這種測試方法模擬了系統(tǒng)用戶的行為,通常關(guān)注的是系統(tǒng)的功能性和非功能性需求。
白盒測試: 測試人員了解系統(tǒng)的內(nèi)部工作原理和結(jié)構(gòu),根據(jù)系統(tǒng)設計和代碼邏輯編寫測試用例,驗證系統(tǒng)的正確性和可靠性。這種測試方法側(cè)重于測試代碼實現(xiàn)的正確性和系統(tǒng)內(nèi)部結(jié)構(gòu)的合理性。
灰盒測試: 測試人員了解部分系統(tǒng)的內(nèi)部工作原理和結(jié)構(gòu),但是不完全了解系統(tǒng)的全部實現(xiàn)細節(jié)。這種測試方法介于黑盒測試和白盒測試之間,既關(guān)注系統(tǒng)的功能和需求,也關(guān)注代碼實現(xiàn)的正確性和內(nèi)部結(jié)構(gòu)的合理性。測試人員通常會結(jié)合系統(tǒng)規(guī)格說明和代碼實現(xiàn)來編寫測試用例。
注:這里的測試人員應該確切地說是開展測試的人員。
04 按照測試目的分類
冒煙測試: 也稱為構(gòu)建驗證測試,用于驗證軟件系統(tǒng)的主要功能是否正常工作。通常在每次代碼構(gòu)建完成后進行,以盡早發(fā)現(xiàn)潛在的問題,避免在后續(xù)測試中浪費時間和資源。
回歸測試: 用于驗證新的軟件功能或修復缺陷后,之前的功能是否受到影響。通常在每次代碼變更后進行,以確保之前的功能沒有被破壞或產(chǎn)生副作用。
驗收測試: 也稱為用戶驗收測試,是在軟件交付給用戶之前進行的最后一輪測試,以確保軟件系統(tǒng)符合用戶需求和預期的質(zhì)量標準。
05 按照測試對象分類
前端測試: 主要測試網(wǎng)站或應用程序的前端界面,包括頁面布局、交互、響應速度、可訪問性、可用性等方面。
后端測試: 主要測試應用程序的后端功能和邏輯,包括數(shù)據(jù)處理、算法、業(yè)務邏輯等方面。
數(shù)據(jù)庫測試: 主要測試數(shù)據(jù)庫的性能、可靠性、安全性等方面,包括對數(shù)據(jù)表結(jié)構(gòu)、數(shù)據(jù)完整性、數(shù)據(jù)類型等方面的測試。
接口測試: 主要測試應用程序與其他系統(tǒng)或服務之間的接口,包括對輸入?yún)?shù)、輸出結(jié)果、數(shù)據(jù)格式、傳輸協(xié)議等方面的測試。
06 按照測試手段分類
按照測試手段可以分為手動測試和自動化測試。
07 按照測試執(zhí)行的方式分類
按照測試執(zhí)行的方式,也就是是否要基于測試用例(腳本)來進行測試,可以分為腳本化測試和探索式測試。
腳本化測試: ChatGPT認為腳本化測試就是自動化測試,其實腳本化測試是指基于測試用例進行的測試,包括自動化和手動測試。
探索式測試: 不需要事先設計測試用例,它是一種軟件測試風格,強調(diào)獨立測試人員的個人自由和職責,為了持續(xù)優(yōu)化其工作的價值,將測試相關(guān)學習、測試設計、測試執(zhí)行和測試結(jié)果分析作為相互支持的活動,在整個項目過程中并行地執(zhí)行。
08 寫在最后
雖然我進行了少量修改和調(diào)整,還是有保留絕大部分原話,希望ChatGPT的車轱轆話沒把大家繞暈。
不同的測試類型可以針對不同的需求和問題,有助于制定更加有效的測試計劃和策略。同時,掌握不同的測試類型可以提高測試能力和測試思維,讓測試工作更加專業(yè)和高效。
但是,也沒必要過度去摳各種測試類型的細節(jié),測試策略的制定需要系統(tǒng)性地考慮。全面了解各種測試類型的劃分方式,基于測試象限和測試金字塔的指導,結(jié)合項目和系統(tǒng)特點來制定適合的策略。
最后,這是一份不全的測試類型清單,也不一定完全準確,歡迎大家留言補充。
09 推薦閱讀
本文首發(fā)于「BY林子」,轉(zhuǎn)載請參考版權(quán)聲明。