在RapidMiner中的过程测试或单元测试

Pavithra_RaoPavithra_Rao 管理员、版主、员工、RapidMiner认证分析师、RapidMiner认证专家、会员职位:123RM数据科学家

什么是过程测试?

流程测试扩展为RapidMiner用户和扩展开发人员简化测试RapidMiner进程。

流程测试扩展允许创建基于流程的单元测试。流程可以作为测试运行,测试会自动将流程的结果保存为预期结果。稍后,可以再次重新运行流程,以自动将当时创建的结果与先前创建的预期结果进行比较。如果结果仍然相同,则通过测试;如果不相同,则测试失败。

在RapidMiner中实现过程测试的好处和步骤:

  1. 非常强大的方法来监控端到端数据科学工作流每个阶段过程预期结果的变化。乐鱼平台进入

例如,如果来自外部数据源的流程输入数据发生变化,则训练模型的性能矩阵可能与之前作为预期结果(基准或参考矩阵)存储的训练模型的性能矩阵不同。

执行流程测试'操作符在此扩展中帮助检测这些更改并标记诸如流程执行结果一个失败.进一步的RapidMiner服务器调度功能可以帮助向系统管理员或进程开发人员发送关于执行状态的自动电子邮件警报。

类似地,我们可以扩展相同的概念来检测给定示例集的属性权重的变化、评分结果、ETL、数据清理、特征工程、特征选择工作流的变化、如果冠军机器学习模型发生变化,则发送警报,等等。

我怎么使用它?

1)从扩展>>市场下载扩展在RapidMiner工作室并重新启动RapidMiner Studio:img1.png下载扩展

一旦Studio重新启动,您将发现一个名为测试而且2的新运算符>>扩展文件夹img1.png测试-在工作室的菜单选项img1.png测试操作员

2)选择一个要执行进程测试的RapidMiner进程。在Repository中保存流程,导航到T运行并存储预期结果.这将运行当前流程,并将所有输出端口按预期结果存储在流程的当前存储库位置中。

请注意:这是流程测试框架中非常重要且强制的步骤,因为它创建给定流程的预期结果,并在再次运行相同流程时用作比较结果的参考。

在下面的例子中,我创建了001取样过程从“泰坦尼克号”数据中抽取样本100个样本或例子。当按预期结果运行并存储选项执行时,输出端口上的进程结果将存储在存储库中,如下所示:

img1.png对数据进行采样,并存储过程输出的预期结果执行过程测试运算符来测试此进程,以检查输出结果中是否有任何变化。

(在存储库中将此过程保存为'执行过程')

img1.png执行Process来测试Process 001的抽样结果,如果没有变化01抽样处理输出将与存储的预期结果相同。01 sampling-expected-port-0’测试结果将是成功如下图所示:

img1.png01样品检测结果

现在让我们对01抽样处理和检查执行过程检测流程的实际结果和流程的预期结果之间的变化:

img1.png将样本量更改为1000并保存该过程

如果我们重新运行执行过程,结局是一个失败因为预期的结果01 sampling-expected-port-0”有100个样品存储,但更新01抽样1000个样品的处理结果如下所示:

img1.png结果:失败,带有适当的错误消息

此外,我们可以将此过程扩展到运行批处理测试。”执行流程测试”操作符执行所选存储库位置下的所有进程。位置可以是单个进程、文件夹或存储库。底层文件夹也会递归执行。结果包含每个已执行流程的位置、结果(成功或失败)和错误消息。

不执行名称中包含字符串字面量“NOTEST”的进程。

img1.png流程的批测试

4)计划在RapidMiner服务器上运行此进程,以便在任何给定进程失败时自动发送电子邮件更改:

img1.png在进程测试中,当进程失败时,发送自动电子邮件提醒

以下是一个示例警报电子邮件,其中包含上述进程按计划触发执行时失败的进程列表:

img1.png电子邮件警告示例

注意:

  • 执行流程测试在RapidMiner服务器上,请确保安装扩展在RapidMiner Server主目录和作业代理中运行/调度此进程;
  • 使用发送邮件总机,一定要把你的电子邮件设置在Studio和Server上相应地。

额外的特点:

扩展开发人员可以测试他们开发的操作符是否用户友好。流程测试扩展有一个名为'的操作符预期用户错误”。该操作符是一个嵌套操作符,即它有一个子流程

操作符首先尝试执行子流程.如果一个UserError (由i18n_key参数定义:i18n_key映射到特定的用户错误)在Subprocess执行期间发生,则此操作符成功运行并写入日志条目。如果没有UserError,或者在子流程执行期间存在UserError这与i18n_key参数所指定的不同,操作符抛出一个UserError本身,其中包含关于失败原因的信息。

在该操作符的帮助部分中有一个示例教程过程来演示'Expect User Error'操作符的功能:

img1.png预期用户错误

你可以在RapidMiner Studio的社区存储库中找到与这篇文章相关的所有数据和过程。

希望这篇文章对您有用。请随意发表关于过程测试的评论、反馈和问题。

欢呼,


David_A CraigBostonUSA rfuentealba

评论

  • xutfe3937xutfe3937 成员职位:4学我
    2021年9月编辑
    你好@Pavithra_Rao

    这似乎是测试开发人员制作的流程非常有用的功能。我有几个问题希望你能帮助我:

    • 在尝试创建一个类似的测试过程时,我注意到一个错误消息,例如java.lang.AssertionError:进程中连接的输出端口的数量不等于包含在同一文件夹中的ioobjects的数量,格式为'processname-expected-port-1', 'processname-expected-port-2',…期望:<0>,但结果:<1>是由于测试人员的错误,没有运行开发人员使用“运行并按预期结果存储”创建的过程。是否还有更多这样的例子,我们在运行测试过程后得到的错误可能是由于测试人员的错误造成的?

    • “作为测试运行”和“作为预期结果运行并存储”之间的区别是什么?

    • 为了使用“执行流程测试”操作符进行批处理测试,是否需要使用“运行并按预期结果存储”手动运行要测试的每个流程?
登录注册置评。