今回のテーマは自動操作系テストです。個人的にはユニットテストが好きなのですが、JavaScriptを多用したWebアプリケーション化やWeb APIが頻繁に使われるようになってきたことで、ユニットテストではカバーしきれない箇所が出てきているように思います。

そこで今回はブラウザやアプリの自動操作ソフトウェアを使ったテストの利点、関連ソフトウェアを紹介します。

利点

正しい挙動が“ユーザに”提供できているか分かる

ユニットテストでは望んだ動作が適切に行われているかどうかの確認はできますが、最終的な利用者であるユーザに対して正しい情報が届けられているかどうかは分かりません。自動操作系のテストではそういった表示の正しさが確認できます。

また、Web APIを使っている場合単純なHTML表示だけでは分からないJavaScript実行後の描画確認のテストにも使えるのが利点です。

ネットワークや外部サービスを利用する上でのテストもできる

外部サービスで提供されているWeb APIがある場合、それらを実際に叩いてテストすると仕様の変更やネットワークが途切れたときのテストもできるようになります。通常、これらはモックを書いてテストするのですが、モックはあまり編集されないので実データに基づいて行う方がより安心です。ただしあまり頻繁に呼び出して外部サービスから跳ねられるようなことがないように注意しましょう。

アプリのメモリリーク発見に

Webの場合、ブラウザが各URLごとにメモリを開放してくれますがiOS/Androidアプリの場合は自分で作っているため何度も操作を行った結果、クラッシュしたりすることがあります。これらは人がやるのは大変ですが、スクリプトで何千回と繰り返すのは難しい事ではありません。

同じくランダムな操作をとにかく繰り返すテストライブラリもありますので、それらを使えば人力のテストでは分からない問題点を発見できるかも知れません。