1.4 测试知识体系

上节介绍了成为一名优秀的测试工程师需要具备的核心关键能力,而自身的核心竞争力也并非一朝一夕能形成的,需要从一点一滴起,培养测试知识的深度和广度。测试从业者需要掌握什么知识?如果不知道如何提升,不知道从什么知识技术来切入,希望本节能带给你一些启发。

1.如何理解测试工作

发现软件中的缺陷。

验证产品特性是否满足用户需求。

不断地质疑系统、向系统提问。

不断揭示软件产品的质量风险。

已知的检验+未知的实验。

对产品质量进行全面评估。

测试是质量保证的重要手段,但不是唯一手段。

是产品质量很关键的一道防线,也是产品上线前最为重要的一个环节。

是一个把质量意识输出到整个团队的人或者说角色,它是一个流程推动者,是一个需求挖掘者,是一个质量把关者。

2.如何理解质量

测试不等于质量。

质量是构建出来的,不是测试测出来的。

围绕客户满意度、重视用户体验,满足客户需求的,用户期待的,都应该算质量。

高品质=高质量+好体验。

质量应该贯穿于整个产品研发生命周期。

3.测试遵循的原则

一切从用户、客户需求的角度出发。

缺陷发现、质量风险揭示越早越好。

穷尽测试是不可能的,基于风险的测试是必需的。

测试活动应贯穿于SDLC(软件全生命周期)。

80/20原则(缺陷集群性)。

基于上下文不断调整测试策略和方法。

4.测试流派

1)质量分层流派

内部质量(单元测试、代码评审、代码分析)。

外部质量(系统测试、基于风险测试)。

使用质量(验收测试、基于用户体验测试)。

2)上下文驱动流派

快速测试(RST):批判性思维、启发式测试。

探索式测试(ET):设计、执行、学习同时进行。

启发式测试策略(HTSM):功能和非功能特性相结合。

3)敏捷测试

敏捷思维:不断试错、不断学习、在学习中成长。

核心价值观:自组织、协作、反馈、专注、开放。

持续集成(CI):持续测试、持续交付。

实践:TDD、ATDD、BDD。

5.测试方法

1)基于直觉和经验的方法(IEBT)

Ad-hoc随机测试方法。

基于用户使用测试。

错误猜测法。

2)基于探索式测试方法(ET)

指南测试法(遵照用户手册的建议执行操作)。

地标测试法(确定关键的软件特性、前后顺序)。

极限测试法(设置各种障碍来观察软件如何反应)。

恶邻测试法(某个区域代码Bug很多,对邻近区域进行详细的测试)。

博物馆测试法(对新版本中没有改动的功能进行回归冒烟测试)。

配角测试法(专注于测试某些特定功能,特别是紧邻主要功能的辅助功能)。

超模测试法(测试界面显示)。

取消测试法(启动操作然后停止它)。

懒汉测试法(接受所有默认值)。

通宵测试法(程序长时间运行,不关闭)。

3)基于输入域的方法(IDBT)

等价类划分法。

边界值分析法。

决策表。

因果图。

4)组合测试方法

完全组合测试。

正交试验法。

分类树方法。

交替变更强度方法。

5)基于代码测试方法

基本路径覆盖。

语句逻辑覆盖。

判定逻辑覆盖。

条件逻辑覆盖。

条件组合逻辑覆盖。

数据流覆盖。

6)基于故障模式的测试方法(FPBT)

故障模式识别与分析。

故障注入。

7)基于模型的方法(MBT)

基于历史数据。

基于功能与操作。

随机的事件。

数据覆盖。

基于故障模式。

基于搜索算法。

基于AI的模型遍历。

基于功能图。

8)基于使用的方法(UBT)

基于配置及其组合的方法。

基于应用场景的方法。

用户观察启发式。

9)其他方法

基于需求与标准验证的方法。

基于逻辑分析的方法。

基于上下文驱动的方法。

基于风险的方法。

6.测试方式

手工测试。

自动化测试。

手工与自动化测试结合。

静态测试(代码评审、工具分析)。

动态测试(手工测试、自动化测试)。

基于互联网的测试(众测、云测、灰度发布)。

7.测试过程

测试计划(制定、评审、细化、调整)。

测试设计(分析、设计)。

测试执行(环境、数据、执行、记录、跟踪)。

结果评估(需求、用例、代码等覆盖率)。

测试报告(结论、风险、改进)。

8.测试管理

1)可测试性

需求可验证性(ATDD)。

设计可验证性(接口定义是否清晰)。

代码可读性(TDD)。

2)质量管理:计划

目标是否清晰。

范围界定是否合理。

测试项、风险识别。

测试方法有效性。

工作量估算是否合理。

3)质量管理:设计

测试质量规范。

设计思路是否合理。

设计能否实现目标。

非功能性如何保证。

4)质量管理:执行

用例执行如何。

测试覆盖程度。

缺陷报告和修正状态。

5)质量管理:度量

需求覆盖率。

用例覆盖率。

代码覆盖率。

自动化率与测试效率。

用例执行率、通过率、有效性。

各类缺陷数、缺陷密度。

6)测试产物管理

测试计划(过程、模板)。

测试用例(层次、优先级、粒度、覆盖率)。

测试脚本(仓库、评审)。

测试工具。

测试报告。

7)缺陷管理

生命周期定义。

缺陷描述(缺陷描述、优先级、严重性、重现步骤)。

缺陷类别(功能丢失、需求问题、逻辑问题、运行错误、数据错误、界面显示异常)。

缺陷报告(模板、缺陷定位)。

缺陷分析(分布分析、趋势分析、根因分析)。

常用缺陷管理系统(JIRA、ALM、Mantis、Bugzilla)。

8)测试计划

明确测试目标(定义入口和出口准则)。

识别测试项。

测试项优先级。

确定测试范围。

识别、分析、防范测试风险。

制定测试策略(效率与风险的平衡)。

工作量估算。

资源安排。

进度安排。

9)风险管理

人员:能力、缺乏。

策略:无效、应用不当。

方法:上下文、应用不恰当。

范围:遗漏、模糊、变更。

环境:错误、差异、不足、冲突。

场景:差异、无法模拟、组合太多。

执行:漏测、偏差。

进度:估算不足、需求变更。

10)测试环境管理

基础设施。

数据。

网络与硬件。

支撑软件。

被测系统。

9.自动化测试(如表1-1所示)

表1-1 自动化测试(仅供参考)

10.API接口测试(如表1-2所示)

表1-2 API接口测试(仅供参考)

11.GUI自动化测试(如表1-3所示)

表1-3 GUI自动化测试(仅供参考)

12.代码级测试(如表1-4所示)

表1-4 代码级测试(仅供参考)

13.测试基础框架(如表1-5所示)

表1-5 测试基础框架(仅供参考)

14.性能测试(如表1-6所示)

表1-6 性能测试(仅供参考)

15.移动应用测试(如表1-7所示)

表1-7 移动应用测试(仅供参考)

16.其他基础知识与技能(如表1-8所示)

表1-8 其他基础知识与技能(仅供参考)

17.测试技术(如表1-9所示)

表1-9 测试技术(仅供参考)