デベロップメントテストは最近益々存在感を強めている分野です。これには一連のプロセスや、静的解析をはじめとするソフトウェア技術が含まれ、製品の迅速な市場投入やコスト、顧客満足度に悪影響を与えることなく、ソースコード作成の開発サイクルの早い段階で、開発者、経営陣、事業部門がソフトウェアの問題の検出と修正を容易に行えるように設計されています。
デベロップメントテストは従来のテストを増強したもので、品質保証の機能や性能テスト、セキュリティ監査を含んでいます。これにより、開発チームは煩わしさを感じずにソースコードを素早くテストし不具合を検出できます。また、開発者は技術革新に専念でき、経営陣はサイクルの早期段階に問題を可視化してよりよい意思決定を行い、事業部門は高品質な製品を市場に提供して競争優位を確保できます。
出荷までの時間短縮+コスト削減+顧客満足度向上とブランド力アップ+可視化とトレーサビリティの向上+チーム間の連携アップ+リスク軽減
ビジネスにおけるソフトウェアの重要性、規模、複雑性が増しているなかで、開発者には、短い開発サイクルでソフトウェア品質に悪影響を与えることなく、いっそうの技術革新を実現するという要求が課せられています。この複雑性をますます悪化させているのが、今日ではますます当たり前となっている地理的に分散したチームの存在と、サードパーティ製ソースコードの使用です。ソースコードを提供するチームが多数あるため、ソフトウェアのサプライチェーン全体でソースコードにひそむ潜在的リスクを可視化することが難しくなっています。
リリーススケジュールに影響を与え、長期間の技術的負債を発生させかねない、潜在的な品質リスクへの警告が得られないと、ビジネス自体や消費者が影響を受けるまえに対処する時間が足りなくなります。不具合が可視化されないため、下流過程でのコラボレーションに関する問題や、プロセスの非効率を起こします。品質保証とセキュリティ監査プロセスはより時間と労力がかかり、ソフトウェア不具合がフィールドや制作過程で発生するリスクを増加させます。ビジネスへのインパクトは、コストのかかるリコールや、ダウンタイム、フィールドでのクラッシュ、顧客満足度の低下、ブランドダメージなどがあります。開発現場や製造中に不具合が発見された場合は、その検出と修正に時間をロスするため開発に悪影響を与えるうえ、さらなる技術革新に力を注ぐことも難しくなります。
ソフトウェアの不具合はかなり前から存在するものです。でもなぜ解決が難しいのでしょうか?初めに、テストに対する古くからのアプローチは、ある程度まで効果的な方法ですが、あまり役に立ちません。従来型のテストでは「予期される」問題を探し出し、機能や性能が期待通りのものか確認します。従来のテストは、しばしばとしてソフトウェアサイクルの後期に行われ、ソフトウェア開発が完了してから初めて実施されることもあります。組織が他部門との連携が欠けていたり、お互いに対立する優先順位のため、開発が完了してから開発チームに不具合を修正させることは難しいのです。二つ目には、開発における技術の導入は、開発者にとって使いやすいものでなければ、制限されることになるでしょう。テスト結果が開発者にとって作業しやすく、関連があり、ワークフローの一部として表示されるものでなければ、トラブルシュートや、不具合の修正は全体のプロセスをスローダウンさせてしまいます。開発における出荷までのプレッシャーから、不具合は検出されず、未解決のままに終わる可能性が高いのです。
そこで、新しいテストアプローチが必要となっています。ライフサイクルのすべての過程に統合でき開発のコード作成時より始められる古いテスト方法を越えたテスト方法へ拡張するべきです。デベロップメントテストは古いテスト方法を補完し、見つけるのが難しく、予期しない不具合を一番効率的に修正できる段階で、素早く検出、修正します。
デベロップメントテスト導入を成功させるには、企業内のニーズに見合って拡大していく必要があります。成功に必須となる要素は下記の通りです。
結果が正確で、かつ関連性がなく、すぐに使用しやすいものでなければ、開発者は結果を無視することになるでしょう。開発者が必要とするのは、解析の低い御検知率や、コード上のどこに不具合があるかの明確な情報、他のストリームやプロジェクトが共用コード上にまたがって同じ不具合を含むのか、不具合を修正の仕方に関するガイドです。
結果が開発者にタイムリーに届かなければ、開発の時間を無駄にすることになるでしょう。デベロップメントテストソリューションはコードベースの複雑性や大きさに関係なく、何日、何週もかかることなく、夜間ビルドの一部として何分かの内にテスト結果を素早く開発者に提供します。
開発ワークフロー: デベロップメントテストの採用は開発者のワークフローに合わなければ、制限されてしまいます。不具合管理は素早く、かつ簡単なものでなければなりません。このことは、インパクトに基づいて不具合の優先順位をつけたり、関連性のある不具合だけ見えるように選別したり、他の開発者と連携し、分散したチームや地理的な境界をまたがってトリアージ情報が共有でき、不具合をどのように修正するか理解できる知識ベースアクセスなどが含まれます。開発者はデスクトップ上のIDE内で、継続インテグレーションプロセスまたは、ビルドの一部としてコードをチェックインする前にこのプロセスを管理できます。
管理ワークフロー: デベロップメントテストソリューションは、ポリシー管理とコードガバナンスを通じて管理者のワークフローへ統合されなければなりません。このことは、開発マネージメントが、チーム、プロジェクト、サプライヤーにまたがって単一の方法でコード品質、セキュリティ、複雑性を可視化でき、ソフトウェアポリシーを設定し、いくつもの開発マトリックスを統合できる能力も含みます。
SDLCとアプリケーションライフサイクル管理(ALM)ワークフロー: デベロップメントテストは開発組織の既存ソフトウェア開発プロセスにシームレスに組み込まれる必要があります。開発と品質保証間で共有すべき情報の共通プラットフォームを作成することで、デベロップメントテストへ要件管理能力を、リリース管理へ、開発よりのコード品質とセキュリティKPIが可視化されます。また、出荷への準備に関するポリシーを管理することで、品質により自信が持てるようになります。
多くの組織は、より広い言語、プロトコール、標準にまたがってテストカバレッジを広める多数のコード解析ツールを配備しています。デベロップメントテストソリューションは、オープンプラットフォームとして使用され、組織が一番必要とする解析エンジンを共通の不具合管理ワークフローへ統合させます。
プロジェクトの複雑性と規模の異なるチームにまたがってツールの採用を最大に活用するには、デベロップメントソリューションを、最大規模のコードベースへ拡張し、地域に分散した複数チームに所属する何千もの開発者が使用できるようにし、決められた方法で開発チームを集中して評価すべきです。
Coverity 6.0は業界トップの、開発者がすぐに企業に導入できるデベロップメントテスト・プラットフォームで、開発部門はテストを開発プロセスにおけるシームレスな構成要素として採用できます。