Skip to content

Commit ff659de

Browse files
committed
docs: impl Black box testing
1 parent b817674 commit ff659de

File tree

5 files changed

+54
-0
lines changed

5 files changed

+54
-0
lines changed

src/notes/Software-Testing-and-Maintenance/Chapter2-Software-Testing-Technology.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,57 @@ copyright: 转载请注明出处
134134
![Decision table](images/Chapter2-Software-Testing-technology/image-4.png)
135135
5. 化简,合并相似规则
136136
![Reduced Decision table](images/Chapter2-Software-Testing-technology/image-5.png)
137+
138+
#### 随机测试(Random Testing)
139+
140+
- 测试数据是使用随机数生成器生成的。
141+
- 该分布可以是均匀的,或者被选择为在统计意义上模拟程序在实际使用中将接收的输入类型。
142+
- 如果规范写得清楚且详尽,那么应该可以找到可能的输入值的集合。
143+
- 目标是根据每个输入参数的分布实现其可能值的“合理”覆盖。 这可以通过启发式方式确定(例如,使用 10 个随机值),或者基于根据覆盖范围内所需的置信度确定的统计样本大小。
144+
- 每个测试用例都由一组(随机)输入值表示,每个输入值对应一个参数。
145+
- 然后,测量的测试故障率可以指示使用中的预期故障率
146+
147+
#### 错误估测(Error Guessing)
148+
149+
- 这是一种基于直觉和经验的临时方法(ad-hoc approach)。
150+
- 通过选择性地使用一些测试数据,例如`null ptr`、空字符串,0值,NaN等
151+
- 目标是覆盖尽可能多的值,根据测试人员的经验,这些值可能会暴露代码中的错误
152+
153+
#### 场景测试(Scenario Testing)
154+
155+
- 场景测试是一种软件测试技术,它使用场景(即推测性故事)来帮助测试人员解决复杂的问题或测试系统。
156+
157+
![Basic Flow and Alternative Flow](images/Chapter2-Software-Testing-technology/image-6.png)
158+
159+
- 基本流程(basic flow):最简单的贯穿用例的路径,即没有任何错误,程序直接从头到尾的流程。大多数用户最常用的操作流程,反映了软件的主要功能和流程。 一项业务只有一个基础流,并且基础流只有一个起点和一个终点。
160+
- 替代流程(alternative flow):从基础流程开始,在特定条件下执行,然后重新加入基础流程(例如替代流程1和3),或者源自另一个替代流(例如替代流2),用例也可以终止而不添加到基础中流(例如替代流 2 和 4),反映各种异常和错误情况。
161+
162+
##### 场景测试的步骤
163+
164+
1. 根据规范,描述被测软件的基本流程和替代流程。
165+
2. 构建不同的场景,满足测试完整性、无冗余的要求。
166+
3. 针对每个场景设计相应的测试用例。
167+
4. 重新检查所有生成的测试用例,删除多余的测试用例。 确定测试用例后,确定每个测试用例的测试数据值。
168+
169+
#### 顺序值测试(Sequence and value testing)
170+
171+
- 值的序列对于软件保存状态很重要。
172+
- 对特定输入值的响应可能会根据状态而变化,并且状态取决于先前的值序列。
173+
- 分析序列的常规方法是使用状态图来识别软件可以处于的状态,以及每个状态下对每个输入(“事件”)的响应(“操作”)。
174+
![state Diagram](images/Chapter2-Software-Testing-technology/image-7.png)
175+
176+
- 状态:系统实体生命周期中的抽象情况(例如,对象的内容)
177+
- 过渡:允许的二态序列。 由事件引起
178+
- 活动:输入或时间间隔
179+
- 动作:事件之后的输出
180+
- 守卫:与事件关联的谓词表达式,声明转换为触发态的布尔限制
181+
182+
![state of diagram](images/Chapter2-Software-Testing-technology/image-8.png)
183+
![Statechart for traffic light](images/Chapter2-Software-Testing-technology/image-9.png)
184+
185+
- 测试用例 = 输入事件序列
186+
- 全部事件覆盖(All events coverage):测试套件(test suite)中包含状态机的每个事件,即每个事件至少是某个测试用例的一部分。
187+
- 全部状态覆盖(All states coverage):在测试过程中,通过测试套件中的某个测试用例至少激活一次状态机中的每个状态。
188+
- 全部转换覆盖(All transitions coverage):每个转换至少被一次测试用例激活。
189+
- 全部路径覆盖(All path coverage):从入口到退出状态的所有可能路径都被测试用例覆盖。由于图中没有退出状态,因此需要识别从入口到每个状态的所有路径。
190+
- 全部循环覆盖(All circuits coverage):在图中,从同一个状态开始和结束的所有路径都被测试用例覆盖。
35.7 KB
Loading
113 KB
Loading
50.5 KB
Loading
572 KB
Loading

0 commit comments

Comments
 (0)