読者です 読者をやめる 読者になる 読者になる

パネルディスカッションLIVE! テスト自動化”エンジニア” の今とこれから (システムテスト自動化カンファレンス2015) #stac2015

勉強会 技術 STAC

モデレータ:

  • 浅黄 友隆(ヒューマンクレスト)
  • 松木 晋祐(ベリサーブ)

登壇者

  • 松尾 和昭(クックパッド)
  • 三浦 一仁(AAAメンバ)
  • 荻野 恒太朗(楽天
  • 森下 大介(ヤフー株式会社)
  • 小井土 亨(SQiP 運営委員会メンバー,株式会社OSK)

はじめに(浅黄)

  • このパネルディスカッションでは「これから」に焦点を当てる
  • 後半はツイートを拾います
  • 今まで色々なことをやってきたと思います。
  • その上で、今後、挑戦的にやってみたいことを聞いてみたいです。

今後、テスト自動化で、広げたいこと、挑戦したいこと

松尾

  • 挑戦したいことは1つある
  • サーバー込みのサービスが分割されている
  • 大きなサービスが個々のサービスに分割され始めている
  • それに対して、サーバー間での連携が壊れていないか確認するところが見えていない
  • サーバー間やクライアントサーバー間のAPIを変えてもテストの中で気付くようにして、最終的なサービスとしてはAPIが妥当であると確認した上でリリースできるようにしていきたい
  • その先はまだ見えていないです。

三浦

  • みうみうと紹介されるぐらいにみうみうです
  • 今までは量との戦いだった
    • 3000ぐらいのJavaプロジェクトをどうするか
  • Jobをコピー?テンプレ?
  • 今、インフラチームにいます
  • インフラも量との戦い
  • 世の中と比べると2〜4年ぐらい遅れていると思う

荻野

  • 5年ぐらいでやってみたいのはテスト実行以外の自動化
  • 私は元々データ屋さん
  • メトリクス含めて分析することで、テスト設計の一部まで自動化していきたい

森下

  • Unitテストレベルは各人進めていると思う
  • システム間の結合部分
  • 環境の構築部分
  • データセットの投入部分
  • テスト観点
  • 結合ポイントの多さ・少なさに対してどうやって効果的に仕掛けられるのか

小井土

  • 職種的に私はプログラマ
  • 自動化をもっと広めていきたい

松木

  • お互いのを聞いていて「それできるよ?」という人はいますか?

小井土

  • クラスの生成の自動化をしたりはしている
  • やってみないと分からない
  • まずはやってみるのが大事

松尾

  • 自動化とか海外を参考にしても、データの持ち方とかはサービスによって異なっている
  • サービスに依存しているので、ベストプラクティスが一致するわけではない

小井土

  • JRの踏切システムがハードからソフトになった
  • 実際に運用環境でやってみて、うまく行ったら切り替えてみるのも良いかも

松尾

  • 動かしながらというのは正にそうだと思う
  • ソフトウェアも機械仕掛けも腐敗するのはなどの計算式が出せるが、ソフトウェアは計算出来ない
    • まだ人類には早いのかもしれない
  • 元に戻せるというところには力を入れるべき

森下

  • やりにくいテストは本番に近いところでやってみる
  • jjug_cccでも本番のところの方でテストする事例があった
  • まだリリースしてないならば本番環境でやってみる
  • すぐに戻せる状況にする
  • そういうのがあるよねと把握はしている
    • けど手が回っていない
  • データに依存する部分は難しい
  • テスト環境が複数インスタンスあれば、データを入れる場所をどうするかなどを考える必要があり大変
  • またあとテストし終えた後のデータは消すのかどうか?なども考える必要がある

三浦

  • 如何に環境を引っ張り出せるのか
    • コンテナが良いと思うが、まだ安定していない?
      • 信頼性と一般化と事例が増えてきたら…

IoTのことは無視できないと思うが、その方面への工夫は?(会場からの質問)

松尾

  • ソフトウェアなのかハードウェアなのかサービスなのかによって変わってくる
  • Apple Watchなどの自動化は今までとあまり大差が無いと思っている
  • 何かIoT対応でやることは増えるのか?

三浦

  • 3年前ぐらいがIoT元年だと思うが、もっと昔からこの分野の自動化はあった
  • ビジネスアプリは弱くて、それを超えられると思うが
  • 機械をいじれるかどうか
  • 廉価な機械が手に入るようになった
  • 簡易に使えるAPIが増えてきた
  • 1コマンドでJenkinsとも連携ができる
  • これをクラウドでIoTでできるようになるかも(jjug_cccでも発表されている)
  • コンピュータ上で物理演算までできるかも
  • ハードとソフトの垣根がなくなっていくのでは

荻野

  • IoTのことについては何も考えていない
  • Googleのカンファレンスに行った時に、6,7割がIoTの話だった
  • IoTの世界になるとクライアントがいっぱい出てくる
  • 全てのクライアントに対してのクラスを作るべきかというようなディスカッションがあって興味深かった

森下

  • IoTの知見は無いが、自動化の仕事が増えることに対して
    • 仕事が増えることはネガティブなことではない
    • やっていくエンジニアの価値は重要だと思う
  • DevOpsという言葉はあるが、テストはその狭間にあると思っていて、その認知度が低いと思う
    • ここに価値が認められれば新しいことができるかも

小井土

  • 分散型のシステムになると思うので、切り分けの自動化をする必要がある
  • ある程度までの判断を絞るところまで自動化するようにすべき
    • 人では判断に時間がかかる
    • そういった部分の技術が必要になってくるかも

A/Bテストに自分自身で責任をもっているか?(会場からの質問)

森下

  • 業務系システムなので、A/Bテストはあまりやっていない
    • むしろ広告の配信をやっているチームの方がやっている
      • オーディエンスがどう反応するのか
  • ロジックが複雑すぎて予想できない
  • 人の反応まで含めると、自動化ってなんだろう?となる

価値があるのか自体をテストしたいみたいなことはあるか(松木)

荻野

  • Data Driven Testingで発表したが、開発者がぐるぐるテストできる環境を用意したりしている

三浦

  • 世代別プロダクト環境を作っている(過去3世代、1週間ごと)
    • どこまで追ったら壊れるかを調べたりしている
    • 変化を見るためのもの
  • お客さんが、とは違うかも

手動テスト用のテスト設計と自動テスト用のテスト設計の違い。自動テスト側の追加の負担はあるか?

  • システムテストレベル
  • 複数のプロダクトに渡っている
  • 自動化するチームがある
  • 自動化チームとしては自動化できるように書いて欲しい
  • 自分達で頑張ってくださいと言われた
  • 設計チーム側とうまく行っていない
  • 自動テストと垣根が無いと思っていたが、テストデータの前提が暗黙で書かれていたので…
  • 自動テストにする際のいざこざとかはあったのか?

松尾

  • 機械によって再現可能かどうか
  • 人の感じ方とかは手動テスト
  • 自動テスト用のテスト設計は無いと思う
  • 人が触っていたものを自動テストにする場合は、0/1とかでジャッジできるところがあるかどうか
  • モバイルアプリだったら画面遷移はやるが、アニメーションがちらついているかなどのところ
  • OK/NGが判断できるかどうか
  • 何か良いのを出してください

三浦

  • 詳しく聞いてみたけど、応えが…
  • 人が多く絡むものならば、人間たちがわかりやすく引けるかどうかが大事
  • 統治のために
  • 事前条件が置けるかどうか
  • 人間が絡まない場合は、長いシナリオの途中でファジーなアンニュイな判断がある場合は手動に落としている
  • 大人数だとややこしいかも

荻野

  • Opsの人とインフラと話すと感覚的な話が多い
  • 0.2sで違うぞ、バグだ、正常に動いているの判断が難しい
  • 明文化していないところを如何に明文化するか
  • 手動テストと自動テストの得手不得手がある
  • ピンポイントで探すところは手動テストでやるべき

森下

  • システムテスト系はまだまだな分野ですが…
  • 人間系の問題なのか仕組みの問題なのか
  • 別々で考えるべき
  • 自動が得意とするところはどこか

小井土

  • 自動化するかどうかはコストバランスが重要
  • どのくらい繰り返せるかが大事
  • 自動化前提で設計する部分はある
  • 市場に出た時に不具合がインパクトがあるとか
  • システムの大部分は自動化出来ない
  • Checkingの部分をやる
  • テストデータは手動でも自動でも関係なく難しい
  • カバー率とかテストデータに関係なく出ちゃうこともある
  • やれるところ、困っているところからやる

自動テストを行えば行うほど手動テストやレビューの重みが強くなっていくと思うが、役割分担をしたりしているのか

小井土

  • 自動テストをやって今までできていなかったことが見えていくことがある
  • 自動化することで人がもっとやれることが見えてきた

森下

  • 自動テストはSTestレベルだが、寿命が長く繰り返しテストするときに、予期しないテスト失敗で検知できるのは良かった
  • デグレしてないかというテストを手動でやるのは不毛な部分では?
  • レビューに関して言えば、作りが妥当か、仕様を満たしているかなどを見るべきで、住み分け出来ているのでは

荻野

  • バグには3種類ある
    • 仕様にバグがないか
    • ソースコードにバグがないか
    • 設計が妥当かどうか
  • それぞれのタイミングでレビューすれば良いのでは

三浦

  • SIerチックであれば、人格が違うことが多かった(手動と自動で)
    • V治モデルで的な
  • アジャイルの時もフェーズが違かったかも
    • 手動テストはリリースに近かったと思う
    • 時期がずれていた

松尾

  • 開発と同じ実装レベルでレビューが必要なのかと言われれば、必要になると思う
  • 開発の対象が違うだけ
  • 開発者における仕様とかレビューとかはやっていっているので、テストに対しても同じぐらい
  • 最後は…やっぱり言いにくいですね

今やってみる、動かしながらとか出ていますが、一言で一番必要な要素はなんだろうか?

  • エンジニアとしてのアドバイス的なものがあれば
  • 三浦さんは最後で

小井土

  • 「面倒くさいな」自分のやっていることに疑問を持つということが大事

森下

  • 取り組む側は「とりあえずやってみろ」
  • 手を動かしてなんぼ
  • エンジニアはものを動かすのが楽しいよね
  • 楽しみというところに戻る
  • 推進側はテストできないところを潰していく

荻野

  • パッション、スキル、スモールチーム

松尾

  • 「問題を楽しむ」

三浦

  • 「幸せになる」ということです
  • 色々な幸せがあると思うが、関係者が幸せになるように自動化を進めていく

パネルディスカッション全体を通じて

浅黃

  • IoTに知見がありませんと言いつつも、自分の得意な分野に持ってきて解決できる手法を探しているのが印象的だった
  • 自動化は簡単ではないが、パッションや問題を解く、幸せになるということを元に実施していく
  • これから社内に広げていく糧になったと思う

本イベント全体の紹介とか感想とか

nihonbuson.hatenadiary.jp