@@ -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)是技术工作、测试对象是产品、主要是事后检查
0 commit comments