首页 > 代码库 > 论用例健壮性的重要

论用例健壮性的重要

最近出了2个类似问题,此处写下,以作为警醒

问题1:

背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动

需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制。用户等级和代金券等级相同时,用户可领取到这张代金券;否则代金券显示“等级不符不可领取”。

于是我设计用例时这样的:

代金券领取等级: 代金券1(领取等级0),g1(领取等级1)

用户等级:user1(用户等级go) , user2(用户等级g1)

即可以实现以下场景:

user1 --> 代金券1 ,等级相同,可以领取

user1  -->代金券2,等级不同,不能领取

user2  --> 代金券1,等级不同,不可领取

user2  -->代金券2,等级相同,可以领取

实际测试时,按上诉用例进行覆盖是没问题的,但是在实际测试过程中,我有一个g5的用户,在使用g5这个用户进行用户覆盖的时候却出了问题,开发由于xxxx原因在处理g5等级用户时存在问题

然后我尝试使用g4的用户去覆盖用例没问题,当时庆幸有这样一个g5的用户让我发现了问题。


问题2:

做接口测试,里面有很多逻辑判断

其中一条判断规则: 必须要有A。A直接从数据库读取对应字段

这个A在数据库的定义:int(11)

我一看int(11),这明显就指A的个数嘛

设计用例时,针对A,我就设计了两个数,0和1

实际验证时,也与预期结果一致。

联想到上次没有考虑健壮性,可能存在的问题,针对A用例改成 0,1,2

预期:2应该和1结果保持一致

实际:2和0的结果保持一致

询问开发后,A这个字段含义:0表示 没有A,1表示有A(并不是指A的个数)

 


虽然问题都在测试阶段等到验证并解决,但问题仍值得反思:

1、对于有范围值的需要按边界值设计用例,另外还需要考虑用例的健壮性!

2、不要太自以为是!

 

论用例健壮性的重要