UIテスト自動化でSIerのExcelスクショは滅びるのか
先日 JJUG CCC 2016 Fall に参加してきたってブログに書いたとおり、JJUG CCC 2016 Fallに参加してきました。
直接セッションは聞いていないのですが、 @backpaper0さんの 「Selenideを試行錯誤しながら実践するブラウザ自動テスト」というセッション中に流れてきたツイートがきっかけでタイトルの内容について考えてみたので書いてみます。
@backpaper0 さんの当日の資料は以下になります。
考えるきっかけになったのは、@khasunuma さんの以下ツイート。
@khasunumaさんは同イベントで Payara Micro の設計と実装 という発表をしています。Payara Microを利用している人には有用な情報が目白押しなので、見ることをオススメします。
Selenide導入したら、本当にもうスクショ要員要らなくなるね。というか、SIerのスクショ要員って何なの?的な。 #jjug_ccc #ccc_c6
— HASUNUMA Kenji (@khasunuma) 2016年12月3日
日本でSelenide/Seleniumを大々的に導入すると、SI業界で大量の失業者が発生するわけか… #jjug_ccc #ccc_c6
— HASUNUMA Kenji (@khasunuma) 2016年12月3日
スクショのエビデンス作成だるい、というか、SI業界入ってから数え切れないくらいスクショ加工してエビデンスを偽造しているから、そしてそれが全部通用してきているから、開発時のテストのスクショは無意味だと思ってます。逆にサポート時にトラブった画面のスクショは受け取る側として凄く助かる。
— HASUNUMA Kenji (@khasunuma) 2016年12月3日
8年間SIerにいますが、Selenideを導入すればそれで大量の失業者が発生するとは思えないってのが自分の考えです。
ただ、新人や若手がテスト要員(≒スクショ要員?)としてプロジェクトに突っ込まれ、死んだ目をしたテスト実行エビデンス取得マッスィーンになっているのを何回も見ているので心が痛いところです。
ツイート見ると蓮沼さんもツラい経験を多くしてそうですね(´;ω;`)ブワッ… エビデンスの偽造…うっ頭が…
エビデンスの作成は面倒ですし、出来ることならスクショを撮ってExcelに貼り付けて…なんてことはやりたくは無いというのには同意です。
とはいえ、そんな簡単に撲滅できるような話ではないと考えています。
以下自分のツイート。
@ponnjinnla テストの作成コストとどれだけ回帰テストするかってバランスの問題があると思うんだけど、プロジェクトで採用して有用そう?
— てんてん (@tenten0213) December 3, 2016
@ponnjinnla そうなんだー。そうゆうの予め分かるはずなので、テスト戦略たてるときに採用してメリットあるかどうか検討すべきだよね。思考停止で手でテストしてキャプチャするとか決めてそう
— てんてん (@tenten0213) December 3, 2016
別のプロジェクトにいる後輩とやり取りをしているのですが、UIテストの自動テストはテストスクリプトの作成にそれなりにコストがかかります。
UIの変更が頻繁に入る場合、パッケージやサービスとして提供するので回帰テストの頻度が多い場合などはテストスクリプト作成コストを回収できる、もしくは回帰テストを行えるメリットが大きい場合などは採用を検討すれば良いと思います。
採用を検討すれば良い と書いたのは、そこには組織文化や、プロジェクトのコンテキスト、メンバーのスキルセットなど絡んでくるので、そこも含めて検討する必要があるからです。
そして、全てにおいて適用する / しない ではなく、特定のページのみ採用するメリットがあるのであれば部分的に導入するのも良いと思います。
スクショがどうこうって本質的じゃないと思うんだよな。
— てんてん (@tenten0213) December 3, 2016
そのテストを実行するのにどれだけコストがかかるのか、何回繰り返しテストするのかが問題で。
自分がテスト戦略や計画において採用するテスティングフレームワークを決定でき、コスト度外視で採用できるならすれば良いですが、それで顧客や会社からの信用が得られるかは別の話です。
何回も繰り返しテストをする、UIが頻繁に変わる、だから採用してコストメリットがある、なら使えば良いと思う。
— てんてん (@tenten0213) December 3, 2016
まぁ手動テストつまらんしスクショ取るのダルいから採用します!で採用できるならそれで良いけど
例えばUIの自動テストがコスト的に採用が難しい場合、手動でテストを行い、必要であればエビデンスとしてスクリーンショットを取得します。
その作業は単純作業でツラいものになりますが(どう感じるかは人によるでしょうが)、そういった作業は以下のようなツールを利用することでツラミを和らげてくれます。
手動テストは嫌だからUIテストを自動化する、ではなく、コストのバランスなどを見ながら自動化可能なところを自動化していけば良いのではないでしょうか。
また、そもそもエビデンスとしてスクショが必要なのかどうか顧客に確認することも大事です。 伝統的に取得しているから今回も…ではなく、本当に必要なのかどうか確認しましょう。 スクショにかかっていたコストを新機能の開発に充てられればお互い幸せになれます。
イマドキのExcelスクショの撮り方 by @kawasima #clojure #excel https://t.co/LRFYk102pB @SlideShareさんから
— てんてん (@tenten0213) December 3, 2016
コンテキストによるけど、kawasimaさんの資料みたいな解決策でも良いと思う
— てんてん (@tenten0213) December 3, 2016
まとめ
思考停止でUIテスト自動化を する / しない の二元論で考えず、自分たちに合った手法やツールを検討・採用すれば良いと思います。 タイトルに対しての今現在の個人的な回答は、顧客がエビデンスとしてスクショを望み続ける前提で コスト度外視すれば可能だが、そんなことは有り得ないので滅びない です。
とはいえ、各ブラウザの仕様が統一されていき、Selenideのようなフレームワークがもっと洗練され導入コストが下がってくれば未来はわかりません。(全く別の素晴らしいソリューションが出てくることもあるかもしれません)
そんな未来がきたとき、死んだ目をしたテスト実行エビデンス取得マッスィーンのままだと新しい仕事に有りつけず失業してしまうので、そうならないようなスキルを身に着けておくようにしましょう。
…そんな未来が早く来ると良いですね(遠い目)