1、基本断言

基本断言应该表达某种假设或意图,它们应该声明代码的行为。基本断言的问题在于它缺乏意义,因为断言的基本原理和意图隐藏在看上去无意义的单词和数字背后,造成难以理解,并且难以验证断言的正确性。

改进方法:

  • 要用被测功能的语言和词汇表达你的断言,每看到!=或==比拉符的断言,持别是涉及-1或0的数字时,就要考虑抽象层次是不星正确,如果断言不能立即显示出意义,就很可能是基本断言,需要重构。

2、过度断言

过度断言( hyperassertion)是如此谨慎地敲定每个待检查行为的细节,以致它变得脆,并且掩盖了整体广度和深度之下的意图,它可能会使测试打断的频率远超平均水平,可能造成无论任何变化都会造成输出与期望不同。

改进方法:

  • 识别无关细节并将其从测试中移除
  • 拆分测试。

3、按位断言

按位断言是基本断言的一个特殊情况,也称为"这个运算符又干了什么?”,通常出现在断言两个布尔值的位运算结果是否为真的情兄下,断言的可读性会较差。

改进方法:

  • 用一个或多个布尔运算符来替换位运算符,清晰地依次表达期望。

4、附加细节

可读性源于快速和忠实地向读者展示意图、目的和意义。如果附加细节过多,会对可读性造成障碍。

测试的本质应当是开门见山,为此应该遵循以下几个准则:

  • 将不必要的安装抽取到私有方法或安装部分
  • 起个恰当的、描述性的名字
  • 二个方法内尽量只有一个抽象层次

5、人格分裂

测试的人格分裂,是指测试本身体现了多个测试,一个测试应当仅检查一件事并妥善执行。

改进方法:

  • 将一个测试类分解为多个测试类
  • 去掉重复内容
  • 分离场是,抽取测试方法。

6、逻辑分割

如果代码是分散的,需要额外的精力去寻找,就会增加你的认知负担。

在则试代码中信息分散的例子是,在被测领域中普遍地引入对更大数据块的操作,而非针对偶然的float,int或名为 firstName的 Sting.

改进方法:

最简单的方去是内联外部信息,将所有代码和数据都移动到测试中来使用,某些数据和逻辑适合内联,另一些最好保持独立。简单的判定原则:

  • 如若短小则内联之。
  • 如若过长,则将其藏到工厂方法或测试数据收据构建器背后。
  • 如若不便,则拉进单独的文件

如果非要选择外部数据文件,也要遵循下面准则:

  • 修剪出必须的数据
  • 将数据文件与使用它们的测试放在同一文件夹中
  • 无论选择哪种结构,都要计团队觉得方便,并坚持下去

7、魔法数字

魔法数字是嵌入到赋值、方法调用和其他语句的数字值。

改进方法:

  • 用常量变更替换它们,从而给予数字更加想要表达的意思,使代码更容易阅读。

8、冗长安装

将大块用来准备测试场景的代码移动到安装方法中

改进方法:

  • 从安装中抽取无关细节,放入私有方法。
  • 给予适当的、描述性的命名
  • 在安装中争取做到同一抽象层次

9、过分保护

在测试代码中运用“增加守卫语句和其他空值检查”的策略,保护测试免于以NullPointerException而失败。

改进方法:

删除冗余的断言。即使没有assertNotNull,你也能点击导致 NullPointerException的栈跟踪,带你到 assertEquals对于空引用报错的那行。

——————————————————

参考原文:

http://www.yujinxiangqiangzhi.com/rjgc//m/9949.html

软件工程9个测试坏味道相关推荐

  1. 不讲码德!坏味道偷袭我这个老码农

    作者 | 雷架 来源 | 爱笑的架构师(ID:DancingOnYourCode) 大家闭上眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范.注释合理.高内聚低耦合-- 人人都 ...

  2. 代码坏味道之非必要的

    :notebook: 本文已归档到:「blog」 翻译自:https://sourcemaking.com/refactoring/smells/dispensables 非必要的(Dispensab ...

  3. C#类中的internal成员可能是一种坏味道

    前言 最近除了搞ASP.NET MVC之外,我也在思考一些编程实践方面的问题.昨天在回家路上,我忽然对一个问题产生了较为清晰的认识.或者说,原先只是有一丝细微的感觉,而现在将它和一些其他的方面进行了联 ...

  4. 讲点码德!避免这些代码坏味道,努力做一名优秀的程序员

    Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...

  5. 代码的坏味道与重构技术

    一.前言 本文大部分内容.图片来自Martin Flower的<Refactoring>一书以及refactoringguru网站(一个很棒的网站),之前在博客发表过,这次属于整理后重新发 ...

  6. 讲点武德!避免这些代码坏味道,努力做一名优秀的程序员

    Martin Fowler:任何一个傻瓜都能写出计算机可以理解的代码.唯有写出人类容易理解的代码,才是优秀的程序员. 大家闭着眼睛想一下什么是好代码?也许你的脑海中漂浮着一堆词:干净.整洁.命名规范. ...

  7. 《重构 改善既有代码的设计》之代码的坏味道

    1 简介 知道"如何"不代表知道"何时".决定何时重构.何时停止和知道重构机制如何运转一样重要. 从我们的经验来看,没有任何量度规矩比得上一个见识广博者的直觉. ...

  8. 支付宝网银直连SDK封装记下|强力去掉支付宝网银直连DEMO中56个坏味道 余下6个坏味道 Sonarqube无视阿里支付宝光环

    " Yuema约吗?一起学技术,一起成长!学海无涯 高人带路系列" 程序的世界,就是有坑的地方!分享踩坑的心得与体验!每天分享一点点! 关注公众号,进入学海无涯,高人带路模式!!支 ...

  9. 25种代码坏味道总结+优化示例

    前言 什么样的代码是好代码呢?好的代码应该命名规范.可读性强.扩展性强.健壮性......而不好的代码又有哪些典型特征呢?这25种代码坏味道大家要注意啦 1. Duplicated Code (重复代 ...

最新文章

  1. Gentoo 安装日记 01 (工具准备)
  2. dataframe常用处理
  3. 项目管理六大制约因素_用PCTS理念做好项目管理规划(优秀项目管理者必知)...
  4. Ubuntu C++ Thread Sleep
  5. get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...
  6. python 列表副本_列表副本不工作?
  7. java.lang.IllegalArgumentException: Could not resolve placeholder ‘stu.age‘ in value “${stu.age}
  8. KINGBASE人大金仓数据库安装配置手册
  9. EF安装和更新数据库
  10. 搭建亿万级别短信服务发送平台
  11. 目标板(linux)与PC 网卡 直连(TFTP)
  12. 柱形图如何在每根柱子上都显示数据
  13. N-ary 题型总结
  14. 租房信息采集并做数据分析
  15. 如何通过频率计算波特率
  16. c语言单身狗题目罩得住学长,我家系统用爱发电
  17. 妙味课堂H5音乐播放器实战视频课程 ajax实战教程
  18. CSS弹性布局网格布局
  19. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智慧民政服务平台xl2r9
  20. excel查找重复项

热门文章

  1. Android 关于android:foreground设置无效的问题
  2. 美术基础-明暗与透视
  3. React 实现页面全屏效果
  4. .NET6 MAUI Preview 4 尝鲜教程
  5. 110A.Nearly Lucky Number
  6. [转]通过编程模式起底小程序开发技术特点
  7. 新媒体短视频运营门槛高吗
  8. 额外vss水水水水水水
  9. 文献阅读-医学超声图像分割-利用边界距离回归和像素分类网络实现超声图像肾脏自动分割
  10. mysql drop table很慢_MYSQL缓慢的drop table 操作_MySQL