ソフトウェアテストにおける静的コード解析ツールの段階的適用による不具合修正作業の効率化

鶴田雅明(1261008)


本発表では、ソフトウェアテスト工程において、静的コード解析ツールを段階的に適用することで、不具合修正作業の効率化を実現する手法を提案する。同ツールは、ソースコードの全体的な構造や特性に加え、コードを構成する命令の特性や命令間の関係等も計測、解析し、不具合につながる可能性の高い状態、及び、不具合が潜むと推測されるコード断片を指摘する警告を出力する。人手によるコードレビュー等に比べて見逃しが少なく、処理も高速であることから、不具合修正工数の低減に大きく貢献するとされている。ただし、偽陽性警告の大量出力による工数増大を避けるため、全てのソースコードが結合されシステムとして動作可能となるテスト工程の後半(二次結合テスト以降)のみに適用されるなど、その利用と効果は限定的であった。提案手法では、解析に用いるコードメトリクスの種類や数を、テスト作業の進捗に合わせ段階的に増やしていく。更に,局所的には正しいが,コード全体から見ると必ずしも正しくない、情報が欠落している、改良の余地のある、といった「不完全なコード断片」を指摘し、開発者にその除去を促すソフトウェアインタフェースSCA Wrapperを併用することで、偽陽性警告数を抑制し、テスト初期段階からのツール適用を可能とする。実証実験として、商用の静的コード解析ツールの一つであるQAC向けにSCA Wrapperを実装し、民生用音響・映像機器向け組み込みソフトウェア95件それぞれについて、テスト工程を、単体テスト、一次結合テスト、二次結合テスト,システムテストの4段階に分けて提案手法を適用した。その結果,従来は同ツールの適用そのものが困難とされた一次結合テストにおける偽陽性警告率が4.0%、二次結合テストにおいても10.1%と、従来法による偽陽性警告率15~35%を大幅に下回った。テスト初期段階での不具合発見と相まって、不具合1件あたりの平均修正工数は,4.5人日から1.5人日と大幅に低減された。また,「リリース後に利用者への告知や製品の回収を伴うようなソフトウェアの重大な不具合」がテスト工程で見逃されることもなくなった。