クオリティエンジニアの役割とは「お客様の視点を提供すること」 ~ セールスフォース・ドットコムの作り方(後編)

2011年3月23日

クラウド上に構築した企業向けアプリケーションを提供するセールスフォース・ドットコム。同社は千人以上の開発者を抱える開発部門全体でアジャイル開発手法を採用し、サービス開発を行っています。

同社はどのようにしてアジャイル開発手法を採用し、品質を重視した開発を進めているのか。2月17日に行われたデベロッパーズサミット2011で、株式会社セールスフォース・ドットコム CTO 及川喜之氏のセッション「salesforce.comの作り方 どのように世界最大規模のアジャイル開発を実現したか」が行ったセッションの内容を紹介します。

(本記事は「大規模アジャイル開発の実態~ セールスフォース・ドットコムの作り方(前編)」の後編です)

クオリティエンジニアの役割について

開発においてクオリティエンジニアが果たす役割は結構大きい。スクラムチーム内のコミュニケーションのハブとして積極的に働いている。デベロッパは基本的にコードを書くことに集中するが、クオリティエンジニアはお客様からの視点を提供する。

fig

クオリティエンジニアは設計の段階から参加し、どんな設計がよいかレビューし、自動テストをスムーズに実装するためのコードはどうあるべきか、といった意見を出す。スクラムチーム間の依存や共通テストなどもあるため、チーム間の連携のための作業も率先して行う。

別の視点でいえば、クオリティエンジニアのミッションは、以下のようになる。

テスト計画
目的となる機能のスコープを明確にして、どういうテストをすると効果的にカバーできるかを考え、新しい機能のリスクや依存関係を分析する。テストのために必要な環境を事前にととのえる。

テストケース作成
ユーザーストーリーと機能要求書から、機能はどうあるべきかを考えてテストケースを作っていく。想像も入っているので、シニアメンバーやチーム外のメンバーにも見てもらって、テストケースを充実させていく。

テストの実行と自動化
テストケースは全部実行されていなければいけないし、テストケースの7割は自動化されていることが望まれる。そのテストを可能な限り先に作成するのも仕事。

探索的テスト
実はこれが結構大事。いわばいきあたりばったりのテストだが、経験と知識があるクオリティエンジニアがこれをやると、思いもしない問題が短時間で見つかる。かなり創造的な仕事で、誰にでもできるわけではない。体系的なテストをやった上で探索的なテストも行う。

また、開発サイクルが終わった後で全員が参加してバグ出し大会を行う。ペアになって機能を担当したのとは違うチームにテストを依頼する。別の視点からテストが行われて、意外にいろんなバグを見つけることができるし、ユーザービリティの問題が見つかることも多々ある。半日以上かかるので資料を配るところからはじめて、一緒にご飯を食べて、いちばんたくさんバグを見つけた人にはささやかな商品をだすとか、楽しんでやっている。

クオリティのポイントはオートメーション。自動化テスト。これは本当に大事な作業で、膨大なテストケースをマニュアルでクリアするのは時間がかかりすぎるし単調すぎる。これがあるおかげでデベロッパもクオリティエンジニアも助かっている。

自動化されたテストは、開発にとってセーフティネットである。

テストファーストと継続的インテグレーション

fig

デベロッパやクオリティエンジニアは、ほぼ全員が実際のコードを書く前にオートメーションテストを書き始める。こうすると最終成果物がはっきり分かるし、テストを設計する段階で、コードに起こりうる問題点が明らかになる。また、コードを書き始めてからは、テストがあるおかげでビルドを壊したり他の機能を壊していないかがすぐ分かるので、自分が何かを壊していないか確認しながら進めることができる。

例えば、かなり大きなコードをいじるときは、1行といえども触るとなにが起きるか分からなくて怖い、ということがある。テストがあればそういう不安を避けられる。コードを書くことに集中できる。クオリティエンジニアは単調なテストから解放されて創造的なテストに時間をかけることができるようになる。

fig

高品質の製品を速やかに提供するには、コードをつねにクリーンに保つことが大事。それを実現するために用いているのが「継続的インテグレーションシステム」。

これがなにをしているかといえば、チェックインするたびにビルドが自動で行われ自動化されたテストが実行される。ビルドやテストにエラーがあれば、デベロッパやマネージャに連絡がいく。ビルドマスターがビルドの結果を常にウォッチしていて、なにかあれば対応する。ビルドマスターはたいがい持ち回りで行う。

例えば「Basic Ftest」と呼ばれる自動化テストでは、クリティカルだとされるAPI層の1万2000種類のテストを行っており、実行には50分程度かかる。

自動化テストの結果は、何%成功したかで計る。つねに100%成功するのがが理想だが、スプリントの真ん中では不安定だったりするため、つねに高い値を求めると進まなくなるので、目標値は状況に合わせて調整している。

テストによっては目標値を下回るときもある、そのときには、すべてのコードラインをロックして、その問題を修正し目標値を越えるまですべての開発が止まる。しかしこれでは開発チーム全体に影響があるので、チームごとのLock the Lineポリシーというのもある。

fig

とにかく、コードの品質を上げるためにチームは全力を上げ、コードラインが安定するまでチームを先には進ませない。

関連記事

あわせて読みたい

アジャイル開発 スクラム プログラミング言語 Salesforce




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本