開発テストとは、ソフトウェア開発におけるリスク、時間、コストを削減するために、幅広い欠陥防止および検出戦略を同期的に適用するソフトウェア開発プロセスである。
組織のソフトウェア開発に対する期待に応じて、開発テストには、静的コード分析、データフロー分析、メトリクス分析、ピアコードレビュー、単体テスト、コードカバレッジ分析、トレーサビリティ、その他のソフトウェア検証手法が含まれる場合があります。
開発テストは、ソフトウェア開発ライフサイクルの構築フェーズ中にソフトウェア開発者またはエンジニアによって実行されます。[ 1 ]
従来のQA の焦点を置き換えるのではなく、それを補強するものです。[ 2 ]開発テストは、コードが QA に昇格される前に構築エラーを排除することを目的としています。この戦略は、結果として得られるソフトウェアの品質と、開発および QA プロセス全体の効率を高めることを意図しています。[ 3 ]
開発テストは、主に以下の目的で実施されます。
VDC の研究報告によると、包括的な標準化されたプロセス内で開発テスト プロセスを標準化して実装すると、ソフトウェアの品質が向上するだけでなく (開発活動を実績のあるベスト プラクティスに合わせることによって)、プロジェクトの予測可能性も向上します。[ 4 ] voke の研究報告によると、開発テストによって、ソフトウェア開発ライフサイクル全体を通して、ソフトウェアの予測可能性、追跡可能性、可視性、透明性が向上します。[ 2 ]
上記の各アプリケーションにおいて、開発テストは、組織の信頼性、セキュリティ、パフォーマンス、および規制遵守に関する期待を表明するポリシーを定義することから始まります。次に、チームがこれらのポリシーについてトレーニングを受けた後、ソフトウェア開発活動をこれらのポリシーに合わせるために開発テストの実践が実施されます。[ 5 ]これらの開発テストの実践には以下が含まれます。
幅広い欠陥防止および欠陥検出手法を適用することの重要性は、さまざまな開発テスト手法がソフトウェア開発ライフサイクルのさまざまな段階で異なる種類の欠陥を明らかにするように調整されているため、複数の手法を連携して適用することで、欠陥が見落とされるリスクが低減されるという前提に基づいています。[ 3 ] 幅広い手法を適用することの重要性は、BoehmとBasiliが頻繁に参照する「ソフトウェア欠陥削減トップ10リスト」で確認しています。[ 7 ]
「開発テスト」という用語は、静的解析ツールの適用を説明するために時折使用されてきました。静的解析は厳密にはテストではないため、多くの業界リーダーはこの混同に異議を唱えています。コードのすべての行を「カバー」する静的解析でさえ、コードが意図したとおりに動作することを検証したり、ソフトウェアが動的に実行されるときにのみ顕在化する特定の種類の欠陥やセキュリティ脆弱性を明らかにしたりすることはできません。静的解析だけでは万能薬や特効薬と考えるべきではないと多くの人が警告していますが、ほとんどの業界専門家は、静的解析が多くのセキュリティ、信頼性、およびパフォーマンスの欠陥を排除するための実績のある方法であることに同意しています。言い換えれば、静的解析は開発テストと同じではありませんが、一般的には開発テストの構成要素と考えられています。[ 8 ] [ 9 ]
フロー解析や単体テストなどの静的解析のさまざまな実装に加えて、開発テストには主要な品質活動としてピアコードレビューも含まれます。コードレビューは、ソフトウェア開発において最も効果的な欠陥検出および防止方法の1つとして広く認識されています。[ 10 ]