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

『テストから見えてくる グーグルのソフトウェア開発』 その2

グーグルのソフトウェアテスト本のメモ、その2


テストから見えてくる グーグルのソフトウェア開発

テストから見えてくる グーグルのソフトウェア開発

第1章 グーグルのソフトウェアテストの世界へようこそ

ざっくりとグーグル内のデベロッパは、「ソフトウェアエンジニア(SWEと著書では略される)」「ソフトウェアエンジニアインテスト(SET)」「テストエンジニア(TE)」にわけられる。そして、プロダクトの品質を担保するのはSWEの仕事であり、TEやSETが責任を追うものではない。
SETやTEが、具体的にどんな仕事をしているのかは、2章以降で語られる。

以下メモ
マイクロソフトがテスターの地位を上げた。マイクロソフトもテストに関する本を出している、が、グーグルとのアプローチは全然違う

ソースコードの品質はSWEが責任を追うものである。

・品質とは、開発とテストを互いに区別できなくなるまで融合することで実現される

・品質とは見つけるものではなく、守るもの

・SWEの仕事とは、ユーザが触れるプロダクトを作ること

・SETの仕事とは、SWEが品質を保つために必要なツールを作成したり、自動化をしたりして、SWEが効率よく高品質なコードを書くためのサポートをすること

・TEの仕事とは、テスト結果の解釈やテストの実行を指揮すること。ユーザ寄りの目線でテストをする。

・SETやTEは組織横断型であり、特定のチームに所属するわけではない。その理由として、テスト分野のイノベーションを会社内に浸透させるには、イノベータがいろんなチームで仕事をすることが望ましいためである。また、チーム間の異動が多いため、仕事に飽きが来ることがなく、モチベーションを高く保つことができる。

・一般的なテストの用語の、ユニットテスト結合テストシステムテストを、グーグル内ではそれぞれS,M,Lテストと呼んでいる

・テストは可能な限り自動化されているが、手動のテストもそれなりにやっている。ただ、常に自動化の余地が無いかどうかはチェックしている。「人間の思考の一歩手前まで、自動化」がポリシー



第2章 SET(ソフトウェアエンジニアインテスト)

SETとは、いったい何者でどんな仕事をしているのかが語られている。

SETとは、素養としてはデベロッパであり、コードを書くことが求められる。と同時にテスターとしての素養も必要であり、各種関数やコンポーネントが、どんな使われ方をするのか想像を巡らせ、どのようなテストをクリアすれば、そのコードが安全といえるのかを理解している必要がある。
SETはテストの自動化を支援し、テスト駆動開発のお作法のようなものをSWEに教育し、SWEが効率よく高品質なコードを書くためのサポートをするのがミッションである。


以下メモ
・シンプルを保てば、安全は保たれる

・グーグルではテスト駆動開発を実践している

・SETの昇進コースはSWEと同じ

・品質は、ソフトウェアが重要になるまでは重要ではない。したがって、SETは優先度の高いプロジェクトにコミットされる

・SWEは関数単位、コンポーネント単位の比較的狭い視野で判断を下す傾向にあり、SETはシステム単位の広い視野で判断を下す傾向にある

・SETは広い視野で製品を見ているというアドバンテージがある。そのため、コードの再利用パターンや、コンポーネントのやり取りの設計が得意である

・テストを自動化する際は、「何を自動化するのか」をまず考える。規模が大きければ良いというものでもない

・SETの仕事を一言でいうと「テストのし易い環境を作る」ということ

・グーグルでは、コードを書くことよりもレビューすることのほうが、ずっと大切なこととして扱われる

・「テストの自動化」とは、テストプログラムの実行、結果の分析、格納、レポーティングのことである

・Sテスト(ユニットテスト)は、コードの品質向上に役立つ。Mテスト(結合テスト)、Lテスト(システムテスト)は製品の品質向上に役立つ。製品の品質を見る際は、「使いやすさ」や「スピード」といった目に見えない機能も無視してはならない

・プロダクトの種類によって、SMLの比率を変えている。ユーザに近いプロダクトは、MとLが多め。インフラ系やデータ操作が中心のものはSが多め

・テストは、結果だけでなく、「どこで失敗したか」がわかるような仕組みにしなければならない

・バグデータベース:buganaizer

・ブラウザ自動化:selenium,WebDriver

・社内ツールとかはDDD(欠陥駆動開発、Defect Driven Development)でやってもいいかもしれない。
DDDとは、実際に使ってるユーザが困ってるバグから治していくというスタイル。ということは、誰も気にしないバグは直されない