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
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
3
なぜ「Gemini 4 Argon」は出遅れたのか? Googleが狙う“逆転のシナリオ”
-
4
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
5
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
6
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
-
7
「結局使わなくなる」Microsoft 365 Copilotを半年で定着 キリンの3施策
-
8
「Wi-Fi 7」経由でWindowsが乗っ取られる? 最高権限奪取の恐怖
-
9
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
10
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー