スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JMeterのアサーション

今までよく知らなかったんだけど仕事で使うことになったので急遽調べることに
そもそもこの機能って何のためにあるんだろうってところから調べ始めた。

ユーザーマニュアルにはアサーションはサーバーから受信した応答を本質的に「テスト」するためのもの
といった感じの記述がある。

まぁ、今自分がテストしているWebのアプリケーションでいうと、
HTTPのレスポンスコードは200なんだけど、ちゃんと画面って思い通りに遷移してるんだよね?
っていうのを厳密にチェックするための機能といった感じの理解になる。

実際に利用する場面を見てみよう。
たとえばこんな簡単なHTMLを書いてWebサーバーに「sample.html」として置く。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">

<title>Insert title here</title>

</head>

<body>

<form action="sample.html" id="form1">

</form>

</body>

んで、JMeter側で以下のようなHTTPサンプラーを用意して
httpsampler_assertion.png

パスがEvernoteAPIのテストっぽいのはご愛嬌(゚ω゚ )
さらにその子として以下のようなアサーションをぶら下げる。
assertion.png

Apply to:

 Main sample and sub-samples
テストするレスポンスフィールド:
 テキストのレスポンス
パターンマッチングルール
 含む
テストパターン
 <form action="(.*?)" id="(.*?)">


テストパターンにはPerl互換の正規表現が使える模様。
上記の条件に合致した場合にはこのアサーションをぶら下げたサンプラーが成功し、
上記の条件に合致しなかった場合には同サンプラーが失敗する。

たとえば、そのままこのサンプラーを実行した場合にはちゃんと成功するけど
HTMLのformタグのid属性を消して実行すると正規表現のテストパターンに合致しなくなるので
このサンプラーは「失敗」する。
failed.png
こんな感じ。


もともと「アサーション」という言葉をキチンと理解せず、
さらにこの部分をよく理解しておらず、加えてうっかり否定とか使い出したもんだから
やってて何がなんだかわからなくなってしまっていた。
※今回の目的はこんがらがった頭を整理するためのポストだったりします。

ちなみにアサーションとは以下のようなもの。

プログラミング言語などの仕様・機能の一つで、プログラムの前提として満たされるべき条件を記述し、
実行時にそれが満たされていない場合にエラーや例外を発生させたり、メッセージを表示して
処理を中断したりする機能。プログラム中のバグや不具合、論理の矛盾を発見するのに使われる

引用:
http://e-words.jp/w/E382A2E382B5E383BCE382B7E383A7E383B3.html


ちなみに、エラーを検知したら後続の処理に流さないって言うのが正しいやり方なんだろうけど
そのあたりはおそらくスレッドグループのお仕事なので今度調査する。

最近はこんなお仕事ばっか。( ・ω・)

9/25追記

「Apply To:」でチェックしている「Main sample and sub-samples」だが、これはどうも
Location等で多数の画面を遷移している場合、それらの画面遷移分を「sub-samples」と呼んでいるらしい。
アサーションで上記の「Main sample and sub-samples」をつけると
「Locationで遷移しているサンプルの結果すべてにアサーションのチェックが入り、一つでもテストパターンにマッチしなかった場合、そのサンプルは失敗する」
んで、Main sample onlyにチェックをつけた場合、動きを見る限り
「一番最後のサンプルの結果のみにアサーションのチェックが入り、その結果とテストパターンがマッチしない場合にそのサンプルは失敗する」
というようになっている模様。Locationを含むサンプルにアサーションを入れて「Main sample and sub-samples」に
チェックを入れてしまっていたものだからちゃんと予期している画面遷移だったのにサンプルは失敗とかになってしまい、
ちょっとびっくりした。
スポンサーサイト

テーマ : 役立つツール
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ラム君(モヒカンVer)

Author:ラム君(モヒカンVer)
都内でプログラマのようなものをやっています。
まだまだ初心者ですがよろしくお願いします。

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。