こんにちは! 作者です。
久しぶりに時間に余裕ができたので、日曜大工ならぬ日曜プログラマーをしていました。
ふと思いついたツールがすぐに作れそうだったのでw
それで1日チャレンジ、と思ってテストツールを作ってみましたので公開したいと思います。
勝手にサイトを回遊してランダムテストをしてくれる「TestFish」
概要
指定したドメイン内のページに対して以下の動作を行いながら、色々なページを回遊します。
- 該当ページ内にあるリンク(自ドメインのみ)についてのhttp status codeを取得する
- ブラウザのログ(js errorやwarningなど)を取得する
- ページ内のinputには「' or 'a'='a」を入力、あとボタン、リンク、ラジオボタン、チェックボックスなどを適当にクリックする
つまり、ドメイン内のページを勝手に回遊して、入力を適当に行い、ボタンなどをポチポチ押しまくってエラーが出てないか確認してくれるツールです。
イメージとしては、大雑把な掃除をしてくれるルンバ、といった感じです(笑)
用途としては、本番環境を回遊させて致命的なエラー(400番台、500番台など)が出てないことの確認などに使えるかと思います。
ランダム操作の時ですが「何か操作をすると、画面の状態が変わるはずだ」という思想で作っています。よって、何も変化が起こらなかった時にエラーが表示されるようになっています。
使い方
ダウンロードは以下
https://github.com/testerchan/TestFish/raw/master/TestFish.zip
環境
使い方
特にseleniumやpythonなどをインストールする必要はありません。
オールインワンにして作っているので「main.exe」をダブルクリックするだけで動く……はずです。
使う前に「settings.txt」で設定を変更してください。
- TargetUrl……TestFishが回遊するドメイン。このドメイン以外につながるリンクなどはチェックしません。
- ActuatingCycle……この回数分だけTestFishが行動を行います。5なら、5回だけ行動を行って終了します。
- WaitTimeForAction……次の行動に移るまでの待ち時間です。初期値は5秒です。整数値で指定してください。
- WaitTimeForLinkCheck……リンクをチェックするときの待ち時間です。小数が指定できます。サーバー負荷軽減のためと思って付けてみました。短時間で実行すると攻撃になりそうなので要注意。
- LogDir……ログを保存するフォルダです。
- IsHeadless……TrueにするとchromeをHeadlessモード(画面が見えないモード)で動かします。全画面キャプチャが欲しい場合はこのモードにする必要があります。Falseの場合はブラウザが起動して起動している様子が見えます。ブラウザが見える状態の場合、キャプチャはディスプレイサイズに依存します。
- IsLinkCheck……Trueの場合、リンクのステータスチェックを行います。Falseの場合はチェックを行いません。リンクのチェックが邪魔なときはFalseにしてください。
- IsBrowserCheck……Trueの場合、ブラウザに表示されるコンソールを取得します。Falseの場合は取得を行いません。ブラウザのログチェックが不要な場合はFalseにしてください。
ログ
- 1行動ごとにまとめられています。
- 「行ったアクション」で、行動したにも関わらずページに何の変化も起きなかった場合、エラーマークがタイトルに表示されます。
- ブラウザログ、リンク先確認いずれかにメッセージがある場合は注意マークがタイトルに表示されます。
- 左カラムに行動前の画像と行動後の画像が表示されます。
- 行動については右カラムに表示されます。
- ブラウザログには、ブラウザから吐かれたログが記録されます。
- リンク先確認には、該当ページ内で400番台以上のhttp status codeだったリンクが表示されます。
github
1日でズビズダーと作ったので内容がアレですが、公開しています。
改造して使ってよいですw
githubのコードを使う場合は、"pip install selenium"でseleniumをインストールする必要があります。
作者はこれからまたマンガとイラストとマンガで忙しいので、バグ修正などは気が向いたときに実施します(^-^;