什麼是V、W、X模型?
V模型
V模型是我們熟知的瀑布模型的一種改進,由Paul Rook在1980年率先提出的,在1990年出現在英國國家計算中心的出版物中,旨在提高軟體開發的效率和有效性。瀑布模型將軟體生命週期劃分為計劃、分析、設計、編碼、測試和維護六個階段,由於早期的錯誤可能要等到開發後期的測試階段才能發現,所以可能帶來嚴重的後果。
V模型就是在這點改進了瀑布模型,在軟體開發的生存期,開發活動和測試活動幾乎同時開始,這兩個並行的動態的過程就會極大的減少bug和error出現的機率。
V模型中的過程從左到右,描述了基本的開發過程和測試行為。大體劃分階段為需求分析、概要設計、詳細設計、編碼、單元測試、整合測試、系統測試、驗收測試。它非常明確地標明瞭測試過程中存在的不同級別,並且清楚地描述了這些測試階段和開發過程期間各階段的對應關係。
系統測試所對應的是需求分析環節,也就是說系統測試的測試用例是根據需求規格說明書設計的,開發人員根據需求規格說明書來對軟體進行概要設計,測試人員根據需求規格說明書設計出系統測試用例。概要設計之後,開發人員根據概要設計對軟體進行詳細設計,測試人員根據概要設計設計出整合測試用例。詳細設計之後,開發人員根據詳細設計進行編碼,測試人員根據詳細設計設計出單元測試用例。編碼完成之後,測試人員根據單元測試用例對設定的件的測試單元進行測試,單元測試完成之後,進行整合測試,然後進行系統測試,最後進行驗收測試。
侷限性:把測試過程作為在需求分析、系統設計及編碼之後的一個階段。忽視了測試對需求分析,系統設計的驗證,一直到後期的驗收測試才被發現。
解決的思路是,測試在軟體做需求分析的同時就會有測試用例的跟蹤,這樣,可以儘快找出程式錯誤和需求偏離,從而更高效的提高程式質量,最大可能的減少成本,同時滿足使用者的實際軟體需求。
適用專案範圍:
一般適用於一些傳統資訊系統應用的開發,而一些高效能高風險的系統、網際網路軟體,或一個系統難以被具體模組化的時候,就比較難做成V模式所需的各種構件,需要更強調迭代的開發模型或者敏捷開發模型。
W模型
W模型由Evolutif公司提出,是V模型的發展。
W模型由兩個V字型模型組成,分別代表測試與開發過程,圖中明確表示出了測試與開發的並行關係。相對於V模型,W模型更科學。強調的是測試伴隨著整個軟體開發週期,而且測試的物件不僅僅是程式,需求、功能和設計同樣要測試。測試與開發是同步進行的,從而有利於儘早地發現問題。
侷限性:
W模型和V模型都把軟體的開發視為需求、設計、編碼等一系列序列的活動,無法支援迭代、自發性以及變更調整。
X模型
X模型的基本思想是由Marick提出的,由Robin F.Goldsmith先生在自己的文章裡將其思想定義為X模型,X模型其目標是彌補V模型的一些缺陷。
Marick對V模型的最主要批評是V模型無法引導專案的全部過程。他認為一個模型必須能處理開發的所有方面,包括交接,頻繁重複的整合,以及需求文件的缺乏等等。
X模型的左邊描述的是針對單獨程式片段所進行的相互分離的編碼和測試,此後將進行頻繁的交接,通過整合最終成為可執行的程式,然後再對這些可執行程式進行測試。己通過整合測試的成品可以進行封裝並提交給使用者,也可以作為更大規模和範圍內整合的一部分。多根並行的曲線表示變更可以在各個部分發生。
由圖中(右下方)可見,X模型還定位了探索性測試,這是不進行事先計劃的特殊型別的測試,這一方式往往能幫助有經驗的測試人員在測試計劃之外發現更多的軟體錯誤。
侷限性:可能對測試造成人力、物力和財力的浪費,對測試員的熟練程度要求比較高。
相關文章
- Kent Beck的3X模型是什麼?模型
- 軟體測試模型-其他模型 (W 模型|H 模型|X 模型)模型
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是大模型?大模型
- 什麼是UE模型?模型
- HTTP X-Forwarded-For是什麼?HTTPForward
- RFM是什麼?這個模型有什麼用?模型
- 由rotation轉為w,x,y,z為nan,為什麼呢NaN
- 搞Java的年薪 40W 是什麼水平?Java
- 搞Java的年薪40W是什麼水平?Java
- 什麼是10x工程師(10x engineers)?工程師
- 檔案許可權中 chmod、u+x、u、r、w、x分別代表什麼
- 什麼是Java記憶體模型?Java記憶體模型
- 什麼是Java記憶體模型Java記憶體模型
- 什麼是大語言模型(LLM)?模型
- python自迴歸模型是什麼?Python模型
- 特徵模型和特徵-這是什麼?特徵模型
- java事件處理模型是什麼Java事件模型
- IOS基礎-設計UI@1X@2X@3X是什麼iOSUI
- 什麼是 10x 程式設計師程式設計師
- 什麼是“六頂思考帽”模型? - modernanalyst模型NaN
- 大模型中的token是指什麼?大模型
- Linux系統中OSI模型是什麼,各層都有什麼?Linux模型
- 什麼是百家號藍V認證?藍V認證有什麼優勢?
- Java記憶體模型是什麼,為什麼要有Java記憶體模型,Java記憶體模型解決了什麼問題?Java記憶體模型
- 什麼是DMN決策模型和符號?模型符號
- 領域模型的核心本質是什麼?模型
- 什麼是Spotify模型的團隊拓撲?模型
- Netty是什麼,Netty為什麼速度這麼快,執行緒模型分析Netty執行緒模型
- 什麼是LLM大模型訓練,詳解Transformer結構模型大模型ORM
- Java記憶體模型FAQ(一) 什麼是記憶體模型Java記憶體模型
- C++中x&(x-1)是什麼意思(京東筆試)C++筆試
- 為什麼年薪 50W 是程式設計師的分水嶺?程式設計師
- W3C是什麼?請說說你對它的理解
- 5W1H聊開源之What——開源是什麼?
- 什麼是人工智慧模型的湧現特性?人工智慧模型
- 請問模型管理中的模型的列表定義是什麼意思模型
- 什麼是cookie,什麼是sessionCookieSession
- 這是什麼這是什麼