求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
数据模型分析测试方法分享
 

2010-12-3 来源:网络

 

知道什么是淘宝数据魔方吗?淘宝数据魔方是提供给企业自行查询了解淘宝市场动态,进行品牌分析,产品分析,消费者分析以及营销效果分析的数据查询平台。说到这里,想必大家一定对其中的海量数据准确性验证方法很感兴趣,本小二有幸参与了数据模型分析项目,总结了一些数据模型分析的测试方法,希望对这方面感兴趣的童鞋有帮助

一、数据分析测试主要分为:数据分析准确性、数据分析展示速度(也就是性能)。

数据统计方面

1、数据分析统计数据的正确性;

2、数据分析统计数据的完整性;

3、数据分析统计数据的合法性;比如,统计金额字段需求要求有“$”等;

数据分析格式

1、表头字段表示的正确性;

2、表头字段表示的完整性;

3、表头字段表示的字体,字号,美观程度;

4、各统计字段的显示是否满足需求;比如:数据过长时要求折行还是缩小;

5、页眉和页角的表示;

二、数据准确性测试,带有数据分析测试的系统分为两类:

一类是业务系统中,带有统计分析功能模块,该模块中包含分析数据分析,这个系统的主体是业务系统,数据分析是为办理业务的而提供帮助的。

另一类是系统只有统计功能,就是我说的数据仓库展现这类,它与业务系统分离,并且经过多层处理,比如数据仓库的数据,经过抽取,清洗,展现前会经过数据挖掘,数据再处理,有些字段在原始数据表中根本就没有。这样的数据准确性测试比较复杂,当然检查出数据错误,修改定位也是很不容易的。

三、从整个项目节约成本看,逐层测试效果是最好的。完全修改率也是最高的。首先建立测试数据模型,模拟所有应用表,建立简单易跟踪的数据用例,底层的数据表测试,方法很原始,嘿嘿,通过SQL语句和手工计算,对数据进行比对。对系统中的数据分析数据准确性测试方法较为灵活,

①系统中数据分析重叠的进行比对

② 对子数据分析汇总与父数据分析比对,就是对月数据分析汇总与年数据分析比对,日数据分析汇总与月数据分析比对,这只是一个方面,可以从维度关系考虑,地域,行政级别、时间,个人等方面下手,进行汇总比对

③ 这个方法如果延伸点呢,可以将数据分析间的业务逻辑关系作为比对依据。呵呵,这要看测试人员的需求了解深度个人能力了。插几句不相干的话,做测试工作总让我保持快乐状态,前两天我的一个同事说,公司里一直没有人喜欢做测试工作,这个工作太枯燥。嘿嘿,我当时就说我做了这么多年的测试工作从来没有感觉到枯燥。重复性工作不代表枯燥,编程其实不也是重复嘛,人每天谁不重复昨天的事啊,吃饭,吃这个动作重复一生,有谁觉得麻烦枯燥啦?

④使用SQL和手工计算进行比对。以上是差错方式,接下来讲一下查什么错?哪些地方容易出错

? 原始表使用错误:因为表比较多,又加上没有统一的数据关系对应表,很容易表使用错误,当然这应该是单元测试检查出来的错误。

? 数据处理逻辑错误:这一点容易因为测试人员和开发人员对需求理解有偏差造成争执,所以在需求评审时,对数据处理规则用表达式或伪代码表示清楚。还有就是程序员失误,逻辑编写有偏差,边界值、特殊情况处理不当。

? 数据权限:不同用户对数据有着不同的查看权限。这关系到数据的安全性。

? 数据误差:数据的保留位数,数据是否是处理计算是否是最后一次计算使用了位数保留和四舍五入。

? 由于字典表,数据错误,而造成的数据错误,如,根据性别统计,购买量,表中的男女颠倒,或者没有考虑性别缺失项,用了if else,这样就是把表中缺失该项内容的算成了else条件里。或者逻辑中应该考虑用户状态,数据状态类似的字段,容易被忽略,测试应该考虑到。

? 最后一项,当数据量相当大的时候,统计应该考虑,切割速度,也就是数据的完整性,由于数据切割的滞后,带来的数据不完整,而造成统计结果不完整。如统计昨天的销售情况,而昨天的数据并没有完全从业务系统数据到数据池,再者月底数据,由于最后一天的数据切割不完整而造成的正月统计数量不准确。

四、做数据分析测试时要注意以下方面:

  1.数据的正确

  用户使用数据分析就是期望通过一个简单方便的平台能快速的查找到他所需要的数据.所以在测试数据分析时首先就要检查数据分析中的数据是不是用户需要的数据,如果没有加工的数据,是否保持了原貌; 加工过的数据查看加工的结构是否和手工加工的结果一致.简言之,需要测试以下内容.

  数据的来源:来源于哪张表,哪个字段,数据库中的数值与界面数据的对应.如数据库中性别的数据可能是0或1,但界面显示为男或女,这个对应关系是否正确.

  数据的范围:是否只显示了数据分析设置的对应范围;特别要注意边界数据,要清楚数据分析的需求,是否需要过滤掉被选择的数据.如时间选择为2006-9-27~2007-9-27,那么是否应该包含9-27这天.

  数据的对应关系:数据库中的字段是否与数据分析中的信息对应

  数据的格式:小数位,千位符,四舍五入等是否与数据分析设置一致;单位或税率转换是否正确;组合显示的数据是否合理

  数据的排序:排序方式是否与数据分析设置一致(如果没有设置,是否有一个清晰的默认排序方式,如按字母或数字排序)

  明细与合计的一致性:各部分明细或小节是否与最后总和一致

2.其他:

  测试这一部分内容需要对业务逻辑相当熟悉,对数据库的设计也要非常了解.必要时可以通过自己写查询语句查看数据.

  有些数据分析的条件有多有少,但测试方法都是一样.根据条件通过等价类划分和排列组合设置各种条件组合.千万不要盲目的测试,否则会导致该测的没测,多余的测试做了一堆..一般来说有类别划分的(一般界面表现为下拉框),每个类别都要测试到,如性别中的男,女都要测试.输入的可以用等价类来划分要测试的数据.

 

3.数据模型分析中发现问题,如何定位呢?这里简单给大家介绍下几个重要的sql指令:

  union :得到两个查询结果的并集,并且自动去掉重复行。不会排序

  union all:得到两个查询结果的并集,不会去掉重复行。也不会排序

  intersect:得到两个查询结果的交集,并且按照结果集的第一个列进行排序

 minus:得到两个查询结果的减集,以第一列进行排序

例子:

下面是两个表:一个主修课程表,一个选修课程表。

这个是主修课程表:minors

   create table minors(

 minor_id number primary key,

  minor_name varchar2(30) not null,

  credit_hour number(2)

  )

插入3条记录:               

   insert into minors values(10101,’A',4)

  insert into minors values(10201,’B',3)

  insert into minors values(10301,’C',4)

下面创建选修课程表minors2

  create table minors2(

minor_id number primary key,

minor_name varchar2(30) not null,

credit_hour number(2))

插入两条记录:

insert into minors2 values(10201,’B',3)

insert into minors2 values(10301,’C',4)

(1)两个表使用union all:得到如下结果

select minor_id,minor_name,credit_hour from minors union all

select minor_id,minor_name,credit_hour from minors2 order by credit_hour

结果:

MINOR_ID MINOR_NAME CREDIT_HOUR

———- —————————— ———–

10201 B 3

10201 B 3

10101 A 4

10301 C 4

10301 C 4

(2)

两个表使用union :得到如下结果

select minor_id,minor_name,credit_hour from minors union

select minor_id,minor_name,credit_hour from minors2 order by credit_hour

结果:

MINOR_ID MINOR_NAME CREDIT_HOUR

———- —————————— ———–

10201 B 3

10101 A 4

10301 C 4

(3)

两个表使用intersect :得到如下结果

select minor_id,minor_name,credit_hour from minors intersect

select minor_id,minor_name,credit_hour from minors2

结果:

MINOR_ID MINOR_NAME CREDIT_HOUR

———- —————————— ———–

10201 B 3

10301 C 4

(4)

两个表使用minus,如下图:

minors、minors2、share各代表一个区间,得到如下结果

<A>:

select minor_id,minor_name,credit_hour from minors2 minus

select minor_id,minor_name,credit_hour from minors

结果:minors2 minus minors= minus2-share

MINOR_ID MINOR_NAME CREDIT_HOUR

———- —————————— ———–

<B>:

select minor_id,minor_name,credit_hour from minors minus

select minor_id,minor_name,credit_hour from minors2



LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...