数据报表类系统测试

前段时间测试了一个数据报表类系统-VOC系统

  VOC:Voice Of Customer, 根据每天的电话求助量,机器人咨询量、人工咨询量、云客服咨询量等数据出发,关联到具体问题、产品、部门等信息上分析并展现出会员最大痛点。

  VOC 的数据报表的最终展现分为两个过程

  1、获取源数据并整合数据为最终表

  2、数据关联到问题、产品、部门后进行分析展现

  针对这两个过程,测试方法也分别两个步骤

  一、  获取源数据并整合数据为最终表-ETL过程

  实现方式:云梯、hive脚本、datax

  开发跟进业务需求了解原始表结构,编写hive脚本,“在云端”平台上运行,获取最终表,使用dataX工具将数据导入到线上数据库

  平台:在云端(内部系统)

  Datax:离线同步工具

  对应的测试方法

  1、最终表的正确性

  常见的测试方式:测试中间表的正确性、抽样或全量数据比对、hive脚本review

  因为voc对应的最终表的获取逻辑相对简单,所以选择的测试方式是hive脚本review,前提条件是要先了解各个源数据表的含义及结构,对原始数据表非常了解就很容易发现问题,尤其是一些特殊值的处理

  举个例子


create table if not exists r_yunong_rest ( #新建一个中间表

report_date         string,

prd_code            string,

question_code       string,

date_type           string,

value_type          string,

base_value          string,

gmt_create          string,

gmt_modified        string

) partitioned by (pt string)

row format delimited fields terminated by '\"'

lines terminated by '\n'

STORED AS TEXTFILE;

insert overwrite table r_yunong_test #表数据插入

PARTITION (pt='$env.lastPartition')

select  report_date,

prd_code,

question_code,

'D' as date_type,

'01'as value_type

count(case when sid is not null then sid when caseid is not null then caseid else null end) as  base_value,  #特殊字段的处理,验证重点

'$env.date' as gmt_create,

'$env.date' as gmt_modified

from r_test   #从另一个已创建的中间表r_voc_fact_question获取数据

where pt='$env.lastPartition'

and question_code <>'unknown'

group by  report_date,prd_code,question_code;

  这个过程中需要关注的问题

  1、     数据不完整

  2、     数据不准确

  3、     某些数据需要特殊处理,比如为null、为0的情况

  4、     发现原始表数据质量不理想,需要进行处理

  二、数据关联到问题、产品、部门等进行分析展现—逻辑代码

  平台实现了将传入的参数组装成一条复杂的sql语句,将源数据关联到产品数据、问题点数、时间数据后的数据结果输出。

  所以验证的是报表数据的正确性,简单来说就是验证一条复杂sql写的对不对,采用的测试方式是根据业务理解测试整理出对应sql,输出数据,和系统输出的数据进行对比

  测试要点

  1、表结构设计决定业务拓展性 例 测试过程中发现有些元数据表必须是唯一性的

  2、对整个数据库设计非常了解,明确每个表的业务定位

  举个栗子

  某业务 测试验证sql


select f.date_id,d.issue_name,sum(f.all_qz_cnt)

from voc_tb_*** f,

voc_issue_*** d,

bi_time_*** t,

voc_prd_*** v

where d.issue_code = f.issue_codes

and v.id = f.prd_id_sk

and t.date_id = f.date_id

and v.prd_id=711

and t.day = 20140316

group by f.issue_code

order by sum(f.all_qz_cnt) desc

  开发sql


SELECT bi_time_***.day,voc_prd_***.prd_id,voc_issue_***.issue_code,sum(voc_tb_***.all_qz_cnt) as index_135

FROM voc_tb_*** LEFT JOIN voc_issue_*** ON voc_tb_***.issue_code = voc_issue_***.issue_code and voc_issue_***.flow_step=voc_tb_***.dim7

LEFT JOIN voc_prd_*** ON voc_tb_***.prd_id_sk = voc_prd_***.id

LEFT JOIN bi_time_*** ON voc_tb_***.date_id = bi_time_***.date_id

WHERE voc_prd_***.prd_id=711 and bi_time_***.day=20140316

GROUP BY bi_time_***.day,voc_prd_***.prd_id,voc_issue_***.issue_code

ORDER BY index_135 desc

  发现的问题:表voc_issue_***中的issue_code不是唯一值,LEFT JOIN的特性使非唯一issue_code的sum(f.all_qz_cnt)值翻倍了,解决方案是,表voc_issue_***的的业务定位修改,作为issue_code的元数据表

  这个过程中需要关注的问题

  1、数据多样性评估不完整,导致部分数据未被统计

  2、表定位错误,比如上面的例子说明的问题

  三、综述

  1、数据是否可以提取极大的依赖于原始数据本身的健壮性,原始数据质量很大程度上决定分析数据的效果

  2、对于这类数据产品,测试侧重点主要是:数据完整性、数据准确性、数据有效性、业务合理性

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-20 03:01:21

数据报表类系统测试的相关文章

《Python自动化运维:技术与最佳实践》一3.1 数据报表之Excel操作模块

3.1 数据报表之Excel操作模块 Excel是当今最流行的电子表格处理软件,支持丰富的计算函数及图表,在系统运营方面广泛用于运营数据报表,比如业务质量.资源利用.安全扫描等报表,同时也是应用系统常见的文件导出格式,以便数据使用人员做进一步加工处理.本节主要讲述利用Python操作Excel的模块XlsxWriter(https://xlsxwriter.readthedocs.org),可以操作多个工作表的文字.数字.公式.图表等.XlsxWriter模块具有以下功能: 100%兼容的Exc

有了它,你也可以快速制作专业级企业数据报表

阿里云在线技能认证全新上线,3小时学会使用Quick BI搭建企业数据分析平台: 使用Quick BI 制作企业数据分析报表(课程+考试+认证) 看到下面这些内容你会想到什么? 数据即时分析与决策 交易数据权限管控 报表与自有系统灵活集成 用户行为画像 百万级用户精细化运营 海量营销数据分析 一个超级BI系统?还是一个强大的数据分析平台?没错,它就是阿里云专为云上用户量身打造的新一代智能BI服务平台--Quick BI 基于Quick BI,4步即可完成专业报表门户的创建与分析.第1步:数据集成

你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)

你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节点的方法 你真的会玩SQL吗?让人晕头转向的三值逻辑 你真的会玩SQL吗?EXISTS和IN之间的区别 你真的会玩SQL吗?无处不在的子查询 你真的会玩SQL吗?Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合

Access 通用数据访问类(asp.net 2.0 c#)

access|asp.net|访问|数据 仿照以前收集的一个经典sql server数据访问类,稍做修改.using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;usi

php类:返回数据格式化类

DataReturn.class.php <?php /** 返回数据格式化类 * Date: 2011-08-15 * Author: fdipzone */ class DataReturn{ // class start private $type; private $xmlroot; private $callback; private $returnData; public function __construct($param=array()){ $this->type = $th

CSS实现圆柱型数据报表的方法

本文实例讲述了CSS实现圆柱型数据报表的方法.分享给大家供大家参考.具体分析如下: 这里演示用CSS代码实现圆柱型数据报表效果的方法,实际上是用CSS控制背景图片的平铺范围,来达到圆柱体的高低效果,这只是一个比较简单的CSS数据报表演示,更复杂的功能需要慢慢不断的运用CSS,不断积累知识.   代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head

php实现的返回数据格式化类实例

 DataReturn.class.php类文件如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

Excel2010怎么更改数据报表的值显示方式?

  Excel 2010怎么更改数据报表的值显示方式?学习这个知识点是不需要自己创建公式便可以在数据透视表当中去添加计算字段,从而更加轻松的去完成对于数据的分析和汇总功能了,下面我们就一起来看看吧,希望例子能帮助到各位同学哦. 1. 在当前的数据透视表中,显示了 2009 年上半年 3 家书店的图书销量总计情况,如果需要查看某一书店图书的销量占总体的百分比情况,则可以通过添加"值显示方式"来实现这一应用.将"销量"字段添加到"数值"区域,如图1:

DbHelper数据操作类,DbProviderFactories

  微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要"评估"...一评就是几个月...而且,一些公司有的根本就是裸ado.net开发,或者自己封装的数据库操作类非常别扭,很不好用.      这里我给大家共享一个我参照企业库中的数据操作组件编码风格写的数据库操作类,对使用它的程序员来说,编码是很舒服滴(起码我觉得很好撒).以下是代码,很简单的,没