当前位置: 首页 > news >正文

浅谈报表测试

所谓的报表,就是在已有数据的基础上,经过各种加工、汇总,而呈现出来的数据结果,而报表测试则是鉴定报表的正确性、完整性、安全性和使用质量的过程。

需要掌握技术:
1、业务的熟悉程度
2、造数据技能

一、基础

熟悉业务是极为必要的,因为在设计测试用例前,需要理解这个指标是为了统计什么,需要在需求文档中了解并确定以下的信息:

1、指标的设计是否符合业务场景或真正的业务需求;

2、统计指标是否需针对异常数据的情况,做异常处理;

3、用户访问的频率、使用习惯等情况,以便后面做性能测试时的用例设计;

4、需求提供者有无以往的手工数据或历史数据可以作为核对标准?如果有,最好请产品人员提供。

熟悉业务后,就可以进行用例设计了。

二、测试用例设计

(一)UI验证:报表格式的显示

对界面功能、交互设计的验证。验证报表页面布局样式、表格格式、字体格式、颜色搭配、报表标题和文案。
特别是对外使用的报表,需要关注输出报表的显示格式是否符合客户需求:

1、报表的标题或者表名是否正确;

2、报表的整体显示格式是否符合客户提供的表样;

3、数据显示格式或误差是否与需求保持一致,如小位数、百分号、单位、汇率等;

4、报表页面的时间段是否用户选择的时间段;

5、当输出的内容过多时,分页方式是否正确;翻页时,是否有与上页相同的样式,第2页输出是否正确;

6、需要特别提醒的数据(一些异常数据)是否突出显示;有些指标计算方法特别或某些指标容易混淆的情况下,页面是否有加注释;

公司一般都有报表开发规范,提前向开发要规范文件。

(二)交互验证

主要包括:翻页、过滤器、提示、参数、上钻/下钻、多表联动、排序和导出等功能的验证。

1、各个指标的组合筛选查询是否正常;

2、输出功能,如导出PDF、excel等使用是否正常;

3、打印设置、打印效果等是否正常;

4、分页,或分布导出等是否如常;

5、导常情况下的使用等。

(三)更新验证/数据的正确新验证

在源数据出现更新后,验证报表数据是否更新正确。
对于用户来讲,使用报表就是希望通过报表快速简单地查到自已所需要的数据,所以测试报表最主要的内容就是验证数据的正确性:

1、数据来源是否正确。针对产品提出的指标,确认和需求是否是同一个数据源。一般来说,数据源大致分为两类:一是本系统产生的数据;二是从第三方同步过来的数据,需要核对需求中需要的数据,本系统是否已经同步过来,同步是否符合要求。

2、数据范围是否对应。是否只显示了报表设置的对应范围,并且考虑需求中是否包括统计区间的边界值。

3、指标的特定条件是否满足。前提是要弄清楚,所测报表的指标中,是否有特定条件,这个特定条件是什么,报表数据是否满足该特定条件等。

4、明细与合计是否一致。即报表的各部分明细值之和,是否和合计值一致。

(四)及时验证

主要是针对实时报表生成的及时性验证,验证在及时性方面是否满足业务需求

1、当数据源有实时数据入库时, 相关报表类的展示多久统计出来?

2、是实时还是会有延缓?延缓多久?

3、数据延缓对指标有何影响?

(五)安全测试

考虑到数据的安全性,对报表进行权限控制是很有必要的,检查报表系统的用户权限,数据安全设置是和合理。

1、确定报表是否有针对不同用户角色,设置相应查看权限的需求;

2、不同的用户角色,其查看权限是否正确;

(六)性能测试

数据响应时间、报表生成耗时等性能指标进行测试,验证是否符合预期。

1、数据范围大小;

2、筛选查询的响应时长;

3、QPS(即每秒的响应请求数)。

三、测试数据

报表测试的很大关注成分在于数据,需要了解如何造数和设计数据:

(一)五种造数据的方式

1、直接在前端页面上手动制造数据
这样造出来的数据正确性会很高,但是效率会很低;
2、通过接口实现
效率比较高、不依赖前端的界面,但是需要借助接口测试工具实现;
3、通过数据库
效率比较高,但前提是必须懂业务中数据的流线,否则造的数据可能不准确,不可用;
建议将造数据的过程记录下来,保证下一次的复用;
4、数据脱敏:线上数据脱敏导入到测试环境
需要大量数据,联系维护人员,将线上数据脱敏导入到测试环境;
5、采用接口数据库相结合的方式
数据库造数据效率高,接口造数据准确性高

(二)报表测试三大数据设计点:

1、有效数据

有效数据,顾名思义,是指既符合前台业务规则,又符合统计规则的数据。它们会被统计进报表中,对报表的统计值会产生正面的影响。

2、无效数据

无效数据,属于统计规则以外的数据。此类数据,符合前台业务规则,但不符合报表统计规则,即对报表的统计值不会产生任何影响。

3、异常数据

异常数据,主要目的是用于检验报表系统对数据的容错能力。此类数据不符合前台业务规则,对报表的统计值会产生负面影响。最常见的场景是,统计值的分母为零。

这类数据的设计,更多地应用于报表系统与业务系统分离的情况中。当报表系统与业务系统互相统一时,异常数据会受到前台业务规则的限制,即异常数据连出现的可能也没有;在报表系统和业务系统分离的情况下,异常数据就很有可能由于数据传输的不同步,造成短时间的出现,此时报表系统对于错误的处理机制就显得非常重要了。

除了针对以上3类数据的设计以外,我们在设计报表测试数据时,还需要注意以下几点:

1、保证场景间测试数据的独立性

这是为了保证数据可控而要注意的。如果一组数据的已经在某个场景被使用过了,就不应该再把这组数据应用到其他的场景中,否则一旦出现测试结果与预期结果不一致,就会提高查错的难度。况且保证数据的独立,可以更好地阐述缺陷,保留缺陷现场,等待开发人员来解决。

2、数据的多样性

多样性是指为同一个场景准备多组测试数据,因为凭借不同数据才能更好地接近真实,更容易发现问题。

3、空报表

所谓的空报表,就是指在报表查询条件下,没有相符的源数据,从而造成报表中的统计值为空。这样的测试,是为了确保报表的正确性,检查报表统计是否有张张冠李戴的现象。

4、注意数值的设计

这里所说的数值,是指统计值。

例如,统计值是百分比时,我们需要覆盖最大值(100.00%)、最小值(0.00%)、中间值(如38.01%)、小数位检查(99.99%)。除了这些,我们还需要考虑负数、百分比超过100%、小数位的四舍五入等情况。

5、不同报表间的对照

同一组数据在不同报表中的表现应该是一致的。

例如,在合同表中,合同总金额是1万元;然而在协议表中查询该合同所创建的协议总金额是1万5千元,那么,这意味着肯定是其中一份报表出现问题了。

6、历史数据的设计

历史维度也属于测试的一个重点。历史维度的测试,涉及到历史数据的设计。

例如,OA中的,A君4月前在市场中心,5月起调到了营销中心,那么5月后A君的业绩是否仍计算在在市场中心?
修改了一个统计维度的类别名称,数据是否按以前的类别名称统计还是按现在的类别名称统计?等等。

四、拓展

数据可视化必修课 - 图表篇
数据可视化之基础图表的设计要素剖析

学习链接:
1、https://blog.csdn.net/weixin_42976139/article/details/100544574
2、https://blog.csdn.net/gaixiaoyang123/article/details/112257957

相关文章:

  • 第十一:Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!
  • ARMv8 MMU和translation stages、translation regimes和相关寄存器
  • Linux入门之配置以太网连接
  • 小时3.0报表某个型号数据比天数据多问题复盘
  • 深度学习 FairMOT多目标跟踪(PANDA)
  • 深度学习图像分割U-Net和FCN讲解
  • MySQL语句(二)
  • MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的作用及生成时机
  • python-读写Excel(三)-xlwt格式设置
  • 主从复制Slave_IO_Running: NO Slave_SQL_Running: NO 解决办法
  • 14对象的方法
  • 神经网络原理与实例精解,神经网络案例讲解范文
  • 【dfs爆搜】poj 1129 Channel Allocation
  • 244页14万字XX智能交通系统设计方案
  • 9月24日计算机视觉基础学习笔记——经典机器学习_02
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 4. 路由到控制器 - Laravel从零开始教程
  • JavaScript实现分页效果
  • Java的Interrupt与线程中断
  • Java方法详解
  • Laravel 中的一个后期静态绑定
  • Linux gpio口使用方法
  • Protobuf3语言指南
  • python3 使用 asyncio 代替线程
  • Rancher如何对接Ceph-RBD块存储
  • Vue UI框架库开发介绍
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue自定义指令实现v-tap插件
  • Vue组件定义
  • 前嗅ForeSpider教程:创建模板
  • 嵌入式文件系统
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小程序开发之路(一)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (算法)N皇后问题
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)创业家杂志:UCWEB天使第一步
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net 生成二级域名
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net接口调试与案例
  • .NET中使用Protobuffer 实现序列化和反序列化
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @ConditionalOnProperty注解使用说明
  • @JSONField或@JsonProperty注解使用
  • @property python知乎_Python3基础之:property
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——