华为云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)