关于大数据测试的一些思考
2020-02-05
大数据应用的测试流程
测试用例的编写
功能测试编写测试用例的常用方法:等价类、边界值(这两个方法估计做测试的都知道),同样适用于大数据测试编写用例,与通常意义上的功能测试不同的是,他的输入不再是一个输入框,而是一个数据库字段或者一个有特殊意义的数据集(包含多个数据)。
大数据测试与以往测试有哪些不同?
难点:
1) 测试环境或测试数据的准备。大数据测试难点之一就是涉及到测试数据的准备,因为如果真正做到一个好的测试质量,测试数据的数量、复杂度等方面都要尽量贴近于真实场景。大数据测试涉及数据量大,数据又复杂,所以构造测试数据是难点。一般来说通过现网引流、业务场景进行造数测试;现网数据引流一般来说数据真实、复杂度较好,优先考虑;入股现网引流无法考虑,就采用构造数据方法,构造测试数据对测试人员相关技能有所要求,例如:python或java,SQL、Linux Shell、docker等快速准备测试环境和测试数据应用到的技术和工具。
2) 数据质量也是大数据测试的一个重要内容。在测试应用程序之前,有必要检查数据的质量,并应将其视为数据库测试的一部分。它涉及检查各种特征,如一致性,准确性、有效性,数据完整性等。要验证数据在处理过程各节点业务逻辑的正确性和数据的正确性,最后也要保证生成输出数据文件,并准备根据需要将其移至企业数据仓库或任何其他系统。
为了对数据质量进行保证,需要依据测试的理论对数据进行等价划分。
如文章中的例子。
测试数据不仅要保证数量,而且更要保证用例覆盖的全面性
,如果你准备了几千条数据,但是数据类型都一样,覆盖的代码分支也都是一条,那这些数据只有一条能称之为有效测试数据,其他的全部是无效测试数据。单纯的测试数据,或者单纯的测试输入,没什么意义,我们必须结合不同的场景,设计更全面、更有效率的测试用例。
一、数据测试
所以我们总结出的第一个突破口就是数据测试。保证我们用来建模的数据是正确的。在这里的数据测试会跟我们以往的测试有些不一样。
1、首先是数据规模的增长。数据大了里面的有些数据可能会发生一些很诡异的事情。
2、然后是存储介质和技术栈的变化,我们用来训练模型的数据都会存放在hadoop集群上,所以一般都会用spark或者Hbase来编写测试脚本。
3、最后是验证方式的变化,之前我们测试的时候都是精确的测试每条数据的正确性。 但是现在我们需要根据业务设定每一个字段的规则。然后扫描每一行数据,如果这条数据超出了这个字段的规定范围,会发出报警。 假如用户年龄这个字段,正常值可能是0~100岁。如果突然出现个300岁,那么这条数据肯定是有问题的。我们之前曾经碰见过这样的数据。本来这条数据应该是30岁的,但不知道抽了什么风多了个0.
二、自动化与测试工具的建设
从测试工具的效率上看,数据测试天生就是有自动化属性
的,因为测试人员不可能肉眼一条条对数据进行 check。所以对数据测试工具的效率讨论,理论上不集中在是否要自动化,而是在对数据测试方法流程的改进上
。数据测试方法流程包括测试case的编写和积累、测试 case 的无监督执行、测试结果的自动分析。将整个的数据测试工作通过一套工具进行串联,同时也将已有的 case 进行快速复用,对数据测试效率的提高是很有帮助的。
所以总结下数据测试工具的需求有这么几个:
需求一:支持输入数据的构造
、支持 CR。
需求二:支持输出数据的功能性测试
。
需求三:支持对其他测试方法的低耦合式接入。
需求四:支持测试执行时机的灵活选择。
需求五:支持测试case的快速编写和重复利用
。
需求六:支持对测试过程的串联
。
三、关于数据仓库的测试:
一、方法及原则
数据测试环节测试角色(角色承担者可以是测试人员,也可以是开发)重点要做到的事项:
1、代码规范性测试,命名规范、编码类型、是否支持重跑等;
2、数据规范性测试,命名规范、表结构规范、精度要求、空值处理方式、时间类型格式等;
3、数据基础性测试,主键唯一、重复记录、空值或无效值占比等;
4、业务正确性测试,各业务点是否被正确实现,可通过划分边界值、等价类等样本数据进行验证;
5、代码性能测试,验证代码是否符合业务基线时间的要求;
二、数据测试用例设计
三、与工具结合(待定)
1、检查编码规范需要落地到扫描工具;
2、数据探查工具需要有探查的工具支撑;
3、数据测试初始化的验证工具支撑;
4、自动化抽样数据的验证功能
5、自动化回归测试功能
6、UDF函数自动化测试机制
7、自动化数据比对的功能
四、测试的交付物
1、测试分析方案报告
2、交付测试报告
3、质量评估报告模板
4、验收测试报告模板
参考文章
MTSC-2017 演讲稿–人工智能产品的测试探索
测试开发之路–Spark 之旅 (四):大数据产品的一种测试方法与实现
“做好大数据测试,我是认真的!”
更好的完成大数据测试的方法