Ⅰ 什么是大数据测试
测试大数据应用程序更多的是验证其数据处理,而不是测试软件产品的个别功能版。当涉及到大权数据测试时,性能和功能测试是关键。在大数据测试中,QA工程师使用集群和其他组件来验证对TB级数据的成功处理。因为处理非常快,所以它需要高水平的测试技能。
大数据应用程序的测试更多的是去验证其数据处理而不是验证其单一的功能特色。当然在大数据测试时,功能测试和性能测试是同样很关键的。对于大数据测试工程师而言,如何高效正确的验证经过大数据工具/框架成功处理过的至少百万兆字节的数据将会是一个巨大的挑战。因为大数据高效的处理测试速度,它要求测软件工程师具备高水平的测试技术才能应对大数据测试。
Ⅱ 大数据科学家需要掌握的几种异常值检测方法
引言
异常值检测与告警一直是工业界非常关注的问题,自动准确地检测出系统的异常值,不仅可以节约大量的人力物力,还能尽早发现系统的异常情况,挽回不必要的损失。个推也非常重视大数据中的异常值检测,例如在运维部门的流量管理业务中,个推很早便展开了对异常值检测的实践,也因此积累了较为丰富的经验。本文将从以下几个方面介绍异常值检测。
1、异常值检测研究背景
2、异常值检测方法原理
3、异常值检测应用实践
异常值检测研究背景
异常值,故名思议就是不同于正常值的值。 在数学上,可以用离群点来表述,这样便可以将异常值检测问题转化为数学问题来求解。
异常值检测在很多场景都有广泛的应用,比如:
1、流量监测
互联网上某些服务器的访问量,可能具有周期性或趋势性:一般情况下都是相对平稳的,但是当受到某些黑客攻击后,其访问量可能发生显著的变化,及早发现这些异常变化对企业而言有着很好的预防告警作用。
2、金融风控
正常账户中,用户的转账行为一般属于低频事件,但在某些金融诈骗案中,一些嫌犯的账户就可能会出现高频的转账行为,异常检测系统如果能发现这些异常行为,及时采取相关措施,则会规避不少损失。
3、机器故障检测
一个运行中的流水线,可能会装有不同的传感器用来监测运行中的机器,这些传感器数据就反应了机器运行的状态,这些实时的监测数据具有数据量大、维度广的特点,用人工盯着看的话成本会非常高,高效的自动异常检测算法将能很好地解决这一问题。
异常值检测方法原理
本文主要将异常值检测方法分为两大类:一类是基于统计的异常值检测,另一类是基于模型的异常值检测。
基于统计的方法
基于模型的方法
1、基于统计的异常值检测方法
常见的基于统计的异常值检测方法有以下2种,一种是基于3σ法则,一种是基于箱体图。
3σ法则
箱体图
3σ法则是指在样本服从正态分布时,一般可认为小于μ-3σ或者大于μ+3σ的样本值为异常样本,其中μ为样本均值,σ为样本标准差。在实际使用中,我们虽然不知道样本的真实分布,但只要真实分布与正太分布相差不是太大,该经验法则在大部分情况下便是适用的。
箱体图也是一种比较常见的异常值检测方法,一般取所有样本的25%分位点Q1和75%分位点Q3,两者之间的距离为箱体的长度IQR,可认为小于Q1-1.5IQR或者大于Q3+1.5IQR的样本值为异常样本。
基于统计的异常检测往往具有计算简单、有坚实的统计学基础等特点,但缺点也非常明显,例如需要大量的样本数据进行统计,难以对高维样本数据进行异常值检测等。
2、基于模型的异常值检测
通常可将异常值检测看作是一个二分类问题,即将所有样本分为正常样本和异常样本,但这和常规的二分类问题又有所区别,常规的二分类一般要求正负样本是均衡的,如果正负样本不均匀的话,训练结果往往会不太好。但在异常值检测问题中,往往面临着正(正常值)负(异常值)样本不均匀的问题,异常值通常比正常值要少得多,因此需要对常规的二分类模型做一些改进。
基于模型的异常值检测一般可分为有监督模型异常值检测和无监督模型异常值检测,比较典型的有监督模型如oneclassSVM、基于神经网络的自编码器等。 oneclassSVM就是在经典的SVM基础上改进而来,它用一个超球面替代了超平面,超球面以内的值为正常值,超球面以外的值为异常值。
经典的SVM
1
基于模型的方法
2
基于神经网络的自编码器结构如下图所示。
自编码器(AE)
将正常样本用于模型训练,输入与输出之间的损失函数可采用常见的均方误差,因此检测过程中,当正常样本输入时,均方误差会较小,当异常样本输入时,均方误差会较大,设置合适的阈值便可将异常样本检测出来。但该方法也有缺点,就是对于训练样本比较相近的正常样本判别较好,但若正常样本与训练样本相差较大,则可能会导致模型误判。
无监督模型的异常值检测是异常值检测中的主流方法,因为异常值的标注成本往往较高,另外异常值的产生往往无法预料,因此有些异常值可能在过去的样本中根本没有出现过, 这将导致某些异常样本无法标注,这也是有监督模型的局限性所在。 较为常见的无监督异常值检测模型有密度聚类(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一种典型的无监督聚类方法,对某些类型的异常值检测也能起到不错的效果。该算法原理网上资料较多,本文不作详细介绍。
IF算法最早由南京大学人工智能学院院长周志华的团队提出,是一种非常高效的异常值检测方法,该方法不需要对样本数据做任何先验的假设,只需基于这样一个事实——异常值只是少数,并且它们具有与正常值非常不同的属性值。与随机森林由大量决策树组成一样,IsolationForest也由大量的树组成。IsolationForest中的树叫isolation tree,简称iTree。iTree树和决策树不太一样,其构建过程也比决策树简单,因为其中就是一个完全随机的过程。
假设数据集有N条数据,构建一颗iTree时,从N条数据中均匀抽样(一般是无放回抽样)出n个样本出来,作为这颗树的训练样本。
在样本中,随机选一个特征,并在这个特征的所有值范围内(最小值与最大值之间)随机选一个值,对样本进行二叉划分,将样本中小于该值的划分到节点的左边,大于等于该值的划分到节点的右边。
这样得到了一个分裂条件和左、右两边的数据集,然后分别在左右两边的数据集上重复上面的过程,直至达到终止条件。 终止条件有两个,一个是数据本身不可再分(只包括一个样本,或者全部样本相同),另外一个是树的高度达到log2(n)。 不同于决策树,iTree在算法里面已经限制了树的高度。不限制虽然也可行,但出于效率考虑,算法一般要求高度达到log2(n)深度即可。
把所有的iTree树构建好了,就可以对测试数据进行预测了。预测的过程就是把测试数据在iTree树上沿对应的条件分支往下走,直到达到叶子节点,并记录这过程中经过的路径长度h(x),即从根节点,穿过中间的节点,最后到达叶子节点,所走过的边的数量(path length)。最后,将h(x)带入公式,其中E(.)表示计算期望,c(n)表示当样本数量为n时,路径长度的平均值,从而便可计算出每条待测数据的异常分数s(Anomaly Score)。异常分数s具有如下性质:
1)如果分数s越接近1,则该样本是异常值的可能性越高;
2)如果分数s越接近0,则该样本是正常值的可能性越高;
RCF算法与IF算法思想上是比较类似的,前者可以看成是在IF算法上做了一些改进。针对IF算法中没有考虑到的时间序列因素,RCF算法考虑了该因素,并且在数据样本采样策略上作出了一些改进,使得异常值检测相对IF算法变得更加准确和高效,并能更好地应用于流式数据检测。
IF算法
RCF算法
上图展示了IF算法和RCF算法对于异常值检测的异同。我们可以看出原始数据中有两个突变异常数据值,对于后一个较大的突变异常值,IF算法和RCF算法都检测了出来,但对于前一个较小的突变异常值,IF算法没有检测出来,而RCF算法依然检测了出来,这意味着RCF有更好的异常值检测性能。
异常值检测应用实践
理论还需结合实践,下面我们将以某应用从2016.08.16至2019.09.21的日活变化情况为例,对异常值检测的实际应用场景予以介绍:
从上图中可以看出该应用的日活存在着一些显著的异常值(比如红色圆圈部分),这些异常值可能由于活动促销或者更新迭代出现bug导致日活出现了比较明显的波动。下面分别用基于统计的方法和基于模型的方法对该日活序列数据进行异常值检测。
基于3σ法则(基于统计)
RCF算法(基于模型)
从图中可以看出,对于较大的突变异常值,3σ法则和RCF算法都能较好地检测出来, 但对于较小的突变异常值,RCF算法则要表现得更好。
总结
上文为大家讲解了异常值检测的方法原理以及应用实践。综合来看,异常值检测算法多种多样 ,每一种都有自己的优缺点和适用范围,很难直接判断哪一种异常检测算法是最佳的, 具体在实战中,我们需要根据自身业务的特点,比如对计算量的要求、对异常值的容忍度等,选择合适的异常值检测算法。
接下来,个推也会结合自身实践,在大数据异常检测方面不断深耕,继续优化算法模型在不同业务场景中的性能,持续为开发者们分享前沿的理念与最新的实践方案。
Ⅲ 怎样提升自己的大数据测试经验
大数据测试三个步骤:
步骤一:数据阶段验证
大数据测试的第一步,也称作pre-hadoop阶段该过程包括如下验证:
1)来自各方面的数据资源应该被验证,来确保正确的数据被加载进系统。
2)将源数据与推送到Hadoop系统中的数据进行比较,以确保它们匹配。
3)验证正确的数据被提取并被加载到HDFS正确的位置。
该阶段可以使用工具Talend或Datameer,进行数据阶段验证。
步骤二:"MapRece"验证
大数据测试的第二步是MapRece的验证。在这个阶段,测试者在每个节点上进行业务逻辑验证,然后在运行多个节点后验证它们,确保如下操作的正确性:
1)Map与Rece进程正常工作。
2)在数据上实施数据聚合或隔离规则。
3)生成键值对。
4)在执行Map和Rece进程后验证数据。
步骤三:输出阶段验证
大数据测试的最后或第三阶段是输出验证过程。生成输出数据文件,同时把文件移到一个EDW(Enterprise Data Warehouse:企业数据仓库)中或着把文件移动到任何其他基于需求的系统中。在第三阶段的活动包括:
1)检查转换(Transformation)规则被正确应用。
2)检查数据完整性和成功的数据加载到目标系统中。
3)通过将目标数据与HDFS文件系统数据进行比较来检查没有数据损坏。
Ⅳ 大数据测试工程师需要具备哪些技能
1、测试基本知识
想成为大数据测试工程师之前,有些测试必备的技能,比如软件测试执行提出了我们开展软件测试的执行活动所需要涉及的执行过程以及相关策略;同时了解常用德测试活动中的经验之谈,理论知识的梳理和基本的测试技巧掌握。
2、Linux及环境搭建 、Docker容器实现分布式虚拟化技巧
一个成熟的数据从业者应该懂得灵活的运用数据寻找,获取,安装,Debug,分享,团队合作,Linux是知名的开源系统,在这个系统下环境的配置将变得非常容易和透明。Linux操作系统作为常见的底层操作系统,在软件开发、软件测试过程中都会经常接触和使用,很多企业的服务器都是Linux环境的,对于测试人员而言,也都会掌握相应的Linux命令。
3、SQL和数据库相关的技能
数据库是另外一个比较重要的部分,想象一下你不可能一直使用Excel去处理数据,毕竟超过十万行的数据用Excel就比较吃力了。这个时候SQL就是必须要用的,可以说这个是一个核心技能。有的人可能会说SQL非常简单,但是当你实际应用的时候你会发现你在学校学的那些简单Query完全就跟不上需求了。
4、 Python/java语言
先说一下Python, Python是一种万能的语言,适用性非常强,除了数据分析还能够做很多的事情,比如编写程序,网站开发,深度学习等等。如果你决定使用Python,那么你需要了解的点主要是各种包的搜索和调用,函数的编写和嵌套,数据类型的把握(list, tuple, series, dict),条件判断,循环迭代等等。
5、性能测试、框架开发的技能掌握
这个也是成为大数据测试工程师前,你必须要掌握得部分。在了解性能测试各方面的知识和经验的同时,培养自己的独立思考和解决问题的能力,掌握软件性能测试核心技术、工具使用以及项目实战技巧。
Ⅳ 大数据技术在APP测试上面如何应用
数据获取手段、数据处理技术的改进导致"大数据"爆发。测试行业对于大回数据的应用也是很答多的,比如TestBird在做测试时是基于大量的数据基础的,对于测试的分析和bug探索效果都能有很大的提升。
当然,在测试技术上,也有很好的大数据运用例子。比如你可以通过大数据统计点来写测试用例。产品需要快速迭代,又要保证版本质量不下降,就必须做到精准测试的用例精简。
也就是统计用户行为预埋下的点,用户使用次数的数据稳健并且有迹可循,测试路径就非常的清晰明朗。
Ⅵ 大数据测试需要学什么
首先是基础阶段。这一阶段包括:关系型数据库原理、操作系统原理及应用。在掌握了这些基础知识后,会安排这些基础课程的进阶课程,即:数据结构与算法、MYSQL数据库应用及开发、SHELL脚本编程。在掌握了这些内容之后,大数据基础学习阶段才算是完成了。
接下来是大数据专业学习的第二阶段:大数据理论及核心技术。第二阶段也被分为了基础和进阶两部分,先理解基础知识,再进一步对知识内容做深入的了解和实践。基础部分包括:布式存储技术原理与应用、分布式计算技术、HADOOP集群搭建、运维;进阶内容包括:HDFS高可靠、ZOOKEEPER、CDH、Shuffle、HADOOP源码分析、HIVE、HBASE、Mongodb、HADOOP项目实战。
完成了这部分内容的学习,学员们就已经掌握了大数据专业大部分的知识,并具有了一定的项目经验。但为了学员们在大数据专业有更好的发展,所学知识能更广泛地应用到大数据相关的各个岗位,有个更长远的发展前景。
第三阶段叫做数据分析挖掘及海量数据高级处理技术。基础部分有:PYTHON语言、机器学习算法、FLUME+KAFKA;进阶部分有:机器学习算法库应用、实时分析计算框架、SPARK技术、PYTHON高级语言应用、分布式爬虫与反爬虫技术、实时分析项目实战、机器学习算法项目实战。
Ⅶ 数据库如何做测试
查询输入:
(1)分别对单条件进行精确查询
(2)输入长度的检验,输入允许的最长值进行查询,是否支持
(3)两个查询条件是否为2选1,来回选择是否出现页面错误
(4)输入字符
(5)输入特殊字符
(6)输入数字
(7)输入汉字
(8)输入关系表达式与、或、异或、非、等于
(9)输入空格
(10)条件中含有空格
(11)输入超长字符
(12)输入全角字符
(13)输入单引号
(14)输入单引号引起来的数据
(15)输入双引号
(16)输入双引号引起来的数据
(17)如果支持模糊查询,输入部分查询条件
(18)输入系统中不存在与之匹配的条件
查询结果检查
(1)查询结果按什么顺利排序
(2)查询结果是否根据字段显示排序功能
(3)查询结果是否有分页,如果有,每页最多包含多少记录
(4)查询结果是否匹配
(5)查询结果是否与数据库一致
(6)查询结果是精确查询还是模糊查询
UI验证
(1)文字显示是否正确
(2)页面是否有错别字
(3)输入框大小、文字大小是否合适
(4)页面是否美观
(5)查询结果字段显示是否与需求一致
性能方面
(1)查询处理时间是否能接受
(2)数据库中存在大数据量数据时,查询时间是否能接受
(3)当多个用户同时查询时,输入相同或不同的查询条件系统响应是否及时...