Autify Podcast : ソフトウェアテスト、自動化するところ、手動でやるところ
Autify Podcast、エピソードを追加しました
ソフトウェアテスト、スタートアップなどにフォーカスしてさまざまなTipsや、事例などをお伝えするラジオ番組、Autify Podcastを公開しています。
今回は、note、cakesといったサービスを提供する、note株式会社のテスト自動化エンジニア、増原さんをゲストにお迎えし、ソフトウェアテストにまつわる様々なお話を前後編でお伝えします。Autifyのテスト自動化スペシャリスト末村とのトークをお楽しみください。
- Podcast収録、公開後に社名変更がありました。Podcast及び書き起こし記事は前社名のままとさせていただいております。
本ブログ記事は後編の内容です。ぜひご覧ください。
ぜひ聞いてみてください
ご意見、感想はTwitterでメンションしてください。
https://twitter.com/AutifyJapan
ここからは書き起こし記事です
末村: こんにちは、Autify Podcastです。今回はですね、以前増原さん、ピースオブケイクの増原さんに来ていただいた会の続きを収録しています。 増原さん、またよろしくお願いします。 注)本Podcastは2020年4月1日に公開したもので、(当時の社名)[https://note.jp/n/n14e260956074]のままでお送りします。
増原: はい。ちょっと前回から話題がちょっと重たかったんで、怖いなって思ってます(笑)今日はどうだろう。
増原: そうですね、編集で切ってくれるといいですね。
末村: はい。今回は毛色を変えてお勧めのラーメン屋さんの話をしようかなと思ったんですけれども、手動テストについての話を振ってみようと思います。
増原: そうですか。
末村: 増原さんがラーメンの話をしたそうにしていて、かわいそうなんだけれど。
増原: 大丈夫です。
末村: ちなみに、何のラーメンが好きですか。
増原: 僕はとんこつラーメンが好きなんですけど、最近うまかったなってラーメン屋は、ラーメン二郎の神田1号店です。
末村: そんな増原さんにとって手動テストとは。 ちょっと、繫ぎが不自然すぎたのでもう1回やりたいと思うんですけれども。
増原: いいんじゃないですか。
末村: 増原さん今、ピースオブケイクの1人目にして唯一のQAエンジニアだと思うんですけど、今は自動テストと手動テストどちらもやられている感じですか。
増原: 自動テストのメンテとかがほぼほぼです。手動テストは、今週出してリリースしたんで、その時に出しましたけれども。
末村: 自分のやつに?
増原: 自分のやつに(笑)
末村: すると開発サイド的にはもう、エンジニアは自分が作ったやつを自分で手動テストして。
増原: そうです。なので、そのための必要なツール、IEがないんだったら調べてSauce Labsとか契約しますかとか。そういうのは僕はリードしてやったりはします。
末村: 社内の手動テストをするための相談役じゃないかもしれないですが。
増原: 広くテストに対して相談役という感じでしょうか。
末村: すごい、CQOですね。チーフクオリティオフィサー。
増原: 聞いたことない役職誕生しましたね。
末村: しましたね。実際あるんですかね。品質の担保を経営レベルでやるような。
増原: いいんじゃないですか。
末村: どうなんでしょう。そこもCTOがやるような感じになるのかな。
増原: 品質部長みたいな人が普通にいるんじゃないですか。日本でも。
末村: 品質部長。すごい。マイクロソフトにチームクオリティオフィサー、いる。そんなCQOの増原さんは、今までのキャリアの中で、手動テストメインにやってたみたいなときもなかったですか。
増原: ありましたよ。最初の会社でQAチーム立ちあげたときとか、手動しかないですね。 自動テストとか手を付け始めたのが、1個前の会社に入ってからなので。だから、その手動のテストをちょっと楽にするために、Jenkinsからデプロイゲートにアプリ配布して、最新のアプリすぐ使えるようにするとか、そういうのはやったりはしてましたけど。 なので、実行自体は手動テスト歴もそこそこあります。
末村: なるほど。自動テストをものすごくやっている会社だとしても。手動テストが全くないところって、かなり稀だと思うんですけれど。
増原: そこは、QAエンジニアが今の会社だとメインではやってないってだけで、開発者自身は触ったりやってるんで。
末村: もちろんそうですよね。手動テストにもいろんな技法があったりする訳じゃないですか。QAがやるときと開発者自身がやるときって、最大の違いってたぶんそこを意識するかどうか。 開発者自身が意識してないって言ってる訳ではなくて、QAはそういうのを勉強するのが当たり前みたいな感じに段々なってきているはずだと僕は信じていて。 って、信じていてって言っても僕はやっていないんだけれども。
増原: すごくTwitterとかでも、QAで情報発信する人は増えましたよね。
末村: そうですね。僕の意見としては、開発者も当然テスト技法については知ってないといけなくて、なぜならテストは開発者の責任の範囲の一つだからっていうふうに思ってはいるんですけど。 実際にそういう考え方って世の中に完全に浸透してるとは言いがたいじゃないですか。 分かんないですよ。俺が知らないだけかもしれないんですけれども。少なくともあまり開発者がテストの本を買ってるっていうのは見ないだろうし。 駄目だな、どうも開発者をディスる言い方をしてしまうんだけれども(笑)俺は開発者なので全くディスる意図はなくて。
増原:(笑)
末村: QAの人は名刺にQAって書いてあるし、テストに関して勉強するのが当然だし、皆から求められてるから、結構そこを勉強するモチベーションというか、インセンティブもあると思うんですけど、開発者はどちらかというと物を作る方に目がいくじゃないですか。
増原: そうですね。メインは新しいフィーチャーをリリースするとかだったりするので。
末村: 開発者自身がテストをするっていうのは、個人的にもやっぱり理想なんですけど、その前提には、ちゃんと有効なテストができるようになってないといけないっていうところがあると思っていて。 そこに自信がなくて専門家にお願いしようぜみたいなのは、開発者チームとQAチームのダブルスみたいなところの始まりかなと思うんです。 もともと手動テストの話だったのに、違ってきちゃった(笑)
増原:(笑)
末村: 今、増原さんは開発チームと分かれている訳ではないけれども、開発者たちもテストも責任を持ってやっているっていうことですよね。まさに増原さんたちのチーム。
増原: そうです、はい。
末村: いいと思うんですが、どうなんでしょう。ちゃんと回ってます? すごい率直な話を聞くんですが、チームの手動テストが足りなくてバグが出た、あるいはテストに対する知識が足りなくてバグが出たみたいな感じに思うことってなんですか。
増原: そこはまだ考えてないです。
末村:(笑)
増原: 動作確認してないんかいみたいなのは、正直あるんですけど(笑)
末村: それは、狂おしいほどあると思うんですけれども(笑)
増原: 今は、何で自動テストとかを優先的にやっているかっていうところをお話しておくと、QAって採用枠なかなか増えないんですよ。うちの会社はそうですね。今も全然サーバーサイド、フロントエンド、マシンラーニングとかを優先してるんで。 開発できる人を増やすっていう状況では、まず、マニュアルテスト僕カバーできませんよっていうのは分かりきっていたことなので、それよりは開発者に、テスト技法の勉強会とかをした方がいいのかもしれないですけど。 それよりは、デプロイされたものがある程度安定してリリースされていくような仕組み作りの方が、この状況の中では効果があるのでは、と考えて、そういう風にやっています。 ただ、おっしゃる通り手動テスト全部カバーできているわけではないし、どういうテストが行われているかっていうのは全然把握していないんで、そこはどうしよっかなっていう感じですね。
末村: ですよね。ちなみにおっしゃる通りって言われましたが、僕も特にできているわけではないので、大変だよねっていう感じです。
増原: いやー、やんなきゃいけないのかなみたいな。やっぱ最初のQAたるものそうじゃなきゃ駄目なんじゃないかなって思うことは、この会社に入ってから何回もありました。 でも、そこでやってしまうと、これまでのキャリアと。これは僕が単にやりたいことなのかもしれないですけど、それだと、これまでのキャリアと何もと変わんないんじゃない?って思ってしまって。
末村: そもそも、手動ではなくて自動の方をやりたいと。
増原: 自動を優先したらどうなるかっていうのをやった方が面白いのでは、っていうのはあったりします。
末村: なるほど、ありがとうございます。すごい面白かったです。 ちなみになんですけど、今実行している対象ってどこですか。
増原: 実行しているのは、更新系とかもガンガンやるやつはStaging環境的なところがあるんで、そこにデプロイされたら更新系、会員登録とかnoteの記事書きますとか、そういうシナリオをそこで動かして書きます。 それで、プロダクションも一応動かしてますけど、うちtoB向けのサービスもやってて。 要は企業のブログをnoteでやりませんか、みたいなのはあったりするんで。 普通のtoC向けの一般ユーザー向けのnoteが見られるれるかというものと、あとは企業系のやつが問題なく開けるかぐらいのやつは、プロダクションでおいてます。
末村: なるほど。
増原: プロダクションで更新系はやらないようにしてます、現状は。
末村:そうですよね(笑)
増原: 『note自動会員登録さん』みたいな、ユーザーが大量にユーザーの方に見えたらまずいなと(笑) その辺をすごくいい感じに回避できる仕組みができない限り、ちょっとやめとこうって感じはしてます。
末村: そうですね。それはすごく分かります。昔、まだ前職にいたときに、あるとき突然本番環境だけ会員登録ができなかったみたいなバグがあって。 原因はhotfixをstagingにあげずに出して、それが実はバグの原因だったんですけど。やっぱりE2Eテストがいるよねみたいな話になったんですけど。 いやぁでも、それやったら無限にテストユーザーみたいなのができちゃうみたいな。
増原: そうですね。確かにそれは発生する可能性が。そういう意味ではプロダクションテストとかやったらみたいな言ってくれるんですけど。 例えばGoogleで検索して、出た結果からそこから会員登録してみたいなところまでやれば、ビジネス的に担保されてるってことになるじゃんって、まあそうなんだけど(笑)
末村: 難しいんですよね。テストで担保すべきところなのか、プロセスで担保すべきところなのか。 やっぱり、テストでここでちゃんと担保してるよって思ったところが、デプロイプロセスを無視して、要はテストで想定してないようなルートでデプロイされちゃったらみたいな。
増原: あります。それは全然うちでもあります。
末村: そうなんですよねやっぱり、そこがすごい難しくって。
増原: 必ずそこで動かされている訳じゃないので。動作環境もポコポコ作れるわけじゃないしなー、環境の取り合いみたいな。それはあります。
**末村: ** 増原さんの前職がやってた、環境をポコポコ作れるマンみたいな機能を、一昨年のテスト自動化カンファレンスで見て。それを見て、すごくいいものだなって感動して(笑)
増原: それやったときには、僕辞めてるんで(笑) ポコポコ作りたい、ポコポコテストしたいっていう気持ちはあります。
末村: そうなんです。何だろう、リリース前にたくさんテストをしたいっていう方じゃないですか。 今テストの大きな潮流で、シフトレフトとシフトライトが。
増原: 繫げてきましたね(笑)
末村: 繫げてきましたね!
増原: そう。JaSST◯でもシフトレフトっていう話題が出ていて、俺もう、シフトライトとかシフトレフトとか全然分かんねえって思いながら。
末村: シフトレフトとシフトライトっていうのが新しい、大きい潮流としてあると思っていて。 シフトレフトはどちらかというと、例えば今までE2Eをリリースの直前に回していたのを、もっと早い段階から回すようにしようとか、あるいは、レビューとかをもっと早い段階でやっていけるようにしようとか。 みたいな話なのかなと思ってるんです。たぶんです(笑) 僕もきちんとそこについて厳密な定義を得た訳ではなくて、ただ
増原: トレンドワード的な。
末村: そう。なるべく早くいろんなところでテストしようっていう。もっと言うと、アジャイルテスティングの八の字の図ってご覧になったことあります?
増原: なんかよく見ますね、よく分かってないですけど(笑)
末村: あれはもう、ひたすらどこでもテストをしようっていう図なんです。八の字の左側は開発中、八の字の右側はリリース後の世界なんですけど。リリース前とリリース後です。 リリース前にも、例えば仕様を作ってる段階からテストする、実装中もテストする、みたいな感じでひたすらいろんなところのテストをしていく。 リリース後も例えば、リリース後って言っていいかな。デプロイしたらテストをする。デプロイしたらっていうのは、例えばStagingとかでもデプロイしたらテストする。リリースしてモニタリングのところ。そういうモニタリングとかも含めてこれはテストだよね。 要は、期待通りに動いているって意味だけでしかないんですけれども。
増原: 新しくリリースした機能がちゃんと使われてるかっていうログとかもとっとけよっていうことですかね。
末村:っていうのもそうですし、例えばなんですが、リリースの前と後でDBの負荷が極端に高まってないかとかみたいなのも、広い意味でのテストとして捉えてるっていうことだと思うんですけれども。それがシフトレフトとシフトライトの話かなと思います。 シフトライトはもう1個特徴的な話があって。 この言い方をすると誰かに怒られそうな気がするんですけど、ユーザーにテストさせることのかっこいい言い方って思っていて。
増原: うん。
末村: 要は、シフトレフトはユーザーの目に届く前になるべくたくさんテストをして、バグを減らして不具合を減らしていこうという試みのはずなんです。シフトライトというのは完全に逆で、テストで取りこぼしたものをなるべく早く見つけていこう、だと今は思う。思うって言ったのは、これは完全にオレオレの定義な気持ちが出てきたからなんですけど。 昔、増原さんからはじめて、本番環境でも実行してるっていう話を聞いて、やっぱり本番でもやるんだという気持ちを。
増原: 本当に開くだけですよ。独自ドメインとそうじゃないやつを開くだけ。
末村: ちなみに、それはなぜやる?
増原: 本番、ユーザー影響を与えずに、ある程度最低限の本番が動いていることが分かるから。
末村: すごいストレートな質問を投げますが、そこでバグあったことありました?
増原: ないですね。
末村: 安心のためにやっている?
増原: うん。どちらかというと安心ではあると思いますね。
末村: 安心は人にとってすごく大事なことだと思うんですけれども。
増原: はい。
末村: 理屈の上では、ステージングの上で100%担保できてて、デプロイプロセスもそこでしっかり担保できてるよねっていうことも担保できている。 ならば、本番でそこが動かない理屈はなさそうな気がする。そんなことないですか。
増原: 分かんないです、テストしてないから。
末村: そうですよね。
増原: こんなこと言うとあれかもしれないですけれども、そこで何が起こっているかは、テストが動いている訳ではないので。テストしてないことは分からないです。
末村: やっぱりそうだと思うんです。テスターのマインドセットで一番大事なところってそこだと思うんです。見てないから分かりません、だから見ます。本番でもテストします、Stagingでもテストします。できるなら開発、ローカルでもテストします。自信を持ってリリースができるっていうところだと思うので。 だから、やっぱり本番でやるのも大事なんだなっていうのを、これは増原さんから本番でもテストをしてますよっていう一言だけを聞いて、ここまで想像を膨らませました(笑)
増原: プロダクションっていう実行計画、プランっていうやつがプロダクションの中で動いていて。 これ皆ではないと思うんですけど、更新系とかバリバリやってると思ってた人がエンジニアでいて、これ丸々Staging的なところとは一緒ではないですよっていう説明は1回した記憶があります。
末村: 全然関係ないんですけど、違いますよって言って、なんて言ったらいいのかな。説明しないと分からないものなんですかUIの話なんですけど、どっちかというと。
増原: 具体的に、環境事にどういうシナリオが動いているかっていうのは、広く周知したりしなかったから。インフラエンジニアの人にプロダクションでも動いてるんで、動いてたら大丈夫です、みたいなことを言われて、全部はやってないんだよねって、それは言いましたけれども。
末村: なるほどね。それは例えばStagingでテストしなくてもみたいな話ですか。
増原: そうそう。プロダクションでも動いていたら大丈夫です、みたいな。そんなことないですっていう。そんなゴリゴリに更新系はできないので。
末村: なるほど。ちなみにあんまりないと思うんですけど、強いて言うならどっちというか。 ステージングと本番だったら、やっぱりステージングの方が使いやすい?
増原:どういうことですか?(笑)
末村: なんとも言いがたいんですけれども、例えばの話なんですけど、プロダクションでテストしたらどうですかっていうアドバイスをもらっている。それで、プロダクションでテストをするための何か特殊な機能みたいなものはあったりするんですか。
増原: 今はない。ないから更新系はやっていないっていう感じです。例えばいつもステージングとかで会員登録する用のメールアドレスあるので、そいつのエリア数で会員登録されたら、そのユーザーの投稿とかは全部他のユーザーから見えないようにするみたいなのが入っていたら。 でもそれだと一般ユーザー的な挙動が分からなくなってしまうのでみたいな。いかに本番で動かすかは考えたことありますけど。
末村: そうですね。何かすごいジャストアイディアなんですが、例えば特定のアクセスのときには特定のHCTPヘッダーを入れるようにしておいて、それが入っていたら本番だったとしても、ちょっと特殊な動作方法するみたいな感じかな。
増原: そう、そういうのやって。今は普通にStagingレベルでエンジニアにシナリオ作ったりメンテしてもらう方が優先ですかね。
末村: そうですね(笑) だいたいこのぐらいでいいかなと思ってるんですけれども、増原さんの方から末村とかAutifyとかに聞きたいことって何かあったりしますか。
増原: 今一押しの新機能のあります?Autifyの。Autifyの動作環境とかアカウント持ったりしている訳じゃないんで。
末村: ステップグループっていうのが、つい最近出ました。 これは、特定のステップをグループ化して、いろんなシナリオで使うことができる。
これが、僕が入社する前からずっと待望の機能だったんですが。「いやぁ、作るの大変そうだなぁ」と思っていたら、いつの間にかできていて、皆すごいなと思いました。 あとは、ステップグループより少し前に出たやつなんですが、ローカルリプレイというのも出まして。レコーディングのときに自分のブラウザの上でシナリオが実行される。
増原: 速いですね、動作。
末村:これは、実はちょっと遅くしているらしいんで、何やってるか分かんないんじゃないかという懸念で。これ、ローカルリプレイすごくて。
増原: ラジオリスナー、置いてけぼりの画面を見る時間が結構ありましたけど(笑)
末村: じゃあそんなところですけど、他になにかございますか。面接みたいなトーンで言っちゃいましたけど。
増原: 本当、どういうリアクションがリスナーさんから来るか、不安でしょうがないです。
末村: 大丈夫ですよ。めちゃくちゃ面白かった以外のリアクションが。
増原: 僕がこんな話題について話していいのかみたいな感じはありました。
末村: そうですね。僕はちょっと、社に戻ってからの増原さんがすごく心配なんで。
増原: そこは心配ないです。
末村: 大丈夫ですか、最悪、弊社で面倒見ます(笑)
増原: 面倒見ます宣言されても困る(笑)
末村: はい。じゃあ前後編になってしまいましたが。前後編になってしまうぐらい、長く濃密で楽しいお話を聞かせていただきました。増原さん、本当にありがとうございました。
増原: ありがとうございました。
末村: はい。じゃあこれで終わりになります。また次回も楽しみにしていてください。 ありがとうございました。
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。