数据类测试方法论.docx
- 文档编号:9879689
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:13
- 大小:386.22KB
数据类测试方法论.docx
《数据类测试方法论.docx》由会员分享,可在线阅读,更多相关《数据类测试方法论.docx(13页珍藏版)》请在冰豆网上搜索。
数据类测试方法论
数据类测试方法论
1.引言
1.1编写目的
编写本文档的目的是进一步规范数据仓库的基础层测试工作;用于指导数据数据仓库基础层相关集成测试,主要从测试环境、测试策略、测试具体执行方法、任务计划与安排等为测试工作的展开提供指导和依据;给其他相关组的组间协调提供工作指导。
1.2测试背景
数据仓库随着企业信息化程度的不断提高,各类应用系统同时并存并支撑着企业的业务应用。
越来越多企业的信息化主管在开发企业应用时已经考虑到数据集成和将来对数据的整体有效利用,因此,数据仓库被必然的选择来避免信息孤岛,实现应用的内部联系和信息的共享。
而现如今由于仓库的需求在仓库发展中不断增加、变化,这要求仓库开发效率加快、准确度提高、实现更加标准化,开发的工程化、自动化趋势也越来越明显,这就要求数据仓库测试在完备的测试条件下,更加迅速、高效的完成测试任务。
1.3预期读者
本文档的预期读者包括:
项目管理人员、测试管理人员、参与基础层测试的测试组成员、其他相关项目组人员
2.测试概述
2.1测试目标
DW测试主要围绕ETL进行,即保证ETL和新需求增加的数据质量。
其中ETL测试保证:
1)程序的运行正常;
2)数据的质量:
保证准确性和数据的稳定性;
3)ETL的效率:
对数据抽取上载时SQL进行部分优化测试等。
目标是保证模型层脚本的跑通性,验证数据是否按照设计需求中既定规则取数,通过内部集成的方式降低数据的出错概率,确保数据的准确性,将输出结果与期望结果控制在既定的置信水平范围内。
2.2测试范围
测试范围是数据仓库项目基础层模型脚本、修数追数脚本及其他建表语句等,其中模型层脚本包括新增脚本及变更脚本。
2.3测试角色与职责
角色
职责
测试负责人
制定每次脚本上线点的测试计划;
协调测试资源、跟踪测试进度;
申请测试所需数据,并对测试数据进行验证、确认;
编写测试阶段性小结和测试报告;
维护测试环境和测试数据;
上线脚本版本控制。
测试人员
抽样检查单元测试结果;
设计测试案例和测试数据筛选;
执行测试用例,提交缺陷报告并跟踪缺陷处理流程。
3.测试流程
模型层脚本各组工作大体封版时间:
数据组设计封版时间:
脚本上线点前至少15个工作日;
开发组开发封版时间:
脚本上线点前至少10个工作日;
测试组测试封版时间:
脚本上线点前至少5个工作日;
上线演练完成时间:
脚本上线点前至少3个工作日。
注:
这里各组封版时间请测试负责人及时关注设计组封版情况并提醒开发组确定落实封版,避免后期测试时间紧迫无法按时完成既定测试任务。
4.测试准备
4.1.准入条件测试
4.1.1.检查受控单
检查开发提交的受控单,一方面是为了规范开发人员的脚本提交流程,另一方面则是为了检查受控库中涉及的脚本是否为本次上线范围内的脚本,若不在本次上线范围内需与相关开发人员确认具体情况。
受控单中需填写内容如下:
1)变更号:
与变更跟踪登记簿中的EDW变更号一致,有时候会出现一只脚本涉及多个变更号任务,所以请测试负责人分配脚本时需要将同只脚本分配给同个测试人员,方便测试实施;
2)里程碑名称/变更编号;
3)开发流路径:
脚本测试流存放路径与其一致;
4)程序文件名:
与变更跟踪登记簿中脚本名称一致;
5)负责人:
相关脚本开发负责人;
6)受控原因:
包括设计变更、新增实体、新增映射、MQC缺陷等;
7)变更描述:
与变更跟踪登记簿中变更描述一致;
8)测试环境:
开发人员单元测试环境;
9)预计上线日期:
脚本的上线日期。
4.1.2.检查单元测试结果
针对开发人员提供的项目源码提交受控库申请表中填写的测试环境,在相应的环境下查看脚本是否有进行单元测试,通过SQL语句查询表中数据,检查的内容如下:
1)目标表名,显示内容包括,检查表的表名;
2)主键名,显示内容包括,检查表的主键名
3)检查类型,显示内容包括,主键重复检查,主键空格检查,检查表的数据空间和分布倾斜因子,检查表的记录分布情况,源表记录数与目标表记录数一致性,代码有效性检查,检查倒链,检查开链和交叉链,检查脚本重跑;
4)各检查内容对应的输出数据,显示内容包括:
a)检查主键重复(主键重复个数);
b)检查主键空格(主键含空格记录数)
c)检查表的数据空间和分布倾斜因子,检查目标表的倾斜因子是否大于50(占用空间,峰值空间,倾斜因子);
d)检查表的记录分布情况(AMP最大记录,AMP最小记录);
e)源表记录数与目标表中更新的记录数一致性(源表记录,目标记录,记录数差);
f)代码有效性检查,检查源字段的取值范围是否在包含在对照表的取值范围中(代码字段,无效记录);
g)检查倒链,检查是否存在开始日期大于和等于结束日期的记录(倒链记录数);
h)检查开链和交叉链,检查是否存在各时期的时间段总和不等于最大日期和最小日期差的记录(开链记录数);
5)检查结果,显示内容包括,正常,异常;
6)检查日期,显示内容包括,脚本运行的日期;
7)系统时间,显示内容包括,脚本运行的时间。
若返回结果非空,首先确认检查日期显示为近期的时间,以保证该单元测试为针对本次上线变更所进行的,再查看各检查结果是否正常;
否则将受控单打回,通知开发人员进行单元测试后重新提交受控单方可进行集成测试。
4.2.脚本准备
4.2.1.脚本提交流程
开发人员完成开发后,将脚本提交配置管理工具受控,并以受控申请单形式通知测试人员。
4.3.编写测试用例
所谓的测试案例就是将软件测试的行为活动,作一个科学化的组织归纳。
简单的说,测试案例就是设计一个情况,软件程序在这种情况下,必须能够正常的运行并且达到程序设计的预期执行结果,所以测试案例的设计要具有目的性,根据数据仓库的特点及数据类测试的特性,总结出以下几个测试点:
1)脚本变更内容检查,对照变更跟踪登记簿(必需);
2)源表字段与目标字段的转换(必需);
3)源表字段与目标字段的映射(必需);
4)PK重复检查、全记录重复检查(必需);
5)PI分布是否均匀(必需);
6)源表数据与目标表数据的数据比对,查看进行是否正确,是否发生字段截取等(必需);
7)记录数是否一致(必需);
8)脚本重复执行性(必需);
9)删除的数据正确性,发生更新时,对数据的删除是否正确(必需);
10)拉链表的状态断链、交叉链、开链(必需);
11)代码的取值种类和代码的范围是否与源系统一致。
;
12)特定字段的约束检验,如日期字段是否有进行格式化操作,有拼加前缀字段是否需考虑出现空值情况的处理;
13)表间关系所带来的字段检验;
14)总分关系是否能保持;
15)主外关系延续性(测试范围内的表);
16)复杂算法的正确性。
随着测试工作不断的深入,测试组会对质量组、运维组及其他组发现的问题进行归纳总结,以不断完善测试测试点。
测试案例的设计要根据脚本业务规则的不同,来选择相应的测试点进行案例设计。
4.4.数据准备
4.4.1.申请测试数据
在测试前首先保证有足够的测试数据,与设计确认是否已同步生产数据或从ODS接口组加载测试数据到测试环境,包括加载的测试环境,库名及日期,也可使用以下SQL语句查询。
若在测试过程中发现所需源表不存在或数据为空或源表的业务日期不统一,且该表涉及变更描述内容的情况,可联系设计人员或ODS接口组请求重新加载数据。
但实际申请测试数据流程可能较长,一般很难在测试计划内得到解决,为了不影响测脚本的正常上线,可先通过建立空表或修改业务日期或手工造数进行解决,待数据重新申请下来再进行验证。
5.测试实施
5.1.规范性检查
为了方便仓库统一管理,避免由开发人员的编写习惯等原因带来的潜在问题和风险。
项目组要求所有上线脚本必须通过规范性检查。
目前仓库的规范性检查,主要通过脚本自动检查+手工检查的方式实现。
5.1.1.自动检查
编写自动检查脚本以便检查开发人员提交测试脚本的规范性。
检查的指标由项目组或者是客户制定。
5.1.2.手动检查
由于部分规范化的检查暂未实现,为了规范化的检查程度达到更广,规范检查脚本运行完毕后,根据规范性要求进行“手动检查”。
5.2.执行脚本
1)脚本跑通检查;
nohupperl脚本名源表数据日期>[].log&
2)检查脚本是否能重复执行:
使用同一个业务日期跑两次脚本(第二次执行脚本不对目标表数据产生任何影响)。
3)运行二天以上业务日期的数据
检查目标记录是否被更新;更新数据时,经过删除和插入的操作后,检查数据记录是否丢失。
5.3.指标检查
白盒检查通过且脚本成功运行后,根据目标表的输出数据情况进行指标检查。
指标检查主要包含:
主键检查,字段空值检查,代码转换结果检查,数据量检查,拉链检查(针对拉链表),PI分布检查。
5.3.1.主键检查
1)目标表数据要求主键不重复,检查PK重复,结果为“0rowsprocessed”时通过。
2)目标表主键要求不包含空格,检查PK是否包含空格,结果为“0”时通过。
5.3.2.字段空值检查
结果为“0”时通过。
5.3.3.代码转换结果检查
检查代码对照表中的代码是否正确转换,无输出结果时通过。
5.3.4.数据量检查
1)检查是否有重复记录,当两条查询结果相同时通过:
2)查询目标表的记录数是否跟源表的一致;
5.3.5.拉链检查(目标表为拉链表)
1)检查开链、断链和交叉链,无输出结果时通过:
2)检查倒链,主要是检查是否存在开始日期小于和等结束日期的记录,无输出结果时通过。
6.缺陷管理
6.1.MQC缺陷库
MercuryQualityCenter的简称,是美科利公司开发的一个基于Web方式的测试管理系统。
可以系统的控制和管理应用程序测试流程的各个阶段,包括测试需求、计划测试、执行测试及跟踪缺陷,从而保证应用系统测试的质量。
采用B/S模式,数据集中在后台的数据库中,便于共享。
打开IE,输入URL:
http:
//128.32.96.172:
8080/qcbin/start_a.htm。
进入到登陆页面,输入用户名及密码,通过身份认证后再选择域及项目,其中域选择“开发三部”,项目选择“数据仓库应用支持2008测试项目”。
6.2.缺陷流程图
注意:
只有提出缺陷的测试人员或测试经理才能关闭缺陷。
6.3.缺陷提交规范
6.3.1.新建缺陷
通过用例库中的用例去新建缺陷,具体如下:
测试计划
->链接的缺陷
->新建缺陷
6.3.2.缺陷完善
a、主题:
自动生成,在自动生成脚本名字其前方填写开发人员名字,在其后方填写缺陷主要问题描述;
b、缺陷状态:
指缺陷通过一个跟踪修复过程的进展情况,包括:
提出、处理、拒绝、待验证、重现、关闭;
c、严重程度:
是指因缺陷引起的故障对系统的影响程度。
由提出人初步指定,缺陷修复人员负责确认,包括:
严重、一般、轻微;
d、紧急程度:
指缺陷必须被修复的紧急程度。
由提出人指定,包括:
高、中、低;
e、缺陷起源:
指引起缺陷的起因,包括:
需求、架构、设计、编码、环境、数据、拒绝;
f、缺陷描述
要求提出人描述的缺陷分类准确、叙述简洁、步骤清楚、有实例、易再现、复杂缺陷有据可查(截图或其它形式的附件);
g、分析和修改内容
开发人员修复或拒绝修复缺陷时,需在“缺陷详细信息”模块中的“分析和修改内容”中使用“添加注释”按钮详细填写修复的内容及拒绝的原因。
其他MQC使用请参考附件:
CC目录\2480\MQC相关资料。
6.3.3.缺陷跟踪
缺陷提交完成后,系统会自动发邮件通知相关缺陷负责人,但由于实际工作影响,缺陷负责人可能会忽略缺陷邮件提醒,故缺陷提出人要对缺陷负责人进行友情提醒,以便及时解决问题,避免影响脚本上线进度。
做到定期查看缺陷状态,进入MQC缺陷管理页面,查看提交的缺陷状态:
对状态为‘待验证’的缺陷及时进行回归验证,如验证通过,关闭缺陷,否则需要再重新打开缺陷,并通知缺陷负责人及时修改。
对状态为‘拒绝’或‘挂起’的缺陷,需要和缺陷负责人进行确认,并让缺陷负责人对缺陷做出注释,给出拒绝或挂起的理由。
在脚本封版后,统计出状态为‘挂起’、‘拒绝’的缺陷,与脚本版本一起提交,并让相关开发人员做好后续跟踪。
7.测试后期
7.1.测试版本控制
7.1.1.测试版本对比
在脚本完成测试后,MQC上的问题都得到解决情况下,进行上线版本封版,要保持封版的版本是最新的,以免版本产生混乱,故需对版本进行比对。
7.1.2.测试版本输出
1)测试版本封版
在脚本完成测试后,MQC上的问题都得到解决情况下,进行上线版本封版,封版脚本包括以下几个提交件:
a.经测试的最新上线模型脚本;
b.代码初始化脚本
c.物理模型建表语句及导数脚本;
d.追数&修数脚本;
e.上线模型脚本清单;
f.上线遗留缺陷清单及相关风险提醒(提醒开发人员、质量组相关人员进行跟踪)。
2)上线演练版本
版本封版完成后,需要在测试环境进行一次模型上线测试,以验证所封版的脚本是否无错、对其它生产脚本有无影响,进而可以检验分析人员的影响性分析是否遗漏。
3)上线版本
上线演练结束后,若对于除遗留缺陷未发现其他问题,可对版本进行封版,提交上线。
7.2.测试输出
7.2.1.阶段性测试小结
在测试过程中,每个阶段需要做一个总结,也可称为测试状态报告,发送相关人员进行审核,主要描述本阶段测试的总体情况,包括脚本测试情况、案例执行情况、缺陷修改状态、测试中遇到的相关问题等,对于需要其他组协助解决的问题,要发组间协同工单进行协助解决。
阶段性测试小结模板存放于配置工具指定的目录下。
7.2.2.测试报告
在测试完成后,产出一份集成测试报告,把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 测试 方法论