一种SparkSQL应用程序的自动化测试方法和装置制造方法及图纸

技术编号:20622178 阅读:33 留言:0更新日期:2019-03-20 14:15
一种SparkSQL应用程序的自动化测试装置涉及信息技术领域,尤其是大数据应用领域。本发明专利技术由测试环境、Jmockit、sqlList记录器、数量对比器、语句对比器组成;测试环境由maven工程配置器、jar包导入器、HDFS环境变量设置器、大数据组件引入器组成;实现本发明专利技术降低了测试难度不需要构造复杂的测试数据,根据SparkSQL应用程序的特点,将对比预期结果数据,转换为对比预期sql语句,降低了测试难度和测试效率;提高了测试效率从第二轮开始的迭代测试可以通过sql语句回放来自动验证程序的正确性,极大的提高了测试效率;提高了测试覆盖率第一轮的代码走读和sql查看可以覆盖整个业务逻辑,后期迭代测试根据sql语句回放,可以准确找到程序业务逻辑更改的地方,保证回归测试的覆盖率。

An Automated Test Method and Device for SparkSQL Applications

【技术实现步骤摘要】
一种SparkSQL应用程序的自动化测试方法和装置
本专利技术涉及信息

技术介绍
Spark作为Hadoop生态系统中的分布式计算框架之一,以其计算速度快、功能丰富的特点,成为了大数据应用程序开发的主流框架。其中SparkSQL作为Spark的结构化数据处理模块,更是应用广泛。SparkSQL应用程序的主要特点是通过SQL的执行,实现海量数据分析处理的功能,极大的简化了大数据业务处理程序的编码难度。传统针对SparkSQL应用程序的测试方法主要是黑盒测试。测试人员只能根据需求文档和从程序员口中了解到的功能实现情况说明,构造测试数据,在大数据集群环境中执行待测程序,对程序执行结果进行判断。这种方式存在以下问题:(1)测试难度大。一般在实现大数据业务处理功能的SparkSQL应用程序中,涉及的sql、表的数量都是巨大且复杂的,这就导致测试数据的构造难度比较大,预期结果也很难准确的给出了;(2)测试效率低。在迭代测试当中,由于在每轮测试当中都需要构造大量复杂的测试数据并进行结果校验,每轮的测试周期都会很长;(3)测试覆盖率低。因为对程序内部的业务逻辑和业务sql不了解,构造的测试数据很难覆盖所有测试点。针对现有技术的不足,本专利技术基于sql语句回放,实现SparkSQL应用程序的自动化测试,解决了传统黑盒测试方法测试难度大、效率低、覆盖率低的问题。共有技术:Mock方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。mock对象有助于从测试中消除依赖项,使测试更单元化。JMockit是一款Java类/接口/对象的Mock工具,目前广泛应用于Java应用程序的单元测试中。Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。HDFSHadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为ApacheNutch搜索引擎项目的基础架构而开发的。HDFS是ApacheHadoopCore项目的一部分;HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(largedataset)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streamingaccess)文件系统中的数据。SparkApacheSpark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UCBerkeleyAMPlab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是--Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法;Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载;Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。与Hadoop不同,Spark和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集;尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以在Hadoop文件系统中并行运行。通过名为Mesos的第三方集群框架可以支持此行为。Spark由加州大学伯克利分校AMP实验室(Algorithms,Machines,andPeopleLab)开发,可用来构建大型的、低延迟的数据分析应用程序。HiveHive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作;Hive没有专门的数据格式。Hive可以很好的工作在Thrift之上,控制分隔符,也允许用户指定数据格式。
技术实现思路
实现本专利技术的一种SparkSQL应用程序的自动化测试装置的必要组成模块包括:测试环境、Jmockit、sqlList记录器、数量对比器、语句对比器;测试环境由maven工程配置器、jar包导入器、HDFS环境变量设置器、大数据组件引入器组成;实现一种SparkSQL应用程序的自动化测试装置的主要步骤包括:1)部署测试环境①由maven工程配置器读取被测应用程序,并判断被测应用程序所需的测试环境的配置类型;②当被测应用程序存在jar包时,通过jar包导入器完成测试环境配置,jar包导入器通过pom.xml的依赖包引入;③当被测应用程序运行于HDFS分布式文件系统时,通过HDFS环境变量设置器完成测试环境配置,HDFS环境变量设置器自动从hadoop官网下载与被测应用程序版本一致的hadoop包,并根据本机的操作系统类型设置hadoop.home.dir属性;④当被测应用程序运行于Spark和Hive的大数据环境时,通过大数据组件引入器完成测试环境配置,大数据组件引入器通过添加pom.xml依赖包来完成测试环境配置;2)对SparkSession.sql(StringsqlText)模拟①使用单元测试当中的Mock工具Jmockit,对SparkSQLAPI中执行sql语句的方法SparkSession.sql(StringsqlText)进行模拟,使SparkSQL在被测应用程序内部调用SparkSession.sql(StringsqlText)执行sql的同时,返回执行的具体sql语句;②使用sqlList记录器接收并保存被测应用程序执行的sql语句,sqlList记录器使用sqlList变量接收被测应用程序执行的sql语句;3)sql语句录制sql语句录制本文档来自技高网
...

【技术保护点】
1.一种SparkSQL应用程序的自动化测试装置,其特征在于由测试环境、Jmockit、sqlList记录器、数量对比器、语句对比器组成;测试环境由maven工程配置器、jar包导入器、HDFS环境变量设置器、大数据组件引入器组成;实现一种SparkSQL应用程序的自动化测试装置的主要步骤包括:1)部署测试环境①由maven工程配置器读取被测应用程序,并判断被测应用程序所需的测试环境的配置类型;②当被测应用程序存在jar包时,通过jar包导入器完成测试环境配置,jar包导入器通过pom.xml的依赖包引入;③当被测应用程序运行于HDFS分布式文件系统时,通过HDFS环境变量设置器完成测试环境配置,HDFS环境变量设置器自动从hadoop官网下载与被测应用程序版本一致的hadoop包,并根据本机的操作系统类型设置hadoop.home.dir属性;④当被测应用程序运行于Spark和Hive的大数据环境时,通过大数据组件引入器完成测试环境配置,大数据组件引入器通过添加pom.xml依赖包来完成测试环境配置;2)对SparkSession.sql(String sqlText)模拟①使用单元测试当中的Mock工具Jmockit,对SparkSQL API中执行sql语句的方法SparkSession.sql(String sqlText)进行模拟,使SparkSQL在被测应用程序内部调用SparkSession.sql(String sqlText)执行sql的同时,返回执行的具体sql语句;②使用sqlList记录器接收并保存被测应用程序执行的sql语句,sqlList记录器使用sqlList变量接收被测应用程序执行的sql语句;3)sql语句录制sql语句录制是指获取被测应用程序的SaprkSQL应用程序运行过程中顺序执行的sql,生成预期sql;①变量模拟对sqlList记录器中的sql语句相关的变量,采用Jmockit工具进行模拟,使变量的取值固定,保证在不同时间和不同应用场景下,被测应用程序的SparkSQL应用程序执行是同样的sql语句;②运行被测应用程序,在SparkSession.sql(String sqlText)模拟和变量模拟的前提下,获取程序运行中顺序执行的sql语句,将顺序执行的sql语句保存到文件生成预期sql;4)sql语句回放①获取执行sql运行被测应用程序,在SparkSession.sql(String sqlText)模拟和变量模拟的前提下,获取程序运行中顺序执行的sql语句,将顺序执行的sql语句保存到文件生成执行sql;②sql数量对比数量对比器读取预期sql和执行sql,对比预期sql的数量和执行sql的数量,当预期sql的数量和执行sql的数量不一致,测试结果为不通过,结束sql对比;当预期sql的数量和执行sql的数量一致,进行sql语句对比;③sql语句对比语句对比器读取预期sql和执行sql,去除语句中的标点符号、空格、回车、换行及非语义的内容,将预期sql和执行sql转换成预期sql字符串和执行sql字符串,对比预期sql字符串和执行sql字符串,当预期sql字符串和执行sql字符串不同时,测试结果为不通过;当预期sql字符串和执行sql字符串相同时,测试结果为通过。...

【技术特征摘要】
1.一种SparkSQL应用程序的自动化测试装置,其特征在于由测试环境、Jmockit、sqlList记录器、数量对比器、语句对比器组成;测试环境由maven工程配置器、jar包导入器、HDFS环境变量设置器、大数据组件引入器组成;实现一种SparkSQL应用程序的自动化测试装置的主要步骤包括:1)部署测试环境①由maven工程配置器读取被测应用程序,并判断被测应用程序所需的测试环境的配置类型;②当被测应用程序存在jar包时,通过jar包导入器完成测试环境配置,jar包导入器通过pom.xml的依赖包引入;③当被测应用程序运行于HDFS分布式文件系统时,通过HDFS环境变量设置器完成测试环境配置,HDFS环境变量设置器自动从hadoop官网下载与被测应用程序版本一致的hadoop包,并根据本机的操作系统类型设置hadoop.home.dir属性;④当被测应用程序运行于Spark和Hive的大数据环境时,通过大数据组件引入器完成测试环境配置,大数据组件引入器通过添加pom.xml依赖包来完成测试环境配置;2)对SparkSession.sql(StringsqlText)模拟①使用单元测试当中的Mock工具Jmockit,对SparkSQLAPI中执行sql语句的方法SparkSession.sql(StringsqlText)进行模拟,使SparkSQL在被测应用程序内部调用SparkSession.sql(StringsqlText)执行sql的同时,返回执行的具体sql语句;②使用sqlList记录器接收并保存被测应用程序执行的sql语句,sqlLi...

【专利技术属性】
技术研发人员:王娜廖艳云林飞古元毛华阳华仲锋
申请(专利权)人:北京亚鸿世纪科技发展有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1