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

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

什么是过程测试?

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

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

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

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

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

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

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

我如何使用它?

1)从扩展>>市场下载RapidMiner Studio中的扩展并重新启动RapidMiner Studio:img1.png下载扩展

一旦Studio重新启动,你会发现一个新的菜单选项叫做测试2新加入的营办商Operator >>扩展文件夹img1.png测试- Studio中的菜单选项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并保存该过程

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

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

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

进程的名称中包含字符串“NOTEST”,则不会被执行。

img1.png工艺的批量测试

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

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

下面是一个示例警报电子邮件,当上述进程被触发按时间表执行时,发送了失败进程列表:

img1.png邮件提醒示例

注意:

  • 执行流程测试在RapidMiner服务器上,请确保安装扩展RapidMiner Server主目录下的jar文件,以及你打算运行/调度这个进程的作业代理;
  • 要使用发送邮件接线员,一定要把你的电子邮件设置在工作室和服务器上相应地。

额外的特点:

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

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

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

img1.png预期用户错误

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

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

欢呼,


David_A CraigBostonUSA rfuentealba

评论

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

    这似乎是一个非常有用的功能来测试开发人员所做的过程。我有几个问题希望你能帮助我:

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

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

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