1.需求背景
设计一个服务,可以根据上游服务传入数据进行数据库查询,数据库设计分三个表,版本控制表、资源路径表、资源配置表,要求业务人员能够通过配置数据库的版本控制表配置触发服务对资源路径表和资源配置表数据的关联查询,最后返回关联查询的分数
2.缺陷描述
业务人员配置资源配置表数据某字段为0.00002,使用测试数据请求服务端接口,发现服务端日志报错,抛异常
预期:能够正常访问并拿到接口返回的查询分数
3.发现过程
3.1何时发现缺陷
在功能测试结束后,上线前的压力测试准备阶段发现
3.2为何在此阶段发现缺陷
此阶段导入60万条实际业务场景数据,应用场景覆盖全面
3.3应该在何时发现缺陷
应该在功能测试参数校验模块发现该缺陷
4.影响范围
业务输入一定范围的配置都不可用
5.原因分析
1.开发代码设计没有按照需求及设计文档进行,需求及设计文档资源配置表的字段取值范围要求是(0,100),但是开发在设计时代码判断(0.0001,100),因此在业务人员配置该字段值为0.00002时,所有与此相关的配置均失效;
2.设计测试用例时,该模块依据边界值法进行设计,参考需求及设计文档的描述,下边界值为“0”,因此有用例取值:-1,0,0.1,0.55,1(下边界附近取值)等,未覆盖0.00002这种大于0小于0.0001的情况(因为设计与文档不符,所以遗漏case);
3.业务人员导入全量数据时,提升了代码使用覆盖度,因此该缺陷得以暴露
6.规避方案
1.加强需求文档及设计文档的规范,锱铢必较,每一处都要高要求对待;
2.可视必要情况采取代码与文档设计比较检查(定义测试、参数取值范围测试等);
3.加强对codereview的标准要求;
4.上线前有必要引入全量数据导入的场景验证及验收测试;
5.细化该类型测试用例
7.问题延伸
1.接口设计参数取值范围相关;
2.算法逻辑阈值相关;
3.其他功能领域有固定范围的参数取值的需求,
等等,均有可能存在该问题。