本文首發(fā)于「BY林子」货徙,轉載請參考版權聲明研儒。
不管是專業(yè)測試人員還是軟件行業(yè)其他角色真仲,幾乎很少有人能分清楚各種軟件測試類型,比如最近看到有人說:
“功能測試等同于手動測試”
“功能測試也叫黑盒測試或者數(shù)據(jù)驅動測試”
……
的確弛随,測試類型的概念沒有標準化的定義坚冀,而且在不同的語境下還會有不同的含義戚绕,因此,大家都混淆各種概念也是很正常的归斤。但是痊夭,盡量搞清楚這些類型,對于我們更好地理解和實踐軟件測試還是很有幫助的脏里。
于是她我,通過我對ChatGPT進行提問,對它回答不清晰或者不準確的內容通過進一步提問澄清迫横,最終我和ChatGPT pair 整理了這份軟件測試類型清單番舆。
01 按照測試驗證的內容分類
根據(jù)測試驗證的內容是系統(tǒng)的功能需求,還是非功能需求矾踱,可以分為功能測試和非功能測試恨狈,而非功能測試還可以細分為不同的測試類型。
1.1 按測試內容分類的測試類型
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)化和調整堆缘,以達到滿足業(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ū)的語言序目、文化和習慣等方面的需求。本地化測試通常需要對軟件進行翻譯伯襟、本地化調整猿涨、格式調整等處理。
12. 易用性測試:
易用性測試主要用于測試軟件系統(tǒng)的易用性和用戶體驗姆怪,可以確定系統(tǒng)的用戶友好性叛赚,以及系統(tǒng)是否能夠在不同的用戶群體中滿足用戶的需求和期望。
1.2 易混淆測試類型
1. 可用性測試與易用性測試:
可用性測試和易用性測試是相關但不同的測試類型稽揭。雖然它們都關注軟件系統(tǒng)的用戶體驗俺附,但它們的重點和方法不同。
可用性測試主要關注系統(tǒng)在各種情況下是否可用溪掀。這包括測試系統(tǒng)的可靠性事镣、可訪問性、易學性揪胃、效率和容錯性等方面璃哟。可用性測試通常通過場景測試喊递、用戶測試和技術測試等方法來評估系統(tǒng)的可用性随闪。
而易用性測試主要關注系統(tǒng)的用戶友好性和易學性,以及用戶的滿意度和使用體驗骚勘。易用性測試通常通過用戶研究蕴掏、人機交互測試和用戶調查等方法來評估系統(tǒng)的易用性。
2. 可移植性測試與兼容性測試:
可移植性測試是測試軟件在不同平臺和環(huán)境下的可移植性和可用性调鲸,主要關注的是軟件的可移植性,即能否在不同平臺和環(huán)境下正常運行和使用挽荡。而兼容性測試是測試軟件在不同硬件和軟件環(huán)境下的兼容性藐石,主要關注的是軟件的兼容性,即能否在不同的操作系統(tǒng)定拟、瀏覽器于微、設備和網(wǎng)絡環(huán)境下正常工作。
可以將兩者視為相互補充的測試類型青自,因為軟件的可移植性和兼容性都是非常重要的質量屬性株依。雖然它們有一些相似之處,但是在測試的具體實現(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)測試主要關注整個軟件系統(tǒng)是否符合需求和規(guī)格說明書,而系統(tǒng)級集成測試主要關注不同子系統(tǒng)之間的集成和協(xié)作能力是否符合需求吸占。
2. 系統(tǒng)測試與端到端測試:
系統(tǒng)測試和端到端測試都是按照測試粒度的不同維度來分類的晴叨,但是涵蓋的范圍是有些不同的。
系統(tǒng)測試通常是從整體的角度來測試系統(tǒng)的可靠性矾屯、穩(wěn)定性兼蕊、性能等方面的質量屬性,常常會涉及多個模塊和組件的集成測試件蚕,例如在測試一個大型系統(tǒng)時孙技,系統(tǒng)測試可能會包含多個模塊的集成測試,以及整個系統(tǒng)的端到端測試排作。
而端到端測試則更加關注整個系統(tǒng)在用戶場景下的完整性牵啦,即從用戶使用的角度出發(fā),測試系統(tǒng)是否能夠正確地完成預期的業(yè)務流程和交互功能妄痪,涵蓋的測試范圍通常會比系統(tǒng)測試更廣泛哈雏,包括前端、后端衫生、數(shù)據(jù)庫裳瘪、接口等多個方面。端到端測試通常也被稱為業(yè)務流程測試或場景測試罪针。
因此彭羹,可以認為端到端測試是系統(tǒng)測試中的一個子集,它更加注重系統(tǒng)在用戶場景下的完整性和正確性泪酱。
03 按照對系統(tǒng)內部的了解程度分類
ChatGPT給的分類維度是測試方法派殷,個人覺得不是特別合適,進一步澄清為:是按照測試人員在測試過程中了解系統(tǒng)的內部工作原理和結構的程度來劃分的墓阀。
黑盒測試: 測試人員不了解系統(tǒng)內部的實現(xiàn)細節(jié)毡惜,只關注系統(tǒng)的輸入和輸出,根據(jù)系統(tǒng)規(guī)格說明或者其他文檔編寫測試用例斯撮,驗證系統(tǒng)是否符合需求和規(guī)格虱黄。這種測試方法模擬了系統(tǒng)用戶的行為,通常關注的是系統(tǒng)的功能性和非功能性需求吮成。
白盒測試: 測試人員了解系統(tǒng)的內部工作原理和結構菩掏,根據(jù)系統(tǒng)設計和代碼邏輯編寫測試用例烙心,驗證系統(tǒng)的正確性和可靠性。這種測試方法側重于測試代碼實現(xiàn)的正確性和系統(tǒng)內部結構的合理性耀怜。
灰盒測試: 測試人員了解部分系統(tǒng)的內部工作原理和結構作瞄,但是不完全了解系統(tǒng)的全部實現(xiàn)細節(jié)茶宵。這種測試方法介于黑盒測試和白盒測試之間,既關注系統(tǒng)的功能和需求宗挥,也關注代碼實現(xiàn)的正確性和內部結構的合理性乌庶。測試人員通常會結合系統(tǒng)規(guī)格說明和代碼實現(xiàn)來編寫測試用例种蝶。
注:這里的測試人員應該確切地說是開展測試的人員。
04 按照測試目的分類
冒煙測試: 也稱為構建驗證測試瞒大,用于驗證軟件系統(tǒng)的主要功能是否正常工作螃征。通常在每次代碼構建完成后進行,以盡早發(fā)現(xiàn)潛在的問題透敌,避免在后續(xù)測試中浪費時間和資源盯滚。
回歸測試: 用于驗證新的軟件功能或修復缺陷后,之前的功能是否受到影響酗电。通常在每次代碼變更后進行魄藕,以確保之前的功能沒有被破壞或產(chǎn)生副作用。
驗收測試: 也稱為用戶驗收測試撵术,是在軟件交付給用戶之前進行的最后一輪測試背率,以確保軟件系統(tǒng)符合用戶需求和預期的質量標準。
05 按照測試對象分類
前端測試: 主要測試網(wǎng)站或應用程序的前端界面嫩与,包括頁面布局寝姿、交互、響應速度蕴纳、可訪問性会油、可用性等方面。
后端測試: 主要測試應用程序的后端功能和邏輯古毛,包括數(shù)據(jù)處理翻翩、算法、業(yè)務邏輯等方面稻薇。
數(shù)據(jù)庫測試: 主要測試數(shù)據(jù)庫的性能嫂冻、可靠性、安全性等方面塞椎,包括對數(shù)據(jù)表結構桨仿、數(shù)據(jù)完整性、數(shù)據(jù)類型等方面的測試案狠。
接口測試: 主要測試應用程序與其他系統(tǒng)或服務之間的接口服傍,包括對輸入?yún)?shù)、輸出結果骂铁、數(shù)據(jù)格式吹零、傳輸協(xié)議等方面的測試。
06 按照測試手段分類
按照測試手段可以分為手動測試和自動化測試拉庵。
07 按照測試執(zhí)行的方式分類
按照測試執(zhí)行的方式灿椅,也就是是否要基于測試用例(腳本)來進行測試,可以分為腳本化測試和探索式測試。
腳本化測試: ChatGPT認為腳本化測試就是自動化測試茫蛹,其實腳本化測試是指基于測試用例進行的測試操刀,包括自動化和手動測試。
探索式測試: 不需要事先設計測試用例婴洼,它是一種軟件測試風格骨坑,強調獨立測試人員的個人自由和職責,為了持續(xù)優(yōu)化其工作的價值窃蹋,將測試相關學習卡啰、測試設計、測試執(zhí)行和測試結果分析作為相互支持的活動警没,在整個項目過程中并行地執(zhí)行匈辱。
08 寫在最后
雖然我進行了少量修改和調整,還是有保留絕大部分原話杀迹,希望ChatGPT的車轱轆話沒把大家繞暈亡脸。
不同的測試類型可以針對不同的需求和問題,有助于制定更加有效的測試計劃和策略树酪。同時浅碾,掌握不同的測試類型可以提高測試能力和測試思維,讓測試工作更加專業(yè)和高效续语。
但是垂谢,也沒必要過度去摳各種測試類型的細節(jié),測試策略的制定需要系統(tǒng)性地考慮疮茄。全面了解各種測試類型的劃分方式滥朱,基于測試象限和測試金字塔的指導,結合項目和系統(tǒng)特點來制定適合的策略力试。
最后徙邻,這是一份不全的測試類型清單,也不一定完全準確畸裳,歡迎大家留言補充缰犁。