高信頼性ソフトウェア検証における不具合の分類結果に基づいた単体テストケース自動生成の適用及び改善

山崎 雅也 (1551112)


宇宙機ソフトウェアと呼ばれる人工衛星等に搭載されるソフトウェアは,宇宙空間で使用するという特性上,大きな修正を加えることができないため,非常に高信頼かつ安全であることが求められるが,全ての不具合をなくすことは難しい.そのため,過去の開発過程で発生したソフトウェア不具合を分析することは,運用や将来の開発をより高信頼かつ安全なものにするために有効な手段と考えられている.

本発表では,宇宙機ソフトウェア開発における不具合を定性的及び定量的に分析するため,欠陥を多角的な属性に従って分類・分析可能とする直交欠陥分類法の適用を試みた結果示す.5つの宇宙機開発プロジェクトの計50個の不具合に対して本手法を適用した結果,全体の28%が設計段階で混入した不具合がシステムテストの段階になって始めて発見されていることが確認された.

そこで,本研究ではテストケースの自動生成技術を用いることで,単体テストのカバレッジを向上させ,不具合をより早期の段階で発見することを目指した.本発表では,記号実行と具体的なテスト入力値を用いた動的解析を行うConcolic Testingを宇宙機ソフトウェアに適用した結果を示す.しかし,Concolic Testingの代表的ツールであるCRESTはそのままでは配列の要素数が定数でない場合のループの解析に問題があり,十分な品質のテストケースを自動生成できない問題あった.本発表ではそのような配列を含むコードをループ展開し,ソースコードから削除する改良手法を提案・実装した結果を示す.CREST実行時にループの解析に問題を含む小型衛星の姿勢制御系モジュールに本提案手法を適用した結果,コードカバレッジの改善を確認した.