CN109491904A - 一种SparkSQL应用程序的自动化测试方法和装置 - Google Patents

一种SparkSQL应用程序的自动化测试方法和装置 Download PDF

Info

Publication number
CN109491904A
CN109491904A CN201811304692.3A CN201811304692A CN109491904A CN 109491904 A CN109491904 A CN 109491904A CN 201811304692 A CN201811304692 A CN 201811304692A CN 109491904 A CN109491904 A CN 109491904A
Authority
CN
China
Prior art keywords
sql
application program
sentence
test
expected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811304692.3A
Other languages
English (en)
Other versions
CN109491904B (zh
Inventor
王娜
廖艳云
林飞
古元
毛华阳
华仲锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Asia Century Technology Development Co Ltd
Original Assignee
Beijing Asia Century Technology Development Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Asia Century Technology Development Co Ltd filed Critical Beijing Asia Century Technology Development Co Ltd
Priority to CN201811304692.3A priority Critical patent/CN109491904B/zh
Publication of CN109491904A publication Critical patent/CN109491904A/zh
Application granted granted Critical
Publication of CN109491904B publication Critical patent/CN109491904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种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基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
HDFS
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分;
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以实现流的形式访问(streaming access)文件系统中的数据。
Spark
Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UCBerkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是--Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法;
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载;
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集;
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, andPeople Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。
Hive
Hive是建立在 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(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应用程序的特点,将对比预期结果数据,转换为对比预期sql语句,降低了测试难度和测试效率。
(2)提高了测试效率
虽然第一轮测试中的sql语句录制阶段需要进行代码走读并获取预期sql语句,但第二轮开始的迭代测试可以通过sql语句回放来自动验证程序的正确性,极大的提高了测试效率。
(3)提高了测试覆盖率
第一轮的代码走读和sql查看可以覆盖整个业务逻辑,后期迭代测试根据sql语句回放,可以准确找到程序业务逻辑更改的地方,保证回归测试的覆盖率。
附图说明
图1是本发明的组织结构流程图。
具体实施方式
参看图1实现本发明的一种SparkSQL应用程序的自动化测试装置,其组成模块包括:测试环境B、Jmockit51、sqlList记录器52、数量对比器55、语句对比器56;测试环境B由maven工程配置器1、jar包导入器2、HDFS环境变量设置器3、大数据组件引入器4组成;
实现一种SparkSQL应用程序的自动化测试装置的主要步骤包括:
1)部署测试环境
①由maven工程配置器1读取被测应用程序A,并判断被测应用程序A所需的测试环境B的配置类型;
②当被测应用程序B存在jar包时,通过jar包导入器1完成测试环境配置,jar包导入器1通过pom.xml的依赖包引入;
例如:
<dependency>
<groupId>com.act</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>D:\\test.jar</systemPath>
</dependency>
③当被测应用程序A运行于HDFS分布式文件系统时,通过HDFS环境变量设置器3完成测试环境配置,HDFS环境变量设置器3自动从hadoop官网下载与被测应用程序版本一致的hadoop包,并根据本机的操作系统类型设置hadoop.home.dir属性;
例如:
System.setProperty("hadoop.home.dir","D:\\JavaProjects\\hadoop");
System.setProperty("os.name", "Windows 7");
④当被测应用程序A运行于Spark和Hive的大数据环境时,通过大数据组件引入器4完成测试环境配置,大数据组件引入器4通过添加pom.xml依赖包来完成测试环境配置;
例如:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.1.0</version>
</dependency>
2)对SparkSession.sql(String sqlText)模拟
①使用单元测试当中的Mock工具Jmockit51,对SparkSQL API中执行sql语句的方法SparkSession.sql(String sqlText)进行模拟,使SparkSQL在被测应用程序内部调用SparkSession.sql(String sqlText)执行sql的同时,返回执行的具体sql语句;
②使用sqlList记录器52接收并保存被测应用程序A执行的sql语句,sqlList记录器52使用sqlList变量接收被测应用程序执行的sql语句;
sqlList变量如下
public static void SparkSessionMockUp(final List<SQLBean> sqlList){
new MockUp<SparkSession>(SparkSession.class) {
@Mock
public Dataset<Row> sql(Invocation invocation,String sqlText) {
sqlList.add(new SQLBean(sqlText));
System.out.println(sqlText + ";");
return invocation.proceed(sqlText);
};
};
}
3)sql语句录制
sql语句录制是指获取被测应用程序A的SaprkSQL应用程序运行过程中顺序执行的sql,生成预期sql53;
①变量模拟
对sqlList记录器52中的sql语句相关的变量,采用Jmockit工具进行模拟,使变量的取值固定,保证在不同时间和不同应用场景下,被测应用程序A的SparkSQL应用程序执行是同样的sql语句;
例如,假设在被测应用程序A的SparkSQL应用程序中有一个要执行的sql是查询Hive分区表中当前分区的所有数据,则分区是一个变量,在实际的运行当中,每天分区的取值都不同,这样不利于我们录制sql;因此我们可以对分区变量进行模拟,使应用程序在任何时间执行该sql语句,分区的取值都是同一个;
②运行被测应用程序A,在SparkSession.sql(String sqlText)模拟和变量模拟的前提下,获取程序运行中顺序执行的sql语句,将顺序执行的sql语句保存到文件生成预期sql53;
4)sql语句回放
①获取执行sql
运行被测应用程序A,在SparkSession.sql(String sqlText)模拟和变量模拟的前提下,获取程序运行中顺序执行的sql语句,将顺序执行的sql语句保存到文件生成执行sql54;
②sql数量对比
数量对比器55读取预期sql53和执行sql54,对比预期sql53的数量和执行sql54的数量,当预期sql53的数量和执行sql54的数量不一致,测试结果为不通过,结束sql对比;当预期sql53的数量和执行sql54的数量一致,进行sql语句对比;
③sql语句对比
语句对比器56读取预期sql53和执行sql54,去除语句中的标点符号、空格、回车、换行及非语义的内容,将预期sql53和执行sql54转换成预期sql字符串和执行sql字符串,对比预期sql字符串和执行sql字符串,当预期sql字符串和执行sql字符串不同时,测试结果为不通过;当预期sql字符串和执行sql字符串相同时,测试结果为通过。
示例测试类代码:
public class MergeTaskTest {
@Test(dataProvider = "dp")
public void test(Class<问号> cls, List<SQLBean> expectSQL){
//创建用于接收执行sql的变量
List<SQLBean> sqllist= new ArrayList<SQLBean>();
//调用步骤2中模拟sql方法的公共方法
MethodMockUp.SparkSessionMockUp(sqllist);
//调用(1)中模拟变量的公共方法
MethodMockUp. VariableMockUp();
//调用被测程序中某个任务
Method main = cls.getDeclaredMethod("main", String[].class);
main.invoke(null, new String[] { null });
//sql回放,断言对比执行sql跟预期sql是否相同
AssertMethod.sqlListAssert(sqlList, expectSQL);
}
//添加测试用例
@DataProvider(name = "dp")
public Object[][] dp(){
String ExpectSQLPath = this.getClass().getResource("/ExpectSQL").getPath();
return new Object[][] {
new Object[] { HouseMerge.class,GenarateExpectData.createExpectSql(ExpectSQLPath + "/HouseMerge.sql")},
new Object[] { GatewayMerge.class,GenarateExpectData.createExpectSql(ExpectSQLPath + "/GatewayMerge.sql") },
};
}
}

Claims (1)

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字符串相同时,测试结果为通过。
CN201811304692.3A 2018-11-04 2018-11-04 一种SparkSQL应用程序的自动化测试方法和装置 Active CN109491904B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811304692.3A CN109491904B (zh) 2018-11-04 2018-11-04 一种SparkSQL应用程序的自动化测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811304692.3A CN109491904B (zh) 2018-11-04 2018-11-04 一种SparkSQL应用程序的自动化测试方法和装置

Publications (2)

Publication Number Publication Date
CN109491904A true CN109491904A (zh) 2019-03-19
CN109491904B CN109491904B (zh) 2021-10-26

Family

ID=65693724

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811304692.3A Active CN109491904B (zh) 2018-11-04 2018-11-04 一种SparkSQL应用程序的自动化测试方法和装置

Country Status (1)

Country Link
CN (1) CN109491904B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111581088A (zh) * 2020-04-29 2020-08-25 上海中通吉网络技术有限公司 基于Spark的SQL程序的调试方法、装置、设备及存储介质
CN112506800A (zh) * 2020-12-22 2021-03-16 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN113342696A (zh) * 2021-07-13 2021-09-03 北京沃东天骏信息技术有限公司 一种单元测试方法及装置、存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714956A (zh) * 2013-12-13 2015-06-17 国家电网公司 一种异构记录集对比方法及装置
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法
US20180032605A1 (en) * 2015-02-18 2018-02-01 Persistent Systems Limited Integrated intermediary computing device for data analytic enhancement

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714956A (zh) * 2013-12-13 2015-06-17 国家电网公司 一种异构记录集对比方法及装置
US20180032605A1 (en) * 2015-02-18 2018-02-01 Persistent Systems Limited Integrated intermediary computing device for data analytic enhancement
CN105550296A (zh) * 2015-12-10 2016-05-04 深圳市华讯方舟软件技术有限公司 一种基于spark-SQL大数据处理平台的数据导入方法

Non-Patent Citations (11)

* Cited by examiner, † Cited by third party
Title
BBARKER: "How to write unit tests in Spark 2.0+?", 《HTTPS://STACKOVERFLOW.COM/QUESTIONS/43729262/HOW-TO-WRITE-UNIT-TESTS-IN-SPARK-2-0》 *
CLÉMENT MATHIEU: "How to speed up Spark SQL unit tests?", 《HTTPS://STACKOVERFLOW.COM/QUESTIONS/33984152/HOW-TO-SPEED-UP-SPARK-SQL-UNIT-TESTS》 *
DRAVEN1122: "SparkSQL 简单测试", 《HTTPS://BLOG.CSDN.NET/DRAVEN1122/ARTICLE/DETAILS/78425296》 *
ERIK_LY: "20.Spark上下文构建以及模拟数据生成", 《HTTPS://BLOG.CSDN.NET/U012318074/ARTICLE/DETAILS/60609180》 *
HALFEMPTY: "本地测试Spark任务", 《HTTPS://WWW.JIANSHU.COM/P/CC94F31A9692?UTM_CAMPAIGN=MALESKINE&UTM_CONTENT=NOTE&UTM_MEDIUM=SEO_NOTES&UTM_SOURCE=RECOMMENDATION》 *
MICHAËL MARCOZZI等: "Towards testing of full-scale SQL applications using relational symbolic execution", 《CSTVA 2014: PROCEEDINGS OF THE 6TH INTERNATIONAL WORKSHOP ON CONSTRAINTS IN SOFTWARE TESTING, VERIFICATION, AND ANALYSIS》 *
ROGUE-ONE: "Mocking SparkSession for unit testing", 《HTTPS://STACKOVERFLOW.COM/QUESTIONS/49483987/MOCKING-SPARKSESSION-FOR-UNIT-TESTING》 *
TUUUUSKI: "Spark程序进行单元测试-使用scala", 《HTTPS://BLOG.CSDN.NET/SHAWNHU007/ARTICLE/DETAILS/52650526》 *
吴黎兵等: "基于Hadoop的SQL查询引擎性能研究", 《华中师范大学学报(自然科学版)》 *
漫夭 : "JMockit使用总结", 《HTTPS://WWW.CNBLOGS.COM/SHOREN/P/JMOKIT-SUMMARY.HTML》 *
王茄力: "基于Spark的混合推荐系统", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111581088A (zh) * 2020-04-29 2020-08-25 上海中通吉网络技术有限公司 基于Spark的SQL程序的调试方法、装置、设备及存储介质
CN111581088B (zh) * 2020-04-29 2023-09-15 上海中通吉网络技术有限公司 基于Spark的SQL程序的调试方法、装置、设备及存储介质
CN112506800A (zh) * 2020-12-22 2021-03-16 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN112506800B (zh) * 2020-12-22 2023-08-18 北京百度网讯科技有限公司 测试代码的方法、装置、设备、介质和程序产品
CN113342696A (zh) * 2021-07-13 2021-09-03 北京沃东天骏信息技术有限公司 一种单元测试方法及装置、存储介质

Also Published As

Publication number Publication date
CN109491904B (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
US10162612B2 (en) Method and apparatus for inventory analysis
CN108885545B (zh) 用于实时数据流编程语言的工具和方法
Greff et al. The Sacred Infrastructure for Computational Research.
CN105808428B (zh) 一种对分布式文件系统进行统一性能测试的方法
Mościcki et al. Ganga: a tool for computational-task management and easy access to Grid resources
Franks et al. Cacheca: A cache language model based code suggestion tool
Sakr et al. Large-scale graph processing using Apache Giraph
Luo et al. A survey of context simulation for testing mobile context-aware applications
CN103678115B (zh) 在混合模式程序中检测源代码差错的位置的设备和方法
CN109491904A (zh) 一种SparkSQL应用程序的自动化测试方法和装置
Lüttgau et al. Toward understanding I/O behavior in HPC workflows
Rabl et al. Just can't get enough: Synthesizing Big Data
CN104899141A (zh) 一种面向网络应用系统的测试用例选择与扩充方法
Lehmann et al. Managing geospatial linked data in the GeoKnow project
Zhou et al. Confmapper: Automated variable finding for configuration items in source code
Brahimi et al. More transparency in testing results: Towards an open collective knowledge base
CN115994085A (zh) 代码覆盖率的测试处理方法、装置、设备及存储介质
Han et al. PROV-IO $^+ $: A Cross-Platform Provenance Framework for Scientific Data on HPC Systems
CN111694738B (zh) 一种sql测试脚本的生成方法
Dyer et al. Boa: An enabling language and infrastructure for ultra-large-scale msr studies
Gabrijelčič Mastering Delphi Programming: A Complete Reference Guide: Learn all about building fast, scalable, and high performing applications with Delphi
Estrada Apache Kafka Quick Start Guide: Leverage Apache Kafka 2.0 to simplify real-time data processing for distributed applications
Bojar et al. The Design of Eman, an Experiment Manager.
Cheah Quality, retrieval and analysis of provenance in large-scale data
Gabrijelčič Delphi High Performance: Build fast Delphi applications using concurrency, parallel programming and memory management

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant