发布新日志

  • 统计模块的功能测试经验点滴

    2009-02-23 17:30:58

       统计是应用系统中十分常见的功能,统计列表往往由若干个数据列和计算列组成。数据列是指那些显示基础数据的列,通常引用表中现成的列数据。计算列则是指须通过一定公式运算得到的列。倘若表中的计算列是由表中的数据列计算而得,那验证统计功能的时候只需套用公式即可。但如果计算列是对数据表里的若干列数据(这些列不存在统计列表中)使用简单或复杂的select语句查询出,对于这种不直观的统计功能,如何验证统计是否正确?黑盒测试人员通常不关心程序代码的实现,不可能通过检查sql代码是否正确来实现功能验证,并且阅读他人编写的sql代码也很耗时,这样的方式是下下之策,往往耗时长且不容易发现BUG。是否有高效的测试方法吗?我在项目实践中总结出一些经验——借助查询功能来进行比对验证。由于效果直观,所以很容易发现BUG。

       本人手头上曾经历过这样一个项目:做电力设备故障相关的统计。统计表里有几个计算列:本月累计数、本月消缺数、本月消缺及时数。它们涉及的select语句中的where子句均比较复杂,其中,

       本月累计数=本月发现的故障数+本月以前发现的还未解决的故障数+本月以前发现的但在本月解决的故障数 ;
    本月消障数=本月累计的紧急故障中已解决的故障数
    本月消障及时数=处理期限在本月且已经消灭的紧急故障数

       由公式可见,要求出这3个计算列必须要编写复杂的select语句,设置层层过滤条件。测试人员要审查sql语句是否正确,不仅要看懂sql语句还要去弄清很多字段的含义,这已经超出黑盒测试的范围,而且非常不直观以及耗时。而该系统除了提供统计功能外还有查询功能,可通过对比查询结果和统计结果来验证统计的正确性。比如验证本月累计数,先在查询模块设置查询条件查出本月发现的故障数,再设置查询条件查出本月1号以前发现但还未解决的故障数,最后设置查询条件查出本月1号以前发现且解决日期落在本月的故障数,最后将各种查询结果进行加和运算,与统计值比对。其他统计值也同理验证。

       这种方式非常直观,事实证明,效果是很明显,有效地查出统计算法上的BUG。

Open Toolbar