和ChatGPT聊UML/SysML活动图模型生成测试用例

1 背景

前文讨论了UML活动图分析及用例生成实例。能够利用UML/SysML活动图模型生成测试用例,对软件或系统进行验证,自然是极好的。那是不是有了活动图模型,就可以生成用例呢?从我们看来,还有些问题需要澄清。

新时代新做法,有问题先ChatGPT一下。

这个回答中,包含了我们认为重要的两个问题,即:

(1)明确性:UML活动图是否遵循了UML规范所规定的语法、语义?

(2)可测试性:UML活动图是否包含了能够生成测试用例的必要信息?

2 明确性:是否设计了合规的活动图?

UML规范规定了活动图的表示法(notation)和语义(semantics)等。但是实际的UML活动图模型经常不符合UML规范。这导致对UML活动图进行程序分析时,或者发生错误,或者提取的语义与模型设计者预想的不一致,从而后续的用例生成也是无效的。

之所以出现这种情况,认为至少有如下两方面的原因。

第一个原因是对UML规范理解不足,用visio之类工具画流程图的方式,来使用UML活动图

下图给出了一个不规范实例。

上图包括两方面的问题:

(1)Action1节点有两个入边。建模人员意图表示活动PreA及PreB都执行完后,Action1执行;但是,在UML语义下,只要PreA及PreB任意一个活动执行完,则Action1开始执行。

(2) Action1节点有两个出边。建模人员意图表示Action1执行完毕后,PostA及PostB都开始执行;但是,在UML语义下,PostA、PostB仅有一个能够执行,且不确定哪个得到执行。

对该实例,在Action1节点前应加入join节点,在其后应加入fork节点。

还有一种常见的对decision节点的误用,如下图:

虽然人可以理解上图,但不符合UML规范。更恰当的表示应如下图:

UML活动图不规范的第二个原因,是UML活动图主要作为一种设计、分析手段,一般来讲UML活动图是不能执行的。这导致一方面工具对UML活动图的语法检查不严格;另一方面由于不能执行,UML活动图表达的语义得不到反馈确认。

在基于UML活动图生成测试用例的过程中,需要对活动图进行语法检查及语义转换。这能够促进UML活动图的规范性。

3 可测试性:是否包含了足够的信息?

从UML活动图生成的用例,是一种“面向功能”的测试用例,需要至少包括测试输入、期望输出。这意味着(或者要求)从UML活动图模型中能够提取输入、输出,对各个分支约束条件能够进行计算。更具体的要求还包括:对UML活动图中使用的变量,应定义其数据类型、取值范围、默认值;guard表达式应符合规定的语法等。例如,对下图的例子,应指定cmd变量的类型(整型或枚举)、取值范围,则可以获得覆盖决策节点每个分支的可执行用例(即包含了变量cmd的具体值)。

然而,实际的UML活动图模型往往达不到这样的精细程度。这是否意味着用例生成不能发挥作用了?

用例生成仍然可以发挥作用,只是目标改变了。此时,可以生成测试场景(test scenario)。例如,对于一个描述系统功能的UML活动图,可以提取出全功能模式、降级模式、故障模式等场景。

测试场景的提取是结构化的,类似用例生成,同样可以定义覆盖目标,例如活动覆盖、迁移覆盖、路径覆盖等。每个场景中,包含了活动序列、迁移约束条件(此时对约束条件只表示、不求解)。基于提取的测试场景,通过人工处理、补充信息,可以进一步生成具体可执行的测试用例。

下图给出了一个场景提取实例,也即活动图的一个路径(详见UML活动图分析及用例生成实例)。

4 总结

本文说明了基于UML活动图生成测试用例时,常见的两方面问题,即模型的规范性和可测试性。

基本的和首要的,设计UML活动图模型应符合UML规范的语法、语义。

另一方面,我们的出发点是最大程度发挥已有UML活动图的价值。即使UML活动图模型存在设计不规范、信息不完全,也可以生成有价值的“测试场景”。

反过来,通过对UML活动图的程序化、形式化分析,可以发现对活动图的不恰当使用,促进活动图的规范性;这使设计的活动图更有效的支持开发、测试。这是一个迭代过程。

最后再ChatGPT一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/14657.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟chatGpt 聊聊发布的时候老节点的线程池会怎么样

一、引言 今天同事提了一个问题,每次系统发布的时候在老的节点服务里面的线程池会怎么样,队列里面的任务会被执行完毕吗? 博主一直认为优雅退出一定是会等执行完才退出的,结果跟chatGpt聊了聊,一波三折。 二、分析 1…

SAP行业未来的发展如何,和chatGPT聊聊SAP行业的发展前景

序言 Chat GPT 是 OpenAI 发布的最新语言模型,比其前身 GPT-3 有显著提升。与许多大型语言模型类似,ChatGPT 能以不同样式、不同目的生成文本,并且在准确度、叙述细节和上下文连贯性上具有更优的表现。它代表了 OpenAI 最新一代的大型语言模…

chatgpt赋能python:Python怎么联网

Python怎么联网 介绍 Python是一种高级的编程语言,它能够很容易地实现联网操作。Python的标准库中包含了许多模块,这些模块可以用来创建网络连接、发送和接收数据以及处理网络协议等。在本篇文章中,我们将介绍如何使用Python进行网络操作&a…

ChatGPT推出“联网模式”!可直接读取网页内容,网友:更好用了

金磊 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT又出big news了! 官方推出了一种新模式——Default(GPT-3.5)with browsing。 而这个“联网模式”最大的亮点,就是可以随时引用网络数据。 也就是说,此前ChatGPT“截止2…

王炸功能ChatGPT 联网插件功能放开,视频文章一键变思维导图

就在上周5月13日,Open AI 发文称:“我们将在下周向所有ChatGPT Plus 用户开放联网功能和众多插件”。 这意味着什么? 首先联网功能将使得ChatGPT不再局限于回答2021年9月之前的信息,能直接联网查询最新消息。 而插件功能就可以在…

70多个新插件!ChatGPT可以联网啦!

Datawhale干货 体验:ChatGPT联网,编辑:机器之心 说不上无所不能,但也可以说是上天入地。 自 ChatGPT 推出以来,大语言模型充斥着新闻版面。很多公司都在试图追赶 OpenAI,但作为先行者,ChatGPT …

ChatGPT联网后几大功能

这周ChatGPT plus 已经可以联网了,联网后对我们的用处更大了,这里总结了几点ChatGPT联网 后的几个功能: 1.对给定的网页进行读取,并根据解读后来回答问题 给ChatGPT一个网址,让他总结一下这个网址,不到一…

Dify 基于 ChatGPT 构建本地知识库问答应用

一、Dify 自从 ChatGPT 横空出世之后,其极高的语言理解和交互能力不仅让人惊呼,ChatGPT不仅能够处理事实性问题,还能理解和生成情感色彩更浓厚的对话内容,能够识别用户的情感倾向,并据此作出相应的回应。这么好的东西…

当四款AI大模型遇上考公真题,谁被难倒了?

在当今社会,人工智能(AI)正以不可思议的速度发展,并在各个领域崭露头角,给人们的生活和工作带来许多便利。AI大模型被誉为人类“第二大脑”,成为人们学习、生活、工作的 “智能助手”。 公务员考试在我国教…

最短路径算法刷题笔记

Dijkstra最短路算法 理论 代码来自chatgpt&#xff0c;我感觉代码很好&#xff0c;比我在网上找到的好理解很多 #include <iostream> #include <cstring> using namespace std; const int N 110; const int INF 0x3f3f3f3f; int n, m; int g[N][N]; // 邻接矩阵…

动态规划算法刷题笔记【线性dp】

递推 斐波那契(Fibonacii)数列的递推公式&#xff1a;F(n) F(n -1) F(n - 2) 错排问题&#xff1a;F(n) (n-1) * [F(n-1)F(n-2)] 解释 例题 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 10 级的台阶总共有多少种跳法 思路 要想跳到…

基础数论算法刷题笔记

理论 最小公倍数、最大公约数 (ab)%n (a%nb%n)%n (ab)%n (a%nb%n)%n a≡2(mod n) —— a%n2 lcm——最小公倍数 gcd——最大公约数 lcm(a,b) a*b / gcd(a,b) 最小公倍数两数的乘积除以最大公约数 但是写程序时应该是 a /gcd(a,b) *b 因为a*b可能会超出数据范围 例子&…

LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131384199 论文&#xff1a;DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs DrugChat&#xff0c;基…

两句话就搞死chatgpt

事情是这样的&#xff0c;我在看一本书--思维风暴&#xff0c;看到一篇发散思维的内容&#xff0c;就想考考chatgpt,结果第一句话发过去&#xff0c;chatGPT就直接报错&#xff0c;刷新了下页面&#xff0c;接着继续问&#xff0c;等了不多见&#xff0c;chatgpt慢慢吐字&#…

人人都是ChatGPT prompt 工程师

关于 Prompt ​ 解释这个词之前&#xff0c;首先需要解释 prompt 这个词&#xff1a; 简单的理解它是给 AI 模型的指令。 它可以是一个问题、一段文字描述&#xff0c;甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息&#xff0c;生成对应的文本&…

ChatGPT总结的“商汤日日新大模型”,亮点在文末!!!

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G “我们正处于临界点。”在商汤科技董事长兼首席执行官徐立说出这句话后一个月&#xff0c;商汤科技…

装X型学习动机体系:我对成就目标定向理论(装逼)的研究,怎么让自己充满动力,这个我期待太久了

装X型学习动机体系&#xff1a;我对成就目标定向理论&#xff08;装逼&#xff09;的研究&#xff0c;怎么让自己充满动力&#xff0c;这个我期待太久了 本质篇&#xff1a;生命的本质是&#xff0c;渴望被看见动力篇&#xff1a;积极响应挑战&#xff0c;自恋克服惰性费曼学习…

40岁,刚被裁,想说点啥。

因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号&#xff0c;领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇&#xff1a;ChatGPT研究框架&#xff08;80页PPT&#xff0c;附下载&#xff09;…

Go是一门面向对象编程语言吗

Go语言已经开源13年了[1]&#xff0c;在近期TIOBE[2]发布的2023年3月份的编程语言排行榜中&#xff0c;Go再次冲入前十&#xff0c;相较于Go在2022年底的排名[3]提升了2个位次&#xff1a; 《Go语言第一课》专栏[4]中关于Go在这两年开始飞起的“预言”也正在逐步成为现实^_^&am…

如何写出高质量的文章:从战略到战术

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…