首页 > 其他分享 >用例图

用例图

时间:2023-09-21 15:32:46浏览次数:21  
标签:关系 泛化 包含 扩展 用例 基用例


共性: 都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。


1 、包含(include)


 


    包含关系:使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。基用例控制与包含用例的 关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。

   包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。


   例如:业务中,总是存在着维护某某信息的功能,如果将它作为一个用例,那新建、编辑以及修改都要在用例详述中描述,过于复杂;如果分成新建用例、编辑用例和删除用例,则划分太细。这时包含关系可以用来理清关系。


用例图_用例


 


对于一个扩展用例,可以在基用例上有几个扩展点。   


例如,系统中允许用户对查询的结果进行导出、打印。对于查询而言,能不能导出、打印查询都是一样的,导出、打印是不可见的。导入、打印和查询相对独立,而且为查询添加了新行为。因此可以采用扩展关系来描述:




用例图_事件流_02

 


4 、泛化(generalization)


 


泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。


例如,业务中可能存在许多需要部门领导审批的事情,但是领导审批的流程是很相似的,这时可以做成泛化关系表示:


 



用例图_用例_03


上面是我参考的一篇文章,觉得将三种关系的区别讲得很清晰,在此基础上结合自己的系统,对项目(在线购物系统)的用例做了整体的描绘。


    *****************************************************************


    (1)系统整体用例图


用例图_事件流_04


用例图_用例_05


用例图_用例_06


用例图_事件流_07


 


按照先整体用例,后子系统用例来进行描绘的,欢迎大家提出好的建议!


转:UML中扩展和泛化的区别

         泛化表示类似于OO术语“继承”或“多态”。UML中的Use Case泛化过程是将不同Use Case之间的可合并部分抽象成独立的父Use Case,并将不可合并部分单独成各自的子Use Case;包含以及扩展过程与泛化过程类似,但三者对用例关系的优化侧重点是不同的。如下:
          ●泛化侧重表示子用例间的互斥性;
          ●包含侧重表示被包含用例对Actor提供服务的间接性;
          ●扩展侧重表示扩展用例的触发不定性;详述如下:


        既然用例是系统提供服务的UML表述,那么服务这个过程在所有用例场景中是必然发生的,但发生按照发生条件可分为如下两种情况:
         ⒈无条件发生:肯定发生的;
         ⒉有条件发生:未必发生,发生与否取决于系统状态;


         因此,针对用例的三种关系结合系统状态考虑,泛化与包含用例属于无条件发生的用例,而扩展属于有条件发生的用例。进一步,用例的存在是为Actor提供服 务,但用例提供服务的方式可分为间接和直接两种,依据于此,泛化中的子用例提供的是直接服务,而包含中的被包含用例提供的是间接服务。同样,扩展用例提供的也是直接服务,但扩展用例的发生是有条件的。


         另外一点需要提及的是:泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在。


2 、扩展(extend)


扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点(Extension Point)上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己。但是扩展用例对基用例不可见。

标签:关系,泛化,包含,扩展,用例,基用例
From: https://blog.51cto.com/u_16230604/7554823

相关文章

  • pytest测试框架中数据分离以及测试用例参数化
    在进行测试自动化过程中,一个重要的最佳实践就是实现测试脚本和测试数据的分离。本文将涉及2个主题,一个是在pytest中如何实现测试用例脚本数据的分离,测试用例如何读入测试数据;二是在pytest中如何实现测试用例参数化。这两点是有区别的,如下图:flowchartLRTC[测试脚本]-->|读取外......
  • pytest的Hook函数之pytest.hookimpl(hookwrapper=True):获取测试用例结果
    装饰器@pytest.hookimpl(hookwrapper=True),它的作用和装饰器@pytest.mark.hookwrapper是一样的@pytest.hookimpl(hookwrapper=True)装饰的钩子函数,有以下两个作用:(1)可以获取到测试用例不同执行阶段的结果(setup,call,teardown)(2)可以获取钩子方法的调用结果(yield返回一个result对象)和调......
  • python测试用例数据驱动(读取写入excel)
    Python中处理excel数据的模块非常多,比如:xlxd(只读)、xlwd(只写)、openpyxl(可读写)Excel文件和下面的py文件代码一定要在同一个文件夹内,不然需要指定具体的Excel文件路径注意:excel文件为xlsx,不能是xls再转换成xlsx格式的文件,会报错fromopenpyxlimportload_workbookcl......
  • 测试专家总结的用例设计小技巧,还不快来了解一下!
    测试用例是将软件测试的行为做一个科学化的组织归纳,目的是将软件测试的行为转化成可管理的模式。测试用例是将测试具体量化的方法之一,对不同的软件,测试用例也是不同。一般来说,常用的测试方法有七大类。等价类划分,边界值,场景法,判定表,因果图,错误推断法,正交测试法。等价类划分等价......
  • 测试用例对测试实施的作用
    软件测试应该是有计划有组织的活动,软件是一种逻辑产品,对其开展测试可能是存在“组合爆炸”的,因此不能随心所欲地进行。必须为测试确定目标,制订计划,并开展设计,为了尽可能高效地实施测试,获得理想的测试效费比,测试设计必须包括对全部测试用例(TestCase)的设计。国家标准GB/T25000.51......
  • 软件测试|详解 Pytest 参数化:简化测试用例的编写
    简介Pytest是一个广泛使用的Python测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍Pytest的参数化功能以及如何使用它来简化测试用例的编写。参......
  • 获取excel用例数据
     #获取excel用例数据defget_case_data():case_path=os.path.join(os.path.dirname(__file__),r'files\apiCase.xls')book=xlrd.open_workbook(case_path)sheet=book.sheet_by_name('sheet1名字')#excel标签名case=[]fori......
  • IntelliJ IDEA教程()ideaIU-快速创建测试用例
    一.创建工程  完整的包结构src/main是源码存放包 src/test是测试类存放包1.工程结构图2.快速生成测试类......
  • CtsKeystoreTestCases 测试--和keybox相关的几条用例
    AttestationPerformanceTest测试方式:adbshellaminstrument-r-eclassandroid.keystore.cts.AttestationPerformanceTest-wandroid.keystore.cts/androidx.test.runner.AndroidJUnitRunner需要预置keymasterkey,同时设备需处于locked状态。两个fail项:Therewere2fai......
  • 火山引擎DataLeap的数据血缘用例与设计概述
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群数据血缘描述了数据的来源和去向,以及数据在多个处理过程中的转换。数据血缘是组织内使数据发挥价值的重要基础能力。本文从字节的数据链路概况开始,介绍了数据血缘在字节的应用场景,总体设计,数据模......