敏捷测试--以持续测试促进持续交付 朱少民

文章讨论了敏捷测试的概念,指出它不是特定的测试方法,而是一套适应敏捷开发的全面解决方案。敏捷测试强调与开发协作、自动化、客户视角和灵活的策略调整。作者分享了对“敏捷测试宣言”的看法,提出“可运行的测试脚本”与“测试用例”同等重要。文章还探讨了敏捷测试流程中的测试左移和测试右移,以及敏捷测试面临的风险和应对策略。
摘要由CSDN通过智能技术生成

转载heppy-QA的读书心得:

第一感

敏捷测试是伴随着敏捷开发而来的,那么什么是敏捷测试呢? 作者给的定义是 :“敏捷测试”既不是一种测试方法,也不是一种测试方式,而是为了适应敏捷开发而特别设计的一套完整的软件测试解决方案。这个解决方案应该能够支持持续交付,涵盖所需的、正确的价值观、思维方式、测试流程、一系列优秀的测试实践和更合适的测试环境、自动化测试框架和工具。敏捷测试可以采用目前已有的各种测试方式、方法,包括手工探索式测试方式,接口自动化测试方式、UI自动化测试方式、边界值等价类方法、组合测试方法等等。与传统测试相比,侧重点有所不同,主要的差别是在价值观、测试思维方式、流程和实践上。敏捷开发具有“敏捷宣言”,相应的作者也给出了“敏捷测试宣言”:

  • 与开发协作测试胜于测试分工与测试工具
  • 可运行的测试脚本胜于写在纸上的测试用例
  • 从客户角度来理解测试需要胜于从已定义的需求来判定测试结果
  • 基于上下文及时调整测试策略胜于遵守测试计划

敏捷测试强调“与开发协作” “自动化测试” ”客户思维“  ”动态的测试策略调整“

对于第2点,我个人不太认同,我觉得“可运行的测试脚本” 和 “写在纸上的测试用例”同等重要,测试脚本的核心仍然是测试用例的设计,设计良好的测试用例、考虑周全的测试点有助于测试脚本的开发。这也是目前我们测试组重视测试用例的原因。对于第3点,目前来说测试组做得不太好,我们基本上都是基于定义的需求来判断测试结果,这也是有原因的,我们测试人员处于研发流程末端,对于ToB的医药行业来说,我们测试组目前缺乏相关的业务知识,测试结果的判定只能来自于需求文档。对于第4点,非常赞同,测试策略必定是基于上下文及时调整的。

该书里面还提到了一个我们经常遇到,开发测试都比较抵触事情:需求定义不清晰。比如我们最近几个迭代版本中,问卷模块 和 传统任务SaaS端的需求,这些需求我们经常听到大家调侃“以实际开发为准”。其实这是正常现象,这叫做“可协商”的需求,这类需求需要有产品,开发、测试协商解决,不断优化,最终适合客户的需求。所以以后我们再遇到类似的需求,不要抱怨产品同学,正确对待。

敏捷测试流程中,包括测试左移和测试右移。测试左移包括参与需求评审,参与研发的设计评审,即提前介入测试。测试右移包括,生产环境的测试:线上性能测试,线上安全测试,A/B测试,线上监控等等。目前我们测试组实践了测试左移,测试右移的思想。左移包括参与需求评审,查看开发的设计文档,提前介入测试;右移包括随时关注线上错误报警,定期测试生产环境。左移和右移还有更多的事情可做,以后会随着需要加强。

敏捷测试不能缺少手工测试和自动化测试。在新的迭代版本中,手工探索式测试效率高;而对于回归测试用,自动化测试是最优的选择。即测试 = 检测 + 试验,检测已知的,试验未知的; 也即测试=基于脚本的自动化检测 + 基于人工的探索式测试。

第二感

一、传统测试与敏捷测试的区别

  • 传统测试更强调测试的独立性,将“开发人员”角色和“测试人员”角色分得比较清楚。而敏捷测试可以有专职的测试人员,或者少量的测试人员,也可以是“全民”测试,即在敏捷测试中,可以没有“测试人员”角色,强调整个团队对测试负责。
  • 传统测试具有明显的阶段性,从需求评审、审计评审、单元测试、集成测试、到系统测试等,从测试计划、测试设计、测试执行、测试报告,逐个阶段往前推进, 而敏捷测绘更强调更早测试、持续测试、持续的质量反馈(就算软件上线,测试活动也没有结束),没有明确的阶段界限。
  • 传统测试强调测试的计划性,而敏捷测试更强调测试的速度和适应性,侧重不断地调整计划以适应需求的变化。
  • 传统测试强调测试测试是由“验证”和“确认”两种活动构成,而敏捷测试没有这种区分,始终以用户需求为中心,每时每刻不离用户需求,将验证和确认统一起来。
  • 传统测试关注测试文档,包括测试计划、测试用例、缺陷报告、和测试报告等,而敏捷测试更关注产品本身,关注可以交付的客户价值。在敏捷测试i中,强调面对面的沟通、协作,强调持续的质量反馈、缺陷预防。
  • 传统测试鼓励自动化测试,但自动化测试的成功与否对测试没有致命的影响,但敏捷测试的基础就是自动化测试,敏捷测试是由良好的自动化测试框架支撑的快速测试。

二、如何测试才更敏捷

  • 需要敏捷测试的思维方式
    • 成长性思维
      测试人员需要具备成长性思维,相信我们自身的能力是可以通过培养不断成长的;面对挑战是拥抱而不是躲避;面对失败不是责备自己、同事,而是需要搞清楚为什么失败以及如何避免再次失败;要内心充满力量、充满自信。
    • 团队对质量负责的思维
      测试守护质量,提供质量信息,甚至帮助团队改善质量,自然是很有价值的,但是如果依赖测试来保证质量,那么其实是很难保证质量的,而且成本很高。应该让整个团队关注质量,从需求开始尽可能一次把事情做对,从而构建出高质量的产品,这对企业来讲更有价值——效率更高,成本更低。
    • 上下文驱动的思维
      上下文驱动的思维是要认识到上下文是一直在变的,测试的测略和方法也要更具上下文及时调整,不段优化,尽可能达到更有效、更高效的测试状态。上下文可以简单地理解为项目所处的环境,以及所要满足的条件等,包括项目人员、风险变化、研发状态、质量标准等。
    • 用户思维
      用户思维的意思是要做对客户有价值的事情。
       
  • 需要构建强大的敏捷测试基础设施
    测试基础设施是支持测试运行、测试开发、测试管理,以及与研发环境集成的综合性平台。敏捷的目标就是要做到持续交付,尽快向用户交付满足需要的、有价值的软件,那么敏捷测试就离不开稳定、高效、准确的基础设施,以满足对于持续交付的需要。而要做到持续交付,需要做到持续运维、持续部署、持续测试、测试集成、测试构建。
    • 持续构建
      包括代码的编译、测试、打包等活动
    • 持续集成
      持续集成关注的是让代码能够工作在一起,以便开展进一步的测试。
    • 持续测试
      持续测试不等于自动化测试,一次迭代中的新功能特性的测试采用手工(探索式)测试更高效,回归测试尽量用自动化的方式持续验证新的代码和功能。
    • 持续部署
      持续部署就是按需部署,通过技术手段随时随地、快速地将软件包部署到各类环境(包括测试环境、准生产环境、生产环境)中,并确保系统可以正常工作。
    • 持续运维
      持续运维要实现全自动的监控、告警、故障定位和自愈,以及自动的数据收集、分析和处理。
    • 持续交付
      持续交付是一种能力,也就是说,能够以可持续方式,安全、快速地把代码变更部署到生产环境,让用户使用。
       
  • 需要测试左移
    测试左移是指让测试尽早开始,把测试活动左移到需求分析阶段,目的是及时发现研发前期的错误,避免将错误带到后面的研发活动中。测试左移通过持续地对产品需求和设计进行评审,及时发现需求定义和设计中的问题,加强单元测试、持续集成等。
     
  • 需要测试右移
    测试右移是指在生产环境中对软件进行测试,即把测试活动延伸到了运维阶段,包括在线性能测试,在线监控告警,安全性监控等。

三、敏捷测试的主要风险

  • 需求不清晰(可协商的需求)
  • 需求频繁变更
  • 时间太紧张
  • 自动化测试的有效性

其实这些风险并不是敏捷测试特有的,只要是软件测试都会遇到这些问题,测试人员要做的是在测试过程中遇到这些风险应该如何应对。测试人员要有能力识别和控制这些风险,可以建立风险项目检查表以及相应措施,示例如下:

类别内容及潜在影响控制措施
需求风险需求不清晰、频繁变更导致测试计划、工作量等发生变化和产品人员充分沟通,深度参与需求评审
自动化测试自动化测试覆盖率、有效性等对测试自动化进行合理的分层测试,提高单元测试和接口测试的覆盖率
人员风险测试人员的状态、责任感等加强团队人员建设
环境风险测试环境是一个模拟环境,很难和实际运行环境一致测试右移,生产环境持续测试
测试范围(广度)很难完成100%的测试覆盖率,有些异常case及细节容易被忽视在有条件的情况下,采用交叉测试
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值