1. 程式人生 > >軟體測試的分類——按測試模式來分類

軟體測試的分類——按測試模式來分類

安測試模式來分類:

瀑布模型、敏捷測試、基於指令碼的測試、基於風險的測試、探索式測試等

常用的測試模型

1、傳統的瀑布模型——最早出現的軟體開發模型

專案計劃——需求分析——軟體設計——程式開發——軟體測試——整合維護。

每一個階段都是以上個階段的輸出作為下個階段的輸入。

專案計劃:制定專案總體的研發計劃,確定主要的里程碑節點。輸出專案的技術書。

需求分析:明確使用者需求定義,並對定義進行清晰描述。是充分理解客戶需求,描述產品功能的重要階段。輸出產品的需求規格說明。

軟體設計:根據需求的定義來確定產品實現方案。輸出概要設計、詳細設計等。

程式開發:開發團隊具體實現。

軟體測試:通過獨立測試團隊評估產品是否滿足需求的定義。輸出測試結果、測試報告。

整合維護:根據使用者使用對產品進行必要的需改升級。

優點:

強調需求、設計的作用

前一階段完成後,只需關注後續階段

為專案提供了按階段劃分的檢查點,里程碑清晰

文件規範

缺點:

難以適應需求的頻繁變化

專案週期後段才能看到成果

強制的里程碑、完成時間點

文件工作量大

2、V模型——目前使用最廣泛的模型(瀑布模型的變種)

表明了測試過程的不同階段和開發各個階段的對應關係

需求分析                                                             驗收測試(確定軟體是否滿足使用者的最終需求和合同的有關規定)

      概要設計                                              系統測試(軟體在功能、效能這些質量特性上是否滿足系統要求)

               詳細設計                              整合測試(檢測程式是否滿足設計程式的要求)

                      軟體編碼           單元測試(檢測程式是否滿足設計程式的要求)

V模型強調了軟體開發的協作和速度,反映測試活動和分析設計的關係,將軟體的實現和驗證有機結合起來

侷限性:將需求分析放在了最後

3、W模型——測試伴隨著開發週期進行

有利於儘早發現問題,改進了V模型

使用者需求            驗收測試設計                                           交付             驗收測試

       需求分析             系統測試設計                              實施          系統測試

             概要設計                 整合測試設計                整合        整合測試

                    詳細設計                  單元測試設計

                                                 編碼                    單元測試

侷限性:不能很好的支援迭代開發

4、X模型——針對V模型的改進

程式片段1                                                    封版

       測試設計                                         執行測試

              工具配置                             測試設計

                    執行測試                 工具配置

                           編碼完整    迭代1....n

                    執行測試                   探索式測試

               工具配置

         測試設計                                        執行測試

程式片段n

左邊:針對單獨的片段進行的測試和編碼,此後進行頻繁的交接、整合

探索式測試:不進行事先計劃的特殊測試,在測試計劃之外發現更多錯誤

5、H模型——貫穿在整個軟體生命週期

測試準備   測試就緒點   測試執行

                                                        測試流程

                                                        其他流程

其他測試模型

1、敏捷測試

Agile Testing——遵循敏捷宣言的一種測試實踐

敏捷宣言

個體與互動  重於  過程和工具

可用的軟體  重於  完備的文件

客戶協作      重於  合同談判

響應變化      重於  遵循計劃

在每對比較重,後者並非全無價值,但我們更看重前者

敏捷測試

強調從客戶角度進行測試;

重點關注迭代測試新功能,不在強調測試階段

儘早測試,不間斷測試,具備條件即測試

強調持續反饋

預防缺陷重於發現缺陷

敏捷測試VS傳統測試

傳統測試:測試是質量的最後保護者;嚴格的變更管理;預先的計劃和細節的準備;重量級文件;各階段測試嚴格的入口和出口標準;

                    更多在迴歸測試時進行重量級的自動化測試;嚴格依賴流程進行;測試團隊和開發團隊是相對獨立的

敏捷測試:開發和測試人員是緊密合作,大家都有責任對軟體負責;變更是可接受的,擁抱變更;計劃隨時隨著僅佔市場調整;只需要絕對必要的文件;

                   各迭代之間已經沒有明顯的入口和出口標準;所有階段都需要自動測試,每個人都需要做,是專案整合的一部分;流程不在需要嚴格執行;團隊合作是無縫隙合作

2、基於指令碼的測試——SBT

script-based Testing

Scripted Testing(ST)

Exploratory Testing(ET)探索式測試:完全拋開測試指令碼的測試

          是一種測試風格、思維而不是一種測試技術

ST:系統性強;容易管理、控制;設計在先,執行在後;主要是驗證自己的思路;可預見性

ET:自由靈活;和ST是互補的;執行和設計(思考)並行;不斷和系統互動,帶著問題測試;學習的過程

探索式測試優點:

更能激發測試人員的創造性和工作樂趣

增加了發現新的或較深入Bug的可能性

在較短時間內找到更多Bug以及對SUT做一個快速的評估(SUT:soft ware and test)

有利於更加有效地實施自動化

更加適用於敏捷專案

減少了在簡單、繁複上用例的無謂編寫時間

缺點:

測試管理上有侷限性,較難協調和控制

對於BUg的重複利用和重現上作用有限

對測試人員的測試技能和業務知識深度依賴較大

只有在SUT已完全可用的前提下才更有作用

ET的生產率很難定義

ET本身較難進行自動化

測試方法上分為:區域性探索式測試和全域性探索式測試(漫遊測試法)

區域性探索式測試五大要素:輸入、狀態、程式碼路徑、使用者資料、執行環境

全域性探索式測試六大區

執行探索式測試:Know you Mession ——learning Session——Coverage Session——Deep Session——Close Session 

3、基於風險的測試——RBT(Risk-based Testing)

一種基於對軟體失效的風險評估並以此指導測試計劃、設計、執行、結果評價的軟體測試型別

哪些是風險?

質量風險、管理風險

風險級別=風險可能性*風險嚴重度

識別風險

可能性:複雜性、時間壓力、高變更率、技能水平、地理分散度

嚴重程度:使用頻率、失效可視性、商業損失、組織負面影響和損害、社會損失和法律責任

風險要素風=sum(單項權重*得分)

4、基於模型的測試-MBT