首页 > Python自动化测试 阅读数:39

Python测试人员需要具备的基本技能

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

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:自动化测试(仅供参考)
类别 子类 子项 工具
自动化策略 四个象限 全自动化、工具、半自动、手工  
金字塔 UI、API、Unit  
自动化测试工具 单元测试 代码分析 Sonar
FindBugs
Checkstyle
动态测试 PyUnit
TestNG
JUnit
PMD
JMock
Code Review 手工
Phabricator
Gerrit
Crucible
集成测试 Jenkins  
功能测试 Web测试 Selenium
Windows 测试 Autolt
Mac OS测试 Xcode
Instruments
移动端测试 Monkey
Monkey Runner
覆盖率分析工具 Java Jacoco
JCov
Clover
Emma
Python Coverage.py
C/C++ Gcov
C# NCover
JavaScript JSCoverage
Istanbul
性能测试 JMeter  
  nGrinder  
  Gatling  
安全测试 OWASP ZAP  
  W3af  
  Coverity  
自动化测试框架 开源 Robot Framework  
STAF/STAX  
Appium  

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

表 2:API 接口测试(仅供参考)
分类 关键要点
主流API测试工具 SoapUI
Postman
cURL
基于代码的API测试 REST Assured
数据驱动
测试输入数据自动生成
测试用例自动生成
API性能测试 基准性能
高并发性能
集合点并发死锁检测
API测试创新 自动后向兼容
自动 Response Diff
基于消费者契约的API测试

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

表 3:GUI 自动化测试(仅供参考)
分类 组成 关键要点
常用测试框架 Selenium 1.0  
Selenium 2.0/3.0  
QTP/UFT  
RFT  
Watir  
GUI自动化技术 对象识别机制  
自动化测试实现 录制
录制回放
可重用脚本片段
基于组件的封装
页面对象模型
业务流程模型
统一业务流程模型
GUI测试的数据 数据驱动测试  
测试数据准备 测试数据生成机制(API调用、数据库操作、综合方法)
测试数据生成时机 On-the-fly
Out-of-box
提高GUI测试稳定性 Retry机制  
智能对象识别  
对象库版本管理  
异常场景恢复机制  
创新技术 基于图像识别 Airtest、Sikuli
BDD (行为驱动开发)  
MBT (基于模型的测试) Al
路径规划

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

表 4:代码级测试(仅供参考)
类型 方法 常见手段
静态方法 人工静态方法 代码走读
结对编程
自动静态方法 静态代码扫描(Sonar、 Fortify SCA)
动态方法
单元测试 桩代码
Mock代码
代码覆盖率
常用单元测试框架(JUnit、TestNG)
代码级集成测试 自顶向下集成
自底向上集成
混合策略集成
自动动态方法 自动产生边界值
自动异常捕获
TDD方法 TFD + Refactoring 测试先行的设计

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

表 5:测试基础框架(仅供参考)
组成部件 提供的功能 关键要点
测试执行服务 融合各阶段多种测试框架 单元测试框架
集成测试框架
API测试框架
GUI测试框架
性能测试框架
代码覆盖率框架
代码静态检查框架
统一 Restful 接口 CI/CD的流水线集成
开放式接口与第三方测试管理平台集成
提供GUI界面 用例管理
执行版本管理
报告提取
测试数据服务 实时创建  
预先创建  
测试数据管理  
测试环境服务 Selenium Grid Docker 容器化 Node
Node动态伸缩
Appium + Selenium Grid 基于大数据设备选取
基于策略设备选取
设备管理
测试报告服务 元数据数据库  
场景测试报告  
缺陷分布报告  
缺陷趋势报告  
需求覆盖率报告  
测试配置服务 配置与脚本的分离  
全局功能开关  
应用场景  
测试数据模板  
统一 Mock 服务 契约管理  
统一接口  
外部依赖解耦  

14.性能测试(如表 6 所示)
表 6:性能测试(仅供参考)
分类 关键要点
性能测试主要指标 并发用户数
吞吐量
响应时间
性能计数器
QPS、TPS、UV、PV
性能测试方法 性能验收测试
性能基准测试
压力测试
并发测试
可靠性测试
失效恢复测试
全链路压测
性能测试应用领域 能力验证
容量规划
性能优化
缺陷发现和定位
性能基准比较
后端性能 性能工具原理
主流工具(LoadRunner、JMeter、Locust)
性能分析工具(JProfiler、JProbe、YourKit)
前端性能 Performance Timing API
主流工具(WebPageTest、YSlow> Google PageSpeed)
静态资源优化
接口访问优化
页面渲染优化

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

表 7:移动应用测试(仅供参考)
分类 关键要点
业务功能测试 手工测试
自动化测试(Appium)
兼容性测试 不同操作系统
相同操作系统不同版本
不同屏幕分辨率
不同机型
专项测试 弱网环境测试
中断测试
安装卸载升级测试
流量测试
安全测试
用户体验测试
跨平台测试
并发测试
性能测试
常见Crash测试
测试包管理 TestFlight
Fir.im
蒲公英
云测平台 SauceLab
Testin
MTC
WeTest
创新技术 MBT (基于模型测试)

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

表 8:其他基础知识与技能(仅供参考)
类别 子项 关键要点
网络 基础网络协议  
网络抓包工具 Charles
Fiddler
网络环境模拟工具 ATC
NEWT
虚拟机与容器 VMware  
Docker  
Kubemetes  
DevOps 研发协作模式
DevOps是一组过程、方法与系统的统称,强调沟通、协作、集成、自动化和度量
互联网架构知识 架构演进及关键技术 应用服务器集群
数据库集成
缓存集成
互联网架构知识 架构演进及关键技术 CDN
反向代理
分布式
SOA
微服务
前后端分离
高性能架构  
高可用架构  
伸缩性架构  
可扩展架构  
云计算 AWS  
阿里云、腾讯云、华为云  
操作系统 Linux、UNIX  
Mac  
Windows  

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

表 9:测试技术(仅供参考)
测试技术类别 关键要点
面向接口的测试技术 参数、语法、语义、业务等异常验证
REST、SOAP、HTTP、XML、JSON 等 API 测试
工具(RESTAssured、JMeter)
面向SOA的测试技术 Service、Process、Consumer
Contract、Interface、Data
Runtime Error API Security
工具(SoapUI)
面向微服务的测试技术 CDC(契约测试)
Consumer、Provider、API、JSON
工具(Pact、Spring Cloud Contract)
Web测试技术 Web UI、 DOM、 JavaScript
功能测试工具(Selenium、WebDriver)
安全测试工具(WebSecurity、Wapiti)
移动App测试技术 Native、Web View、Hybrid
Android (UIAutomator、Robotium、Espresso)
iOS (Xcode Instruments、Frank、Calabash)
专项测试(流量、耗电、性能、兼容性)
Windows测试技术 MFC、WPF、UIA、句柄、WinForm、Hook 技术
工具(Autolt、VSTS)
嵌入式测试技术 宿主机、ARM架构
PLC程序测试
工具(CodeTest、TestBed、RTRT)
数据库测试技术 分层测试、物理/逻辑测试
云测试技术 AWS、Docker、IaaS、 PaaS
大数据测试技术 Hadoop、HDFS、HBase、 MapReduce、 Hive
采集/预处理/统计分析/挖掘