JaSST'16 で Web.JaSSTに登壇しちゃいました!
縁あって JaSST'16 Tokyo 初日のB2セッション「Web.JaSST ~ウェブ開発のテストや戦略~」のパネルディスカッションに登壇させていただきました。
パネリスト:左から
なにこのメンツ。恐れ多いわー。。。
JaSST TokyoでWebのセッションができたのは去年(2015年)からで今回が2回目です。去年は聴講者として聞いていました。その時にも思ったのですが、Web業界といってもイメージするものがみんな違う んですよね。それだけ多様なサービスが存在するということですよね。
現時点での私の「Webサービス」のイメージとしては下記のような感じでしょうか。
※ 個人の感想です。もっとうまい定義はありそう。
例えばですが、
- みんな大好きTwitterやfacebookなどのソーシャルメディアもWeb。
- あのアイドルのブログもWebサービス。
- あのアイドルが出てるYouTubeもニコ動もUstも。
- ショッピングサイトやネットオークションも、旅行の予約も、レストランの口コミも。
- ソーシャル・ネットワーキング・ゲーム(ソシャゲ)も。
- ネットバンキングも。
- 電子カルテのクラウドサービスとかも。
- 2015年に行われた国勢調査はインターネット回答もできましたが、あのシステムもWebサービス。
プレステやWiiがネットにつながっててもWeb系とは言わない気がするのですが、スマホアプリのゲームに関してはWebとゲームが融合されてる感じがします。そしてパネラー4人のうち2人がスマホゲーム専門ていうねw
ネットは広大だわ……
こうなってくると「Webのテスト」というキーワードだけで人が集まっても、話が全く合わないことがあります。
上記のようなジャンル(?)の違いもあるし、ビジネスとしてBtoC なのか BtoB なのかによっても違いそうです。根拠レスですが「Web業界」というと、SNSやゲームのようなBtoCのサービスがイメージされるんじゃないかなと思っています。また、プロジェクトに関わる人数や、開発プロセスや組織構造や、売上やユーザー数などの規模の違いもありますよね。
今回のパネルディスカッションでは、
というラインナップかなと思いました。
パネルのお題
3つのテーマ、および会場からの質問に対して各人の意見を出し合いました。
- Webのものづくりってテスト計画や戦略が乏しいと感じますか?その辺を強化した事例などありますか?
- レガシーなシステムなどで仕様書などのテストベースが乏しい場合のテストのテクニックがありますか?
- リリース判定などでリリース前に意見を求められた際に判断材料が乏しい場合にとる行動やテクニックなどありますか?
この記事にはパネルの中身ではなく、私自身が印象深かったことを書きます。
新規サービスにQA(をちゃんとやること)は必要か
私にとって今回のセッションで一番衝撃だったのはこの話題でした。(パネルのお題ではないけどw)
この問に対する私の回答は 「新規サービスの場合は品質よりもスピード重視して、リリースして顧客に価値を問うて、違ったらやり直す。その場合、テストしすぎてもサービスが当たるかわからないので、無駄になるかもしれない。だからQAにコストかけないのが正解じゃない?」 というスタンスです。
これに対してミクシィの柿崎さんから「残念だ」ってコメントもらったのが衝撃だったw 柿崎さんは 「サービスをブーストさせるためにQAを入れて品質を高める!」 というスタンスでした。
...このセッションが終わった後に疲れ切ってしまい、会場の前にあったドトールでホットカフェオレ飲みながらこのことを考えていたのですが、ここでもやはり議論の前提条件が違った可能性はあるなと思ったです。
私が思ってる「新規サービス」って、リーンスタートアップでいうところの「価値仮説」を検証してる段階のものをイメージしてましたが、柿崎さんがブーストしているものはすでに価値仮説が検証されている(ゲームとしてウケるとわかっている)モノで、より「成長させていく」フェーズだったのかもな、いやそうに違いない!って思い至りました。
レガシーなシステムってどんなもの?
前提条件の違いについてもう1つ。
「レガシーなシステム」をどうテストするか、というお題について、議論の終盤になってみんながイメージしてる「レガシー」が異なってるなと感じてたのですが、タイミング逃して確認コメントを挟めなかったです。。。
レガシーなシステムとは?に対しては「テストコードが無いシステム」というのは回答になり得ると思うのですが、その場の話の流れと会場の反応からは「使われてないシステム」とか「メンテされてないシステム」とか「古いシステム」というのをイメージしてる人もいそうだなと思いました。
使われてないシステムなら捨てればいいし、「メンテされてなくて古い」けど「ちゃんと動いてる」なら何の問題も無いし。ただ、そこに機能追加しようとした時に、内部品質が悪くて迂闊に手を出すとどこに影響あるかわからない、みたいなときにどうするか、ってことかと思いました。
正常系(何を持って正常というのかは自分たちで決める)だけでも自動でのE2Eテストを用意しておいて、そこから機能追加する、がいいかと思いました。E2EテストはSeleniumとかCucumberとかCapybaraとかTurnipをイメージしてます。その上で、今後作るものに対しては将来の自分たちのためにテスト書こうよ(ここでのテストは開発者が書くテストコードをイメージしてます)というのが着地点かなと思いました。
E2Eテストを用意する工数は与えられない、という現実はありそうですが、、、理想論過ぎますかね?w
アジャイルっぽくするとスマートになりそう
ミクシィの「ITS/BTS至上主義」の話はアジャイルに通じるものがあって、なんというかスマートな印象を受けました。
柿崎さんの話を私なりに解釈すると、
- 全ての課題はチケット化され、いろんな役割の人がそのチケットに関わっていく
- 例えば企画の人がその機能が必要な理由や背景を書いて、
- それに対して設計・実装者がだったらこうやるよ、ってコメントして、実装し、
- QAがそれを見て、だったらこんなテストして、結果はこうだったよ、を記入し、
- その間、関わってる人はチケットの状況を把握していて、ズレてきたらその場で方向修正して、、、
- で、条件が満たされたら実装完了としてチケット閉じる、と。
そうすると、最初は仕様(書)は無かったけど、そのチケットを見ればその機能に対する仕様(書)になっている、と。なにこれすごい。さらに、開発とQAだけでなく、関わる人全員が「何がどうなってるか」が把握できている、と。
弊社でもスクラムを取り入れて開発してるプロジェクトが増えてきました。チケット(ユーザーストーリー)に分けて、各ストーリーには完了条件が定義されていて、優先順位の高いものから手を付けて、割り込みが発生したら都度優先度を見直す、と。
このやり方はWeb(少なくとも弊社が扱っているようなサービス開発)とは相性がいい気がします。
最後に
私がJaSSTというイベントを知って参加するようになってから7年目。初めて参加した時の印象は組込みとかSIerの事例とかが多くてダイレクトに共感できる感じではなかったのですが、この数年でJaSSTの中にWebセッションができるし、JaSST以外のテスト界隈でもWeb系の人が増えてきている気がしています。しんすくさん がいうところの 軽量品質保証 の考え方って共感できるわー!みたいな業界の人が増えてきて、私としては楽しくなってきたなーと思います。意見交換とか事例紹介とか、もっとオープンにやっていきたいですよね!(何かを教えてもらう、というよりも、困ってることに対してみんなで解決策を出しあう、みたいな場の方が楽しそうな気がする)