QAと開発をオーバーラップさせる
ソフトウェア品質保証は継続的なプロセス
品質とセキュリティに注意を払わずにコードを書き、後からアプリケーションのすべての欠陥を除去する方法は、極めて非効率的だ。
継続的な品質プロセスとは、品質保証タスクをソフトウェア開発ライフサイクル(SDLC)のあらゆる段階に導入するだけでなく、開発チームのワークフローに統合することでもある。これは、自動化されたポリシー監視“センサー”をSDLC全体に組み込むためのポリシーベースのアプローチによって実現できる。
そのためには、品質とセキュリティに関する自社の要件を盛り込んだポリシーを定義した上で「ポリシーが正しく適用されているか」「ポリシーが期待通りの成果を実現しているか」をチェックするセンサーにより自動化を実現する必要がある。
企業はソフトウェアの品質とセキュリティの欠陥をテストする(監査)コストを頻繁に発生させるのではなく、開発チームが品質とセキュリティをソフトウェアに作り込むのに役立つシステムを確立するための投資を行うべきだ。そのようなインフラがあれば、開発チームの生産性は劇的に向上する。
品質とセキュリティをコードに埋め込むための、明確に定義された要件に従うことにより、開発チームは品質保証(QA)チームから報告された欠陥を評価し、その再現や修正をすることに伴う「頻繁な中断」から開放される。
また、多くの欠陥を防止できるため、QAリソースを削減したり、より高いビジネス価値をもたらすタスク(広範かつ高度なアプリケーションの機能に関する監査の実施、継続的な品質プロセスの監視や改善など)にリソースを再配分したりすることが可能になる。
欠陥の削減とデバッグ
品質とセキュリティに注意を払わずにコードを書き、後からアプリケーションのすべての欠陥を特定して除去するというやり方は、リソースの浪費になるだけでなく、極めて非効率的でもある。
アプリケーションの随所に潜んでいるすべての欠陥を洗い出すには、アプリケーション全体にわたってすべてのパス(経路)を特定し、各パスをくまなく厳格にテストする必要がある。
平均的には、5つのコード行(LOC:Lines Of Code)に付き1つの分岐が存在する。例えば、100万LOCのプログラムであれば、約20万の分岐が存在することになる──これらすべてのパスを1回実行するには、コード全体にわたって2の20万乗のパスを網羅する必要がある。
また、すべての欠陥を検出するには、さまざまなパラメータおよびデータを用いてコード全体にわたって複数のパスをテストする必要があることも多い。
それに、この段階で見つかった問題は修正するのが困難だ。各バグを修正するのに必要な労力やコスト、時間などは、開発プロセスが進むのに伴って指数関数的に増大するからだ。
最大の問題は、バグ検出というアプローチでは、問題の根本原因に対処できないことだ。ほかの業界ではずっと以前に明らかになっているように、品質のカギとなるのは、品質を製品に作り込む品質プロセスを導入して適用することであり、「組立ライン」から出てきた製品の欠陥を発見、修正するための手段を探すことではない。
品質とセキュリティをアプリケーションに作り込むには、欠陥とセキュリティ脆弱性のリスクを減少するためのポリシーに従って、アプリケーションを開発し配備した上で、ポリシーが適切に実装され、正しく機能していることを確認する必要がある。
例えば、ユーザーが入力した値を受け取った直後に「入力値の妥当性確認を適用するポリシー」を確立すれば、入力値がコードの無限パスに入って混乱を引き起こす前に、すべての入力が妥当な値に修正されていることを保証できる。また、入力直後の妥当性確認を適用するポリシーを実装することで、コードのあらゆるパスにわたってSQLインジェクションの脆弱性を探す必要がなくなる。さらに、この種の脆弱性がテストをすり抜けて、企業を訴訟や罰金のリスクにさらす心配もなくなる。
もう1つ例を挙げよう。開発者が「ループ内部のループのインデックスを修正するのを禁じるポリシー」を確立して適用すれば、インデックスの修正に関連したループデッドロックを探す必要がなくなる。そういったことが起きる可能性がなくなるからだ。
QAの最適化
伝統的に、QAプロセスは開発プロセスの後に実行され、比較的長い時間がかかる。これは、企業が新規/修正ソフトウェアを効率的に提供する能力を大きく損なうものだ。さらに厄介なことに、欠陥が見つかるたびに、開発チームは多くのリソースを必要とするQAプロセスに戻らなければならないのだ。
継続的品質プロセスの一環として、以下に示すソフトウェア検証手法を導入することにより、QA時間を最適化できる。
1. 統計分析
単純な欠陥を探し出そうとするのは、QA時間の大きな浪費だ。単純な欠陥というのは、開発者がコードのセキュリティや信頼性、パフォーマンス、保守性などを実現するための開発ポリシーに従ってコードを書けば、容易に防げるような欠陥だ。「開発中に統計分析を実施する」というポリシーに従うことで、さまざまなカテゴリーの欠陥の発生を防止でき、その結果、後のプロセスでこれらの欠陥を発見して診断を行い、それを解決するために必要となったしれないリソースを解放できる。
統計分析を通じてコーディングポリシーを適用するというのは「製造ラインの各段階で仕様に従って部品が生産されるようにする」ことに似ている。こうすれば、あらゆる部品を検査しなくても所定の品質の部品を確実に生産できる。
一方、生産の一貫性が保持されていなければ、QAチームは製造ラインから出てくるすべての製品について、欠陥の発見やその修正に膨大な時間を費やさなければならない。その中には、見過ごされやすい欠陥もあるだろう。
統計分析は、一貫性のある適切なグループポリシーを導入するための最短距離だ。適切な導入とトレーニングを実施すれば、開発チームのメンバーはポリシーを受け入れて、日々のワークフローの自然な一部としてポリシーに従うようになるだろう。
2. 開発時のコードレビュー
アプリケーションが意図した動作をしないといった機能的欠陥を発見するのにも、多くのQA時間が費やされる。こういった欠陥を発見する唯一の手段が「人間の頭脳」だ。
しかし、開発後に人間の頭脳でこれらの欠陥を見つけるのは容易なことではない。非常に多岐にわたる情報を同時に処理しなければならないからだ。それよりも、開発中にピアレビューを実施すれば、機能的欠陥を最も迅速で簡単にかつ安価に発見・解決ができる。統計分析の場合と同様、QA段階で対処すべき欠陥の数を減らすことにより、QAサイクルの時間とコストを削減できるのだ。
3. 自動リグレッションテスト
QAと開発をオーバーラップさせるには、自動リグレッションテストスイートを作成し、それを完全に自動実行できることが不可欠だ。この種のテストスイートでは、統計分析やユニットテスト、プロトコルテストといった技術を活用すべきだ。
また、テストスイートが毎晩(ビルド終了後)に自動的に実行され、加えられた修正が既存の機能に予期せぬ影響や悪影響を与える場合には、直ちに警告を発する機能を備えた自動化インフラによって、テストスイートが駆動されるようにしなければならない。
このような自動リグレッションテストを導入すれば、QAチームはこのテストスイートの運用管理に専念できる。テストが自動的に実行されない場合に必要な対策を講じたり、アプリケーション機能が追加あるいは修正された場合にテストスイートとアプリケーションの対応が維持されていることを確認するのだ。
要するに、QA担当者の役割が「製品検査官」から「品質スーパーバイザー」へと変化するということだ。
本稿筆者のウェイン・アリオラ氏はParasoftの戦略担当副社長を務め、同社の業務開発チームおよびSOA/Webソリューションチームを統括する。ハイテクおよびソフトウェア開発業界で15年間にわたってコンサルティングに携わった経験がある。Parasoftに入社する前は、Fasturnで業務開発担当シニアディレクターを務めたほか、PricewaterhouseCoopersでは主席コンサルタントとして戦略転換業務で指導的役割を果たした。カリフォルニア大学サンタバーバラ校を卒業し、インディアナ大学でMBAを取得した。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
新着ホワイトペーパー PR
-
技術文書・技術解説
[Jamf Japan 合同会社] MDMだけでモバイルセキュリティは十分? 不足する対策を16項目でチェック -
事例
[Wrike Japan 株式会社] 世界的な家電メーカーが実践する「クリエイティブプロセス効率化」の方法とは? -
事例
[Wrike Japan 株式会社] 世界的テクノロジー企業に学ぶ、プロセス標準化とプロジェクト納品自動化の秘訣 -
事例
[Wrike Japan 株式会社] ソニー・ピクチャーズ テレビジョンに学ぶ、次世代サービスデリバリーのヒント -
事例
[Wrike Japan 株式会社] ソミック石川に学ぶ、ICT浸透後に直面した「工数管理」の課題と解決策
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
2
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
3
なぜOpenAIやAnthropicのAIは「脱走」したのか 情シスが迫られるエージェント統制
-
4
Oracle巨大ITプロジェクトはなぜつまずいたのか 8年で導入1割、追加で170億ドル
-
5
「Microsoft一択」で本当にいいのか 知らぬ間にライセンス費用が膨らむ真相
-
6
ANAが専用回線から移行した「NaaS」の全貌 ネットワーク準備が数カ月から数週間に
-
7
「プログラマー不要論」にThe Linux Foundationが示した答え
-
8
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
9
「高すぎるGPU」を捨てAI推論をCPUへ Armが示す電力とコストの現実解
-
10
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
ホワイトペーパーランキング PR
-
1
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
4
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
9
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
-
10
少額減価償却資産が40万円未満へ拡大、令和8年度税制改正で押さえるべき変更点
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー