1

TestKitchen の記述ブロック内でコマンドを実行し、その出力を変数にロードしてから、その出力に対して複数の expect ステートメントを実行して、その出力のさまざまな部分を検証しています。最終的な目標は、これを CI ビルドの一部として使用してブラックボックス テストを行うことです。

この例では、Jmeter を呼び出して (これを使用してリモート エージェントを実行してオフ DUT テストを実行します)、返された結果を実行して各テストをチェックします (そうそう...少し厄介ですが、うまく機能します) :

describe "Test Transparent Proxy (JMeter)" do
    $jmeter_run = command("/usr/local/apache-jmeter-2.13/bin/jmeter -n -t /root/jmx/mytest.jmx -r -Jremote_hosts=192.168.7.252 -Gdut_ip=#$internal_ip -X -l /dev/stdout 2>&1").stdout

    it 'test1' do
        expect($jmeter_run).to match /text_to_match/
    end
    it 'test2' do
        expect($jmeter_run).to match /more_text to match/
    end
end

テスト自体は正常に実行されますが、複数の jmeter 実行 (異なるテスト セット) が、テスト仕様で定義されている方法とは異なる順序で実行されていることがわかりました。Jmeter テストの周りで実行されている他のブロックがあります。これが私のフローです:

block 1
block 2
block 3 (Jmeter1)
block 4
block 5 (Jmeter2)

私が得ているのはこれです:

block5
block3
block1
block2
block4

私が見つけたドキュメントのどれも、これを回避する方法についての手がかりを与えてくれないようです。個々のテストが失敗したかどうかを知りたい/知る必要があるため、コマンドの実行を独自のshould/expectチャンクに入れたくありません。また、50 奇数の個々の Jmeter テストを実行することも避けたいと思います (各実行で平均 20 テストであっても、それぞれ約 5 秒です)。

ヘルプ?:D

4

1 に答える 1

1

さて、私はこの問題を自分で解決することができました。

多くのいじくり回した後、テスト内でコマンドを実行することになりました。

  it 'JMeter executed correctly' do
    $jmeter_run1 = command("/usr/local/apache-jmeter-2.13/bin/jmeter -n -t /root/jmx/mytest.jmx -r -Jremote_hosts=192.168.7.252 -Gdut_ip=#$internal_ip -X -l /dev/stdout 2>&1").stdout
    expect($jmeter_run1).not_to be_empty
  end

すべてが順調に順調に進み、すべてが満足しています。

于 2015-09-03T23:58:26.127 に答える