软件自动化测试实战解析:基于Python3编程语言
上QQ阅读APP看书,第一时间看更新

2.15.1 assertion

断言(assertion),在自然语言的交流中,是指“非常有信心的、明确的肯定”,比如:

·学生的大学英语四级考试分数不应该小于0。

·人类的身高不会大于3m。

·三角形两边长度之和大于第三边。

·高考考生双一流大学的录取比例不可能高于1(100%)。

·人类一天最多走15万步。(请特别留意这一条,断言的内容并不一定是“物体速度不可能超过光速”这样的宇宙真理,也可以是某个具体的问题域的安全设定,即使这个设定在某些极端情况下会被打破。)

这些断言可能是生活中的常识,或者是某个应用领域的基本共识,甚至是某个小的组织达成的小范围内的一致认定。

那这和编程有什么关系呢?

在实际的软件应用场景中,业务逻辑很可能比较复杂,需要经过很多计算和处理步骤,每个步骤都是基于之前步骤的阶段性结果,最后得到最终结果。但是,如果某个中间步骤的阶段性结果出错了,继续后续的处理就没有意义了。所以,每个步骤开始之前,我们都希望程序逻辑和数据处于一个合理的状态,不要有显而易见的意外。

但是,很多意外是应用逻辑上的意外,在代码层面并没有问题。比如,在统计高考考生录取数据的时候,我们可以用一个浮点数来表示双一流大学的录取比例。


admission_ratio_double_a = calculate_double_a_admission(scores)

如果这个函数计算过程有bug,返回的结果是浮点数“1.1”,这显然不合常理。但是,从代码的角度来看,这是一个再正常不过的浮点数了。如果接下来我们基于这个结果计算非双一流大学的录取比例,会得到一个负数值,这就更加不合理了。

我们希望每个步骤都是基于合理的起始状态,在编程语言中,我们用断言来进行这样的确认操作。