




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、狀態(tài)遷移法一、概念1什么是狀態(tài)遷移法在定義狀態(tài)遷移法之前, 先介紹一下程序的功能說明。 一個程序的功能說明 通常由動態(tài)說明和靜態(tài)說明組成。動態(tài)說明描述了輸入數據的次序或轉移的次 序。靜態(tài)說明描述了輸入條件與輸出條件之間的對應關系。對于較復雜的程序, 由于存在大量的組合情況, 因此,僅用靜態(tài)說明組成的規(guī)格說明對于測試來說往 往是不夠的,必須用動態(tài)說明來補充功能說明。功能圖方法是用功能圖形式化地表示程序的功能說明, 并機械地生成功能圖 的測試用例。功能圖模型由狀態(tài)遷移圖和邏輯功能模型構成:(1) 狀態(tài)遷移圖用于表示輸入數據序列以及相應的輸出數據。用狀態(tài)和 遷移來描述一個狀態(tài)指出數據輸入的位置 (或
2、時間),而遷移則指明狀態(tài) 的改變,同時要依靠判定表或因果圖表示的邏輯功能。 在狀態(tài)遷移圖中, 由輸入數據和當前狀態(tài)決定輸出數據和后續(xù)狀態(tài)。(2) 邏輯功能模型用于表示在狀態(tài)中輸入條件和輸出條件之間的對應關 系。邏輯功能模型只適合于描述靜態(tài)說明, 輸出數據僅由輸入數據決定。(3) 測試用例則是由測試中經過的一系列狀態(tài)和在每個狀態(tài)中必須依靠 輸入/ 輸出數據滿足的一對條件組成。如何從狀態(tài)遷移圖中選取用例我們采用節(jié)點代替狀態(tài), 弧線代替遷移, 那么 狀態(tài)遷移圖就轉換成為一個程序的控制流程圖, 問題也就隨之轉換為路徑測試的 問題了。所以,功能圖方法其實是是一種黑盒 / 白盒混合使用的用例設計方法。 比
3、如在功能圖方法中, 用到的邏輯覆蓋與路徑測試的概念和方法, 就是屬于白盒 測試方法中的內容。(邏輯覆蓋是以程序內部的邏輯結構為基礎的測試用例設計 方法,該方法要求測試人員對程序的邏輯結構有清楚的了解。 由于覆蓋測試的目 標不同,邏輯覆蓋可分為:語句覆蓋,判定覆蓋,判定 - 條件覆蓋,條件組合覆 蓋及路徑覆蓋。)注意:測試人員應當注意區(qū)分黑盒測試中系統(tǒng)功能或者系統(tǒng)水平上的邏輯覆蓋與路徑,和白盒測試中所指的程序內部的邏輯覆蓋的區(qū)別狀態(tài)遷移法的目標是設計足夠的用例達到對系統(tǒng)狀態(tài)的覆蓋、 狀態(tài)條件 組合的覆蓋以及狀態(tài)遷移路徑的覆蓋。測試用例的生成規(guī)則: 為了把狀態(tài)遷移 (測試路徑) 的測試用例與邏輯模
4、型 (局部測試用例) 的測試用例組合起來, 從功能圖生成實用的測試用例, 須在一 個結構化的狀態(tài)遷移(SST中,定義三種形式的循環(huán)一一順序、選擇和重復。 然后按照以下四個過程從功能圖中生成測試用例。1. 生成局部測試用例。在每個狀態(tài)中,從因果圖生成局部測試用例。局部 測試用例由原因值(輸入數據)組合與對應的結果值(輸出數據或狀態(tài))構成。2. 測試路徑生成。利用上面的規(guī)則(順序、選擇、重復)生成從初始狀態(tài) 到最后狀態(tài)的測試路徑。3. 測試用例合成。合成測試路徑與功能圖中每個狀態(tài)中的局部測試用例, 結果是初始狀態(tài)到最后狀態(tài)的一個狀態(tài)序列, 以及每個狀態(tài)中輸入數據與對應輸 出數據的組合。4. 測試用
5、例的合成算法。采用條件構造樹。二、操作步驟及實例分析借鑒實例()一一手機中MP3的播放功能。在手機中使用MP3 R鍵功能為倒退,P鍵功能為播放,F鍵功能為快進,RC 鍵功能為錄音,S鍵功能為暫停;其中沒有選擇 MP3曲目時不能按任何鍵,并且 當MP3曲目在起點時不能按R鍵,當MP3曲目在末端時不能按P、F鍵;MP3只 有在暫停狀態(tài)下才可以錄音。本工程方法具體的實施步驟如下:步驟 1:繪制狀態(tài)遷移圖步驟2:定義狀態(tài)一一條件表當前狀態(tài)事件下一狀態(tài)輸出中途停止P播放F前進R后退RCVr.錄曰播放F前進R后退S中途停止前進P播放R后退S中途停止自動終點停止后退P播放F前進S中途停止自動終點停止Vr.
6、錄曰S停止起點停止P播放F前進RC錄曰終點停止R后退步驟3:根據狀態(tài)遷移圖推到測試路徑-a從初始狀態(tài)節(jié)點(可以有多個)出發(fā),依據廣度優(yōu)先原則遍歷狀態(tài)遷移圖, 遍歷到結束狀態(tài)節(jié)點或已經遍歷過的節(jié)點為一次遍歷結束,得到一條測試路 徑。-b選取需要測試的路徑,達到規(guī)定的路徑覆蓋率。這里每條路經對應一個或幾個測試用例規(guī)格。其中“覆蓋路徑”指該用例覆蓋的路徑的分支序列;“覆蓋狀態(tài)一一條件組合”指該分支序列上各狀態(tài)點和條件的組合。用例編號測試用例覆蓋路徑覆蓋的狀態(tài)條件組合為了更好地進行遍歷,可以借助于狀態(tài)轉換樹,使用狀態(tài)轉換樹首先要確定 一個根節(jié)點,比如狀態(tài)遷移圖中的“起點停止”狀態(tài),然后從該狀態(tài)往后延伸
7、, 有三個方向,可以分別轉換到播放狀態(tài)、快進狀態(tài),錄音狀態(tài)。然后再分別從這 三個狀態(tài)往后延伸,直到所有的狀態(tài)轉換都包含到該狀態(tài)轉換樹中。 從根節(jié)點到 最后的葉子節(jié)點就是需要測試的路徑。圖:手機中MP3的播放功能狀態(tài)轉換樹步驟 4:選取測試數據,構造測試用例 對選定的每條需要測試的路徑, 結合等價類、 邊界值分析, 確定每個狀態(tài)節(jié) 點的輸入, 沿著該路經通過表格將各種測試數據的輸入輸出對應起來, 這樣就完 成了測試用例的設計。如果有足夠的時間, 就應該測試軟件的每一個分支不僅是連接兩個狀態(tài) 的每一條線, 而是每一種線路組合。 但是覆蓋所有分支是不可能的, 正如對數據 等價分配一樣, 大量的可能性
8、也需要減少可操作的測試用例數目。 我們可以通過 以下 5 種方法減少測試用例:1. 每種狀態(tài)至少訪問一次。無論用什么方法,必須測試每一種狀態(tài)。2. 測試看起來最常見最普遍的狀態(tài)轉換。我們可以根據審查產品說明書時 分析收集到的信息確定某些用戶情況可能比其他更常見。3. 測試狀態(tài)之間最不常用的分支。這些分支是最容易被產品設計者和程序 員忽視的。4. 測試所有錯誤狀態(tài)及其返回值。錯誤沒有得到正確處理、錯誤提示信息 不正確、修復錯誤時未正確恢復軟件等情況是常有的。5. 利用工具自動執(zhí)行狀態(tài)轉換測試。步驟 5:其他考慮 運用其他測試方法,如錯誤推測法等增加異常測試等非正常性測試用例。三、實際應用狀態(tài)遷移
9、圖法的核心在于通過狀態(tài)轉換樹將不同狀態(tài)之間的轉換串起來進 行測試, 而這里所說的轉換也可以看成是修改、 改變, 因此凡是被涉及到改變的 地方都可以考慮使用狀態(tài)遷移圖法。狀態(tài)遷移圖法主要適用于以下幾種類似情 況:1. 播放器、手機等存在工作狀態(tài)不斷改變的系統(tǒng);2. 編輯功能,如修改字體顏色、大小、格式等等。四、總結到目前為止,我們測試的是數據,包括數字、文字、軟件輸入和輸出。軟件 測試的另一方面是通過不同的狀態(tài)驗證程序的邏輯流程。 軟件狀態(tài)是指軟件當前 所處的情況或者模式,例如啟動Windows畫圖程序,程序處于鉛筆繪畫狀態(tài),我 們可以通過選中噴槍工具改變軟件的狀態(tài), 使它處于噴涂狀態(tài), 也可以
10、通過選擇 其他工具、菜單項、顏色等使軟件的代碼進入某一個流程分支, 觸發(fā)一些數據位。 設置某些變量, 讀取某些數據, 轉入一個新的狀態(tài)。 軟件測試人員必須測試程序 的這些狀態(tài)及其轉換。如同窮舉數據測試是不可能的一樣。 除了極其簡單的程序之外, 基本上不可 能覆蓋所有程序分支, 達到所有狀態(tài)。 目前軟件越來越復雜, 特別是為了迎合日 益豐富的用戶界面,提供了太多選擇和選項,致使程序分支爆炸式增長: 與著名的流動推銷員問題類似 : 給定城市數目,以及任何兩個城市之間的距離,設法找 出訪問到每一個城市并返回起點的最短路線。 如果只有 5 個城市,則可以快速計 算出共有 120 條不同的路線。走遍所有
11、路線,從中找到最短的路線并不是太難, 花費不了太長時間。如果城市數目增加到成百上千 ( 或者在測試用例中增加成百 上千種狀態(tài) ) ,就形成一個難以解決的問題。要減少測試的風險, 盡量全面測試程序的狀態(tài)及其轉換流程, 可以首先根據 產品說明書建立一個狀態(tài)轉換圖, 用來描述系統(tǒng)設計和指導我們進行測試, 然后 運用等價分配技術選擇要測試的狀態(tài)和分支,這將是十分有效的方法。所以,狀態(tài)遷移圖法實際上是測試了各種狀態(tài)的轉換, 這些狀態(tài)轉換的測試 在實際工作中是容易遺漏的。 只要能將這些狀態(tài)的轉換測試覆蓋到, 是否采用了 狀態(tài)遷移圖法其實并不重要, 因為狀態(tài)遷移圖法僅僅是給出了一種將多個狀態(tài)的 轉換串起來進行測試的思路而已。綜上所述,狀態(tài)轉換圖應包括以下條目:1. 軟件可能進入的每
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖北省安全員考試題庫及答案
- 包租廠房合同范本
- 倉庫招聘合同范本
- 加工車庫門窗合同范本
- 勞務合同租賃合同范本
- 個人單位用人合同范本
- 單位購車職工使用合同范本
- 刮瓷墻面修補合同范本
- 冷庫搬運服務合同范本
- 業(yè)主瓷磚采購合同范本
- 冠心病患者運動恐懼的現狀及影響因素分析
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- 全國2018年10月自考00043經濟法概論(財經類)試題及答案
- 《又見平遙》課件
- 噴涂設備點檢表
- 湘科版小學二年級下冊科學 全冊 教案
- 簡易呼吸球囊的使用演示文稿
- GB 6722-2014爆破安全規(guī)程
- 廣東省佛山市《綜合基礎知識》事業(yè)單位國考真題
- 02 第2章 城市與城市化-城市管理學
- 一本好書《中華上下五千年》課件
評論
0/150
提交評論