gremlins.js - Webアプリケーションでもモンキーテストを実現
未知なるエラーが発見できるかも知れませんよ! モンキーテストという言葉があります。例えばテストにおいて、ユーザ登録フローをやって欲しいと言われれば誰でもユーザ名を入力したり、パスワードを入れたりします。まったく関係ないところを100回クリックして問題がないか確認するなんてことはしない訳です。 それを全く意に介せず行うのがモンキーテストです。意外なメモリーリークを探したり、普通やらないだろうといったバグを発見できる可能性があります。それをWebアプリケーションで実現するのがgremlins.jsです。
gremlins.jsの使い方
使い方としてはスクリプトの読み込みの他に、下記のような実行内容を記述する必要があるようです。とにかく色々なことをするといった感じになっていますが、さらにキーボードの入力も行います。
gremlins.createHorde()
.gremlin(gremlins.species.clicker()
.positionSelector(function() {
// only click in the app
var $list = $('#todoapp');
var offset = $list.offset();
return [
parseInt(Math.random() * $list.outerWidth() + offset.left),
parseInt(Math.random() * ($list.outerHeight() + $('#info').outerHeight()) + offset.top)
];
})
)
.gremlin(gremlins.species.formFiller())
.gremlin(function todoCreator() {
if (Math.random() < .9) return;
var e = $.Event( "keypress", { which: 13 } );
$(document.activeElement).trigger(e);
})
.gremlin(gremlins.species.scroller())
.mogwai(gremlins.mogwais.gizmo())
.mogwai(gremlins.mogwais.fps())
.strategy(gremlins.strategies.distribution()
.delay(50)
.distribution([
0.3, // clicker
0.3, // formFiller
0.3, // todoCreator
0.1, // scroller
])
)
.before(function() {
console.profile('gremlins');
})
.after(function() {
console.profileEnd();
})
.unleash({ nb: 200 });
この結果としてJavaScriptのエラーが出たとすれば修正する余地があるということでしょう。人ベースのテストではまず分からないような変なエラーが発見できるはずです。
なお、iOS/Androidのモンキーテストツールも一緒にとにかくやりたい放題なモンキーテストとは!? - Markub にてまとめています。ぜひご覧ください。
gremlins.jsはJavaScript製、MIT Licenseのオープンソース・ソフトウェアです。