• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    基于UML順序圖的場景測試用例生成方法(1)

    發布: 2007-6-11 17:09 | 作者: 逄瑞娟/李勁華 | 來源: | 查看: 148次 | 進入軟件測試論壇討論

    領測軟件測試網

    引言

    本文提出了一個基于UML模型圖來測試場景的方法,它以順序圖為主要測試模型,結合類圖和狀態圖導出所有的場景,并將與場景相關的環境條件與方法序列、輸入、輸出合理組合作為覆蓋該場景的測試用例。我們的工作具有兩方面的優點:測試方法完全基于UML模型,以便已經使用UML的軟件系統能方便地采用,另一方面生成的測試用例數量少,減少工作量。

    1、實例

    本文以DHCP[2]作為一個實例,使用UML的類圖、狀態圖和順序圖[3]來說明我們提出的一個場景測試用例生成方法。DHCP是由IETF進行標準化的一個協議,提供一種動態指定IP地址和配置參數的機制。我們選取了DHCP協議的一個子集,協議的一般過程如下:

    1.客戶端廣播一個DHCP_DISCOVER消息。

    2.每個具有網絡地址的服務可能響應一個DHCP_ OFFER消息,如果都沒有響應,則表示超時失敗。

    3.如果客戶端接收到一個或多個DHCP_OFFER消息,則選擇其中一個,然后廣播一條DHCP_REQUEST消息給所有的服務器,并附上選擇參數及指明哪一個服務器。

    4.所有服務器接收到客戶的廣播信息,只有被選中的服務器才綁定地址給這個客戶,并發送確認消息DHCP_ACK,連接成功;如果要求的地址不可得(可能分配給其它用戶),則服務器發送一個DHCP_NAK給客戶,連接失敗。

    圖1顯示了DHCP協議的部分類圖。

    圖1:DHCP的部分類圖

    圖2是實例中請求IP的順序圖。

    圖2:請求IP的順序圖

    圖3是DHCP中Server類的狀態圖。

    圖3:DHCP-Server狀態圖

    2、UML順序圖的一個形式化定義

    為了能在測試中找出所有的場景,下面給出順序圖的形式化定義:

    定義1(順序圖)順序圖SD可以表示為一個六元組:SD=,其中:

    ◆O={O1, O2, …,Om},是對象的集合。O1, O2, …,Om都是順序圖中的對象。

    ◆M guard´message´name´parameter_list,是消息的集合。順序圖中的每一個消息都形如:“[衛士條件]消息名(參數)”。

    ◆E=M {s, r},是事件集合。事件是指消息的發送和接收。對于消息msg,發送事件用表示,接收事件用表示。順序圖中所有發送消息事件的集合記為S,所有接收消息事件的集合記為R。SÇR=Æ, SÈR=E。

    ◆→是消息集合M上的一個全序關系,表示順序圖中的消息在縱向時間軸上的先后關系。

    ◆msg是從E到M的一個函數關系,msg(e) M表示事件e所對應的消息。

    ◆Obj是從E到O的一個函數關系,obj(e) O表示時間e所對應的對象。對象Oi上所有事件的集合記為Ei,Ei={e | e EÙobj(e)= Oi }。

    在如圖4所示的順序圖中:

    O={obj1,obj2,obj3}; M={m1,m2,m3};

    E={(m1,s),(m1,r),(m2,s),(m2,r),(m3,s),(m3,r)};

    →=m1→m2→m3.

    圖4:一個簡單的順序圖

    順序圖主要描述了對象間發送消息的時間順序。我們用符號‘<<’來表示事件間的先后關系,它滿足如下三個性質:

    1.對同一消息而言,發送事件先于接收事件。

    2.在同一對象的生命線上,若事件e1出現在發送事件e2的上方,則e1先于e2。

    3.在同一個對象的生命線上,如果接收事件e1出現在e2的上方,并且它們分別對應的發送事件也位于同一個對象的生命線上,則e1先于e2。

    ‘<<’順序關系是強制順序關系,那么即使它們在順序圖的時間軸上存在先后關系,這兩個事件實際發生的先后順序也是不確定的。例如圖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,就是一個有效的場景。


    共2頁: 1 [2] 下一頁

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>