报表数据的测试

  作者:姜玲
2007/3/29 18:46:30
本文关键字: ttnn 2005年12期

大量的报表,在生成后,是怎样进行数据测试的呢?

你必须要保证每一项数据都是正确的,而且在多个有关联的报表间,你要能找到对应的数据,并且保证其一致,比如说,你在A报表里统计了兴庆区一室一厅房型的面积,那么在x,y,z报表里,这个面积都应一致,一个小数位都不应变。

我目前是这样做测试的,一张表抽几个数据,用SQL语句在库里具有针对性的检索一下,如果OK,再加一下百分比之和是否等于100%,然后OK。表间联系教给测试人员核对。

但这样的方法总免不了有个别数据出错,出错的数据公布出去,公司和客户就难看了:(

因为报表太多了,想要做这种针对检索性的测试,要对库和表非常非常熟悉,对sql和报表非常非常熟悉,目前在我们的项目组,除了我没有别人了:(

你们是怎样测试大量统计数据的呢?

Golderfish3 通常进行报表定义时,会同时定义校验规则。规则的条目有时候比表项还要多,包含了水平校验和垂直校验。如表内父项必须等于子项总和,全省值必须等于各地市加和等。这样生成报表的时候就保证了数据是一致的,而不是报表生成后再人工校验。

这就得用到元数据了。
 
鸭兄说的这个数据测试我管他叫做数据稽核,前面几篇文章提到测量仪和测量,这就是一个测量过程。并且还设计了一个"逻辑误差率"指标,就是来解决你说得这种报表数据之间平衡的问题。
 
在联通总部的指标上传模块中,也曾遇到这样的问题。于是总部写了个程序,来检查省分上传数据的指标平衡,因为确实有些省分为了应付总部的要求,造了假数据或是真是的数据质量问题吧。这个程序确实够厉害,不过道高一尺,魔高一丈,省分也就出来类似的平衡校验工具,说"校验"可能有些动听,其实是个平衡造数工具,哈哈。有些扯远了。
 
其实看到无论是总部的这个程序,还是省分的工具,还是你们将几张报表中房屋面积对的一致。这都是要求指标之间有一种逻辑关系。人为地表述,很好表述——"a报表中的面积等于x、y、z报表中的面积",或是"a报表中的总收入等于b报表的收入1和收入2之和"。
 
但这样的自然语言无法被计算机识别,因此,有必要将这种逻辑关系用形式化的语言表达出来,这就是一种元数据,这种元数据在前面《数据质量实践初步》中并没有提及,那里只涉及到数据流、质量度量和数据剖析三种。可以暂且将这类称为"度量逻辑"元数据。当然,要设计一种通用的度量逻辑元数据结构目前还没有想明白,但是可以依据你们现有的环境来试试。
 
譬如,你说的报表之间指标的对应,首先将报表当作是一种"数据集",假设你们报表展现依赖一个报表集市(或者有的地方叫做报表中间表),需要去校验的指标,可以从中方便地(不需要复杂的sql)取出。
 
按以下五部。
 
第一步先设计如下的的结构:
  
(报表名称,指标名称,取指标的SQL)
 
这是一个简化的质量度量元数据,记得在SQL中为时间参数留下空,例如你提到的例子,这条记录应该大致如下:
  
(报表A,房产面积,select 面积 from 报表A集市表 where 月份=?)
 
第二步,设计一个度量逻辑元数据结构,先考虑简单一点的关系,如a=b, a>b, a<b等这样单个指标之间的逻辑,复杂的诸如a=b+c,a/b in (x, y](a除以b的结果落在x到y的范围)这样的,姑且先不论,那已经是个纯粹技术问题,相信不是太难的事。拿单个指标之间的逻辑来举例,这个结构如下:
 
(*规则ID,报表名称1,指标名称1,报表名称2,指标名称2,逻辑关系)
 
其中逻辑关系可以是等于、大于、小于、不等于等,每条逻辑用"规则ID"作为标识。
 
以上两步是初始化性的工作,在开发期就要定义好的,后面几步则是系统运行时常规性的步骤。
 
第三步为稽核,传入月份参数,运行sql,得到稽核结果,存入如下结构当中:
 
(报表名称,指标名称,统计日期,指标值,稽核日期)
 
第四步,校验指标的逻辑关系,按照第二步定义的逻辑元数据,从第三步的稽核结果中取出报表、指标名称,根据定义的逻辑关系,判断他们指标值是否遵循此逻辑,结果存入下面的结构:
 
(规则ID、统计日期、逻辑判断结果、校验日期)

逻辑判断结果表明是否平衡,当然可以更进一步,还保存上一些误差值等。
 
最后,产生一张报表,报告所有逻辑关系不对的指标  ,提交给关心这个结果的领导和纠错人员。

Michael Gao
 
Happy和golden fish的方法我觉得有点复杂,当然,他们提的都是系统级的方法,比较成体系,也是解决问题的根本之道。

不过如果我就要等报表出来之后才进行校验,咋整?在Crystal Report中,可以建立一组专门用来校验的报表,如同Excel中的表间公式。这个方法是一个朋友说的,嗯,有空的时候试试。

其实类似啊,如果前端的报表能够当作数据源,能够被其他程序读取报表上的数据,校验不复杂,不过如果用页面展现报表的话,这一点恐怕很难作了。但是如果所有报表指标的展现都从某个报表指标库中读取的话,差不多也能做哦,不过要写SQL...
 
本人外行,瞎说八道,各位见谅。

 

 

责编:姜玲
vsharing微信扫一扫实时了解行业动态
portalart微信扫一扫分享本文给好友

著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
畅享
首页
返回
顶部
×
    信息化规划
    IT总包
    供应商选型
    IT监理
    开发维护外包
    评估维权
客服电话
400-698-9918
Baidu
map