业务逻辑中的测试总结(二)----业务与数据库交互需求的测试分解
对服务器端的测试,免不了对服务器端的接口与数据库之间进行各种交互的业务测试。这类隐藏类需求的分解实际上也能使测试人员站在一个更高的角度去分解实际的业务需求。对数据库的操作,一般都是增删查改这四类,所以对其隐藏的需求类分解基本也是围绕这些方面,还有就是数据库数据存储时的一些问题。服务器与数据库之间一般不会直接进行连接,一般都会存在一个中间层,比如数据库代理或者ice_server之类的。服务器端将需要处理的数据传输给ice_server之后,由ice再与数据库进行直接交互,对数据库进行交互的sql语句也就写在ice内部了。
第一:增删改查类操作的需求
对数据库的表进行插入操作时,一般都是执行insert语句;但是实际上还要考虑如下:
A. 数据库是否允许重复插入一条数据?假设存在以下场景:用户身份认证成功后,把用户登录的时间,登录的服务器的信息等记录新增到一个用户登录信息表内;那用户第二次登陆,用户登录信息表怎么操作?
B. 向数据库插入一条空的数据时,保存到数据库是null,还是“”(数据库中,null类似“真空”,“”类似空气)?
实际上这2个问题我都有遇到过,对于第一个问题出现的原因是:在业务层允许重复插入一条数据时,数据库操作层(ice层)编写的sql语句可以使用replace关键字来替代(先删除原先的记录,然后重新插入)。第二个问题出现的原因是:数据库默认值设置问题。数值(整型类型,浮点类型)的字段如果设置默认值为null,则从数据库提取出来后如果在程序中需要进行转换,比如转换成int类型,null就会抛异常,但是“”就不会。所以建议数值类型在数据库中设置默认值为“ ”。
C. 当两个系统同时对一个数据库表中的记录进行查询时,如果数据库表A的字段B设置长度为20位,假设增加的时候,该字段正好站了20位,系统S1查询时,设置保持该字段值为16位,这时就会抛异常~
第二:数据库密码字段保存问题。
类似用户的密码,在数据库中一般都不能直接明文保存,需要在保存前,先对密码进行加密再保存到数据库中。