华为云DevOps系列之 —— 持续测试与反馈(一)敏捷软件测试理念、方法与实践
【摘要】 华为云DevOps系列之 —— 持续测试与反馈(一)敏捷软件测试理念、方法与实践
敏捷软件测试理念、方法与实践
测试概念与分类
- 什么是测试(Wikipedia)
- 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程
- 测试分类
- 测试方法
- 黑盒测试
- 将被测系统当成一个
黑盒子
,不关心系统的实现细节,仅仅关心特定的输入应该有什么样的输出,适合大部分的软件测试(集成测试、系统测试)
- 将被测系统当成一个
- 白盒测试
- 关注应用程序的内部结构和运作,不仅仅是测试应用程序的功能
- 测试时应该以程序设计的语言角度来设计测试案例
- 可应用与单元测试、集成测试、系统测试
- 黑盒测试
- 测试类型
- 功能测试
- 按照软件的各功能划分,进行有条理的测试
- 测试时要保证测试项覆盖了所有的功能,以及各种条件的组合
- 系统测试
- 以
一个完整软件的整体角度
来进行测试 - 与功能测试的主要区别是:系统测试要利用所有
真实的数据
来进行测试,模拟真实的用户,同时关注点是整个软件系统,非单点的功能
- 以
- 极限值测试
- 软甲在各种特殊条件、特殊环境下能否能正常运行进行测试
- 特殊条件:一般指软件规定的最大值、最小值、以及超过最大值,超过最小值情况下的测试
- 特殊环境:一般指软件运行的机器处于 CPU 高负荷或者网络高负荷的状态下进行测试
- 性能测试
- 对软件性能的评价(衡量软件具有的响应能力)
- 采用测试手段,对软件的响应能力的及时性进行评价
- 功能测试
- 测试阶段
- 单元测试
- 针对程序设计中的每一个
单点函数
进行测试
- 针对程序设计中的每一个
- 集成测试
- 关注
模块与模块
之间的交互
- 关注
- 系统测试
端对端
,对整个系统进行测试,使用真实的用户场景和数据
- 回归测试
- 验证
新加的代码
是否会对现有的功能产生影响,确保现有功能正常可用
- 验证
- 单元测试
- 测试方法
为什么需要敏捷测试
敏捷软件测试概念
- 什么是敏捷测试(Wikipedia)
- 一种遵循敏捷软件开发原理的软件测试实践
- 设计跨职能敏捷团队的所有成员,这些团队具有测试人员的特殊专业知识,以确保以
可持续
的速度定期提供客户期望的价值 - 注重 “以人为本”,快速迭代
敏捷测试宣言
- 测试是一个活动 胜于 测试是一个阶段
- 预防缺陷 胜于 发现缺陷
- 做测试者 胜于 做检查者
- 帮助构建最好的系统 胜于 破坏系统
- 团队为质量负责 胜于 测试为质量负责
敏捷原则
- 原则1:预防缺陷胜于发现缺陷
- 原则2:通过持续测试实现快速与高质量
- 原则3:成为全栈测试人员
- 原则4:从质量保证专项质量协助
- 原则5:渴望持续学习
Who | 每个成员都需要为质量负责;测试不仅是测试人员的工作,开发人员和运维人员也要承担测试任务 |
When | 贯穿始终(产品准备初期 ——> 上线) |
Where | 无处不在,一切能提高产品质量的工作都就是测试工作 |
测试左移和右移
测试左移
- 在开发阶段就尽早开始测试
- 使用测试驱动开发行为驱动开发,强制在编码之前就充分的考虑测试
- 通过契约测试和mock机制,解耦服务间的依赖,提升测试速度和稳定性
- 使用 TDD、ATDD 和 BDD
TDD:Test Driven Development:测试驱动开发,在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码,可看作两个层面
- 在代码层次,在编码之前写测试脚本,可以称为单元测试驱动开发(Unit Test Driven Development,UTDD)
- 在业务层次,在需求分析时就确定需求(如用户故事)的验收标准,即验收测试驱动开发(Acceptance Test Driven Development,ATDD)
BDD(Behavior Driven Development,行为驱动开发)
- BDD只是将验收标准更加明确化,可以看作是ATDD的实例化,即列出用户故事所可能遇到的应用场景,而且将这种应用场景的表达方式规定为GWT格式
测试右移
- 在发布阶段和线上阶段进行测试
- 测试类型主要包括
灰度测试
(灰度发布过程中进行的测试)、在线拨测以及在线监控
- 在线拨测
- 一种主动监控,持续高频的对被测系统常见功能进行测试
- 在线监控
- 以各种系统指标为核心进行被动监控
测试分层模型演进
- 传统的金字塔中单元测试的比重比较大
- 实操中单元测试的写作难度和投入时间通常都比较大
- 由金字塔模型向纺锤模型的演进,减少单元测试,增加接口测试、契约测试、在线测试
研发交付全流程测试活动
- 流水线构建时,执行单元测试和一些静态代码扫描,这些测试通常由
开发人员
来开展,在开发自测试环境中,执行接口测试、性能测试和接口的安全测试 - 在集成测试环境中,执行系统的功能测试、性能测试以及可靠性等测试
- 在生产环境执行灰度测试、在线冒烟测试、在线拨测
SDE:Software Design Engineer(软件设计工程师)
TE:Test Engineer(测试工程师)
最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯。同时,我在公众号中分享了精心整理的一些视频资料(包括 Python全栈教程、AI教程、前端、数据库等),大家回复相应关键词即可获取网盘视频链接,感谢大家的关注😊
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)