为什么写这一篇文章?可能大部分测试人员都没有参与过数据库的设计评审,因为数据库的设计是由开发人员自己设计的,评审也是开发人员自己评审,而实际上,测试人员参与数据库设计评审是很有必要的,但前提条件是要了解需求,如果测试人员对数据库的设计了解的很清楚的话,那么有很多问题在这个阶段就可以避免了(后面会举例说明)。
测试人员如何评审数据库的设计呢?
首先,我们可参考数据库设计规范与原则,当然我们没法关注所有的规范与原则,但是表名的命名规范、字段名的命名规范我们一定要注意,另外就是索引、主键以及外键的设置也一定要考虑清楚。之前就经常遇到多个开发人员设计的表和字段的名称不一致,比如B开发设计的表中用到了A设计的表USER的ID,那么在B设计的表中他设计了一个user_id字段,而C开发设计的表中也用到了A设计的表user的ID,而在C设计的表中他设计了一个userId的字段。像这种不一致的情况,一定要开发修改成一致的。另外考虑到表的查询速度快慢的关系,一定要看开发在建表时使用的索引字段,正常情况使用不能重复的字段建立索引,当然也可以建立多个索引,最好不要超过5个。以前项目中经常遇到过索引少了导致查询过慢的问题,加上索引后查询就正常了。关于主键和外键不做过多解说了,只要理清楚开发设计的表的关系,就能清楚表的主键和外键设计了。
另外,我们需要关注字段的类型以、字段的长度以及字段能否为空,这些需要考虑到可扩展性,但是有些开发人员在设计表时没有考虑到这些,比如数据量大的ID设成整型(int),当然如果设置为长整型(long)是不是会更好一些呢,另外就比如字段的长度,之前项目中就有开发人员把URL字段的长度设为100,后面测试时就会发现只要有URL的数据提交都会失败,因为URL(购物链接)长度都超过了100。字段能否为空的问题也经常遇到过,本来可以为空的字段,开发设计时把字段设置成了不为空,测试时未填该字段,直接报错了。这些都需要注意了。
再一个就是跟安全有关的,在金融行业中对用户的私人信息比较看重,所以像身份证号码、手机号码等敏感信息需要进行加密。当然这一块的设计是跟业务相关的,也需要产品经理的确认,之前就遇到一个坑,因为做的也是金融项目,之前用户的手机号码都没有做加密,后面参考别人的系统才发现敏感信息没有特殊处理,所以后面把手机号又全部进行了加密,如果这些问题在数据库设计阶段都想好了,我想后面的这些问题就都不会出现。
最后,需要说明的是,作为测试人员,在参与数据库设计的评审过程当中,能把以上几点弄清楚应该很不错了,但实际上如果想要提升自己的话,我们还需要根据需求多思考开发人员设计的表是否存在其他问题,比如字段是否冗余?是否需要分库分表?表之间的关联关系是否合理等等,总之数据库作为应用软件的基石,如果数据库设计的好,那么有很多问题在这个阶段就可以避免了。
说明:做了这么多年测试,我也是在最近这三年中,每一次开发在评审数据库表的设计时,我都会去参加,多多少少都会提些问题和建议,我相信对后面软件的质量是有提升的。
网友评论