JmeterにてCSRF(XSRF)対策が実装されているAngular.jsのシナリオを作成するためのポイント

SET-Cookie正規表現抽出で引っ張って変数に格納して利用する。

結論を先に書くとこういうことです。

 

なかなか調べても見つからなかったのでメモ。

 

元々やりたかったのは、Angular.jsを使用したシステムへの負荷テスト。

 

今回初めて採用したので負荷テストも手探りであった。

 

Jmeterのレスポンスにどうしてもエラーが返ってきてしまうのは、いったい何が原因なのかがさっぱりであった。

 

Cookieは、クッキーマネージャにより引き継ぐようにしているし、リクエストのCookieにもちゃんと格納されている。

と思ってgoogleChromeの開発者機能(F12)を利用してみることに。

 

 

と、気が付く。

 

Cookieの他に、ヘッダーにもパラメータいるんか―い。と。

 

ここからCookieの情報をシナリオに使うための方法探しの旅が始まった。

 

全然Cookieを変数に格納する方法が見つからないのですよ!

Jmeter Cookie 変数】

と検索してもHITするのはクッキーマネージャを利用する方法ばかり・・・。

 

やっとというか諦めて英語のサイトを探し始めるわけですよ!

そして見つけた内容は以下の通り。

 

正規表現抽出を利用し、

 

Refrence Name:変数名

Regular Expression:Set-Cookie: XSRF-TOKEN=(.+?);

Template:$1$

 

としてやれば変数にXSRF-TOKENの値が格納されるので、

これいこうのシナリオでヘッダーにパラメータとして使用してやればいいということでした。

 

正規表現抽出の説明や、Chromeの開発者機能について、Jmeterについての個人的なポイントはまた随時まとめていきます。

 

 

Timestamp型のカラムにinsertするための日付フォーマットはなに?

備忘録として書いておきます。

 

DB接続ツールはいろいろ(Access、黒猫SQL、A5SQL、CSE…)ありますが、それらのツールにおいて、直接テーブルの値を編集するのではなく、SQLを書いてデータを登録・更新しなければならない場合も多い。

 

その際に、よくつまづくのがタイトルにもある通り

「Timestamp型のカラムにinsertするための日付フォーマットはなに?」

というものである。

 

いや、そんなのつまづかないよ、当たり前だろ。

 

という方も多いと思いでしょうが、割と忘れてしまうことが(私は)多く、insertでエラーとなりはじかれることがある。

初心者としてはタイムタンプ型ってそもそも何よ?となるが、

それについては他にわかりやすい記事がたくさんあるので割愛する。

 

ちなみに表示されるエラーは

SQL0180N 日時値のストリング表記の構文が、間違っています。 SQLSTATE=22007

 

 

よくエラーになるのは、DB2SQLServerOracleもだっけ。。。

 

ダメな例:
insert into table(timestamp) values('2017/07/12 12:34:56);

正解の例:

insert into table(timestamp) values('2017-07-12 12:34:56);

 

社内にDB2OracleSQLServerが転がっていて面倒です。

 

なぜyyyy/mm/ddの形式で入力してしまうことが多いかというと、

最初に記載したDB接続ツールで表示されるTimestampのフォーマットがyyyy/mm/ddとなっているからである。

 

以上