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

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
这个要注意

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

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

相关文章

ceph如何增删改查的管理文件

1.创建 Ceph 存储库文件 sudo tee /etc/yum.repos.d/ceph.repo <<EOF [ceph] nameCeph packages for $basearch baseurlhttps://download.ceph.com/rpm-pacific/el8/\$basearch/ enabled1 gpgcheck1 typerpm-md gpgkeyhttps://download.ceph.com/keys/release.asc[ceph-…

【python】Python如何调用外部命令,subprocess模块的详细解读以及应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

MySQL InnoDB中一个update语句从执行到提交的全过程(3)

接上文MySQL InnoDB中一个update语句从执行到提交的全过程&#xff08;2&#xff09;-CSDN博客 目录 六、本地提交 怎样保证binlog和redo log的状态一致呢&#xff1f; MySQL 中的内部 XA 机制 宕机时不同状态的处理 物理落盘策略 七、主备复制 八、返回提交成功 总结一…

目标检测之数据增强

一、概述 数据增强是一种通过人工或自动方式对数据进行修改或变换&#xff0c;以增加数据集规模和多样性的技术。在机器学习中&#xff0c;数据增强被广泛应用于解决数据稀缺、数据不平衡、数据噪声等问题&#xff0c;提高模型的泛化能力和鲁棒性。 二、为什么需要数据增强 …

吃透前端文件上传与文件相关操作 多文件上传 大文件切片上传 拖拽上传 后续还会更新 断点续传等等

最近在学文件上传的操作,所以想把学习到东西写成一文章 这片文章是我以小白视角 慢慢学习并熟悉前端文件相关操作的流程总结出来的 前端文件上传 我首先想到是 <input type"file">**选择文件**</input>如果我们想限制上传文件的格式,大小或进行裁剪分片…

【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存

一、功能介绍 这段代码的功能是从一个视频文件中抽取指定数量的帧&#xff0c;并将这些帧保存为图像文件。步骤如下&#xff1a; 设置路径和参数&#xff1a; video_path&#xff1a;视频文件的路径。image_folder&#xff1a;保存抽取图像的目录。num_frames_to_extract&#…

达梦数据库系列—49.审计功能

目录 1、打开审计 2、审计级别 系统级审计 语句级审计 对象级审计 3、审计文件管理 删除审计文件 查看审计信息 4、审计分析 审计分析工具Analyzer 审计分析工具dmaudtool 1、打开审计 0&#xff1a;关闭审计1&#xff1a;打开普通审计2&#xff1a;打开普通审计和…

Linux 进程间通信之管道

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a; Linux 目录 一、通信 1、进程为什么要通信&#xff1f; 1.数据的类型 2.父进程和子进程算通信吗&#xff1f; 2、进程如何通信&#xff1f; 3、进程通信的常见方式&#xff1f; 二、管道 1、概念…

Java家教一对一系统小程序源码

&#x1f31f;【家教新风尚&#xff0c;一对一系统引领学习革命】&#x1f31f; &#x1f4da; 个性化定制&#xff0c;学习更高效 你还在为孩子的学习成绩提升缓慢而烦恼吗&#xff1f;家教一对一系统&#xff0c;正是解决这一难题的钥匙&#xff01;它根据孩子的年龄、兴趣…

动手学深度学习(pytorch)学习记录12-激活函数[学习记录]

激活函数 激活函数&#xff08;activation function&#xff09;通过计算加权和并加上偏置来确定神经元是否应该被激活&#xff0c; 它们将输入信号转换为输出的可微运算。 import torch import matplotlib.pyplot as plt 简单定义一个画图的函数 def graph_drawing(x_,y_…

static、extern,const关键字

1、static关键字 static关键字&#xff1a;延长生命周期&#xff0c;限制作用域 static修饰局部变量&#xff1a;静态局部变量 static修饰全局变量&#xff1a;静态全局变量 static修饰函数&#xff1a;静态函数 2、extern关键字 extern&#xff1a;引用其他文件 .c 中的全局…

私域场景中的数字化营销秘诀

​在当今的商业世界&#xff0c;私域场景的营销变得愈发重要。今天咱们就来深入探讨一下私域场景中的几个关键营销手段。 一、会员管理与营销 企业一旦拥有完善的会员体系&#xff0c;数字化手段就能大放异彩。它可以助力企业对会员进行精细划分&#xff0c;深度了解会员的消费…

STM32 GPIO 模块

B站视频地址&#xff1a;芯片内部GPIO模块细节 引脚 将 STM32 芯片&#xff0c;类比为【大脑】 而旁边的引脚&#xff0c;类比为【神经】 通过引脚&#xff0c;使得&#xff0c;STM32&#xff0c;可以和外部世界&#xff0c;进行交流 比如&#xff0c;当我们和别人说话时&am…

【安全工具推荐-Search_Viewer资产测绘】

目录 一、工具介绍 二、工具配置 三、传送门 一、工具介绍 Search_Viewer&#xff0c;集Fofa、Hunter鹰图、Shodan、360 quake、Zoomeye 钟馗之眼、censys 为一体的空间测绘gui图形界面化工具&#xff0c;支持一键采集爬取和导出fofa、shodan等数据&#xff0c;方便快捷查看…

基于808协议和1078协议的视频监控系统

卫星定位云服务平台 卫星定位云服务平台是一个车载视频终端监控系统,用于对卫星定位设备进行实时监控、实时定位、轨迹回放、指令下发、拍照记录、报警信息、实时视频、历史视频等功能。808协议和1078协议 内置功能 车队管理&#xff1a;车队信息的增删改查。型号管理&#…

快速MD5强碰撞生成器:fastcoll

问&#xff1a;可以制作两个具有相同哈希值的不同文件吗&#xff1f; 答&#xff1a;可以。 在密码学中&#xff0c;哈希函数将输入数据转换成固定长度的字符串。但由于输入的无限性和输出的固定性&#xff0c;不可避免地会有不同输入产生相同的哈希值&#xff0c;这就是碰撞。…

力扣面试经典算法150题:找出字符串中第一个匹配项的下标

找出字符串中第一个匹配项的下标 今天的题目是力扣面试经典150题中的数组的简单题: 找出字符串中第一个匹配项的下标 题目链接&#xff1a;https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/?envTypestudy-plan-v2&envIdto…

短视频SDK解决方案,降低行业开发门槛

美摄科技匠心打造了一款集前沿技术与极致体验于一体的短视频SDK解决方案&#xff0c;它不仅重新定义了短视频创作的边界&#xff0c;更以行业标杆级的短视频特效&#xff0c;让每一帧画面都闪耀不凡光芒。 【技术赋能&#xff0c;创意无限】 美摄科技的短视频SDK&#xff0c;…

基于DVWA-Brute Force(LowMedium)的渗透测试

Brute force主要是通过爆破达到渗透目的&#xff1a; Low 查看源代码&#xff1a; <?phpif( isset( $_GET[ Login ] ) ) {// Get username$user $_GET[ username ];// Get password$pass $_GET[ password ];$pass md5( $pass );// Check the database$query "SE…

遗传算法与深度学习实战(4)——遗传算法详解与实现

遗传算法与深度学习实战&#xff08;4&#xff09;——遗传算法详解与实现 0. 前言1. 遗传算法简介1.1 遗传学和减数分裂1.2 类比达尔文进化论 2. 遗传算法的基本流程2.1 创建初始种群2.2 计算适应度2.3 选择、交叉和变异2.4算法终止条件 3. 使用 Python 实现遗传算法3.1 构建种…