游戏测试——边界测试

正常人买到面包:看下生产日期,看下保质期,嗯,没问题,开吃。

测试人员买到面包:

  • 明天过期?那我今晚上23:59:59把面包塞嘴里,食品还会过期吗?
  • 明天过期?那我今晚上23:59:59把面包吞进肚子里,我算吃的过期食品吗?
  • 明天过期?那我今晚上23:59:59把面包的一半卡在嗓子外面,一半卡在嗓子里面,那会算一半过期一半没过期吗?

是不是觉得测试就跟神经病似的。
但是不要怕,任何行业都会有职业病,我们只是犯了一个打工人都会犯的错误~~~
游戏测试人员对于“边界”都会有很高的敏感度,因为边界是最容易出bug的地方。
那么言归正传。

什么是边界测试?

顾名思义,在边界上进行测试。
由长期测试工作经验得知,大量的错误是发生在输入域或输出域的边界上,因此针对各种边界情况进行测试,可以有效查出更多的错误,并且也能节约更多的时间。

如何进行边界测试?

只做最大和最小值的测试吗?
当然不是。
举个栗子:
上帝给你的设定,是一天最少吃一碗饭,否则就会饿死。并且一天最多吃八碗饭,否则就会撑死。在这里插入图片描述
那么我们已经了解你的基本数据了。最小值为1碗,最大值为8碗。
但我们要测的数据,不仅仅是1和8,还要测试0、9、2、7这几个值。
为什么呢?
测试1和8,我们的预期结果是,你不会饿死和撑死。
测试0和9(有时需要更多,例如10、11等),我们的预期结果是,小于1的数值会饿死(即便是0.9),大于8的数值会撑死。
测试2和7,我们的预期结果是,你不会饿死和撑死。这个的结果应该与1和8一致。
在边界值的定义上,我们管1和8这样的数据叫做“上点”。

上点:即边界上的点,如果该域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。
【1,8】,(1,8),【1,8),(1,8】的上点都是1和8。
而0和9这样的数据,就叫做“离点”。
离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外;如果域的边界是开放的,离点就在域范围内。
即【1,8】的离点是0、9。(1,8】的离点是2、9。而(1,8)的离点则是2、7。
离点的值比较特殊,我们在测试的时候不一定非得取离点的这两个值,而是要取离上点最近的那几个值。
至于2和7,自然就是内点了。
内点:域内的任意点都是内点。
通常来说,内点,我们只需要测2和7就够了。
你吃两碗饭没事,吃七碗饭没事,吃3、4、5、6还能有什么事吗?
(当然,逻辑上是这样,不过通常我们需要随机多选几个数值进行测试)
在这里插入图片描述
以上是属于比较简单的情况。真实情况往往会更加复杂。

例如:
边界不仅仅是数字,也可能是一些特殊的符号、非数据边界值例如地图边界(二狗曾经拿两个连接在一起的家具在地图边缘疯狂摩擦,结果两个连接在一起的家具自动分裂了— —!)等。

又比如:
有的边界不仅是一个方向,他可能是多个方向。
①例如上面虽然说了最少1碗,最多8碗,那么有没有考虑过天数的情况呢?
如果我在23:59吃饭,用时一小时,吃完后,这碗饭是算在昨天还是算在今天呢?
如果我在23:00吃饭,用时一小时,刚好卡在第二天00:00吃完,上帝的需求是我该饿死还是不该饿死?真实情况又是如何呢?我有没有满足上帝的需求呢?
②还有一种更离谱的。
吃了9碗饭就会撑死,但是如果我吃9百万碗饭会怎样?
我们肯定是需要询问上帝,碗饭的输入极限是多少。这又是一个边界了,所以我们需要围绕此边界进行更多的测试。

这些测试基本都是围绕着边界进行,我们需要做的,一是要注意到这个边界,不能将它忽略,二是要围绕这个边界进行更多的测试,要考虑各种特殊情况。

猜你喜欢

转载自blog.csdn.net/ppap_/article/details/129348684