对大数据进行单元测试的方法

     2023-04-18     224

关键词:

【中文标题】对大数据进行单元测试的方法【英文标题】:Approaches to unit testing big data 【发布时间】:2011-05-24 12:53:24 【问题描述】:

假设您正在设计一个系统,并且您想开始编写测试来确定功能 - 以及性能和可扩展性。您是否可以分享任何技术来处理不同环境中的大量数据?

【问题讨论】:

【参考方案1】:

我强烈建议在进行性能和可扩展性测试之前优先考虑功能测试(使用 TDD 作为您的开发工作流程)。 TDD 将确保您的代码设计良好且松耦合,这将使创建自动化性能和可伸缩性的道路变得更加容易。当您的代码松散耦合时,您可以控制依赖项。当您可以控制依赖项时,您可以为要编写的任何高级测试创建所需的任何配置。

【讨论】:

这如何回答这个问题? 有时不需要。例如,问题“如何使用正则表达式解析 html?”可以用“不要”来充分回答。 @Kyranstar 然而,单元测试应该测试完整的接口:性能也是接口的一部分(我可能会选择某个函数而不是另一个函数,因为它的 Big-Oh 是 O(n log n) O(n ^ 2),但有时另一种方法会导致更快的方法有很多设置时间)。 - 如果我做出这样的承诺,我必须通过测试来证明这一承诺。【参考方案2】:

做一些功能测试。考虑一些风险管理技术参考这篇文章How to handle risk Management in Big data这将对您有所帮助。

【讨论】:

【参考方案3】:

区分不同类型的测试。

    功能测试应该是第一位的,从小的开始单元测试 大量的模拟数据。 接下来是集成测试,使用少量 数据存储中的数据,但显然与 与大型数据集一起存储。 您也许可以通过提高性能来减少开发工作量 和可扩展性测试。

一个重要提示:您的测试数据集应尽可能真实。使用生产数据,必要时匿名。因为大数据性能取决于数据中的统计分布,所以您不想使用合成数据。例如,如果您使用一百万次基本上具有相同用户信息的虚假用户数据,您将获得非常不同的可扩展性结果,而不是现实生活中具有广泛价值分布的杂乱用户数据。

要获得更具体的建议,我需要了解您使用的技术。在 Hadoop 中,查看 MRUnit。对于 RDB,DBUnit。 Apache Bigtop 可以提供灵感,尽管它针对的是 Hadoop 上的核心项目,而不是特定的应用程序级项目。

【讨论】:

【参考方案4】:

我遇到过两种情况:

    用作其他应用程序的数据仓库或数据接收器的大型 HDFS 数据集

    具有 HBASE 或其他分布式数据库的应用程序

两种情况下的单元测试提示:-

一个。先测试应用的不同功能组件,大数据应用没有特殊规定;就像任何其他应用程序一样,单元测试应该确定应用程序上的不同组件是否按预期工作;然后你可以集成功能/服务/组件等来做 SIT,如果适用的话

b.具体来说,如果有 HBASE 或任何其他分布式数据库,请测试对 DB 的要求。例如分布式数据库通常不像传统数据库那样支持 ACID 属性,而是受到称为 CAP 定理(一致性、可用性、分区容限)的限制;通常保证 3 个中有 2 个。对于大多数 RDBMS,它是 CA,通常对于 HBASE,它是 CP 和 Cassandra AP。作为设计人员或测试计划人员,您应该根据您的应用程序特性了解分布式数据库的 CAP 约束,并据此制定测试计划以检查实际情况

    关于性能 - 很大程度上取决于基础架构和应用程序设计。有时某些软件实现比其他实现更费力。例如,您可以检查分区的数量,它基于所有情况

    关于可扩展性 - 与传统架构相比,大数据实施的最大优势在于它易于扩展。我从未认为这是可测试的。对于大多数大数据应用程序,您可以轻松扩展,尤其是水平扩展非常容易,因此不确定是否有人考虑测试大多数应用程序的可扩展性。

【讨论】:

【参考方案5】:

为了测试和测量性能,您可以使用静态数据源和输入(可能是巨大的转储文件或 sqlite DB)。

您可以创建测试并将其包含在您的集成构建中,以便特定函数调用花费超过 X 秒,抛出错误。

随着您构建更多系统,您会看到该数字增加并打破您的测试。

您可以花费 20% 的时间来获得 80% 的功能,剩下的 80% 用于性能和可扩展性 :)

可扩展性 - 考虑面向服务的架构,这样您就可以在两者之间使用负载平衡器,并且您可以通过简单地向系统添加新硬件/服务来增加您的状态/处理

【讨论】:

@Dr.HappyPants,tnx 投反对票,对于您的一般性问题,您将得到一般性答案:)

nunit中如何进行事务性单元测试

单元测试要求:单元测试方法并不真正去变更数据库,也就是说单元测试不依赖于数据库中的数据。那我们如何解决执行单元测试方法后,不变更数据库中数据呢?一般的解决方案有两种: 1、 新建一个单元测试数据库... 查看详情

使用 mockito 对插入方法进行单元测试

...的单元测试中遇到了问题,虽然我使用的是模拟对象,但数据是插入到数据库中的,请问这是什么问题?这里是方法的源代码publicvoidInsertPersonalData(PersonalDatapersonaldata)throwsS 查看详情

springmvc中单元测试中事务的使用

...们要测试的方法👇但是进行单元测试的时候、会在对数据库进行更改、也就是污染数据库👇点击运行、就会在数据库中看到对应的 查看详情

springmvc中单元测试中事务的使用

...们要测试的方法👇但是进行单元测试的时候、会在对数据库进行更改、也就是污染数据库👇点击运行、就会在数据库中看到对应的 查看详情

单元测试数据访问层的方法

】单元测试数据访问层的方法【英文标题】:Waysofunittestingdataaccesslayer【发布时间】:2013-02-0616:43:59【问题描述】:我一直在尝试寻找一种有效的方法来用C#对我的数据访问层进行单元测试。我是一名Java开发人员,只使用了大约6... 查看详情

android怎样进行单元测试

参考技术A这里我们拿“android的ScrollView滚动布局获取数据基础方法”这个示例中利用HttpUtils工具类获得json数据为例,利用单元测试进行测试。首先,在AndroidManifest.xml清单文件中使用鼠标点击的方法添加android.test.InstrumentationTestRu... 查看详情

通过 nhibernate 对数据库查询进行单元测试

】通过nhibernate对数据库查询进行单元测试【英文标题】:unittestingadatabasequeryvianhibernate【发布时间】:2012-08-3012:50:01【问题描述】:我需要为从数据库加载数据的方法创建一个单元测试。我对单元测试和数据库进行了一些研究,... 查看详情

单元测试(代码片段)

...写。2、一个功能进行单元测试可以分为三个部分:准备数据,调用方法,验证。(展开详细说)3、一个方法如果融合了很多的逻辑,就没有办法对某一段逻辑进行测试。这就对代码的内聚性有较高的要求。4、一个接口的返回值... 查看详情

高分求助:java对大批量数据进行操作

程序对大数据量进行操作。操作的数据库为Oracle过程是先对数据进行delete操作,然后进行insert操作。数据量大概是百万条左右。现在使用的方法是jdbc的PreparedStatement,每5万条commit一次。可是这样的话程序的速度还是达不到要求。... 查看详情

spring mvc中的单元测试

...测试?我还应该模拟dao调用还是实际使用像H2这样的内存数据库?我认为这更像是一个集成测试,尽管一些教程会这样做,或者标准方法是使用模拟数据库对象进行服务测试并 查看详情

单元测试无效方法?

...文件并将其解析为特定字符串的方法。然后将字符串插入数据库。以前没有做过任何事情,但是对于TDD来说是非常新的,我想知道是否有可能对此进行测试,或者它是否真的没有经过测试。【问题讨论】:【参考方案1】 查看详情

使用 MongoDB 进行单元测试

...oDB【发布时间】:2011-11-1620:35:31【问题描述】:我选择的数据库是MongoDB。我正在编写一个数据层API来从客户端应用程序中抽象实现细节——也就是说,我本质上是提供一个公共接口(一个充当IDL的对象)。我正在以TDD方式测试... 查看详情

软件测试第三次

...进行独立的测试.任务主要包括对单元功能、逻辑控制、数据和安全性等各方面进行必要的测试。具体地说,包括单元中所有独立执行路径、数据结构、接口、边界条件、容错性等测试。单元独立执行路径的测试单元局部数据结... 查看详情

你如何对 Python DataFrames 进行单元测试

...【发布时间】:2017-06-1016:45:06【问题描述】:如何对python数据框进行单元测试?我的函数具有作为数据帧的输入和输出。几乎我拥有的每个功能都这样做。现在,如果我想对此进行单元测试,最好的方法是什么?为每个函数创建... 查看详情

单元测试火花数据帧转换链接

】单元测试火花数据帧转换链接【英文标题】:UnitTestingsparkdataframestransformationchaining【发布时间】:2019-01-2813:38:31【问题描述】:我对scalaspark生态系统非常陌生,想知道对链式数据帧转换进行单元测试的最佳方法是什么。所以... 查看详情

excel数据源结合单元测试ddt进行测试

...口的批量测试,测试逻辑都是一样的,变动的就只有测试数据,在前面,我们已经为大家展示了从excel数据源中读取测试用例数据的类的封装,那么如何将excel中读取到的数据与我们的接口测试结合起来呢,我们这里用到了一个... 查看详情

如何对反应组件的方法进行单元测试?

】如何对反应组件的方法进行单元测试?【英文标题】:Howtounittestamethodofreactcomponent?【发布时间】:2017-05-0223:14:29【问题描述】:我正在尝试对我的reactjs组件进行单元测试:importReactfrom\'react\';importModalfrom\'react-modal\';importstorefro... 查看详情

java应用xviii在java中使用junit5进行单元测试和自动化测试

...。单元测试的基本原理是将被测试的代码单元与它的输入数据进行配对,运行测试并检查输出结果是否符合预期。在单元测试中,测试代码不应该依赖于外部因素(如数据库、文件系统等),而应该只测试代码单元本身的行为和... 查看详情