JaSST'18 Tokyo 基調講演「Advances in Continuous Integration Testing at Google」 質疑応答 #JaSST

0
broccoli @nihonbuson

ハードウェアの自動化に良いアイディアはあるか? どれだけデジタル化が進んでいるかによる アルゴリズムのみをテストするならば可能だと思う #JaSST

2018-03-07 10:52:44
broccoli @nihonbuson

トランジションの話の前提として、どれぐらいのカバレッジが達成できているのか? 別のシステムを設けて、カバレッジを測定している。 コードカバレッジはチームに寄って違う。 80%以上のチームもあれば計っていないチームもある 収入が高いチームはカバレッジが高い。成熟度によって変わる #JaSST

2018-03-07 10:54:23
broccoli @nihonbuson

テストができている段階の話をしていたが、どういうテストを作るというような指針はあるか? 一般的なルールは、コードレビュー時に同時にテストコードをサブミットしてもらうようにしている Googleは小さな変更が大事だと思っている。 ペアによってお互いに監視しているのが大切 #JaSST

2018-03-07 10:56:11
broccoli @nihonbuson

Flakyという言葉の由来は何か?Google翻訳だと単に「フレーク」と出てきたが。 由来は分からないが、意味としては、不安定さを指す。 見下げた用語になる。一貫性の無い人に対して言ったりする #JaSST

2018-03-07 10:57:27
broccoli @nihonbuson

Green(100%で良い)はトップダウン?ボトムアップ?それは難しくなかった? 難しかった。お金がかかるのが一番の痛みだった。できるだけ少ないテストで済ませるようにしていたが…。 リスクを許容することによってコストを下げることができると証明しようとしている。 #JaSST

2018-03-07 10:59:18
broccoli @nihonbuson

3人以上の開発者で行うとFlakyさが増すと話していたが、原因は分かるか? 相関関係が見えてきただけで因果関係はまだ分からない 2人は全体図が見えているが、3人とも見えているわけではないのでは。 あくまでもデータとして分かってきただけ #JaSST

2018-03-07 11:01:30
broccoli @nihonbuson

新規サービスを作るとき(Google Homeとか)はマニュアルテストをしていないのか? その通りです。テストを自動化するのはイテレーションの高速化に寄与すると思っているから。 自動運転のような人の命に関わるサービスはないので、最初から自動化をしている #JaSST

2018-03-07 11:03:30
broccoli @nihonbuson

UI/UXの部分も自動化しているか? UXは手動で行っている。実験的なものも、やってはいる(A/Bテスト?) UIはWebDriverを自動化している #JaSST

2018-03-07 11:04:51
broccoli @nihonbuson

テストレベルによってテスト結果が違う時の依存関係について。 システムテストとUnitテストで異なった障害は起きている。 それらは別システムで管理している。 #JaSST

2018-03-07 11:06:48
broccoli @nihonbuson

テストの記録には個人名まで入っているか? 個人までの分析をしているか?それを開発者は了解しているか? 残念ながら、雇用契約を結んだら、どんなデータも引き出せるようになっている。 機械学習のアルゴリズムの要素として入れるようにしている。 匿名化しているので、指摘をすることはない #JaSST

2018-03-07 11:08:45
broccoli @nihonbuson

開発者が間違った依存をしている場合、テスト部隊からFBをするか? GoogleにおいてはBazelを使うことで、依存性をシステムでサポートしている #JaSST

2018-03-07 11:10:44
broccoli @nihonbuson

開発者にFlaky以外にFBしている内容はあるか? 開発者が合否の結果を見て、分析結果を見せている。 どれだけ失敗しているかとか FBの間隔はどれぐらいか? Post submitテストは優先度が低くなっているが、2時間ぐらい。 コミット前のテストは45分、中央値20分ぐらいでFBしている #JaSST

2018-03-07 11:12:46
broccoli @nihonbuson

0.2%のネガティブトランジションを引き起こす変更は、機械学習で推定しているということか? 毎回変更はテストする。合否を記録する。 遷移があった場合には犯人を特定する。 #JaSST

2018-03-07 11:14:19
broccoli @nihonbuson

見逃してリリースしてしまったことは無いか? 今のシステムの保障として、それが起こらないと保障している。リスクは非常に低い。 今後のシステムはリスクが増える。コストとのトレードオフを見ている #JaSST

2018-03-07 11:15:45
broccoli @nihonbuson

組み込みテストの場合はタイミングの違いが発生しやすいと思うが、組み込み関係での実績があれば教えてほしい。 組み込み系は実績があまりないが、クロックスピードを変えるとかあるかもしれない。 非常に興味深い課題ではある #JaSST

2018-03-07 11:17:18
broccoli @nihonbuson

沢山のコードがあるが、Greenにする基準は一意に決まるのか、それともドメインによって違うのか? Googleではすべてのプロジェクトチームが個々でどこのテストがどのプロジェクトなのか明確にしている。 テストのグループを定義するのはチームごとに決める。 #JaSST

2018-03-07 11:19:42
broccoli @nihonbuson

再利用性の低いテスト(リグレッションではないテストとか)も含めて自動化しているのか? 唯一、手動でテストしているのは外国語での翻訳テストだけ。 それ以外は、すべて自動テストしている なぜならば、イテレーションを速くするため 開発者のサブミットから36時間以内にリリースしたいため #JaSST

2018-03-07 11:21:21
broccoli @nihonbuson

それは文化的に組み入れているので。 #JaSST

2018-03-07 11:21:42
broccoli @nihonbuson

すべてのテストが自動で行われているが、そのためにはテストしやすい形になっていると思う。 今までのテストしにくい形のプロジェクトをどうやってテストしやすい形に持っていったのか? Googleはそのような問題はありません。 2006年に文化を変えた。2006年の当時の規模は小さかった。 #JaSST

2018-03-07 11:23:30
broccoli @nihonbuson

自動化に向けては、かなりのSETIがサポートをするようにしている #JaSST

2018-03-07 11:25:49
broccoli @nihonbuson

テストにも単体の試験や基盤の試験、ユーザビリティの試験があると思うが、新しいテスト手法をやっているか? 継続的テスト以外に実験的なもの(ランダムテストとか)をやっているが、根幹的なものではない。 #JaSST

2018-03-07 11:27:38
broccoli @nihonbuson

新しい機能を出す場合に、誰がどのようなテストをやるか決めるのか? チームごとにテスト計画を決断している。 例えば、少数のユーザーに開放して実験してみたりもする。 #JaSST

2018-03-07 11:29:09
broccoli @nihonbuson

開発者がコードを変更する時に、自動テストの改修が入ると思うが、改修対象となるテストの選定は自動で行われているか? 開発者がスポットを見つける。レビュアーも確認している。 #JaSST

2018-03-07 11:30:26
broccoli @nihonbuson

テスト変更が漏れていることが原因の失敗が起こるのでは? 仮にテスト変更を行わなかったらテストは失敗するので、開発者に通知が行われる。 テストに対して影響を行わないようにしているので、事前に行うように注意している。 #JaSST

2018-03-07 11:31:57
broccoli @nihonbuson

AIを利用したテストやAIをテストしたりはしているか? 私のチームではAIを使ってテストのスケジューリングや選定をしている。 機械学習のテストをできている人は少ない。私自身心配をしている。 機械学習そのものが間違っていると、ゆくゆく大きな影響・問題になる。 #JaSST

2018-03-07 11:34:05