当前位置: 首页 > news >正文

[图解]用例规约之扩展路径

1
00:00:01,710 --> 00:00:03,670
基本路径写完之后

2
00:00:04,690 --> 00:00:07,270
接下来就是扩展路径

3
00:00:08,620 --> 00:00:14,000
扩展路径就是系统要处理的意外和分支

4
00:00:14,010 --> 00:00:19,710
系统要处理的

5
00:00:20,970 --> 00:00:22,370
不处理的不算的

6
00:00:23,100 --> 00:00:28,700
也就是说,扩展路径也是系统的需求之一

7
00:00:29,860 --> 00:00:31,980
它是系统不得不这样做的

8
00:00:35,890 --> 00:00:37,500
那么扩展路径

9
00:00:38,860 --> 00:00:43,060
经常在什么地方出现,这么几个地方

1
00:00:02,200 --> 00:00:04,160
第一个是执行者的选择

2
00:00:05,680 --> 00:00:07,310
当执行者作出判断

3
00:00:07,320 --> 00:00:09,190
说有几条路要走

4
00:00:09,560 --> 00:00:11,440
那么这个判断由他来做的时候

5
00:00:12,450 --> 00:00:16,560
那么这个时候他到底选哪条路

6
00:00:17,280 --> 00:00:18,680
系统是没法判断的

7
00:00:19,340 --> 00:00:21,490
完全由执行者主动来选择

8
00:00:22,820 --> 00:00:23,700
这是第一种

9
00:00:25,440 --> 00:00:26,490
但这种要慎用

10
00:00:28,690 --> 00:00:30,080
因为很容易变成什么

11
00:00:31,090 --> 00:00:32,730
所有的可选项都是扩展了

12
00:00:32,940 --> 00:00:34,960
我们后面书上有讲

13
00:00:34,970 --> 00:00:36,760
后面幻灯片也会提到

14
00:00:37,070 --> 00:00:38,910
不过一会时间不够的话

15
00:00:38,920 --> 00:00:40,630
可能未必有时间讲

16
00:00:42,880 --> 00:00:43,990
大家可以自己看书

17
00:00:45,310 --> 00:00:49,880
很容易犯 把选项当成扩展点 的这种情况

18
00:00:51,890 --> 00:00:55,650
第二个,系统验证,这个一般都会有了

19
00:00:56,180 --> 00:00:59,240
因为你验证的目的是干嘛

20
00:00:59,250 --> 00:01:01,070
你验证肯定有结果

21
00:01:01,080 --> 00:01:03,190
结果必然有成功有失败

22
00:01:04,700 --> 00:01:05,820
那失败了怎么办呢

23
00:01:07,770 --> 00:01:10,010
你肯定得做一些不一样的事情

24
00:01:10,140 --> 00:01:10,570


25
00:01:10,970 --> 00:01:13,680
如果失败跟成功是一样的

26
00:01:15,640 --> 00:01:19,360
你验证它干什么,白搞嘛

27
00:01:21,170 --> 00:01:23,640
这是第二种

28
00:01:24,590 --> 00:01:28,420
第三种,就是步骤的失败

29
00:01:31,360 --> 00:01:32,970
而且是系统要处理的

30
00:01:35,990 --> 00:01:37,860
那么这里面我们要注意了

31
00:01:39,390 --> 00:01:41,620
系统能感知而且要处理的

32
00:01:44,380 --> 00:01:47,580
什么叫要处理的失败,就是系统能处理

33
00:01:48,690 --> 00:01:51,260
而且乐意处理的

34
00:01:52,370 --> 00:01:53,560
感兴趣去处理的

35
00:01:54,710 --> 00:01:58,750
比如说,我们做一个电子商务系统

36
00:02:00,770 --> 00:02:04,010
然后,正在下单过程中

37
00:02:07,600 --> 00:02:09,440
系统要保存订单

38
00:02:09,450 --> 00:02:11,240
有一句,系统保存订单

39
00:02:14,540 --> 00:02:15,810
保存订单失败

40
00:02:17,010 --> 00:02:18,010
算不算扩展

41
00:02:20,670 --> 00:02:21,880
保存订单会失败吗

42
00:02:23,070 --> 00:02:23,550
会的

43
00:02:25,090 --> 00:02:25,650
怎么失败

44
00:02:27,420 --> 00:02:28,680
数据库坏了

45
00:02:29,340 --> 00:02:31,330
网络断了,等等

46
00:02:31,620 --> 00:02:32,650
代码写错了

47
00:02:34,540 --> 00:02:35,780
但是这个算不算扩展

48
00:02:36,270 --> 00:02:37,320
不算,为什么

49
00:02:39,150 --> 00:02:41,150
因为这个跟需求没有关系

50
00:02:45,320 --> 00:02:48,270
我们在讲愿景的时候

51
00:02:48,280 --> 00:02:51,980
我们说过,我们做需求的时候

52
00:02:53,340 --> 00:02:54,890
要把我们的系统看作是什么

53
00:02:56,700 --> 00:02:58,020
由外星人来做的

54
00:02:59,760 --> 00:03:02,020
外星人的网络会不会出问题

55
00:03:02,810 --> 00:03:06,380
外星人的硬盘会不会出问题

56
00:03:07,070 --> 00:03:08,510
外星人的代码会不会写错

57
00:03:09,390 --> 00:03:10,050
不会的

58
00:03:13,380 --> 00:03:18,590
所以这种由于程序员的能力不足

59
00:03:19,410 --> 00:03:20,600
带来的这种错误

60
00:03:21,620 --> 00:03:22,660
它不是扩展

61
00:03:24,260 --> 00:03:25,040
扩展是什么

62
00:03:25,590 --> 00:03:29,700
即使这个系统的代码是外星人写的

63
00:03:31,390 --> 00:03:33,540
而且这个系统是外星人部署的

64
00:03:36,270 --> 00:03:39,160
依然逃脱不了这种意外

65
00:03:42,010 --> 00:03:44,460
就拿我们前面讲取款机这个来说

66
00:03:46,480 --> 00:03:48,240
取款机,你插卡输密码

67
00:03:49,380 --> 00:03:50,130
密码不对

68
00:03:51,540 --> 00:03:53,190
那就要拒绝

69
00:03:54,440 --> 00:03:55,660
这可以看做一个扩展

70
00:03:58,050 --> 00:04:01,090
假设取款机的代码是外星人写的

71
00:04:01,880 --> 00:04:04,590
按照我们需求规约去写代码

72
00:04:07,580 --> 00:04:09,390
那么这个意外能避免吗

73
00:04:09,630 --> 00:04:10,010
不能

74
00:04:12,100 --> 00:04:12,510


75
00:04:12,970 --> 00:04:14,260
因为你根本不知道

76
00:04:14,270 --> 00:04:18,080
我外面那个储户要输什么密码

77
00:04:20,410 --> 00:04:23,100
外星人写的只是取款机的代码

78
00:04:23,110 --> 00:04:25,460
他并没有写储户的代码

79
00:04:28,620 --> 00:04:30,090
他管不着外面的储户

80
00:04:31,740 --> 00:04:35,130
这属于他控制的边界范围之外

81
00:04:36,410 --> 00:04:37,830
那么这个就是扩展

82
00:04:40,010 --> 00:04:41,110
因为这属于什么

83
00:04:43,080 --> 00:04:44,640
就算你代码一点错都没有

84
00:04:44,650 --> 00:04:46,240
什么网络什么都通畅的

85
00:04:46,610 --> 00:04:49,380
这样的意外依然不能避免

86
00:04:49,860 --> 00:04:52,720
而且这个意外,系统要处理的

87
00:04:54,110 --> 00:04:54,990
其他都不是的

88
00:04:57,070 --> 00:04:59,130
刚才我们说那种什么网络断了

89
00:05:00,110 --> 00:05:02,150
数据库设计出问题了

90
00:05:03,280 --> 00:05:04,940
程序员编码编错了

91
00:05:06,560 --> 00:05:07,670
像这种问题怎么样

92
00:05:08,670 --> 00:05:13,230
它跟特定的系统,跟特定领域是没有关系的

93
00:05:15,020 --> 00:05:17,570
所有的系统,所有的用例

94
00:05:18,040 --> 00:05:20,080
只要你这个程序员能力有问题

95
00:05:20,090 --> 00:05:21,480
都会出这种问题

96
00:05:21,490 --> 00:05:22,500


97
00:05:27,940 --> 00:05:29,250
步骤失败这个,要注意

98
00:05:30,030 --> 00:05:32,070
必须是需求的这种失败

99
00:05:32,080 --> 00:05:37,310
而不是说我们设计人员能力不足带来的

100
00:05:38,430 --> 00:05:41,100
但我们很多人喜欢把这种当成需求

101
00:05:41,110 --> 00:05:41,620
为什么

102
00:05:42,700 --> 00:05:44,560
这样的话,需求规约就丰满了

103
00:05:45,370 --> 00:05:46,450
他每个用例都写

104
00:05:46,460 --> 00:05:47,770
每一步都写失败

105
00:05:48,640 --> 00:05:49,390
保存,保存失败

106
00:05:50,310 --> 00:05:53,070
显示什么,也显示失败,为什么

107
00:05:54,060 --> 00:05:54,980
为什么会显示失败

108
00:05:56,560 --> 00:05:58,450
网页切错了

109
00:05:58,460 --> 00:06:00,760
我前端程序员能力不足

110
00:06:01,800 --> 00:06:02,750
网页写错了

111
00:06:03,830 --> 00:06:05,790
但是这跟需求没关系的

112
00:06:06,820 --> 00:06:07,720
这个要注意

相关文章:

[图解]用例规约之扩展路径

1 00:00:01,710 --> 00:00:03,670 基本路径写完之后 2 00:00:04,690 --> 00:00:07,270 接下来就是扩展路径 3 00:00:08,620 --> 00:00:14,000 扩展路径就是系统要处理的意外和分支 4 00:00:14,010 --> 00:00:19,710 系统要处理的 5 00:00:20,970 --> 00:00:…...

学习记录第二十八天

有名管道(FIFO) 在Linux系统中,有名管道是一种特殊类型的文件,它允许不相关的进程之间进行通信。有名管道在文件系统中有一个具体的路径和名称,因此它们可以被多个进程共同访问。有名管道的特点包括持久性、多进程访问…...

SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结

目录 1、SpringBoot的事务管理 2、SpringBoot的异步任务 3、SpringBoot定时任务调度 4、SpringBoot整合Mail发送邮件 5、Spring框架中的Bean的作用域 6、Spring框架中的Bean的线程安全 7、 Spring框架中的Bean生命周期 8、Spring框架如何解决循环依赖? 9、…...

透明加密技术

透明加密技术,也被称为透明数据加密(Transparent Data Encryption, TDE),是一种加密方法,它允许数据在存储时自动加密和解密,而不需要用户进行任何手动操作。透明加密技术主要应用于数据库、文件系统和磁盘…...

深入理解Faiss:高效向量检索的利器

近年来,随着人工智能和机器学习技术的飞速发展,向量检索技术变得越来越重要。无论是在推荐系统、图像搜索还是自然语言处理等领域,向量检索都扮演着至关重要的角色。而在众多向量检索库中,Faiss(Facebook AI Similarit…...

RK3576 芯片介绍

RK3576 芯片介绍 RK3576瑞芯微第二代8nm高性能AIOT平台,它集成了独立的6TOPS(Tera Operations Per Second,每秒万亿次操作)NPU(神经网络处理单元),用于处理人工智能相关的任务。此外&#xff0…...

Python模块篇(五)

模块 模块与包模块的导入与使用标准库的常用模块第三方库的安装与使用(如:pip工具) 模块与包 模块是一个包含 Python 代码的文件,通常以 .py 作为扩展名。一个模块可以包含函数、类、变量,以及可执行的代码段。模块的…...

西安旅游系统--论文pf

TOC springboot383西安旅游系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿…...

分享一个思路,使用插桩技术解决慢查询测试问题

前段时间,我负责测试的系统在生产环境运行出现问题。该系统对于响应时间要求较高,问题发生的时候并发很高,出现大量请求超时,超时请求比例随时间推迟越来越高,最后几乎全部请求都失败。滚动重启了所有进程后&#xff0…...

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

个人主页~ 实战项目的实现过程(一)~ 实战项目的实现过程 二、初步了解各个外设硬件1、OLED模块2、GPS模块3、MPU6050模块4、超声测距模块5、温度测控模块6、语音模块7、SIM模块8、按键模块 三、查阅资料1、查看手册2、查找例程 四、研究硬件功能1、OLED…...

javaer快速入门 goweb框架 gin

gin 入门 前置条件 安装环境 配置代理 # 配置 GOPROXY 环境变量,以下三选一# 1. 七牛 CDN go env -w GOPROXYhttps://goproxy.cn,direct# 2. 阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct# 3. 官方 go env -w GOPROXYhttps://goproxy.…...

SQL - 数据类型

字符串类型 char(10),存储固定长度字符串 varchar(255),存储可变长度字符串 mediumtext,中文本,对于存储JSON对象、SCV字符串很好使 longtext,长文本,可以很好地存储教本或许多年地日志文件 tinytext&#…...

进程相关知识

进程和程序的区别 程序 程序是静态的,是存储在硬盘、SSD等存储介质中的一个文件,通常由源代码(如 .c 文件)编译生成的二进制可执行文件(如 a.out)。程序包含了指令和数据,但在未被执行时&#…...

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…...

通信原理学习笔记

一个手机通话需要经过下面三个网络 类别接入网(Access Network)承载网(Transport Network)核心网(Core Network)定义连接终端用户与电信网络的部分。在接入网和核心网之间传输数据的网络。处理、交换和管理…...

系统编程---day4

1. 链接文件 命令行: ln -s 文件名 softlink 1.1 symlink int symlink(const char *oldpath, const char *newpath); 功能:创建一个链接向oldpath文件的新符号链接文件 参数:oldpath:被链接向的文件的路径 newpath:新符号链接文件 返回值:成功返回0,失败返回…...

01:电容的什么,各类电容的优缺点

1.电容是什么? 电容是由两块不连通的导体,已经中间的不导电材料组成 电容结构: 1.2电容的容量计算公式 C ε s d \displaystyle\frac{εs}{d} dεs​ 1.3常见电容的种类 1.4各类电容的特点...

Android+Jacoco+code-diff全量、增量覆盖率生成实战

背景 主要是记录下Android项目使用jacoco生成代码覆盖率的实战流程,目前已完成全量覆盖方案,仅使用jacoco就能实现; 由于我们的Android端是使用Java和kotlin语言,目前增量的方案code-diff仅针对Java代码,卡在kotlin文件的分析&am…...

乌龟对对碰在线版

爆肝两天使用vue开发了一个在线版的乌龟对对碰小游戏之幸运对对碰。没有找到合适的乌龟素材,现在使用小兔子代替。 体验地址:幸运对对碰 | 乌龟对对碰小游戏 之前的python版本的乌龟对对碰:写文章-CSDN博客 乌龟对对碰-幸运对对碰...

如何更改select option边框颜色和选中的颜色

<!doctype html> <html> <head> <meta charset"utf-8"> <title>如何更改select option边框颜色和选中的颜色</title> </head><style>ul{border: 1px solid #000000;width: 500px;height: auto;background-color: aq…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...