我在压力测试中遇到了一个非常奇怪的问题。
这是一个搜索表单,用户在弹出窗口中搜索对象,选择它(单击复选框),验证(弹出窗口中的触发器),并在主页面上复制选择。
这通常有效。但是当orbeon承受很大的压力时(许多客户同时进行此操作)服务器响应有时会有所不同。
如果用户在验证选择之前等待了两秒钟,它就会起作用。
请求:
<!DOCTYPE xxforms:event-request [<!ENTITY nbsp " ">]>
<xxforms:event-request xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">
<xxforms:static-state>pers:C9B10DD4-DD1B-11F4-907F-1102C7BD8015</xxforms:static-state>
<xxforms:dynamic-state>pers:67DD2321-B039-300B-F048-6FE05A18E044</xxforms:dynamic-state>
<xxforms:action>
<xxforms:event name="DOMFocusOut" source-control-id="xf-12$advancedSearchControl$basic-input"></xxforms:event>
<xxforms:event name="DOMFocusIn" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"></xxforms:event>
<xxforms:event name="xxforms-value-change-with-focus-change" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">197552cfa69416449f209b70ba3f8bb6@domain.com</xxforms:event>
</xxforms:action>
</xxforms:event-request>
响应:
<?xml version="1.0" encoding="utf-8"?>
<xxf:event-response xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xxf:dynamic-state>pers:415194AF-12B7-C579-5A81-98D7935D5001</xxf:dynamic-state>
<xxf:action>
<xxf:control-values>
<xxf:control id="xf-12$displaySearchResults$selected-input-multiple">
197552cfa69416449f209b70ba3f8bb6@domain.com
197552cfa69416449f209b70ba3f8bb6@domain.com
</xxf:control>
<xxf:control id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">
197552cfa69416449f209b70ba3f8bb6@domain.com</xxf:control>
<xxf:control id="xf-12$xf-49" readonly="false"/>
</xxf:control-values>
</xxf:action>
</xxf:event-response>
但是如果用户等了5秒钟。相同的请求,不同的响应以及主页中未报告选择。
请求:
<!DOCTYPE xxforms:event-request [<!ENTITY nbsp " ">]>
<xxforms:event-request xmlns:xxforms="http://orbeon.org/oxf/xml/xforms">
<xxforms:static-state>pers:C9B10DD4-DD1B-11F4-907F-1102C7BD8015</xxforms:static-state>
<xxforms:dynamic-state>pers:57740724-BFBE-D1FB-C7D4-2E586711B13B</xxforms:dynamic-state>
<xxforms:action>
<xxforms:event name="DOMFocusOut" source-control-id="xf-12$advancedSearchControl$basic-input"></xxforms:event>
<xxforms:event name="DOMFocusIn" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"></xxforms:event>
<xxforms:event name="xxforms-value-change-with-focus-change" source-control-id="xf-12$displaySearchResults$datatableMultiple$mainselect•1">197552cfa69416449f209b70ba3f8bb6@domain.com</xxforms:event>
</xxforms:action>
</xxforms:event-request>
响应:
<?xml version="1.0" encoding="utf-8"?>
<xxf:event-response xmlns:xxf="http://orbeon.org/oxf/xml/xforms">
<xxf:dynamic-state>pers:67DD2321-B039-300B-F048-6FE05A18E044</xxf:dynamic-state>
<xxf:action>
<xxf:control-values>
<xxf:control id="xf-12$displaySearchResults$datatableMultiple$mainselect•1"/>
</xxf:control-values>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_231_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$xf-229" observer-id="xf-12$displaySearchResults$datatableMultiple$xf-229"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_256_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$repeat-header" observer-id="xf-12$displaySearchResults$datatableMultiple$repeat-header"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_205_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$fr-dt-group" observer-id="xf-12$displaySearchResults$datatableMultiple$datatableMultiple-container"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_231_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$xf-229" observer-id="xf-12$displaySearchResults$datatableMultiple$xf-229"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_256_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$repeat-header" observer-id="xf-12$displaySearchResults$datatableMultiple$repeat-header"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_362_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$line-repeat" observer-id="xf-12$displaySearchResults$datatableMultiple$line-repeat"/>
<xxf:script name="xf_12_displaySearchResults_datatableMultiple_xf_362_xforms_function" target-id="xf-12$displaySearchResults$datatableMultiple$line-repeat" observer-id="xf-12$displaySearchResults$datatableMultiple$line-repeat"/>
<xxf:setfocus control-id="xf-12$advancedSearchControl$basic-input"/>
</xxf:action>
</xxf:event-response>
如果失败,再次重复操作将再次失败,第三次将是正常的。
测试人员是一个自动向服务器发出请求的客户工具,但如果手动尝试操作(当服务器受到测试人员的压力时),也会出现问题。
在自动测试期间发生这种情况很难判断,但在服务器繁忙时手动完成,结果是系统性的。
那么,什么能使服务器以不同的方式回答?我可以猜出正确的反应是什么,看起来像是应该做的。
我不知道错误的回答应该是什么,我的表单或我的xbls中没有任何操作。
我该怎么做才能解决这个问题,或者至少可以找到有关发生的事情的更多信息?
Orbeon版本:3.8.0.201005141856 CE
答案 0 :(得分:0)
很抱歉不得不说以下内容,因为它不是很有帮助,但是因为我们正在讨论一个近5年的Orbeon Forms版本,所以很难弄明白。可能存在该版本中的错误(希望)从那时起在许多版本的软件中得到修复。
由于软件是开源的,你可以获得源代码并尝试调试,虽然它可能有点挑战,因为它是一个非平凡的软件。