软件工程9个测试坏味道

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值