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

字號:

2、UML順序圖的一個形式化定義
    為了能在測試中找出所有的場景,下面給出順序圖的形式化定義:
    定義1(順序圖)順序圖SD可以表示為一個六元組:SD=,其中:
    ◆O={O1, O2, …,Om},是對象的集合。O1, O2, …,Om都是順序圖中的對象。
    ◆M guard´message´name´parameter_list,是消息的集合。順序圖中的每一個消息都形如:“[衛(wèi)士條件]消息名(參數(shù))”。
    ◆E=M {s, r},是事件集合。事件是指消息的發(fā)送和接收。對于消息msg,發(fā)送事件用表示,接收事件用表示。順序圖中所有發(fā)送消息事件的集合記為S,所有接收消息事件的集合記為R。SÇR=Æ, SÈR=E。
    ◆→是消息集合M上的一個全序關系,表示順序圖中的消息在縱向時間軸上的先后關系。
    ◆msg是從E到M的一個函數(shù)關系,msg(e) M表示事件e所對應的消息。
    ◆Obj是從E到O的一個函數(shù)關系,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:一個簡單的順序圖
    順序圖主要描述了對象間發(fā)送消息的時間順序。我們用符號‘<<’來表示事件間的先后關系,它滿足如下三個性質:
    1.對同一消息而言,發(fā)送事件先于接收事件。
    2.在同一對象的生命線上,若事件e1出現(xiàn)在發(fā)送事件e2的上方,則e1先于e2。
    3.在同一個對象的生命線上,如果接收事件e1出現(xiàn)在e2的上方,并且它們分別對應的發(fā)送事件也位于同一個對象的生命線上,則e1先于e2。