基于UML順序圖的場景測試用例生成方法[3]

發表于:2010-05-21來源:作者:點擊數: 標簽:umlUML順序
基于 UML 順序圖的場景 測試用例 生成方法[3] 軟件測試 ‘’順序關系是強制順序關系,那么即使它們在順序圖的時間軸上存在先后關系,這兩個事件實際發生的先后順序也是不確定的。例如圖4中,盡管(m1,r)在(m3,r)的上方,但是在系統實際運行中,由于m1, m2, m

  基于UML順序圖的場景測試用例生成方法[3]   軟件測試

  ‘<<’順序關系是強制順序關系,那么即使它們在順序圖的時間軸上存在先后關系,這兩個事件實際發生的先后順序也是不確定的。例如圖4中,盡管(m1,r)在(m3,r)的上方,但是在系統實際運行中,由于m1, m2, m3都是異步消息,因此(m1,r)并不一定先于(m3,r)發生,這是由于圖形表示的局限性造成的。

  一個簡單順序圖(不包括分支)刻畫了系統運行的一個場景,其運行過程表現為一個事件的序列(e1 , e2,…, em),其中事件ei+1 在事件 ei后發生(1≤ i ≤m-1)。由于事件之間存在強制順序關系‘<<’,因此并不是所有事件序列都是順序圖允許的。而且,由于‘<<’并不是一個全序關系,所以一個順序圖的場景可能允許多個事件序列??梢杂靡粋€有向無環圖(DAG)來表示‘<<’關系,對于任意兩個事件 ei,ei∈ E,如果 ei<< ei,則畫一條從ei 指向ei 的邊,直到所有事件都在這個有向圖上。

  通過遍歷所得的DAG圖,可以很容易的得到順序圖中的每一個有效的事件序列。在圖4的例子中,<(m1,s), (m2,s), (m2,r),(m3,s),(m3,r),(m1,r)>和<(m1,s),(m1,r), (m2,s), (m2,r), (m3,s), (m3,r)>就是兩個有效的事件序列。

  定義2(順序圖的場景)對于順序圖SD=,場景定義為一個消息序列< M1,M2,…,Mm>,并且滿足下面兩個條件:

  (1)所有M中的事件在序列中出現且僅出現一次,也就是說{M1,M2,…,Mm}=M且對于所有的i j,Mi Mj。

  (2)對于任意兩個消息序列Mi,MjÎM,如果(Mi,s)<<(Mj,s),那么序列中Mi在Mj的前面。

  根據場景的定義,通過所找到的合法的事件序列就可以確定與該事件序列相應的場景。如圖4,就是一個有效的場景。

  3、基于UML順序圖生成場景測試用例的方法

  順序圖中的場景設計可能與實現不一致,例如由于消息名的編碼錯誤、不正確的或缺少輸出等,那么通過執行順序圖中的所有可能場景,至少能在其中的一個場景的執行過程中達到該錯誤,因此只要從順序圖中生成覆蓋所有場景的測試用例就能有效地找出存在的錯誤。在測試用例的生成過程中,我們將環境條件與輸入,方法調用序列和預期輸出作為最終的測試用例,最后將系統測試后的實際輸出和方法調用序列與預期的輸出和方法調用序列進行比較,從整體上驗證系統的最終實現是否與設計一致,從而完成順序圖的場景測試。

  3.1、測試衡量方法

  測試的主要評測方法包括覆蓋和質量,測試覆蓋是對測試完全程度的評測,質量是對測試對象(系統或測試的應用程序)的可靠性、穩定性以及性能的評測。對于順序圖的場景測試,最基本的評測方法就是測試覆蓋,即要求針對每一個場景都至少生成一個測試用例。但是順序圖本身并不能充分地對系統交互行為進行建模,僅通過順序圖并不能生成充分地場景測試用例。所以我們將順序圖與交互對象的狀態圖相結合,生成更充分的測試用例。為此,定義如下評測方法:

  1) 順序圖中的每個場景至少被測試一次。

  2) 如果順序圖中的對象存在狀態圖,那么與場景相關的每個狀態至少要被測試一次。

  3.2、順序圖場景測試用例生成方法的步驟

  第一步,檢查順序圖中的每一個對象,如果其存在狀態圖,就將對象狀態加入到順序圖中。以DHCP-Server對象為例,其狀態圖如圖3所示,Has free IP addresses和Has no free IP addresses是Server可能處于的兩種狀態,我們將這兩個狀態加入順序圖,加入狀態信息后的最終結果如圖5所示。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97