Skip to content

Commit 61052f2

Browse files
committed
docs: impl 'Soft Testing Process'
1 parent 929d0f8 commit 61052f2

File tree

6 files changed

+141
-0
lines changed

6 files changed

+141
-0
lines changed

src/notes/Software-Testing-and-Maintenance/Chapter3-Software-Testing-Process.md

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ isOriginal: true
1919
copyright: 转载请注明出处
2020
---
2121

22+
![Brief comparison of software testing phases](images/Chapter3-Software-Testing-Process/image-9.png)
23+
2224
## 单元测试(Unit Test)
2325

2426
- “单元”:明确的功能、规格定义,与其他部分明确的接口定义。
@@ -146,3 +148,142 @@ copyright: 转载请注明出处
146148
xUnit/JUnit
147149

148150
151+
152+
## 系统测试(System Testing)
153+
154+
- 系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的BUG,保证系统的正常运行。
155+
![Software Testing life cycle](images/Chapter3-Software-Testing-Process/image-5.png)
156+
157+
### 系统测试类型
158+
159+
#### 性能测试(Performance test)
160+
161+
- 评估系统的能力。测试中得到的负荷和响应时间等数据可以被用于验证所计划的模型的能力,并帮助做出决策。
162+
- 识别系统中的弱点。受控的负荷可以被增加到一个极端的水平并突破它,从而修复系统的瓶颈或薄弱的地方。
163+
- 系统调优。重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能,检测软件中的问题。
164+
165+
#### 压力测试(Stress Test)
166+
167+
- 模拟巨大的工作负荷,以查看系统在峰值使用情况下是否可以正常运行。
168+
- 通过逐步增加系统负载来测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统性能提供的最大服务级别的测试。
169+
170+
#### 容量测试(Capacity Test)
171+
172+
- 采用特定手段,检测系统能够承载处理任务的极限值所进行的测试工作。
173+
- 目的是使系统承受超额的数据容量来检测它是否能够正确处理,通过测试,分析出反映软件系统应用特征的某项指标的极限值,确定系统在其极限值状态下还能否保持其主要功能正常运行。
174+
175+
#### 健壮性测试(Robustness Test)
176+
177+
- 用于测试系统抵御错误的能力。测试重点为当出现故障时,系统是否能够自动恢复或忽略故障继续运行。
178+
- 健壮性包括两层含义:一是高可靠性;二是从错误中恢复的能力。
179+
180+
#### 恢复性测试(Recovery Test)
181+
182+
- 恢复测试主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。
183+
- 恢复测试首先要采用各种办法强迫系统失败,然后验证系统是否能尽快恢复。
184+
185+
#### 备份测试 (Backup Test)
186+
187+
- 恢复性测试的一个补充,目的是验证系统在发生软件或者硬件失败时备份数据的能力。
188+
189+
#### 兼容性测试(Compatibility Test)
190+
191+
兼容性测试是指检查软件之间是否能够正确地进行交互和共享信息。对新软件进行软件兼容性测试。
192+
193+
#### 安装测试(Installation Test)
194+
195+
- 安装性测试的目的就是要验证系统成功安装的能力,并保证程序安装后能正常运行。因此清晰且简单的安装过程是系统文档中最重要的部分。
196+
197+
#### 图形界面测试(GUI Test)
198+
199+
- GUI测试是对图形用户界面进行的测试。
200+
- 一般来说,当一个软件产品完成GUI设计后,就确定了它的外观架构和GUI元素
201+
202+
#### 文档测试(Document/Help Test)
203+
204+
- 从用户的角度来测试软件文档是非常有效的方法。仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
205+
206+
#### 安全测试(Security Test)
207+
208+
- 安全测试期间,测试人员假扮非法入侵者,采用各种办法试图突破防线。例如想方设法截取或破译口令;专门定做软件破坏系统的保护机制;故意导致系统失败,企图趁恢复之机非法进入;试图通过浏览非保密数据,推导所需信息等等。
209+
- 安全测试的方法:
210+
1. 威胁建模(Threat Modeling)
211+
2. 漏洞扫描(Vulnerability Scnaning)
212+
3. 渗透测试(Penetration Testing):包括侦察和信息收集,网络枚举和扫描,漏洞测试与利用,报告这四个阶段
213+
![Security Test](images/Chapter3-Software-Testing-Process/image-6.png)
214+
215+
## 验收测试(Acceptance Testing)
216+
217+
- 验收测试是软件测试的最终级别,测试系统是否符合其业务需求。它由客户或最终用户执行,目的是查看产品是否适合交付。
218+
- 在系统测试之后、最终交付给客户之前进行。它在黑盒测试方法下工作。
219+
220+
### 验收测试的内容
221+
222+
- 包括两部分:`软件配置审查(Software Configuration Review)``软件有效性测试(Software Validity Testing)`
223+
224+
![Contents of Acceptance Testing](images/Chapter3-Software-Testing-Process/image-7.png)
225+
226+
#### 软件配置审查(Software Configuration Review)
227+
228+
- 常见的软件配置项包括:
229+
1. 主要软件程序配置,一般包括源码程序、可执行程序、软件安装和配置脚本、关键测试脚本或测试程序
230+
2. 主要技术文件
231+
3. 主要开发管理文件
232+
- 对软件配置完成以下检查:
233+
- 源代码检查
234+
- 规范检查
235+
- 数据类型检查
236+
- 检查外部接口
237+
- 软件一致性检查
238+
- 编译检查
239+
- 安装和卸载测试
240+
- 运行模块一致性检查
241+
242+
#### 软件有效性测试(Software Validity Testing)
243+
244+
- 软件接口测试
245+
- 可用性测试
246+
- 功能测试(包括正常业务流程测试和错误处理能力测试)
247+
- 性能测试(包括负载、体积、压力测试)
248+
- 软件执行环境及系统平台配置测试
249+
- 鲁棒性测试(包括各种硬件下的恢复测试)
250+
软件故障)
251+
- 可靠性测试
252+
- 兼容性测试
253+
- 数据备份测试
254+
- 安全测试
255+
256+
### 验收测试的注意事项
257+
258+
1. 验收前应制定正式的验收计划,明确验收通过的标准,并经用户确认。
259+
2. 验收测试必须在最终用户的实际使用环境中进行,或者模拟用户的实际操作环境,避免因环境差异而无法发现软件的一些潜在问题。
260+
3. 验收测试应涵盖软件的粗粒度、业务级功能。 验收测试用例与软件项目合同和软件之间存在可追溯性
261+
要求规范。
262+
4. 验收测试用例不可能或没有必要重新运行在开发阶段进行的所有测试用例。
263+
5. 验收测试必须以用户为导向,以用户能够接受的方式进行。能够从最终用户使用的实际业务场景的角度直观地感知。
264+
6. 验收测试用例的设计必须充分考虑用户的使用方式
265+
思维、使用习惯、业务语言等,并根据主要业务场景组织测试用例和测试流程。 重点关注客户最关心的功能点和性能点。
266+
267+
### Alpha 测试与 Beta 测试
268+
269+
- Alpha 和 Beta 测试阶段主要侧重于发现已测试产品中的错误,并清楚地了解实时用户如何使用该产品。
270+
271+
![Alpha Testing & Beta Testing](images/Chapter3-Software-Testing-Process/image-8.png)
272+
273+
#### Alpha 测试
274+
275+
- Alpha 测试是验收测试的一种形式,发生在开发商的网站。
276+
- 它也可以由内部开发人员和质量检查人员来执行以及潜在的最终用户。
277+
278+
#### Beta 测试
279+
280+
- Beta 测试(现场测试)是进行的验收测试的形式。在客户或最终用户的站点。
281+
- 它是在 alpha 测试之后在现实环境中执行的,无需开发人员在场或控制。
282+
- Beta 测试或应用程序的 Beta 版本通常向全世界(或客户)开放。
283+
284+
## 回归测试(Regression Testing)
285+
286+
- 回归测试是重新运行功能和非功能测试,以确保先前开发和测试的软件在更改后仍然可以运行。可能需要回归测试的更改包括错误修复、软件增强、配置更改。
287+
- 这里所说的保证软件原有功能正常运作,或称之为软件修改的正确性,可以从两方面来理解:
288+
- 所做的修改达到了预期的目的,例如缺陷得到了修改,新增加的功能得到了实现
289+
- 软件的修改没有引入新的缺陷,没有影响原有的功能实现
75.7 KB
Loading
59.8 KB
Loading
254 KB
Loading
231 KB
Loading
39.7 KB
Loading

0 commit comments

Comments
 (0)