0

JMeter で一連の Web サービス テストを実行してきましたが、結果レポートを変更して、各テストで返された平均応答時間の合計を含めるようにしています。しかし、私がする必要があるのは、特定のテストまでの平均時間の合計を取ることです。テスト「X」とそれ以降のテストを除くすべてのテストのテスト平均を合計するように XSLT を変更する方法はありますか? 例: lb="getSubscribers"?

通常、結果レポートは次のようになります。基本的に、「http」テストから「AlarmMgmtWSDL」テストまでの Average Time 列の内容を合計したいと考えています。

JMeter からの私の XML は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../style/jmeter-results-detail-report_21.xsl"?>
<testResults version="1.2">
<httpSample t="78" lt="78" ts="1338826079163" s="true" lb="html" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="4418" ng="1" na="1"/>
<httpSample t="31" lt="31" ts="1338826079241" s="true" lb="userRoleRetriever" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="758" ng="1" na="1"/>
<httpSample t="32" lt="32" ts="1338826079272" s="true" lb="UserActivityWSDL" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="2398" ng="1" na="1"/>
<httpSample t="156" lt="125" ts="1338826079304" s="true" lb="SubscriberMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="56434" ng="1" na="1"/>
<httpSample t="31" lt="16" ts="1338826079460" s="true" lb="NetworkMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="33020" ng="1" na="1"/>
<httpSample t="15" lt="15" ts="1338826079507" s="true" lb="AlarmMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="11594" ng="1" na="1"/>
<httpSample t="141" lt="141" ts="1338826079538" s="true" lb="getSubscribers" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="397" ng="1" na="1"/>
<httpSample t="265" lt="234" ts="1338826079679" s="true" lb="getMpegResultsById" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="832927" ng="1" na="1"/>
<httpSample t="15" lt="15" ts="1338826079976" s="true" lb="getOverallSummary" rc="200" rm="OK" tn="vuserver 1-1" dt="text" by="402" ng="1" na="1"/>
<httpSample t="0" lt="0" ts="1338826082663" s="true" lb="html" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="4418" ng="1" na="1"/>
<httpSample t="16" lt="16" ts="1338826082663" s="true" lb="userRoleRetriever" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="758" ng="1" na="1"/>
<httpSample t="15" lt="0" ts="1338826082679" s="true" lb="UserActivityWSDL" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="2398" ng="1" na="1"/>
<httpSample t="32" lt="0" ts="1338826082694" s="true" lb="SubscriberMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="56434" ng="1" na="1"/>
<httpSample t="31" lt="15" ts="1338826082726" s="true" lb="NetworkMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="33020" ng="1" na="1"/>
<httpSample t="16" lt="16" ts="1338826082757" s="true" lb="AlarmMgmtWSDL" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="11594" ng="1" na="1"/>
<httpSample t="250" lt="250" ts="1338826082788" s="true" lb="getSubscribers" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="10536" ng="1" na="1"/>
<httpSample t="15454" lt="15392" ts="1338826083038" s="true" lb="getMpegResultsById" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="2023426" ng="1" na="1"/>
<httpSample t="15" lt="15" ts="1338826098555" s="true" lb="getOverallSummary" rc="200" rm="OK" tn="vuserver 1-2" dt="text" by="402" ng="1" na="1"/>

</testResults>

その XML からの最初の X 個のテスト結果を処理し、残りを除外すると同時に、2 回目の反復で発生した X 個のテスト結果を保持して、平均を取ることができるようにする必要があります。

これは、テスト平均の合計を見つける私の xslt からの抜粋です。

<xsl:variable name="totalAverageTime">
    <xsl:for-each-group select="httpSample" group-by="@lb">
        <xsl:variable name="count" select="count(current-group())" />
        <xsl:variable name="totalTime" select="sum(current-group()/@t)" />
        <average avg="{$totalTime div $count}" />
    </xsl:for-each-group>
</xsl:variable>

<tr>  
  <td>
    <xsl:call-template name="display-time">
        <xsl:with-param name="value" select="sum($totalAverageTime/average/@avg)" />
    </xsl:call-template>
  </td>
</tr>

これらの特定のテストをどのように扱うかについてのアイデアはありますか? 助けていただければ幸いです。

4

2 に答える 2

1

XSLTドキュメントでXpath2.0を利用してください。

child" "のような斧とposition()'snodeテストを使用して、兄弟サブセットを取得しました。

/testResults/child::httpSample[position() lt  5]

セットのどの位置が5よりも小さい最初の兄弟を与えます:最初の4人の兄弟を取得します。

一般的にあなたは得る

/testResults/child::httpSample[position() lt  (X+1)]

Xは、選択したい最初の兄弟の数です。

'AlarmMgmtWSDL'6番目の要素のlb属性であるため、

/testResults/child::httpSample[position() lt  7]

変数' totalAverageTime'を次のように変更するだけです。

<xsl:variable name="totalAverageTime">
    <xsl:for-each-group select="httpSample[position() lt 7]" group-by="@lb">
        <xsl:variable name="count" select="count(current-group())"/>
        <xsl:variable name="totalTime" select="sum(current-group()/@t)"/>
        <average avg="{$totalTime div $count}"/>
    </xsl:for-each-group>
</xsl:variable>
于 2012-06-06T15:03:07.327 に答える