大数据测试基本知识

常用大数据框架结构

1.大数据测试常用到的软件工具

工具推荐,对于测试数据构造工具有:Datafaker、DbSchema、Online test data generator等;ETL测试工具有:RightData、QuerySurge等;数据质量检查工具:great_expectations、mobyDQ、DataQuality、GriFFin、Qualitis等。

大数据生态圈

1.基于hadoop的大数据生态圈

2.基于大数据生态圈平台

3.基于大数据搜索引擎

如果需要实现大数据生态圈平台化,不用单独搭建每个服务,则采用

 • CDH5.4

     http://archive.cloudera.com/cdh5/

  •Cloudera Manager5.4.3:

     http://www.cloudera.com/downloads/manager/5-4-3.html

快速编写测试用例

1.对齐测试用例需求

用例文档使用者:测试人员
用例文档范围:覆盖产品所有需求
用例模板内容:编号、模块、子模块、测试功能点、预置条件、数据、步骤、预期结果、优先级、用例类型、关联需求、(编写人、更新时间、执行人、状态、执行时间、执行结果)
测试用例粒度:所有功能的正反用例
测试用例验收负责人:活久见(对齐目标)

快速了解产品

横向业务扩展

纵向架构分层

以某云的大数据云平台为例,大数据云平台的核心是集群。大数据云平台集群是由一个或多个虚拟机实例组成的Hadoop、Flink、ZooKeeper集群。以Hadoop为例,每个虚拟机实例上通常都运行了一些daemon进程(例如,NameNode、DataNode、ResouceManager和NodeManager),集群上还可安装各类大数据服务组件(例如:HBase、Hive、Presto、Spark等)。

大数据云平台的横向核心业务功能全景线路图(以Hadoop集群为例),其核心流程有:Hadoop集群创建->集群管理->大数据组件管理->虚拟主机管理-> ... ->Hadoop集群释放;功能全景如图1所示:

 

用例覆盖范围

1、 从产品业务功能全景出发,围绕PRD(Product Requirement Document)、结合纵向架构层次,用例无死角全面覆盖产品(论范围)。

(1)水平方向拓宽【宽度】,围绕它的产品的主生命周期由大模块至小模块、主功能至次要功能逐步扩展支叶,借用鱼骨图梳理或Xmind脑图来整理。先梳理内部,然后梳理外部对接的服务或产品场景(如:消息中心、费用中心、告警中心、文档中心、数据开发等等)。

2)横向扩展发散完成后,开始纵向挖掘【深度】,比如,大数据云平台核心架构分为四层,每一层都需要拆开了看:

  • 最顶层:UI层端对端用例走查(如前面所述),从顶层UI操作测试除了验UI结果、还要确保底层集群服务器上的实际结果与界面显示一致

  • 次顶层:第二层是门户后端Api,直接调用OpenApi的相关测试用例覆盖

  • 次底层:直接操作使用或强干预Hadoop集群服务组件、检验整个大数据云平台的质量;由于大数据平台上的服务组件非常多(有三十多),除了单个服务使用外,更要多个常用服务组件搭配组合验证。

  • 最底层:直接操作使用或强干预服务器层(增、删、停、重启、扩、缩、升、网络、磁盘、软件配置等),检验整个大数据云平台的质量

用例设计方法

从测试类型出发,有功能与非功能测试用例覆盖。本次不需要交付非功能用例,因此不展开;功能性用例设计方法:

  • 等价类划分法(正等价类、负等价类)

  • 边界值分析法(边界内、边界外)

  • 判定表分析法

  • 因果图

  • 错误推测法

    用例编写原则

  • 拆分原则: 全文制定统一的边界。比如:以模块为边界、当不同模块之间有关联互动时、预置条件作为分界线,预置条件里的内容放在上游模块验证。

  • 优先级原则: 【创建】【查看】【使用(启停等)】【修改】【删除】为序 【主场景】优先、【次要场景】其次 【正例】优先、【反例】其次

制定统一标准

以某云大数据云平台产品为例,很多需求功能统一要求,为此设计一套标准化用例:

比如: 创建新增的页面,表单输入项,需求约束统一要求(是否必填、长度限制、字符要求),设计一套标准化用例,供其他页面复用。

比如:每个模块的权限测试用例,设计统一标准用例;

比如:所有的OpenApi测试,都是针对返回码200、400、401、403、405、500的场景测试;

比如:大数据平台服务30多个,每个服务是不同的,但操作是类似:添加、启动、停止、修改配置、部署,为此设计统一标准用例 (此刻你是否有一种代码重构的既视感,定义一个标准的方法、供大家反复调用)。

前边提到过设计了多套统一标准用例,新的页面复用时,直接替换变量内容,生成当前用例。又或者需求变更的刚好是统一标准用例的内容,活用全文查找替换、一分钟搞定用例维护。

总之,必须要总结一套自己的方法来应对这么庞大的编写工作量,否则在短期的时间内无法完工。而高效编写用例的秒招,离不开可复用、找共性、提炼统一标准,借用一些手段或工具自动生成。

以某云大数据云平台产品为例,其中包含了10个以上的列表页面,对于每个列表都有分页组件、筛选、搜索、排序,这些公共组件的用例抽为【公共组件用例】,设计一套标准化用例,相关页面复用即可。

注意:统一标准用例中,可变的项用{ABC}来替换,比如:在集群查看列表中筛选集群状态时,把统一标准用例中的{ABC}替换成{集群状态}即可。

批量编写与自动生成

在用例编写过程中,发现很多情况除了{某名称或字段}不同,其它都是一样的,此时可以批量编写(如:借助Sublime或直接传变量用代码生成),这样也可以大大提高编写效率。

在编写OpenApi相关测试用例时,直接定义出一套OpenApi标准用例,以QA设计出的标准用例为模板,然后编写代码生成用例,通过读取OpenApi的Json文件,快速生成71个Api的测试用例,近1000条详细测试用例,高效。

活用全文替换

编写用例时,QA人员一定要用统一语言文字或格式,一来是给阅读的人方便、二来是方便查找替换,即通过全文查找替换能 快速维护用例。

有一次需求变更:由原来的一级菜单A001下二级菜单B002,变为了一级C001下D002;由于在整个产品的用例中,从一级菜单进入二级菜单,全部都使用:A001->B002这种格式,本次需求变更,直接全文查找替换一鍵完成。

提效手段

以上的测试实践活动,帮助团队把控质量,即"保质"。其实,测试增加,必然拉低整体速率。那么,如何使的团队不降质量标准的前提下,高效开发与测试?即"保质"的同时还要"保量"?

避免返工
前面介绍敏捷QA实践活动为得就是尽早参与、提前发现问题、预防缺陷,避免返工,从而达到高效开发。

工具代替人工(即自动化代替手动)
在项目中,开发人员的数据建模处理、指标开发、指标管理应用发布、标签API发布、数据监控,这些功能都是研发同学提炼工具,由工具自动生成代码,完成开发。大大节约了项目时间,提高了开发速度。
特别提一下EXCEL自动化测试工具(详细参见廖光明的博客文章《数据集成测试支持工具》数据集成测试支持工具 - 知乎),可以用一页EXCEL即可完成所有的数据测试用例的构造。大家都知道数据项目构建数据集是一个费时费力的活儿。有了这个EXCEL编写测试数据的工具,团队的UT大大节约了时间。

    • 提高复用、减少重复
      项目开发过程中,相同的代码逻辑抽取公共片断或者合理分层(输出中间表),这样避免相同的业务逻辑开发重复和重复测试。比如:同类指标的维度计算都是相同的,抽取了公共的维度代码片断,针对公共代码片断进行了测试验证,即使之后业务有变动,修改一处代码即可。

    • 精准抽样
      构建测试数据时,精准抽样测试。一条测试数据精准覆盖一个逻辑,避免重复用例的构造。在Review UT时,经常发现有重复场景,会提醒大家及时删除重复用例。多余的用例没有价值反而还会造成干扰至少随时用例的增多,运行速度也会影响。

    • 数据报告
      通过data filling生成数据报告,大多数据探索Checklist的结果通过数据报告即可拿到,减少人工探索的成本。

    • ETL测试

      ETL测试通过有以下几种测试类型:
      1.表数据量对比测试
      通过对比处理前后的数据量变化,验证ETL开发过程中是否有代码错误导致数据丢失,这种直接对比量表数据量的比较适用数据仓库底层仅做数据过滤和数据转化时,不太适合聚合过程的测试。
      2.统计值总量对比测试
      这种测试方法适用于对部分表进行聚合统计前后做数据无损验证。举个例子,挖掘同学在挖掘购物偏好时一般会向ETL同学提交需求,要求把源数据零散的查看和购买等行为聚合统计为某类目在一天内的访问、购买次数,这种情况由于聚合过程存在,源表和结果表数据量必然不同,此时可通过统计源表的数量总量对比结果表SUM(行为次数)的方式来确保聚合过程中是否有数据量损失。
      部分聚合统计过程可能缺失存在正常的损失数据,这种情况下也需要对比源表和结果表数据,分析这种损失是否合理。
      3.数据清洗测试
      这种情况首先需要分析出那些数据是异常数据,举一些例子:ip、imei、邮箱、mac地址等这些信息本身是有规则的,可以考虑使用对应的正则来判断是否存在符合相应规范,不符合的数据视为异常数据清洗掉,又如部分数据中存在明显的乱码等数也是属于异常数据,测试过程可通过统计源表符合规则的数据总量和结果表的数据量对比,判断数据异常数据是否过滤正常
      4.数据转化测试
      由于各业务的数据源对于各种字段的格式并不统一,所以数仓在ETL开发过程中会对字段的格式做统一处理。例如时间字段,有些业务使用时间戳,有些业务使用日期时间格式,这些数据数仓会按照数仓定义的规范做相关数据转化,测试过程可通过极值、平均值且对比源表数据的方式验证转化是否正确。
      5.枚举字段验证(例如:年龄、性别、学历、职业)等:
      枚举字段主要验证两方面:通过group by 找出全部枚举值,判断枚举分布是否符合常识(如大姨妈类软件男女比为8比2,通过认为违背常识)、是否存在异常枚举(异常枚举需过滤);验证ETL开发过程是否将各业务各自定义枚举值是否映射为数仓标准的枚举值,如将某业务性别的中的0,1,2分别映射为F,M,null
      6.敏感字段加密验证
      验证敏感信息是否有做加密操作,加密后的数据是否可正常解密等
      7.数字字段的极值验证
      验证部分数值字段最大最小平均值等,是否符合常识,比如商品收藏数为负数,通常这种数据需过滤
      8.抽样测试验证
      9.字段逻辑验证
      通过字段本身一些互斥属性也可以发现部分数据源异常或者ETL开发过程中导致的异常,举例如下:
      枚举类型的字段查看枚举分布:
      性别分布:查看性别分布,根据产品用户人员的特点分析性别是否合理
      地域分布:查看网民的省份分布,省份分布可以参考网上的中国网民省份排名
      活跃小时段:一般来说大部分产品凌晨用户不太活跃,活跃时间也有规律,要结合具体产品(如办公产品应该是上班时间活跃,休闲产品午休时间可能更活跃)
      年龄分布:90年后的用户应该是个峰值
      学历比例:结合社会情况看
      操作系统:安卓 ios pc结合实际产品应该有合理的比例
      字段本身的逻辑性:
      购物订单本身不应该同一时间出现多次
      统计数:通过查看数量判断正常否,比如一天购物次数如果超过100,是不是需要查下是不是正常
      新闻类目、音乐歌手和语种、考拉类目和品牌被用户触发的总次数排行,可以结合实际情况看看是否合理
      手机设备、汽车、美妆、家电的品牌和型号可以看被触达的排行,结合实际情况分析是否合理
      有多个设备(或车)的id占总id数的比例(理论上有但是不应该太高)
      字段之间的逻辑关系:
      ip和城市对应关系
      订单的商品单价和订单总价的计算关系
      七天活跃城市和30天活跃城市相等的数量占总用户数的比例,一般来说这种比例应该很高,只有少数出差的人才会是不同的
      设备型号和设备品牌的对应关系抽查
      车型号和车品牌的对应关系抽查
      字段之间的互斥关系:
      地域与时间互斥:如同一个时间在不同城市
      职业和年龄互斥:比如学生一般小于25
      年龄和是否有小孩:18岁一下一般不会有小孩儿

      三.数据监控

      测试上线完成后,集群会对相关任务进行日常调度刷数据,由于网络、传输等各个环节都可能出问题从而导致数据跑不出来,所以已上线的表需要通过监控的方式来保证后续的数据正常。
      数据监控可以考虑通过使用hive提供的原生接口,开发一些内部的工具进行相关监控。

    • 【知识】ETL大数据集成工具Sqoop、dataX、Kettle、Canal、StreamSets大比拼 - 简书

    • 大数据性能测试工具-YCSB · TesterHome

    • 大屏驾驶舱

    • (4)数据同步之道(Sqoop、dataX、Kettle、Canal、StreamSets)
      https://www.modb.pro/db/86290

      (1)数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
      https://blog.csdn.net/xiaozm1223/article/details/89670460

      (2)ETL学习总结(2)——ETL数据集成工具之kettle、sqoop、datax、streamSets 比较
      https://zhanghaiyang.blog.csdn.net/article/details/104446610

      (3)数据集成工具Kettle、Sqoop、DataX的比较
      https://www.cnblogs.com/bayu/articles/13335917.html

      (5)Datax与Sqoop的对比
      https://blog.csdn.net/lzhcoder/article/details/107902791

      (6)Datax和Kettle的对比
      https://blog.csdn.net/lzhcoder/article/details/120830522

      (7)超详细的Canal入门,看这篇就够了!
      https://blog.csdn.net/yehongzhi1994/article/details/107880162

      让人眼前一亮的数据分析的报告,竟可自动生成啊_报告自动生成_Python数据挖掘的博客-CSDN博客

    • GitHub: https://github.com/pandas-profiling/pandas-profiling

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30525.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL-SQL存储过程/触发器详解(上)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

Three.js--》实现3d地月模型展示

目录 项目搭建 初始化three.js基础代码 创建月球模型 添加地球模型 添加模型标签 今天简单实现一个three.js的小Demo,加强自己对three知识的掌握与学习,只有在项目中才能灵活将所学知识运用起来,话不多说直接开始。 项目搭建 本案例还…

《离散数学》:代数系统和图论导论

一、代数系统 代数系统是数学中的一个重要概念,它涉及一组对象以及定义在这些对象上的运算规则。代数系统可以是抽象的,也可以是具体的。 在抽象代数中,代数系统通常由一组元素和一组操作(或称为运算)组成。这些操作…

【MySQL新手入门系列四】:手把手教你MySQL数据查询由入门到学徒

SQL语言是与数据库交互的机制,是关系型数据库的标准语言。SQL语言可以用于创建、修改和查询关系数据库。SQL的SELECT语句是最重要的命令之一,用于从指定表中查询数据。在此博客中,我们将进一步了解SELECT语句以及WHERE子句以及它们的重要性。…

vue进阶-vue-route

Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。 本章只做学习记录,详尽的内容一定要去官网查看api文档 Vue Router-Vue.js 的官方路由 1. 路由的基本使用 1.1 安装vue-router npm install vue-…

SpringCloud Eureka注册中心高可用集群配置(八)

当注册中心扛不住高并发的时候&#xff0c;这时候 要用集群来扛&#xff1b; 我们再新建两个module microservice-eureka-server-2002 microservice-eureka-server-2003 第一步&#xff1a; pom.xml 把依赖加下&#xff1a; <dependencies> <dependency…

golang 协程的实现原理

核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…

Prompt 范式产业实践分享!基于飞桨 UIE-X 和 Intel OpenVINO 实现跨模态文档信息抽取

近期 Prompt 范式备受关注&#xff0c;实际上&#xff0c;其思想在产业界已经有了一些成功的应用案例。中科院软件所和百度共同提出了大一统诸多任务的通用信息抽取技术 UIE&#xff08;Universal Information Extraction&#xff09;。截至目前&#xff0c;UIE 系列模型已发布…

Selenium 相对定位

目录 前言&#xff1a; 相对定位 工作原理 可用的相对定位 Above Below Left of Right of Near 链式相对定位 相对于WebElement的相对定位 实例演示 前言&#xff1a; Selenium传统定位基本能解决80%的定位需求&#xff0c;但是还是有一些复杂场景传统定位定不到的…

express框架学习笔记

express简介 express是一个基于Node.js平台的极简的、灵活的WEB应用开发框架。express是一个封装好的工具包&#xff0c;封装了很多功能&#xff0c;便于我们开发WEB应用&#xff08;HTTP服务&#xff09; express使用 新建express文件夹新建文件test01.js&#xff0c;代码如…

深蓝学院C++基础与深度解析笔记 第 5 章 语句

1. 语句基础 ● 语句的常见类别 – 表达式语句&#xff1a;表达式后加分号&#xff0c;对表达式求值后丢弃&#xff0c;可能产生副作用 – 空语句&#xff1a;仅包含一个分号的语句&#xff0c;可能与循环一起工作 – 复合语句&#xff08;语句体&#xff09;&#xff1a;由大…

电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume

1、数据仓库概念 数据仓库&#xff08; Data Warehouse &#xff09;&#xff0c;是为企业制定决策&#xff0c;提供数据支持的。可以帮助企业&#xff0c;改进业务流程、提高产品质量等。 数据仓库的输入数据通常包括&#xff1a;业务数据、用户行为数据和爬虫数据等。 业务数…

流场粒子追踪精度数值实验

在计算流线&#xff0c;拉格朗日拟序结构等流场后处理时&#xff0c;我们常常需要计算无质量的粒子在流场中迁移时的轨迹&#xff0c;无质量意味着粒子的速度为流场当地的速度。此时&#xff0c;求解粒子的位移这个问题是一个非常简单的常微分方程问题。 假设流场中存在 i 个粒…

Java版本+企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势

计算机与网络技术的不断发展&#xff0c;推动了社会各行业信息化的步伐。时至今日&#xff0c;电子政务、电子商务已经非常普及&#xff0c;云计算、大数据、工业4.0、“互联网”等发展理念也逐步深入人心&#xff0c;如何将传统行业与互联网科技有效结合起来&#xff0c;产生1…

Vue实现元素沿着坐标数组移动,超出窗口视图时页面跟随元素滚动

一、实现元素沿着坐标数组移动 现在想要实现船沿着下图中的每个河岸移动。 实现思路&#xff1a; 1、将所有河岸的位置以 [{x: 1, y: 2}, {x: 4, y: 4}, …] 的形式保存在数组中。 data() {return {coordinateArr: [{ x: 54, y: 16 }, { x: 15, y: 31 }, { x: 51, y: 69 }…

升级Nginx

目录 前言 一、升级Nginx 1&#xff09;首先在官网下载一个新版本的Nginx 2&#xff09;首先将下载的压缩包进行解包 3&#xff09;进入已解包的目录中 4&#xff09;配置安装路径 5&#xff09;make 6&#xff09;备份原来Nginx的资源 7&#xff09;重启Nginx服务 8&#…

【2023最全教程】Web自动化测试怎么做?Web自动化测试的详细流程和步骤

一、什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目…

毕业季Android开发面试,有哪些常见的题?

前言 对于计算机行业早已烂大街&#xff0c;随之而来的毕业季。还会有大批的程序员涌进来&#xff0c;而我们想要继续进入Android开发岗位的人员&#xff0c;最先考虑的是面试。面试题是我们决定踏进工作的重要环节。 对于刚毕业的实习生来说&#xff0c;如何在应聘中脱颖而出…

LightningChart .NET 10.5.1 Crack LightningChart 2023

LightningChart .NET v.10.5.1 已经发布&#xff01; DataCursor 和 3D TransparencyRenderMode 现在可用。 为所有 3D、Polar 和 Smith 系列启用 DataCursor 在早期阶段&#xff0c;LightningChart 提供了不同的工具&#xff0c;需要用户编写额外的代码才能启用数据跟踪功能。…

控制您的数据:Web3私有链为数据主权带来的突破性变革

在数字化时代&#xff0c;数据已经成为企业和个人最宝贵的资产之一。然而&#xff0c;随着大规模数据泄露和滥用事件的频发&#xff0c;数据主权和隐私保护成为了备受关注的问题。在这个背景下&#xff0c;Web3私有链的出现为数据主权带来了一场突破性的变革。 首先&#xff0c…