DevOpsの実践で肝となるソフトウェアテストの自動化。しかし@ITの読者調査でも50%以上が「テスト環境に課題あり」と回答した。これにどう対応すれは良いのだろうか? カンファレンス登壇者の言葉にヒントを探る。
テスト自動化は、今最も熱いトピックスの1つだ。近年はデバイスやOSの多様化に伴い、ソフトウェアテストの数やプロセス、種類が増大している。そうした中、スピーディなリリースと品質担保を両立する上で、テスト自動化は大きな鍵となるためだ。特に、開発部門と運用部門が連携してITサービスのリリースサイクルを加速するDevOpsにおいては、このテスト自動化が実践の1つの鍵になるとされている。ではDevOpsの文脈において、テスト自動化はどうあるべきなのだろうか?
@IT編集部は2014年1月28日、そのヒントを探るべく「開発部門、運用部門のニーズを両立せよ! DevOps時代のテスト自動化カンファレンス 冬の陣」を東京・秋葉原 富士ソフトアキバホールで開催。セミナー当日は、DevOpsやテスト自動化に対する関心の高さを反映するように、定員150人に対し180人が来場する盛況となった。ここではカンファレンスのダイジェストを紹介したい。
まず基調講演には、リクルート住まいカンパニーの内田明徳氏が登壇。同氏は住まい探し総合情報サービス「SUUMO」において、複雑化していたシステムを、ビジネスの要請に応じてシンプル・確実に運用できる体制に変えるために、個別最適から全体最適に向けて、段階的にDevOps環境を取り入れていった経緯を紹介した。
その経験から、「テスト自動化についてはGitHubやSeleniumなどのオープンソースソフトウェア(以下、OSS)を使って実施したが、ツールの選定・導入以前に、まずはビジネスゴールを実現するために『開発・運用の場ではどのような課題を解決すべきなのか』を明確化する必要がある。そのためにはビジネスを安定的に支えられるシステムの運用設計から考え、それを実現するために開発はどうすべきかといった具合に、運用主体で考えなければならないことに気付いた」と解説した。
ITシステムを中長期にわたって安定的に回していくために、「運用」の在り方を「開発」の前に検討する――「すなわち『DevOps』ではなく『OpsDev』の発想。この体制を文化として受け入れ、回していけるようにすることが成功の秘訣と分かった」(内田氏)という。
続く日本アイ・ビー・エムの金田博英氏も、「アプリケーションがビジネス目標を達成できる品質になるように、テスト計画を立案するべきだ」と述べ、「“目指す先”を意識したテスト環境構築」の重要性を指摘。その上で「テスト対象の多様化やソフトウェア品質要求にはテスト自動化で、テストのスピードおよび効率の向上には、(テスト実施の物理的制約の解消に役立つ)テスト環境の仮想化で対応することを勧める」と提案した。
では、テスト自動化のポイントは何か。コベリティジャパンの安竹由起夫氏は、自社製品の新規リリース時におけるバグ削減や期間短縮の事例を紹介し、「まずは新規コード以外の、新規リリースには関連しないコードを除外してクリーンにしてから、高リスクの個所に注目したテストを行っている。その結果、工数が削減されたのはもちろんのこと、少ない負担で効率がアップし、実際、出荷後に発見されるバグも減少した」と述べる。
もう1つの成功のポイントは、「自動化に最適なテスト回数を見極めて、自動化するものと手動で行うものを選別した上で、それに最適なツールを選定することだ」と、マイクロフォーカスの山岡英明氏は指摘する。
「一般に、テスト自動化でコスト削減を考えたとき、4回以上からメリットが出てくる。10回テストするプロジェクトならトータルで約45%のテスト工数を削減できる。このコストとのバランスを考えたテスト回数の見極めも、自社のビジネス目標を見据え、それに基づいて考えることが大切だ」(山岡氏)
以上のさまざまな意見を受けて、最後は登壇者らによるパネルディスカッションを実施。Publickeyの新野淳一氏をモデレーターに迎え、具体的なツール選びやテストチームの在り方などについて議論した。
まず新野氏は、「一般に、プログラマーはバグの指摘を嫌がる」とテストの難しさを指摘した上で、「DevOpsを文化として定着させるにはどう取り組むべきか」と質問した。
これに対して内田氏は、「弊社の場合、まずは『プロダクトアウトする前に、障害を確実につぶすことが最良だ』という共通認識を作ることに配慮した」と述べ、組織文化を醸成することの重要性を指摘。金田氏は「人がバグを“糾弾”するのではなく、あくまで数値をベースに客観的にレビューすることが大切。その点、目標達成に向けて協力し合う体制整備を支援できることも、ツールの1つのメリットといえる」とコメントした。
一方、山岡氏は「テストケースを開発者だけで作成すると、要件の漏れが発生しがち。ビジネス要件をきちんと理解した上で、テスト設計を考えることが重要」と指摘。内田氏も「システムの異常ケースを想定してテストに盛り込まなければいけないので、やはり最終的な実装のイメージができることもテストチームには必要だ」と付け加え、テストには開発・運用部門間の密な連携とともに、ビジネス部門との共通理解が必要であることを浮き彫りにした。
なお、会場からは「テストチームには、やはりプログラミングスキルを含む技術力が必要か」という質問も。山岡氏は「画面周りの簡単なテストならいいが、一歩踏み込んだ検証をする場合はプログラミングスキルが必須になる」と回答。新野氏も「特にクラウドソーシングの波が来ている今、安い人件費の国にQA(Quality Assurance)案件が逃げてしまい、知見が自社内に蓄積されにくい傾向も見えている。基本的な構文を覚えるだけでもいいので、内部スタッフがスキルを身に付けておくべきでは」と内製の重要性を指摘した。
こうした議論を踏まえ、新野氏は最後に「どんなツールを選ぶべきか」と質問。リクルート住まいカンパニーの場合は、「現在Mantisで管理し、自動化は一部をSeleniumで行うなど、OSSを中心に活用している」(内田氏)という。これを受けて、新野氏が会場にも商用ツールとOSSのどちらを使っているか聞いたところ、9割近くがOSSを利用していることが分かった。
内田氏は、「弊社の場合、トップダウンでいきなり商用ツールを入れてしまうと、何のためにツールを入れるのか、導入目的が見えないために失敗してしまうと思った。現場で課題を洗い出した上で効率化できるテストフローを考え、まずは実践することが先決と考えた」と、OSS採用の背景を述べた。金田氏も、「OSSと商用ツール、それぞれに得意分野がある。自動化への移行期はOSSで、その次の全体最適化ではコンサルやサポートを含む商用版の方がうまくいく」と、状況に応じたツール選択の重要性を説いた。
特に商用ツールベンダーは導入コンサルティングには注力しているという。安竹氏は「ツールを導入した後のことをきちんと考えていない企業も多い。そこに気付いていない顧客企業には、以前出荷したコードと現在のコードとを比較し、むしろ何も効率化されていない現状を示してあげている。これにより、ツールを使って真に効率化できるテストの在り方を提案することを通じて、自社のツールがその場限りのポイントソリューションではないことを理解いただけている」という。こうした姿勢は今回登壇した各ベンダーとも同じ考え方のようだ。
テスト自動化はDevOps実現の一部。DevOps実現のポイントは、開発・運用部門がともに共通のビジネスゴールを見据え、それに向けてさまざまなコンフリクトをともに解消し効率化を目指すことにあるが、今回の各者のコメントは、テスト計画の策定、実施においてもそうしたスタンスが重要であることを示唆するものだったといえるのではないだろうか。
@ITには特集、連載など、多数のDevOps関連記事がストックされている。それらも参考に、自社のテスト環境の課題やあるべき姿を見直してみてはいかがだろう。
Copyright © ITmedia, Inc. All Rights Reserved.