車載ソフトウェア開発で「C/C++test」が選ばれる3つのポイント

自動車業界の規格・ガイドラインへの対応を効率化するさまざまな機能
複雑かつ膨大な車載ソフトウェア開発において、その安全性やセキュリティを担保するには多くの作業が必要となります。
C/C++testは、車載ソフトウェア開発で求められるISO 26262、ISO/SAE 21434の規格対応や、MISRA、CERT、AUTOSARのコーディング規約対応などを広くサポートし、車載ソフトウェア開発の品質向上と効率化を実現します。
また、CI/CDパイプラインに統合することによるテスト自動化や、ダッシュボード機能による品質状況の可視化・レポート共有などが容易なため、開発者の負荷低減やチームでの効率的なツール運用を実現することができます。
車載ソフトウェア開発でこんなお悩みはありませんか?
C/C++testは、これらの課題を解決する静的解析・動的解析の機能や、ツールチェーン連携機能を搭載したオールインワンテストツールです。それぞれのポイントごとにC/C++testを利用するメリットをご紹介します。
MISRA、CERT、AUTOSARなどの準拠を効率化、準拠証明のためのレポートを自動生成
車載ソフトウェア開発で利用されるコーディング規約に広く対応
- MISRA C:1998
- MISRA C:2004
- MISRA C++:2008
- MISRA C:2023 (MISRA C:2012)
- MISRA C++:2023
- AUTOSAR C++14
- HISソースコードメトリクスチェックルール
- SEI CERT C
- SEI CERT C++
- CWE TOP 25
- OWASP TOP10
ダッシュボード上でMISRA、CERT、AUTOSAR、CWEの準拠状況を可視化、レポートを自動生成
MISRA、CERT、AUTOSAR、CWEの準拠状況は、専用のダッシュボードで把握、管理することができます。また、MISRAの準拠証明に必要となる4種類のレポートを自動生成し、準拠証明の作業を大幅に削減することができます。
MISRAコンプライアンスパック:ダッシュボードとレポート
社内独自のコーディング規約もチェック可能
独自のコーディング規約を作成する「RuleWizard」の機能により、社内のコーディング規約に合わせて、既存のコーディング規約を独自のルールに修正することや、新規にルールセットを作成することができます。
ユーザー定義コーディングルール作成画面
高度な解析テクノロジー「フロー解析」を用いた静的解析
あらゆるパスをシミュレートし、関数・ファイルにまたがるバグを自動的に検出
C/C++testが選ばれる理由のひとつに、複数のファイル、関数にまたがるパスをトレースしバグや脆弱性を検出する「フロー解析」機能による高度な静的解析があります。
フロー解析はコーディング規約対応だけではなく、致命的なバグを早期に発見するうえでも有効な機能です。さまざまなバグの可能性を検出し、バグに至るまでのデータフローをレポートすることも可能です。
<フロー解析で検出可能な項目(抜粋)>
- メモリリーク/リソースリーク
- バッファオーバーフロー
- NULLポインターの参照
- 未初期化変数の参照
- 整数オーバーフロー
- ゼロ除算
- 配列の境界外アクセス
- イテレーター範囲外アクセス
- セキュリティ脆弱性
- デッドロック
静的フロー解析イメージ図
機能安全規格「ISO 26262」などの要求を満たす単体テストをサポート
車載ソフトウェア開発で求められるカバレッジ計測にも対応
さらに、テスト実行時に機能安全規格ISO 26262のASIL Dで要求される関数カバレッジ、コールカバレッジ、ブランチカバレッジ、MC/DCなどを含む9種類のカバレッジを計測することが可能です。
<C/C++testがレポートするカバレッジ>
- ステートメントカバレッジ (C0:命令網羅率)
- 判断文カバレッジ (C1:分岐網羅率)
- 単純条件カバレッジ (C2:条件網羅率)
- MC/DC (Modified Condition/Decision Coverage)
- 関数カバレッジ
- コールカバレッジ
- 行カバレッジ
- 基本ブロックカバレッジ
- パスカバレッジ
開発者のテスト作成・管理をサポートし、効率的な単体テストを実現
GUI操作でテストドライバー・テストケース・スタブを生成
C/C++testはテストケース、スタブを作成するための工数およびこれらを管理、メンテナンスするための工数を大幅に削減します。
GUI操作のみでテストケースの作成やスタブの生成、スタブの複雑な振る舞いの設定などが可能です。
また、テストケースとスタブを1つの画面でコントロールできるため、管理やメンテナンスを容易です。
外部テストデータの取り込みや、既存のテスト資産の再利用することもできます。
単体テストの実行をサポートするテストエディター画面
カバレッジを向上させるためのテストデータ作成を支援
事前条件を即座に把握できるため、ユーザーのテストに掛かる時間や労力を大幅に削減できます。
実行できていない行をエディタで確認画面
CI/CD、構成管理、コンテナなどのツールチェーンと連携した開発ワークフロー
車載ソフトウェア開発で取り組みが進むモダンな開発手法にも対応
ソフトウェアの品質と開発スピードの両立が求められるなかで、テストツールの運用においてもこれらのツールチェーンを組み合わせたCI/CDパイプラインに組み込んだ効率的な運用体制を整えることが重要です。
また、C/C++testで実行した静的解析、動的解析の結果は、専用のダッシュボードツール「Parasoft DTP」にて、チーム全体で簡単に共有、管理することができます。
テスト実行を自動化するCI環境を構築
C/C++testはCI/CDや構成管理などのツールチェーンを組み合わせたCI環境に組み込んで運用することができます。ソースコードのコミットから、ビルド・テスト実行、結果のレポートなどを自動化することで、開発者の負荷が少ない効率的なツール運用が可能になります。解析結果はダッシュボードでの確認や、開発者のクライアントマシン上のC/C++testに取り込んで確認することができます。Parasoft DTPと連携したCI環境イメージ図
モダン開発ワークフローにおけるテスト自動化
C/C++testは、近年活用が進んでいるGit、Docker、VSCodeなどのツールチェーンとの連携が容易です。モダン開発ワークフローにC/C++testを組み込むことで、テストの実施漏れを防ぎ、エラーや欠陥のフィードバックサイクルを早めることができます。C/C++testをより簡単に、かつシームレスに統合できるGitHubおよびGitLab統合におけるマニュアルとパイプライン実装サンプルがあります。プルリクエストをトリガーとした自動実行、開発者が埋め込んでしまった新たな違反のみの確認、自動品質ゲートによるマージリクエストのブロックなど、開発者がツールを意識せずに、バグをメインブランチに混入させないといった開発ワークフローを実現できます。
モダン開発ワークフローにC/C++testを組み込んだイメージ図
Dockerコンテナの活用
Dockerを使って開発環境を共通化するのに加え、静的解析や単体テストのテストツールもDockerコンテナに加えることで、開発者のテストツールのセットアップも簡略化することが可能です。
また、複数のプロジェクトでビルド環境が違う場合であっても、コンテナ自体が独立しているためビルド環境の要件や依存パッケージが競合しないため、1 つのCIサーバーで複数プロジェクトのCIを実現することも可能です。
「C/C++test」をDockerコンテナ内で利用するイメージ図
導入後も安心してお使いいただけるサポート体制
C/C++testは、導入時のサポートから、運用支援、問題発生時のQ&A対応など導入後も安心してお使いいただけるサポート体制でお客様をバックアップいたします。
PICK UP
イベント・セミナー
ニュース・キャンペーン
静的解析ツール・単体テストツール C/C++testに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp