草庐IT

深聊测开领域之:一文搞懂什么是敏捷测试,如何做敏捷测试,建议先收藏再学习。

Carl_奕然 2023-11-26 原文

敏捷测试

1、引言

小屌丝:鱼哥,在忙呢?
小鱼:昂, 不忙,再看会书。
小屌丝:嘿嘿, 不忙的话, 那帮我讲一讲敏捷测试啊。
小鱼:嗯?前一句你说啥?
小屌丝:帮我讲一讲敏捷测试啊
小鱼:不对,前一句
小屌丝:忙吗?
小鱼:忙啊…
小屌丝:别啊,鱼哥, 我这澡票都准备好了,给我讲明白了, 咱俩就泡澡去。
小鱼:这澡票别过期了,我这就讲一讲敏捷测试。

2、解析敏捷测试

2.1 含义

敏捷测试,即:Agile testing, 也是一种测试。

敏捷测试是遵循敏捷宣言的一种测试实践:

  • 强调从客户的角度,即从使用系统的用户角度,来测试系统;
  • 重点关注持续迭代地测试新开发的功能,而不再强调传统测试过程中严格的测试阶段;
  • 建议尽早开始测试,一旦系统某个层面可测,比如提供了模块功能,就要开始模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试过内容的正确性

2.2 特点

敏捷测试的特点很明显,即:

  • 协作更强

    • 敏捷开发人员和测试人员工作得更加紧密,喜欢更直接的沟通方式而不是通过邮件文档这种一来一回反反复复的沟通模式
  • 周期更短

    • 需求验证或测试的时间不再是按月来计算,而是按天甚至按小时计算。用户验收测试在每个sprint的结尾都会进行
  • 计划更灵活

    • 敏捷测试也需要拥抱变化,测试计划不再是一成不变的文档,而会根据业务价值交付的顺序进行灵活的调整
  • 高效的自动化

    • 相比传统测试,自动化在敏捷测试中扮演了极其重要的角色。它是实现快速交付确保质量的一种非常有效的手段

2.3 为什么要进行敏捷测试

敏捷测试除了适应敏捷开发外,还有4点,即:

  • 缩短交付周期
    • 通过采用敏捷测试这种模式,可以契合整个敏捷开发周期,使得整个敏捷开发按照相同而快速的迭代速率和周期交付,让最终用户尽快获取到业务价值;
  • 更早发现测试风险
    • 敏捷测试使得测试人员尽早开始进行测试,尽早的发现系统缺陷或存在的问题,避免所有的问题都堆积在最后的测试阶段形成“Big-bang”的结果,降低整体系统风险;
  • 强调质量属于大家
    • 质量是构建出来的,而不是测出来的。敏捷测试一直强调质量属于每一个人的责任,除了测试之外,开发、产品经理等都有义务对自己的交付件质量负责,这样才能确保项目的整体质量;
  • 化繁为简节省成本
    • 敏捷测试没有要求需要详细的测试计划和测试文档,也没有定义繁复的测试流程及缺陷流程,这种轻量级的管理模式为测试人员减少不必要的负担,节省了工作量及成本。

2.4 敏捷测试与传统测试对比

对比项敏捷测试传统测试
测试阶段测试发生在每一个迭代里测试发生在最后阶段
团队沟通团队之间沟通正式、非正式团队间沟通时正式的
自动化高度推荐以及引用非必须
测试主导以最终用户为准以需求文档为准
测试计划精细的测试计划详细的测试计划
计划有效性计划分不同的级别,①前期为粗粒度的计划,②在Sprint及后续Sprint为’Just -in -time’式的计划计划是一次性的
主导团队被授权和主动参与到计划中项目经理计划整个团队的工作
需求颗粒度项目前期,允许High-Level 需求详细的需求

2.5 如何迁移敏捷测试

传统的测试,如何迁移到敏捷测试中,或者,传统测试如何完美的平移敏捷测试呢?
有以下几点,即:

  • 组织文化的转变
    • 组织文化是一个被用在覆盖组织方方面面的术语——从基本的认识、态度和价值观到组织特定的语言、知识和技术等;
    • 在敏捷文化中,相比于流程,敏捷更关注人,所以敏捷测试组织是应该是以人为导向、自组织、协作式的一种文化氛围;
  • 组织架构的调整
    • 从项目特点来看,敏捷是属于“强项目型”管理的方式,所以如果以前是属于职能型的组织架构,比如开发人员隶属开发部门,测试人员隶属测试部门,那么在敏捷项目中需要进行调整;
    • 发和测试同属一个项目一个团队,大家的目标是一致的,就是要保证项目的成功。所以测试人员可能会帮开发人员评审代码,开发人员也会帮测试人员进行测试,人员角色的职能变得模糊化;
  • 人员培训与指导
    • 任何新的方法如果没有进行相关培训和了解,会让具体执行人觉得不安而没有底气;
    • 敏捷项目中测试人员在进行测试前也需要接受敏捷知识的培训;
  • 轻流程
    • 敏捷强调轻流程,尽量减少不必要的文档,使得整个开发模式变得轻快;
    • 所以在设计流程和交付件时,需要充分考虑这个特点,尽量简化。当然,少文档不是代表不用写任何文档,一些必要的文档还是需要有的。

2.6 敏捷测试成功因素

针对 Lisa Crispin在《敏捷软件测试:测试人员与敏捷团队的实践指南》中总结了敏捷测试成功的七大关键要素,这里提炼出来以下几点,即:

  • 领导层的支持
    • 任何一个改变要想实施成功,都离不开领导层的大力支持;
    • 从领导层的角度需要提供一个宽松的环境,让整个敏捷测试团队能够形成自组织的模式;
    • 当遇到问题时不是进行追责,而是给予足够的信任和支持,帮助团队度过难关,陪伴团队的成长;
  • 测试人员具备敏捷思维
    • 测试人员需要了解敏捷,掌握敏捷的基本知识和原则,从而才能在整个敏捷体系中更快的融入到敏捷环境中,从而更好的开展整个测试工作;
  • 要有勇于尝试的信心
    • 相比传统测试来说,敏捷测试比较新;
    • 很多测试人员对于新的事物不敢去尝试,做事畏畏缩缩、裹足不前。因此需要测试人员有敢于尝试的决心,不怕做不好,就怕不去做;
    • 只有做了,才知道哪里行哪里不行。然后再根据不足进行优化,从而最终取得成功;
  • 与各方紧密协作
    • 在敏捷项目中,测试人员与其他方的直接沟通会非常频繁;
    • 测试人员不仅需要和开发人员紧密协作,还需要和产品经理甚至是最终用户保持频繁的沟通,使得整个测试更有效率;
  • 自动化
    • 自动化是敏捷测试非常重要的元素;
    • 在敏捷开发这种极短的交付周期内,如果仅仅靠手工测试,则非常难以满足快速发布要求的。所以自动化测试是必不可少的一种手段;
    • 这里的自动化不仅仅只是指单纯的自动化测试,还包括自动化测试如何集成在整个交付管道中,缩减整个交付时间,实现持续集成甚至是DevOps,最终给项目带来价值。

3、总结

看到这里,今天的分享就查不到该结束了。
今天主要针对什么是敏捷测试,进行了详细的分解说明。
在当前互联网环境下,如果还在走传统的测试流程,后期多半会被淘汰了。
记住:敏捷测试→TestOps 才是未来。

我是小鱼

关于小鱼,带你学习更多更专业的测试开发领域知识。

有关深聊测开领域之:一文搞懂什么是敏捷测试,如何做敏捷测试,建议先收藏再学习。的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  6. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  7. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  10. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

随机推荐