【忘備】グーグルのソフトウェアエンジニアリング ~ テスト概観 ③ -テスト文化- ~
グーグルのテスト文化醸成のための取り組み
1. オリエンテーション
当初、Googleの新入社員向けのオリエンテーションにはテストについての講義は存在しなかった。が、2005年ころからオリエンテーションの講義に自動テストについての講義が組まれるようになった。
オリエンテーションでは、
- 自動テストの価値
- 生産性の増加
- ドキュメンテーションの改善
- リファクタリングの支店
- 優れたテストを書く方法
等、テストの様々な利益や方法論について教えられた。
最も重要なのはそれらの観念すべてが、社内の標準のプラクティスであるかのように教えられた。
2.テスト認定プログラム
「Test Certified(テスト認定)」プログラムを通じて、各開発チームがどのレベルまでテストの自動化を行っていたかを評価していた。
確認項目として
- CIによる継続的ビルドの構成
- コードカバレッジの追跡
- テストが破綻しているリリースが存在しないこと
- 全テストの小中大の分類
- 信頼不能テストの特定
- 非決定性なテストをすべて削除する
- 全挙動がテスト対象に含まれている
等の確認項目を設け、社内ダッシュボードに各チームがどの程度基準を満たしているか掲載した。
3.トイレでのテスト
毎週、Google社内の全個室トイレに「Pythonでのテストを改善する方法」などのテストトピックを張り出し、アイディアを募った。
今日のテスト文化
コード変更はすべてコードとテスト両方のレビューを通過しなければならない。
[Q.]
なぜ、テストを書くことを強制することから始めなかったのか?
[A.]
グーグルでは「成功する思想は広まるものだ」との信念がある。開発方法についての強制はそれがどんなものであれ、グーグルの文化に真っ向から反し、むしろ成長を鈍化させてしまう。
自動テストの限界
プロダクトが実際に人間にとって使いにくいかどうかは人間が判断するし、音質や映像品質などの微妙な差異などは自動テストでの補足は難しい。
また、複雑なセキュリティ脆弱性の探査は現状人間の方が自動システムよりも優れている。
以上のように、自動テストにも限界がある。よく理解されている部分は自動化しつつ人間による探索テストも十分に行う必要がある。
その上で、
- よく理解されている部分は自動化することによって人間のテスターが最大の価値を提供できる製品部位のテストに集中できる。
- 人間の探索的テストによって見つかった欠陥は将来のリグレッションテストのために自動化テストに組み込まれる。