携程大牛的单元测试是怎么样写的?

这篇具有很好参考价值的文章主要介绍了携程大牛的单元测试是怎么样写的?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家都知道,开发软件的时候为代码编写单元测试是很好的。但实际上,光有测试还不够,还要编写好的测试,这同样重要。

要做到这一点,考虑遵循一些固执的原则,对测试代码给予一些关爱:

1. 保持测试代码的紧凑和可读性

要做到这一点,应该要进行毫不留情的重构,就像对生产代码应该做的那样。否则让测试代码随着时间腐化,就是在测试里面制造可怕的遗留代码。如果测试不能很容易重构,那么生产代码也很难重构,从而导致生产系统的遗留代码。始终做一个勇敢的重构者。

2. 避免编写重复累赘的断言

举个例子,测试代码使用正则表达式生成内容,而这个正则表达式是跟生产代码的解析器中使用的一模一样的。

一般来说,我们不希望在测试和代码之间复制逻辑。因此,在测试中复制正则表达式或其他内容不是一种选择。在这种情况下,考虑测试输入激励/输出结果之间的关系(f(输入) - >输出)可能会有帮助,例如,如果代码的目标是要做模板替换,不要在测试代码里用原始值来做替换。相反,在测试里面直接指定预期的计算结果。

 // 使用
  Assertions.assertThat(processTemplate("param1", "param2")).isEqualTo("this is 'param1', and this is 'param2'"));
  // 而不要用
  Assertions.assertThat(processTemplate("param1", "param2")).isEqualTo("this is '%s', and this is '%s'", param1, param2));

3. 覆盖尽可能多的范围,包括正面情况,以及(甚至更重要的)出错的代码路径。

通常,要做到这一点,最好的办法试采用测试驱动开发(Test Driven Development)。通过TDD,人们可以在设计时识别可能会出错的部分。不要羞于为一段小代码编写一个简单的测试用例。你永远不知道什么时候,为什么以及以什么方式,你会要用到甚至修改这段代码。

可以研究一下如何检查测试的有效性,类似PIT这样的工具可以进行变更测试,值得研究一下。

4. 不要Mock你不拥有的类型!

这不是一个硬界限,但越过这条线很可能会产生反作用力!

TDD是关于设计的,也是关于测试的,两者一样重要,在模拟外部API时,测试不能用于驱动设计,API属于第三方;这个第三方可以,并且实际上也经常会更改API的签名和行为。

想象一下Mock第三方Lib的代码。在第三方库的某次升级之后,它的逻辑可能会改变,但测试套件仍会执行得很好,因为它被Mock了。所以后来,你认为一切都很好,毕竟构建墙是绿色的,软件部署上去,然后......嘣。

如果你感觉需要Mock第三方库,可能表明你当前的设计与第三方库没有足够的分离。

另一个问题是第三方库可能很复杂,需要大量的Mock才能正常工作。这导致过度指定的测试和复杂的测试辅助装置,这本身就损害了紧凑和可读的目标。或者由于模拟外部系统过于复杂,从而导致测试代码对生产代码的覆盖不足。

取而代之的最常见的方法,是围绕外部lib / 系统创建包装器,尽管应该意识到抽象泄漏的风险,其中过多的低级API,概念或异常超出了包装器的边界。为了验证与第三方库的集成,编写集成测试,并使它们尽可能紧凑和可读。

5. 不要Mock一切,这是一种反模式

如果一切都被Mock,我们真的在测试生产代码吗?该不Mock的时候,不要犹豫!

不要Mock值对象

为什么人们甚至想要这样做?

因为实例化对象太痛苦了! => 不是正当理由。

如果创建新的对象太难了,那么代码可能需要一些严肃的重构。另一种方法是为您的值对象创建构建器 - 有一些工具,包括IDE插件,Lombok和其他。还可以在测试类路径中创建有意义的工厂方法。

  public static Customer customer_with_a_single_item_in_the_basket() {
         // long init sequence
     }
  }

Mockito专注于对象之间的相互操作,这是面向对象编程的核心部分。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

携程大牛的单元测试是怎么样写的?,单元测试,测试工具,功能测试,selenium,python,测试用例,postman

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

携程大牛的单元测试是怎么样写的?,单元测试,测试工具,功能测试,selenium,python,测试用例,postman

 文章来源地址https://www.toymoban.com/news/detail-848395.html

到了这里,关于携程大牛的单元测试是怎么样写的?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化测试工程师的发展前景怎么样?

    根据各大网络招聘平台的数据显示,越来越多的企业在招聘测试工程师的时候,都开始重视自动化测试这一重要技能。早在四年前,自动化测试的人才需求和薪资待遇就开始一路上涨。如果你问:自动化测试工程师的发展前景怎么样?好不好?答案无疑是肯定的,不论是行业

    2024年02月12日
    浏览(39)
  • ATE测试工程师还有发展前景吗?薪资待遇怎么样?

    近年来,芯片行业大火,不少学生想要转行,但奈何门槛太高。但其实一些岗位的招聘需求并不高,而且薪资待遇也比较可观。比如ATE工程师。目前芯片就业市场上ATE测试工程师非常紧缺,基本上大部分的芯片设计公司都存在这方面的人才缺口。 ATE是Automatic Test Equipment的缩写

    2023年04月08日
    浏览(37)
  • 出道即封神的ChatGPT,现在怎么样了?ChatGPT想干掉测试人员,做梦去吧

    从互联网的普及到智能手机,都让广袤的世界触手而及,如今身在浪潮中的我们,已深知其力。 前阵子爆火的ChatGPT,不少人保持观望态度。现如今,国内关于ChatGPT的各大社群讨论,似乎沉寂了不少,现在怎么样了? 我们先来复盘,ChatGPT是一款人工智能聊天程序,去年11月底

    2024年02月03日
    浏览(51)
  • 做接口测试的流程一般是怎么样的?UI功能6大流程、接口测试8大流程这些你真的全会了吗?

    在讲接口流程测试之前,首先需要给大家申明下 :接口测试对于测试人员而言,非常非常重要 ,懂功能测试+接口测试,就能在企业中拿到一份非常不错的薪资。 这么重要的接口测试,一般也是面试笔试必问。 为方便大家更好的记住接口测试流程,先给大家普及下最常见的

    2024年02月04日
    浏览(31)
  • 低代码技术怎么样

    低代码技术是IT行业的一种新技术,主要通过可视化图形模型化建立应用程序,从而使得开发速度更快、迭代周期更短。数聚股份将从低代码技术及其优缺点,以及如何在软件开发中正确地使用低代码技术为切入点,详细讲解一下低代码的应用。 低代码技术优点 低代码技术主

    2024年02月13日
    浏览(39)
  • 证照之星软件怎么样?证照之星怎么换背景色

    随着科技的快速发展,越来越多的软件应用于各个方面,为人们的生活和工作带来便利。今天,我们要介绍的就是一款证件照制作方面的软件——证照之星。那么,证照之星到底是什么软件?它好用吗?这篇文章将为大家详细解答。 一、证照之星是什么软件 证照之星是一款

    2024年02月16日
    浏览(33)
  • 嵌入式就业怎么样?

    嵌入式就业怎么样? 现在的IT行业,嵌入式是大热门,下面也要来给大家介绍下学习嵌入式之后的发展以及就业怎么样。   首先是好找工作。 嵌入式人才目前是处于供不应求的状态中,据权威统计机构统计在所有软件开发类人才的需求中,对嵌入式工程师的需求达到全部需求量

    2023年04月24日
    浏览(31)
  • 谷歌的Bard怎么样?

    Bard是什么? ChatGPT: Bard可以指以下几种事物: Bard是一个英雄联盟(League of Legends)游戏中的角色名称,他是一个能够进行攻击和治疗的辅助英雄。 Bard是指中世纪欧洲的一类文学艺术家,主要从事吟游诗人的活动,通过口头传统的方式来讲述历史故事和传说。 Bard是指一种用

    2024年02月10日
    浏览(30)
  • 成都北大青鸟怎么样?

    对于任何一个培训机构的了解大概的流程是:听说名字——网上搜索,可以看到机构官网,也会看到机构广告,当然也会看到各种有好有坏的评论,到这里会对机构形成初印象;然后如果身边有培训出身的小伙伴会去询问对机构有没有了解等等。 然后就开始考虑线下实地考察

    2023年04月08日
    浏览(32)
  • 现在学习python怎么样

    Python,年龄可能比很多读者都要大,但是它在更新快速的编程界却一直表现出色,甚至有人把它比作是编程界的《葵花宝典》,只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁,高效的特点,大大提升了程序员的编码速度,极大的提高了程序员的办公效率,

    2023年04月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包