Dreamland-夢と想いと小さな工夫

自分の中にある想いだったり日々の工夫だったりをすこしずつ書いていこうかなぁって思ってます。

テスト分析とテスト自動化のはじめの一歩的なプロセスを考える

最近構想していることについて書いておこうと思いました。
これがいいという話ではなく、こうしてみようかなぁという話です。

背景として、今の現場(ブラックボックスのテスト専門のテストチーム)では、まったくと言っていいほどテスト分析、テスト設計とテスト自動化が進んでいません。現場の特性として自動化できる箇所に制限はあるのですが、それでもできる箇所もあるし、比較的自動化させやすいWebUIを持つものが多いため、その気になれば自動化できます。しかしながらテストコードはおろかHTMLすら書いたことが無いメンバーばかりという難点があります。そしてテスト分析やテスト設計も・・・まぁこれまでの記事でおわかりになるように仕様書の記述からテストケースを挙げることに慣れている状態で、仕様書がないと思考停止してしまう状態です。

そんなところに、どうやってテスト分析と自動化を導入していく?という話。

最初は、UIのテストに使えばいいんじゃない?画面遷移のテストに使えばいいんじゃない?という話があって、チャレンジしたことがあるのですが(ちなみに私ではない)、闇雲に着手するととても範囲が広く、そしてツールの制約などで操作が限られたりするので思ったように自動化できない、確認したいことが確認できない、メンテナンスが大変、などの問題があって定着しませんでした。
更に最近はidは自動採番されるので繰り返しに耐えられず、だけどnameやclassで一意特定できるようには作ってくれていないという問題もあり、暗礁に乗り上げていました。

そこで、以下の方針をたてて考えることにしました。
・テスト対象の実装や自動化ツールに振り回されないようにする
・テストスクリプト作成もメンテナンスも楽なものを目指す
・テスト分析・テスト設計を盛り込んだ上で手動テストと一緒に自動化のプロセスを考える
・「これなら始められるんじゃないか」という気にさせる

まだ記事にしていませんが、実はドメインモデルやロバストネス図の試みの他に、ユースケース図とユースケース記述をつくるという試みを今年から始めていて、ユースケース図およびユースケース記述ならモデルに慣れていない人でも始められるんじゃないか?という見解がでてきました。→これなら始められるかも

そして、ユースケース記述が書けるならユースケーステストができる。ユースケーステストはスモークテストとしても使える。スモークテストはプロダクトのバージョンアップの際に必ず実行するし、ビルドごとに実行することもあるから、自動化させるにはちょうどよい。また、ユースケーステストは操作にこだわらない(シナリオのパスが通ればよい)から自動化させてもあまり制約に左右されない。→まずはWebアプリのユースケーステストの自動化を目指そう!

最初はSelenium WebDriverで試していたのですが、「Selenium実践入門」を読んでGebを試したところ、GebならidやCSSセレクタに頼らずに「Buttonで、テキストに●●と書かれている0番目の要素」という指定ができることが判明。そして言語がシンプルなので面倒くささが軽減される。→作成とメンテナンスが楽になる

そしてSpockを利用することで、When-Thenの記述でスクリプトが書ける。。。これさ・・・つまりユースケース記述がそのまま載るじゃん!!すごーい!べんりー!

Spockは@Unrollを利用することでデータ駆動のテストも実装しやすい。→じゃぁ手順が同じなパラメータ組み合わせテストも自動化できるんじゃない?

という過程を経て考えたざっくりプロセスがこちら

f:id:shiozi:20160919224046p:plain

とりあえず自動化させたいテストに着目しているので、その他のテストに関してはざっくりひとまとめになっていますが、他のテストも分析の段階からモデルが作成されてテストに落ちるものもあるよな、とは思っています。

また、ユースケース図を描き、ユースケース記述を書くことで、この段階からの開発活動に関わりやすくなり、認識を共有しやすくなると思っています。特にテスト担当者はミスユースケースを考えやすい立場にいると思っています。

 

そしてもちろんこれを今の組織やチームにいっぺんに導入するのは無理なので、とりあえずパイロットプロジェクトで枠組みを作り上げるのは私がやるとして、メンバーに対してはまずは部分的に始めよう、じゃぁどこから着手してみようか?という話をしているところです。。。まぁやっぱり最初は分析ができるようになりたいよねー・・・ユースケース図と記述が書ける文化にしていきたいよねー・・・

さてさてどうなりますことやら。

なお、こんなことを考えられるようになるまでに至る過程で、職場のメンバーはもちろんFBでコメントをくださった皆様や勉強会やカンファレンスなどでたくさんのことを教えてくださった皆様、本や記事を書いてくださった皆様の力を借りたことに、とても感謝しています。まだまだ試行錯誤中だけど、自分の中で芯ができてきた気がしています。そしてこれからもさんざんお世話になりそうですがよろしくお願いしますm(_ _)m