テストの王子様 ~テスト自動化を諦めた大人へ贈る~


はじめに

この物語りを
世界中のテスターに
また自分がエンジニアだった頃を
忘れがちなテスター達に
そして
うわべだけでなく
物事の ほんとうの美しさを
見つめる勇気を持った
すべてのテスターに
心からの友情をこめて
贈ります。

katalonとの出会い

「テストコードを描いて・・・」
僕は雷にでも打たれたように跳びあがった。
とにかく僕はkatalonが突然現れたことに、すっかり目をまるくしていた。

遥か昔に作られ誰も仕様をちゃんと把握していないシステムのちょっとした機能追加をした後、その何倍もの人数と時間をかけて手動テストを行っていた時に、後輩がひょっこり見つけてきたのがkatalonとの出会いでした。
https://www.katalon.com/

そこには、PhpStormとの出会いと同じくらいのじわりじわり押し寄せてくる感動と希望がありました。

katalonについてはこちらのかたの記事をご覧ください。
https://qiita.com/kazurayam/items/aece5d314f84893a0a14

ユニットテストをいまさら書く余裕がない

僕はテスト項目書にいらいらしていたので、てきとうに答えた。
「ユニットテストなんて、なんの役にも立たない。あれは、納期遅延のいじわる以外のなにものでもない」

表面上はなんとなく動いているけど、中ではホントに正しく動いてるのか分からない大規模で複雑なハウルの動く城的既存システムに改めてユニットテストを書き始めるのは至難の業で、今まで通りの人海戦術を選ぶのは安牌でしょう。

テストに追われて

「でもきみ、きみはそう思ってるの?テスト自動化が...」
「いいや!ちがう!僕はなにも思ってやしない!てきとうにこたえただけだ。テストで忙しいんだ、僕は!」

Excelに書かれた少し作成者の個性の入ったテスト項目書を読解するのは手書き年賀状の仕分け並みに高度な作業で、ブラウザを操作して、画面キャプチャを共有フォルダに保存していく作業は、頭を悩ませ心を疲弊させ創造する余裕を奪います。

「テスト以外は、何もしたことがなかった。一日じゅう、きみみたいにくり返してた。」
「『大事なことで忙しい!私は有能なテスターだから!』そうしてふんぞり返ってた。でもそんなのはエンジニアじゃない。キノコだ!」

そこの君、もうコード書くよりExcelとにらめっこしている時間が、またCtrl+SpaceよりPrtScを押下している回数が圧倒的すぎて、自分がエンジニアだったことを忘れていませんか?

Eclipseベース

「なんてきれいなんだ!」
「そうでしょう?」katalonは静かに答えた。「Eclipseをベースに作られたんですもの」

katalonは、Eclipseベース(決して好きではないけど)で作られているので、selenium IDEを見た後だと、とてもきれいに見えます。

項目数は更に増えていく

「指示は変わっていない。それが悲劇のはじまりだ!機能はどんどん増えていったんだが、テスト期間のほうは変わらなかった!」
「ちっともおもしろくなんかない」とテスター。「こうしてテストはじめて、もう1か月になるんだぞ」

もう複数人が数日でやれるレベルの項目数をゆうに超えているにも関わらず、1か月ずっと同じ内容のテストを繰り返す日々を送っているなら、それを苦行と言います。

テストの精度

「テスターがうそつきだと、エビデンスがとんでもないことになってしまうからだ。」
「あなたがテストするの?」
「いいや。そんな面倒なことはしない。テスターにエビデンスを取るよう求める。たとえば大きなバグを発見したら、画面キャプチャとエラーログを持ってきてもらう。」

仕様をある程度知っている人がテスト項目書を書いたとしても、第三者がその項目書を見てテストすると、解釈の違いで誤ったテストをすることは田園都市線が遅延する確率より多少低い程度です。
項目数を増やしてしっかりテストし事故を減らそうっていっても、人的ミスは比例して増加します。
事故を未然に防ぐことができなかったのがテスターの責任になったりしたら、もうレ・ミゼラブル。

katalonに愛着が芽生える

「きみのkatalonをかけがえのないものにしたのは、きみがkatalonのために費やした時間だったんだ」

試しに単調なブラウザの繰り返し作業をTestCaseとしていくつか作成していたら、いつの間にかkatalonに愛着を感じてきました。Object Repositoryのリネームで毎回エラーが発生して2回目で成功することも、終了時に毎回まだ動いてるヤツがいるんだけどってエラーダイアログが表示されることも。

苦労の末に

「ひとつのリリースに、五千項目もテストしてるよ・・・それなのに、リリース後に発見されるバグを見つけられない・・・」

大量の手動テストをこなしたとしても、コード化されたテストより時間の割に効果が低く感じます。
さらに、その時間は掛け捨て保険のようであり、その行為がそのプロジェクトや実施者のオープンな財産にはほぼならないでしょう。

全部入り

「不思議だね」僕はkatalonに言った。「ぜんぶそろってる。IDEも、Webdriverも、Recorderも・・・」

katalonをダウンロードすると、その中にTest Caseを作成したり実行結果を見たりするkatalon IDE、ブラウザ自動操作させるwebdriver、ブラウザ動作を記録するRecorderなど一式入っていて、すぐ実行できます。
Webページの操作もChrome、Firefox、IE、モバイルにも対応しており、APIのTestCaseも作成できます。
フルスクリーンキャプチャもできますので、エビデンスもしっかり取ることができます。
https://qiita.com/kazurayam/items/ec9015e781819a5734b1

Test CaseやTest Suitesがテスト項目みたいなものですが、Excelの項目書は絶対必要なんじゃい!ってかたは、これを使ってExcelに項目を書き込む仕組みを作ってみるのもいいですね ↓
https://docs.katalon.com/katalon-studio/docs/write-data-into-excel-file-at-runtime-during-test-execution.html

さあkatalonを使ってみよう

僕はkatalonをインストールした。ようやく息がらくになった。起動すると、画面はkatalon色に染まる。その色もまた、僕を満ちたりた気持ちにしてくれた。どうしてあんなにあれこれ苦労する必要があっただろう・・・

試しにkatalonでTest Caseを作ってみると、Excelとにらめっこしているより、100倍楽しいです。
まだExcelテスト項目書に取って代わるには、越えなければならない壁はいくつかありますが、テスト自動化に(もう)一度チャレンジしてみようと思っているかたは、まずkatalonで試してみるのはどうでしょうか。