テストと正規表現とID

JMeterを利用したテストで多用するのが、正規表現を利用してレスポンスから特定箇所の抽出。

この正規表現がかなりのくせ者。数値をテストしたい場合に、<td>10</td>みたくあまりにも汎用な作りだとまず抽出できない。<tr>***</tr>の間にユニークなラベルが使われていれば、ぶっこ抜きでどうにかする事は可能。でも、そうすると必然的に正規表現が長くなり、JMeterに埋め込んだりすると確認が難しくなる。JMeter云々は抜きにしても、長い正規表現はメンテナンス的にも面倒。テンプレートが修正されるたびに、該当箇所を調整するなんて事をやってると発狂しそうになる。

これを改善するのは簡単で、抽出(テスト)対象箇所にIDなりclassなりを埋め込めばいい。classだとユニークにしにくかったりするけど、ForEachとか使えば複数マッチの結果を巡回できる。とにかく、抽出方法をいかに簡単にするかが大切。

デザイナーがテンプレートを作る事もあるだろうから、この辺は明確なルールが必要。テンプレートの仕様と言ってももいいかもしれない。プログラム側で作られるデータを表示する箇所には、事前に決められたIDやclassを埋め込む。

コンテンツを機械に易しく作る事で、結局人間にも易しくなる。スクレーピングが簡単になる事の弊害とかも考えられるけど、そのデメリットと比べても明らかにテストの負担軽減の方がでかい。テストの方法次第だけど、スクレーピング→アサーションの流れが必要な場合は、必ずこのアプローチが必要になると思う。

多分、IDとかclassを使うってのは当然すべき事なんだろうな。マークアップルールみたいなのは最近全然追いかけてない。HTML4.01初期くらいで止まってる気がする。XHTMLでは&を&ampにしなきゃいけないとか、DreamweaverでDOCTYPEをXHTMLにすると閉じタグが無い要素は全部/>に変換されるとか最近知った。空前のJMeter災害が起きてようやく知った事…。

システムとテストは独立の関係じゃなくて、相互扶助の関係にある事が理想的。

プロフィール

このブログ記事について

このページは、koshigoeが2005年11月 7日 21:26に書いたブログ記事です。

ひとつ前のブログ記事は「クリエイティブコモンズを使う体制」です。

次のブログ記事は「OSXのFireFoxをAquaちっくに」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。