1.传统测试方案面临的挑战:
随着 DevOps 在软件行业的推广和落地,测试不够高效、测试质量低下往往成为导致交付延期的首要原因,测试环节也就成为了企业进行 DevOps 转型的最大瓶颈。本文主要介绍测试的发展史、如何在项目中通过工具高效、高质量实践DevOps持续自动化测试。
以及如何解决业务测试过程中 复用测试用例回归测试、自动化降本增效、缺陷统一管理、测试效果可观测、测试全生命周期可追踪、测试过程改善 等痛点问题。
2.软件测试发展史
No Silver Bullets(没有银弹): 由于软件的复杂性本质,没有任何一种技术或方法,可以使软件工程的生产力十年内提高十倍
软件测试发展史:
3.测试分类&测试方法分类
测试分类:
- 功能测试: 黑盒测试,从用户角度出发测试系统功能。
- 可用性测试: 测试软件表现是否符合预期
- 系统测试: 测试系统整体表现、稳定性指标(QPS、TPS、RT响应延迟)
- 单元测试: 测试coding代码变现,一般由开发人员提供
- 集成测试: 系统整体全链路接口集成测试
- 随机测试: 模拟随机故障测试系统健壮性,类似混沌测试进行故障注入操作。
测试方法:
1) 功能性: 单元测试、集成测试、系统测试、交付验收测试。
2) 非功能性: 安全测试、性能测试、可用性测试、兼容性测试。
4.测试指导原则、落地方案
测试原则:
不求100%无效case全覆盖,基于业务重要性 设计 测试用例、决定覆盖度, 进行精准有针对性的测试。
测试介入阶段和落地流程:
- 需求阶段:
需求规划阶段,测试同学可以早期介入熟悉测试内容,安排测试节奏和计划。
- 开发阶段:
开发迭代阶段,可以设计测试case、评审case,推进测试左移,实现测试与开发阶段并行。
- 测试阶段:
提前搭建测试环境,推进业务系统同学部署测试环境、初始化测试数据,构建自动化流水线,推进测试和bug修复。
- 联调阶段:
自动化进行接口测试、UI自动化测试回归,推动bug修复。
- 交付阶段:
进行预发布环境、生产环境测试,保证交付质量。
5.测试痛点解决方案:
持续自动化测试 CT(CONTINUOUS TESTING)
通过持续自动化测试解决,测试交付过程中的一系统痛点问题: 测试用例无法复用、依赖人工回归测试效率极低,缺陷问题无法统一管理、测试效果无法观测、缺乏测试全生命周期过程管理。使得测试DevOps化,真正做到: CONTINUOUS TESTING,助力业务持续高质量交付。
自动化测试好处:
复用测试用例回归测试、自动化降本增效、缺陷统一管理、测试效果可观测、测试全生命周期可追踪、测试过程改善。
自动化测试分类:
接口自动化:Pytest 模拟http接口请求
UI自动化(web/App[安卓、IOS]) : Selenium、Appium 模拟浏览器、安卓、IOS 自动化测试
自动化测试方案:
- 创建测试用例
- 评审测试用例
- 创建测试计划
- 录入自动化测试用例
- 执行测试计划
- 测试报告分析测试效果
5.持续自动化测试最佳实践
5.1 创建测试用例
测试用例是测试的最小组成单位,需要与需求关联、多个测试用例组成测试计划。
创建用例: 输入标题、前置条件或文本描述完成用例创建。用例还支持进行分组管理。
支持导入测试用例: 支持Excel/CSV/Xmind等类型
编写测试用例:
用例包含测试用例的问题等级与所在测试分组、预估所需的工时、编写预期结果、前置条件、用例说明、测试描述和上传测试用例所需要的附件。
测试用例等级:
按照用例的重要性与执行频率,共分为 4 个等级 (P0—P3),数字越大优先级、重要性越低。当然各个公司对用例等级要求不同,可以自定义规则。
用例关联需求:
一个测试用例只能同时关联一个需求;一个需求可以同时关联多个测试用例;一个需求支持关联多个测试用例。
5.2 评审测试用例
测试用例评审是保证用例有效的重要check步骤。开发人员需要参与测试用例评审、对齐并提供改进意见;测试同学互相评审用例也能够时发现忽视的测试case,有效增加测试case的信服力。
5.3 创建与执行测试计划
测试计划由测试用例组成,它能够让测试人员清晰的看到目前测试进度,及时记录测试结果与相应的评级。测试计划支持手动与自动化执行两种方式。
执行测试计划:
执行测试计划,记录结果关联缺陷
5.4 配置自动化用例库
自动化用例库能够让测试计划与代码仓库中的功能代码建立匹配关系,实现自动化执行测试计划更新任务状态,执行后查看测试报告。降低使用自动化测试的繁琐步骤。
自动化测试分类: 接口自动化 和 UI自动化
自动化用例
5.5 测试报告分析测试效果
定期复盘测试计划也非常有必要。测试报告包括用例结果分析、缺陷分布与用例测试排名。
在概览中可以看到项目内的用例数量、迭代的测试时长占比、缺陷数据等。
测试效能面板: 展示测试效能、分配给我的缺陷、测试燃尽图。
测试结果统计
包括测试用例结果分布、缺陷分布、用例测试排名等。
- 测试用例结果分布
指当前报告涉及测试计划内的用例不同状态(通过,重测,失败,阻塞,未测)数量的总和和占比。
- 缺陷统计
指当前报告涉及缺陷的优先级、处理状态,解决时长的统计。
- 缺陷模块分布
缺陷按照缺陷所属模块(来源)分布,并显示优先级,可以用作缺陷归因分析之用。
- 缺陷处理人分布
指当前报告所涉及测试计划内的关联缺陷数和关联迭代中的缺陷数,统计每个缺陷的处理人实际收到的缺陷总数(包括缺陷关闭和打开的缺陷总和)。
- 用例测试次数排名
指当前报告涉及的里程碑或测试计划内的每个用例被反复测试的次数。
- 用例测试失败次数排名
指当前报告涉及的里程碑或测试计划内的每个用例被标记为失败的次数。
测试过程统计
包括每日测试结果分布、每日测试时长分布、每日测试次数分布和成员测试次数统计。
- 每日测试结果分布
指每天记录的测试结果(通过,重测,失败,阻塞)状态的个数。
- 每日测试时长分布
指每天团队所有人测试测时间总时长。
- 每日测试计数分布
指每天团队所有人测试的总次数。
成员测试次数统计,指每个成员在统计时间区间内测试的总次数。
测试报告中的每一个统计图表都可点击选择查看统计图或列表形式