• 0
  • 0
分享
  • 测试驱动开发应该是一种思维而不仅是实践——软件测试圈
  • 饭团🍙 2022-10-28 13:34:11 字数 1896 阅读 913 收藏 0
测试驱动开发可以在很多环节里体现,同样,我们也可以主观地把TDD的思维运用到各个环节当中去。

相信对敏捷熟悉的朋友对测试驱动开发(TDD)的概念都不会陌生。测试驱动开发强调通过预定义的测试标准驱动开发写出符合标准的代码。不过现在越来越多人会把TDD等同于单元测试驱动开发,即UTDD。我并不否认UTDD的价值,不过我更想强调应该把TDD当作一种思维。TDD的思维其实非常合理,做任何事情都应该有一个预期的目标和标准,如果目标和标准不清晰,就很难确保产出的价值。

“The original description of TDD was in an ancient book about programming. It said you take the input tape, manually type in the output tape you expect, then program until the actual output tape matches the expected output. After I’d written the first xUnit framework in Smalltalk I remembered reading this and tried it out. That was the origin of TDD for me. When describing TDD to older programmers, I often hear, “Of course. How else could you program?” Therefore I refer to my role as ‘rediscovering’ TDD.”

—Kent Beck, re-discoverer and namer of Test-Driven Development

从Kent Beck的表述来看,TDD最初也更像是一种思维,并且应该是理所当然的做事方式。

回到研发工作当中,测试驱动开发可以在很多环节里体现,同样,我们也可以主观地把TDD的思维运用到各个环节当中去。例如:

契约测试

契约测试是期望消费者和提供者之间基于预先定义的契约进行协作的实践。所以我们可以认为契约测试符合测试驱动开发的思维,这样的协作过程规范了写作标准,避免了传统的口头或文档承诺带来的交付结果与预期不匹配的问题。

需求验收标准

在敏捷团队中教练会经常强调验收标准的重要性,而实际上验收标准对任何一个团队都不可忽略。验收标准在需求梳理过程中,迭代计划阶段都成为团队参考的重要依据。而在Thoughtworks推行的实践中,“开卡”也是把验收标准的价值进一步延伸的实践。

“开卡”的做法是在具体的开发人员准备开发某一个用户故事之前,需要基于自己对需求的理解并结合验收标准向产品、测试以及相关人员讲述对需求的理解。通过这种方式对齐需求验收标准,降低功能开发产生偏差的风险,同时也是质量内建的有力措施。当然,除了开卡之外,还有行为驱动开发(BDD)等实践都是把验收标准与研发过程有效结合的实践。而类似的实践都符合测试驱动开发的思维。

标准驱动

通过以上的实践我们能理解测试驱动开发的思维,会强调先有参考标准,再基于标准去实现交付。自然我们也可以把这种思维进一步扩展到更多的层面,比如通过预定义的标准驱动团队的行为。而在现实情况下却也并不容易。

不管哪种场景下,遇到的第一个问题就是如何制定标准、如何确保达成共识的标准、标准如何保持更新。

很多团队对标准的第一印象往往是固化了大家的行为,对团队要求又提高了,推广时阻碍太多等等。而基于这些担心和固有印象一直守着原有的工作模式不想改变。

第二个关键点则是如何驱动。标准驱动在有了标准之后面对的就是如何产生驱动力的问题。我也见过太多的团队标准都是有的,却发现总是不能按照标准执行。有人说标准不适合自己,有人说标准太多影响现有工作,也有人说标准增加了工作复杂性。所以,往往在标准没有执行之前就被否定了。而让团队愿意依据标准执行无非从两个角度入手:

第一是标准要与团队甚至个人痛点相结合;

第二是标注的产出要获得团队的共识和认可。

回到本文主题上,测试驱动开发的运用是在理解测试驱动开发思维的前提下,找到适合的场景运用适合的实践的过程。从我们比较熟知的UTDD到ATDD,再到BDD以及本文延伸出的很多观点,都不是对所有团队通用的。与敏捷本身类似,思维永远是实践的基础!


作者:杨久成

文章链接:https://www.51cto.com/article/721436.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 又是一条让人看不懂的新闻。8月18日,网红奶茶茶颜悦色在南京开业,一大早还没开门店铺外就排起长队。开业大约半小时左右,就因人流量过大造成拥堵,不得不暂停营业。因为生意过于火爆而关门已经足够匪夷所思了。而在部分交易平台上,可以看到该奶茶代购代排服务,代购一杯奶茶的价格最高达200元。换句话说,光代购费就是奶茶本身价格的10倍了。什么样的奶茶有这样的吸引力?此情此景,让人不禁问一句:“它会魔法吧?”2022年8月18日,南京,茶颜悦色新街口门前,消费者在观看暂时闭店公告。作为一个喝了多年奶茶的人,我仍然表示不能理解这种狂热。价格炒到这个高度,这一杯奶茶早已不是奶茶本身了。这个时候,谈论这杯奶茶有多...
            0 0 1475
            分享
          •   如果说,2020年对于全世界来说,都是一场极大地挑战的话;那么,2021年绝对是机遇多多的一年。因为,随着疫情在全球范围内逐步得到控制,无论是国际还是国内的环境,都会呈现逐步回暖的趋势。  那么,2021年,软件测试行业的形式又会变得如何呢?行业从业者已经饱和了吗?如果饱和了,行业从业者将如何破局?如果没饱和,什么样的人适合走入这个行业呢?  2021年,软件测试行业趋势分析和热门招聘方向  今天,我们就这些问题,来聊一聊2021年软件测试行业的7大主流趋势。希望能解决一部分小伙伴心中的困惑。  软件测试行业前景怎样?  1)主观感受  之所以会有这么多人担心这个问题,主要还是因为很多想转...
            11 11 1855
            分享
          • 零、为什么做金融类软件测试举个栗子,银行里的软件测试工程师。横向跟互联网公司里的测试来说,薪资相对稳定,加班少甚至基本没有,业务稳定。实在是测试类岗位中的香饽饽!一、什么是金融行业金融业是指经营金融商品的特殊行业,它包括银行业、保险业、信托业、证券业和租赁业往往涉及证券、银行、基金、信托、保险、投行、期货等领域二、金融行业的业务特点随着金融行业的业务不断增加,金融交易模式的不断变化,金融机构对信息化的要求也越来越高,高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量,对金融行业软件的测试人员来说,也提出了更高的要求1. 金融行业的业务特点数据量大数据量大,金融企业为顺应金...
            0 0 2158
            分享
          • 上一节我们讲了拿到需求文档后,设计测试用例的过程。在这里我们再来快速回顾下,首先,深入理解需求,熟悉需求细节;其次,了解技术实现,挖掘潜在隐患;再次,有计划有步骤,设计测试用例;最后,补充异常情况,完成查漏补缺。这一讲,我们将对上面这个过程中的第四阶段,补充异常情况进行展开阐述。因为这一阶段,能够最好的体现我们测试工程师对产品测试质量的把握。我们将从下面几个方面进行介绍。结合业务补充用例首先,也是最重要的,就是要结合业务补充用例。只有对业务足够熟悉,才能够更好的完成我们对用例的补充。我们可以从以下几个方面去做检查补充。我们可以从当前需求所在模块与其他模块的边界去进行用例的补充。如果当前需求是和...
            0 0 54
            分享
          •   网关是指内部服务和第三方外部服务交互的接口,常见的网关有通过渠道引入外部用户的通用网关、和支付商户对接的支付网关、获取第三方数据的数据网关等(一种是我们提供给第三方调用,一种是去调用第三方,这里重点讨论第二种)。  因为网关接口需要依赖第三方响应的结果,而不管我们请求参数如何,第三方测试环境响应结果基本固定,不一定会出现我们想要的情况。  还有一种情况是测试账号的原因,比如缺少有效的信用卡号、有流水记录的淘宝卖家账号等,导致我们使用的测试账号只能覆盖单一的情况。  虽然对网关来说大部分时候只要能和第三方调通就可以,但是线上情况不可控,只验证正常情况当然不够严谨,需要确保各种可能出现的异常情...
            0 0 963
            分享
      • 51testing软件测试圈微信