在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动 图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。 其实简单的理解,也是个人的理解,UML的作用就是用很多图从静态和动态方面来 全面描述我们将要开发的系统。 二.用例建模简介 用例建模是UML建模的一部分,它也是UML里最基础的部分。 用例建模的最主要功能就是用来表达系统的功能性需求或行为。依我的理解用例建模可分为 用例图和用例描述。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。 用例描述用来详细描述用例图中每个用例,用文本文档来完成。 1. 用例图 参与者不是特指人,是指系统以外的,在使用系 统或与系统交互中所扮演的角色。
什么是用例图? 用例提供了系统的高级视图。用例建模是与用户和其他利益相关者就系统和目标进行沟通的有效方式。用例描述了系统执行的动作序列,其为特定的actor产生可观察的值结果。 用例图指南 确保每个用例都能满足可观察的用户目标 用例图未显示用例的详细信息:它仅总结了用例,参与者和系统之间的一些关系。 用例图未显示为实现每个用例的目标而执行步骤的顺序。 你如何写一个用例? 用例包含以下元素: 名称 - 用于传达用例范围的明确动词/名词或演员/动词/名词描述符。 简要说明 - 描述用例范围的简短文本段落。 发布条件 - 用例完成时必须为true的任何内容。 包含和扩展用例 用例图示例描述: 此用例图示例描述了几个业务用例的模型。 用例模型表示餐馆(业务系统)与其主要利益相关者(业务角色和业务角色)之间的交互。在确定了基本用例之后,您可以使用<extend>和<include>用例使它更清晰。 使用此用例图模板创建自己的图表。
UML 用例图 参考 【UML】— 用例图 用例图 初学UML——用例图 需求中如何画用例图 为什么使用用例图 从业务事件、发起事件以及系统如何响应这些事件来建模系统功能的过程。 用例与用例图被广泛使用于系统的需求建模阶段,并在系统的整个生命周期中被不断细化。 确定用例 用例的特征保证用例能够正确地捕捉功能性需求,同时也是判断用例是否准确的依据。 用例是动宾短语 用例是相对独立的 用例是由参与者启动的 用例要有可观测的执行结果 一个用例是一个单元 用例与参与者 一个用例可以隶属一个或多个参与者,一个参与者也可以参与一个或多个用例。 包含的两个基本约束: 基用例可以看到包含用例,并需要依赖于包含用例的执行结果,但是它对包含用例的内部结构没有了解; 基用例一定会要求包含用例执行。 使用扩展用例我们就可以在不改变基用例的同时,根据需要自由地向用例中添加行为。 用例图示例 依赖关系对比 用例描述 一个完整的用例模型应该不仅仅包括用例图部分,还要有完整的用例描述部分。
用例图从用户的角度描述对软件产品的需求,并分析产品所需要的功能和动态行为。 用例图的组成元素: 1、参与者:代表系统的用户(可以是人、物、时间或者其他系统),用小人表示。 2、系统边界:用矩形表示。 3、用例:用椭圆表示。 4、关联:包含(include)、扩展(extend)、泛化(generalization) 包含:表示一个用例的行为包含了另一个用例的行为(基本用例的步骤中一定含有被包含用例的步骤),如“ 扩展:表示对基本用例的一个扩展。(基本用例的步骤中有时会用到扩展用例的步骤)。 扩展用例有一个扩展点,只有扩展点被激活的时候,子用例才会被执行,如“交罚款”是"还书"的一个扩展用例,扩展点是欠费,即只有欠费的情况下去还书才会交罚款,否则不需要。
用例分析方法定义 用例(Use Case)是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模。用例建模可分为用例图和用例描述两个部分。 用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成。用例描述用来详细描述用例图中每个用例,可用文档来完成。 我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、 描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。 用例描述 用例图只是简单地用图描述了一下系统,但对于每个用例,我们还需要有详细的说明,这样就可以让别人对这个系统有一个更加详细的了解,这时我们就需要写用例描述。 以下是用例说明表格一般格式: 用例名称: 用例标识号: 参与者: 简要说明: 前置条件: 基本事件流: 1. 2. 3.
对于用例图来说我们需要了解的是什么叫用例图,构成用例图的要素,用例图有哪些重要的元素,各个用例之间的关系。当然最重要的是如何根据需求创建用例图。 2.用例的粒度 用例的粒度指的是用例所包含的系统服务或功能单元的多少。用例的粒度越大,用例包含的功能越多,反之则包含的功能越少。 如果用例的粒度很小,得到的用例数就会太多。 扩展 在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension),原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。 一个基础用例可以拥有一个或者多个扩展用例,这些扩展用例可以一起使用。 3.泛化 用例的泛化指的是一个父用例可以被特化形成多个子用例,而父用例和子用例之间的关系就是泛化关系。 在用例的泛化关系中,子用例继承了父用例所有的结构、行为和关系,子用例是父用例的一种特殊形式。 子用例还可以添加、覆盖、改变继承的行为。
,可以为每条用例添加一个便于阅读的标题(可以使用中文标题)。 生成的报告展示用例时,就会以设置的标题名展示出来。 Allure2 报告中添加用例标题通过使用装饰器 @allure.title 可以为测试用例自定义一个可阅读性的标题。 Allure2 报告中添加用例步骤应用场景:编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。 Allure2 报告中添加用例步骤Allure 支持两种方法:方法一:使用装饰器定义一个测试步骤,在测试用例中使用。方法二:使用 with allure.step() 添加测试步骤。 Allure2 报告装饰器添加用例步骤方法一:使用装饰器定义一个测试步骤,在测试用例中使用。
还比如想到不同的功能点适用的用例设计方案也不同,可以针对不同功能点单独配置用例设计方案。 等等等等... 越改越多,越来越复杂,于是乎,自动化的AI用例生成平台就为此而诞生了,也就是本教程。 生成中:生成测试用例 3. 生成后:对用例进行整理和使用等 那么,现在本教程进入到了哪个阶段了呢?当然是第二阶段了。 于是本节将正式开始做这个用例生成模块: 正文: 先来看看现在的平台样子: 我们首先,可以先对这个用例生成页面进行设计开发: 首先,我们先要获取到有多少个生成任务? 看一下: 也就是有13个生成任务。 每一个生成任务,我的意思都是用一个子线程来做,用并发来跑。每一个子线程,都要带单独的原始需求+具体的用例设计方案+符合的需求功能点列表。 所以,我们这个用例生成页面,首先先应该给基本信息获取并展示出来,这样在漫长的生成过程中,使用者也可以有个数。 先来生成用例生成子页面吧: 新建:CaseMake.vue 内容如下:复制后需自行换行。
用例图中有三种关系: 泛化关系; 包含关系; 扩展关系; 泛化关系 子用例和父用例相似,类似于面向对象中的继承。 箭头由子用例指向父用例。 包含关系 由 基础用例 指向 包含用例 ,基础用例的执行必然会使用包含用例。 我们可以理解为包含用例封装了可以供很多个用例使用的功能。 箭头指向被包含的用例。 扩展关系 由 扩展用例 指向 基础用例 ,基础用例的执行可能会使用扩展用例。 在扩展关系中,基本用例是一个结构完整的用例,即可以独立存在。 箭头执行被扩展的用例。
在设计接口用例设计时,除实现功能外,应关注:幂等性、空校验、流程节点限制、异常校验。 ? 01 幂等性 何为幂等性? 幂等为一数学概念,指使用相同参数重复执行,能获取相同结果。 试想没有幂等性校验会怎样,还以创建支付单为例,当上游一个单子L准备创建支付单,第一次调用创建成功支付单P1,当触发再次调用时: 如果数据表已建立唯一索引,则会插入数据失败,接口抛出异常,上游可能更是一脸懵逼 当然,首先需明白业务逻辑,从而进行用例设计。尤其对于参数复杂的接口,当某一条调用规则下 某些非空参数就需要作为必传了。 03 流程节点限制 流程节点限制,即需严格遵守流程流转。
上节课我们做了简单的第一版的 用例生成功能。结果展示到了界面上。 本节课来处理下后续的工作之一:去重。 生成的用例的确很多。 我们看上节课的结果例子中其实是有重复的,这主要是我写的智能体假返回值,用了一个简单的随机数,以模仿可能出现的重复用例。 这里再插一嘴,在进行了不同用例生成方法为主的分类后,重复的概率很低,而且即便重复了,也可能是不同侧重的用例。 比如侧重边界值的和侧重判定表的某条重复了:拿登录功能举例 1. 而用例是否算重复,绝对不能简单的看字符串是否一致。必须要更加灵活的进行比对,比如切割成词组,余铉相似等理论。 无非就是: 把生成后的用例传送给后端 接收后端新的去重后的用例 把新用例展示 所以: step3: 写完整这个函数: 好,到此前端部分就结束了。 下节课我们搞定后端就实现了这个功能咯~
好久没画图在StarUML里都找不到useCase了,记下来不然又忘了 右击Untitled->Add Diagram->UseCase Diagram,然后左边就有UseCase了就可以画用例图了
用例图 用例描述了用户如何使用系统来实现特定的目标。用例图由系统、相关的用例图和参与者组成,并且将它们相互联系起来. 为每个目标创建用例。 构建用例。 在第一轮中确定了基本用例之后,也许我们可以在第二轮用<<extend>>和<<include>>进一步构建这些用例, 如下图所示: [用例图] 业务用例图 业务用例是用无技术术语描述的,它将业务流程视为一个黑匣子 下图显示了一个自动柜员机用例图示例,这是在讲授用例图时使用的一个非常经典的示例。 [用例图] 下面的文档管理系统(DMS)用例图示例显示了系统的参与者和用例。特别是,用例之间有包含和扩展的关系。 [用例图] 下面的订单系统用例图示例显示了系统中涉及的参与者和用例: [用例图]
用例图是在需求分析阶段开发者和用户对需求规格达成的某种共识,它描述了待开发系统的功能需求。 UML视频使我们对用例图的基本组成元素、属性、粒度等有了理论上的理解,我们还需要自己亲自动手画一画才能加深对用例图的理解。 画用例图,首先要分析开发系统中的角色、用例,然后通过关系把角色和用例联系起来。 角色:包括系统的使用者,维护人员,使用到的外设,所以角色不仅仅是人,还可以是事、物。 用例:指的是系统要实现的功能,是对系统功能的描述。 关系:包括依赖、泛化、关联三种关系,指明了用例和角色之间具体的关系。 第一次画用例图,角色和用例感觉还是比较容易就可以分析出来的,但是角色和用例之间具体是什么关系,就傻傻分不清楚了。
汇总模块负责对结果进行进一步的筛选审核去重等功能,并返回给前端,后续前端可对结果进行人工修改,导出,永久存储等功能) 所以打开CaseMake.vue,进行如下开发: 然后在Myapp下创建一个专门用来处理用例生成的文件模块 :views2.py 然后做一个对应开始生成的引导函数: 最后是urls.py: 然后刷新页面,测试一下,点击开始生成按钮后能否在不报错的情况下成功显示提示: 然后来看一下为了生成用例,我们要提取的额该项目的信息有 然后重新分解下: 结果如下: 然后点击【后保存】按钮后,再执行下最新的 用例生成按钮: 可以看到结果已经更正过来了: 但是这个结果很显然,并不是很工整,为了更好的给AI智能体使用,我们还需要进行一个简单小优化
注意,我们在排查重复的时候,是优先删除后面用例的哦~ 就比如说 等价类出现了用例1 ,判定表也出现了用例1, 算法会删除判定表中的用例1 ,保留等价类的用例1 这里会提示删除了什么在后台控制台中: 我们来做个测试 ,按照我写死的用例数量生成后,是固定的39条: 点击去重后:生下来33条: 控制台显示删除了这6条重复的: 前端界面也可以看到,有些设计方法去重后不足3条了: 这个算法暂时算是完成了。 jieba from sklearn.metrics.pairwise import cosine_similarity 然后下面新建这个函数和修改红圈部分:注意,此时设置分数大于0.8 这里因为写死的用例都太过相似 ,所以我们改一下之前写死的生成代码: 现在开始测试一下,先点击生成: 看下生成的用例:39条 然后点击去重按钮: 可以看到只去除了1条: 然后看看控制台日志: 可以发现,只有一条,因为只差了一个字不同, 但这里就有个问题,这个过程是不可逆的,一旦弄的太小了,剩的用例太少了,想再返回就不太可能了。毕竟删掉了就是删掉 了。 所以我们下一节的任务就是,做好前端动态调节系数的同时,做一个可逆转的操作。
目前设计的平台,在测试用例编辑或新增页面主要包含这几个部分:1、用例基础信息:用例名称、接口名称、所属模块、用例标签、优先级(会关联用例执行顺序)2、用例详细信息:请求方法、接口地址、环境地址、3、请求信息 :请求头设置、请求参数(Params、x-www-form-urlencoded、Json等),响应提取(jsonPath)用例断言、数据库校验4、响应信息用于展示响应相关信息:responseHeader icon="SuccessFilled" @click="save" v-if="testCase.id" > 保存用例 class="box-card" style="margin: 15px 0px; width: 100%"> <el-divider content-position="left">用例基础信息 "> <el-input placeholder="请输入<em>用</em><em>例</em>标签,多个<em>用</em>逗号分隔,如成功、登录"
568***825) 16:43:48 微软是这么说的哦 如/sun花(568***825) 16:43:56 MSDN的 lonelystar<bole***163.com> 16:52:30 扩展用例是在基本用例执行过程中达到某个特定条件触发的 ,相当于基本用例的备选流,为了维护模型方便而抽象出来的。 lonelystar<bole***163.com> 16:54:36 例如呼叫等待、呼叫转移是基本通话用例的扩展。 如果没有执行基本用例,是不可能执行到扩展用例的 如/sun花(568***825) 16:55:04 这么说,微软的表述欠妥? 潘加宇(3504847) 20:33:55 这几个图都不对的,可以认真阅读《软件方法》 潘加宇(3504847) 20:35:20 6.1.1 前置条件和后置条件 5.3 系统用例要点
在某一场景下可以用类图表示茶叶盒的一些属性信息,可对于茶叶盒这个没有输入、加工、输出的家伙会有表示他的用例吗?换言之,我认为茶叶盒不是一个系统(我考虑不出它作为系统的场景)怎么会有用例? 2、我回答老大的时候说用例是的系统功能的描述,茶叶盒没有任何操作,怎么能写用例,他说,我可以打开和关闭啊,我认为打开和关闭不是茶叶盒提供的服务(而是人手这个系统),说得牵强一点茶叶盒的服务只有盛放茶叶, 747****1)11:34:51 让我写出他随手拿起的茶叶盒的用例 ------------------ 茶叶盒的用例? 用例可以脱离系统吗? 向日葵(100***61)12:00:14 不是系统的用例,是业务的用例 neu-小五哥(16****16)12:02:03 为个茶叶盒何必呢,老板的意思可能只是消遣一下他而已。
用例 从用户的角度来看,它应该是简单的请求特定的资源(加速器/芯片访问)。对于用户所有的复杂性都应该被隐藏。 拟议变更 对于第一和第二点的用例,应该有自动的方式,在Nova资源管理器中发现和管理这些资源。另外应该有一个提供FPGA编程的库。 备选方案 1.用外部的服务来代替库,借此将算法编程进FPGA,再向nova提供FPGA资源。