华为云DevOps系列之 —— 持续测试与反馈(一)敏捷软件测试理念、方法与实践

举报
ruochen 发表于 2021/08/16 12:55:47 2021/08/16
【摘要】 华为云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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200