Skip to content

Commit 146a667

Browse files
committed
docs: impl doc Software-Testring Chapter1-Basic-Concepts
1 parent a9eeb55 commit 146a667

File tree

8 files changed

+152
-6
lines changed

8 files changed

+152
-6
lines changed

src/notes/Software-Testing-and-Maintenance/Chapter1-Basic-Concepts-of-Software-Testing.md

Lines changed: 151 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@ copyright: 转载请注明出处
2525
- 软件失败(Failure):相对于需求或其他预期行为的描述,表现出的外部错误行为。
2626
- 软件错误(Error):某些故障表现出的错误内部状态。
2727

28-
> [!note] 例如
29-
>
30-
> - 患者向医生提供一份症状清单——失败
31-
> - 医生尝试诊断根本原因,即疾病——故障
32-
> - 医生可能会寻找异常的内部状况(高血压、心律不齐、血液中的细菌)——错误
28+
:::info 例如
29+
30+
- 患者向医生提供一份症状清单——失败
31+
- 医生尝试诊断根本原因,即疾病——故障
32+
- 医生可能会寻找异常的内部状况(高血压、心律不齐、血液中的细菌)——错误
33+
:::
3334

3435
## Bug
3536

@@ -55,6 +56,7 @@ copyright: 转载请注明出处
5556
### 文档
5657

5758
软件设计文档
59+
5860
- 架构
5961
- 数据流图
6062
- 状态转换图
@@ -69,4 +71,147 @@ copyright: 转载请注明出处
6971

7072
## What Parts Make Up a Software Product?
7173

72-
![alt text](images/Chapter1-Basic-Concepts-of-Software-Testing/image.png)
74+
![What Parts Make Up a Software Product](images/Chapter1-Basic-Concepts-of-Software-Testing/image.png)
75+
76+
## 软件测试模型(Models of Software Testing)
77+
78+
- 瀑布模型(Waterfall Model)
79+
- 螺旋模型(Spiral Model)
80+
- V Model
81+
- W Model
82+
- 敏捷模型(Agile Model)
83+
- 极限开发(Extreme Programing, XP)
84+
85+
### 瀑布模型(Waterfall Model)
86+
87+
- 所有的计划在最开始就完成了,一旦创建,就不应更改。
88+
- 随后的各个阶段之间没有任何重叠。
89+
- 通常,任何人在测试完成后的最后一刻才有机会“看到”程序。
90+
91+
![Waterfall-Model](images/Chapter1-Basic-Concepts-of-Software-Testing/image-1.png)
92+
93+
- 优点:
94+
1. 如果早期就确保需求和设计是完全正确的,那么这将在后期节省大量时间和精力。
95+
2. 强调了文档化的重要性,将所有知识集中存放在一个中央资料库中,新团队成员可以轻松参考。
96+
- 缺点:
97+
1. 在项目结束前,很少有可见的进展迹象。
98+
2. 它不灵活,无法应对变化。
99+
3. 生成所有文档耗时较长。
100+
4. 测试仅在项目结束时进行——这可能会在存在时间或预算约束的情况下意味着妥协。
101+
5. 必须整体测试程序,这可能导致测试不完整。
102+
6. 如果测试发现一个需要重新设计的故障,可能会因为涉及的麻烦而被忽略。
103+
7. 如果客户不满意,可能会导致维护阶段较长,以解决他们的问题。
104+
105+
### 螺旋模型(Spiral Model)
106+
107+
- 以风险驱动的开发过程
108+
- 瀑布模型与快速原型迭代模型的结合
109+
- 始于一个设计目标,以客户审查进度结束。
110+
111+
![Spiral Model](images/Chapter1-Basic-Concepts-of-Software-Testing/image-2.png)
112+
113+
|优点| 缺点|
114+
|--|--|
115+
|后期可以增加或更改附加功能 |严格遵循螺旋模型的协议以确保其顺利运行|
116+
|由于原型构建是按小片段进行的,因此成本估算变得容易| 持续或反复的开发有助于风险管理|
117+
|开发速度快,系统地添加功能 |由于有中间阶段,文档更详细|
118+
|总是有客户反馈的空间 |螺旋软件开发不适用于小型项目,可能会花费很多|
119+
120+
### V Model
121+
122+
- 瀑布模型的扩展
123+
- 通过标记生命周期的每个阶段与测试活动之间的关系,强调验证与确认
124+
- 一旦代码实现完成,测试就开始了。
125+
- 从单元测试开始,然后逐层向上进行测试,直到完成验收测试阶段。
126+
127+
![V Model](images/Chapter1-Basic-Concepts-of-Software-Testing/image-3.png)
128+
129+
|强度| 弱点|
130+
|--|--|
131+
|由于模型的简单性,易于管理| 像瀑布模型一样,直到生命周期的后期才产生可工作的软件|
132+
|它鼓励在所有阶段进行验证和验证 |对于需求在中等至高度变化的风险下,它是不适用的|
133+
|每个阶段都有具体的可交付成果和审查过程 |有建议称,对于长期、复杂和面向对象的项目的模型来说,这也是一个糟糕的模型|
134+
|它赋予测试与开发同等的重要性,而不是将其作为一个在最后阶段才考虑的次要事项 ||
135+
136+
### W Model
137+
138+
- V Model的扩展
139+
- 测试不是在代码实现之后进行。
140+
- 测试过程与开发过程平行进行。
141+
- 开发与测试之间的协作。
142+
- 测试不仅仅是测试用例的构建、执行和评估。
143+
144+
![W Model](images/Chapter1-Basic-Concepts-of-Software-Testing/image-4.png)
145+
146+
### 敏捷模型(Agile Model)
147+
148+
为了有效测试:
149+
150+
- 当开发者与客户就即将进行的迭代需求进行“协商”时,测试人员必须是这些对话的全面参与者。
151+
- 测试人员应立即将对话中达成一致的要求转化为测试用例。
152+
- 当需求发生变更时,测试人员应立即参与其中,因为大家都清楚相应的测试用例也必须进行修改。
153+
154+
- 增量模型从软件系统的部分简单实现开始。每次增量时,产品都会随着增强功能的添加而进化,直到最终版本。
155+
- 测试是增量模型的重要部分,并在每次迭代的末尾进行。这意味着测试在开发过程的早期开始,并且总体的测试量更多。
156+
- 大量的测试是回归测试的形式,并且可以大量复用早期增量的测试用例和测试数据。
157+
158+
### 极限开发(Extreme Programming)
159+
160+
- 极限编程(XP)是敏捷软件开发哲学的一个子集。
161+
- 它强调代码审查、持续集成和自动化测试,以及非常短的迭代周期。
162+
- 它倾向于进行中的设计细化(或重构),而不是大型初始设计阶段,尽可能保持当前实现简单。
163+
- 它倾向于实时沟通,最好是面对面,而不是写文档,并且认为工作软件是进步的主要衡量标准。
164+
- 这种方法还强调团队合作。管理者、客户和开发人员都是致力于交付高质量软件的团队的一部分。
165+
- 程序员负责测试他们自己的工作;测试人员专注于帮助客户选择和编写功能性测试,并定期运行这些测试。
166+
167+
#### 用户故事和故事卡(User Stories and Story Card)
168+
169+
- 用户故事是用日常语言编写的一个或多个句子,捕捉到软件系统需要执行的一个方面。
170+
- 这些通常被写在被称为故事卡的纸卡上
171+
- 故事卡被排序以反映系统的开发
172+
- 这应该怎么做呢?首先优先考虑最困难的部分或组件?或者按照用户操作的顺序?
173+
174+
![Extreme Programming](images/Chapter1-Basic-Concepts-of-Software-Testing/image-5.png)
175+
176+
## 现实中的软件测试(The Realities of Software Testing)
177+
178+
1. 完全测试一个程序是不可能的
179+
180+
2. 软件测试是一种基于风险的练习
181+
182+
3. 测试不能证明不存在缺陷
183+
184+
4. 你发现的错误越多,存在的错误就越多
185+
186+
5. 农药悖论
187+
188+
6. 你发现的所有错误并非都会被修复
189+
190+
7. 何时认定为一个错误是困难的
191+
192+
8. 产品规格永远不是最终的
193+
194+
9. 软件测试人员并非项目团队中最受欢迎的成员
195+
196+
10. 软件测试是一种受到纪律约束的技术性职业
197+
198+
## Validation & Verification
199+
200+
- Verification: How do we ensure software satisfies its requirements
201+
- Validation: How to we ensure the software requirements satisfy its intended use?
202+
- 换言之,就是`building a program correctly``Building a correct program`
203+
204+
![Validation & Verification](images/Chapter1-Basic-Concepts-of-Software-Testing/image-6.png)
205+
206+
## Quality Control&Quality Assurance
207+
208+
- Quality Control:验证产品的正确性,当发现与设计不一致的时候进行纠正。
209+
- Quality Assurance:充当支持执行全面质量管理的角色
210+
211+
## Tester & QA | Software Testing & SQA
212+
213+
- 软件测试员(QC):检测软件产品,找出缺陷,评价软件质量
214+
- 质量保证人员(QA):检测软件过程,创建和加强促进软件开发并防止软件缺陷的标准、方法和过程。
215+
216+
- SQA 是管理工作、审查对象是流程、强调以预防为主
217+
- 测试(Testing)是技术工作、测试对象是产品、主要是事后检查
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
---
22
title: 软件测试与维护
3+
index: false
34
icon: lightbulb
45
---
27.9 KB
Loading
21.5 KB
Loading
18.7 KB
Loading
494 KB
Loading
242 KB
Loading
335 KB
Loading

0 commit comments

Comments
 (0)