Skip to main content
Video Thumbnail

Squish_Logo_Secondary_White_small
コードカバレッジ
解析ツール Coco

テスト品質の「推測」をやめ、コードカバレッジを「計測」する

Coco は、デスクトップアプリケーションや組み込みシステムを開発するソフトウェアチーム向けの、モダンなコードカバレッジツールです。ビルドプロセス中にコードを計測し、コンパイラやビルドシステム、テストスイートを変更することなく、テスト中にどのステートメント、ブランチ、条件が実行されたかを正確に記録します。C、C++、C#、QML、Python、Tcl に対応しており、計測と精緻なテストカバレッジ解析を提供します。Coco を使えば、ISO 26262 や DO-330 といった国際的な安全規格・コンプライアンス規格に沿った、監査対応のレポートを生成できます。

Coco を無料で試す お問い合わせ Coco MCP

Coco-interface-simplified-01

コードカバレッジを計測するチーム、活かすチーム

パーセンテージが教えてくれるのは、何が実行されたかだけです。危険なほど未テストな箇所がどこか、検証を経ずに変更された箇所はどこか、あるいは1つのテストでどこのリスクを最も削減できるかは教えてくれません。Coco は、こうしたギャップを可視化し、対応可能な形にすることで、リリース判断を勘ではなくエビデンスに基づいて行えるようにします。

規制対象の業界では、そのエビデンスが実際に通用するものでなければなりません。監査担当者は、お客様の規格にトレース可能な、MC/DC レベルの構造的カバレッジを求めるからです。ほとんどのツールはブランチレベルで止まりますが、Coco はそこで止まりません。

導入企業: Siemens · Bosch · LG · Metso · PolyWorks
SGS TÜV Saar 認定 · ASIL D

コードカバレッジで可能になること

一度もテストされていないコードを、正確に見つけ出す

カバレッジ計測は、何がテストされたかを教えてくれます。そのエビデンスが手に入れば、次のような判断・議論・成果につながります。

可視性

テストが何をカバーしているかを正確に把握できます。Coco の CoverageBrowser は、すべての行、ブランチ、条件を色分けして表示するため、何が実行され、何が一度も触れられていないかが一目で分かります。

リスクの優先順位付け

どの未テストコードが最もリスクを抱えているかが分かります。Coco の CRAP(Change Risk Anti-Patterns)指標は、各関数を複雑さとカバレッジのギャップでランク付けするため、不具合を引き起こしやすいコードにテストの労力を集中できます。

パッチカバレッジ

すべてを再実行することなく、パッチをカバーするテストを把握できます。パッチ解析は、差分を既存のカバレッジデータと照合し、変更部分のどの行が既存のテストでカバーされているか、そしてどのテストがそれを実行したかを示します。

組み込みシステム

実機とエミュレーターの両方からカバレッジを収集できます。ランタイム計測は、RTOS ベースのシステムを含む実際の組み込みターゲット上で動作します。シミュレーションの産物ではなく、Coco は本番環境での挙動を反映します。

分散チーム

ソースコードを配布することなく、テストを分散できます。Coco を使えば、計測済みバイナリを委託先チームと共有し、結果を収集して、一元化されたカバレッジレポートにマージできます。

CRAP 指標とパッチ解析が、チームのテストへの向き合い方を変える

直前に変更したコードを、既存のどのテストがカバーしているかを正確に把握

開発者がパッチを導入すると、Coco はその差分と既存のカバレッジデータを取り込み、精緻なレポートを作成します。パッチ内のどの行が既存のテストでカバーされているか、カバーされていないか、そしてテストスイート全体を再実行することなく、どのテストがその特定のコードパスを実行したかが分かります。統一差分(unified diff)形式でインポートすると、Coco はそれを既存のカバレッジ実行データと照合します

  • 統一差分(unified diff)形式でインポートすると、Coco はそれを既存のカバレッジ実行データと照合します
  • パッチ内の各行には、カバー済み・未カバー・不明のいずれかが注釈として付き、行ごとのテスト実行回数も表示されます
  • コードレビュー、リリースゲート、認証エビデンス用に、HTML または CSV のレポートを生成できます

どこを次にテストすべきか。CRAP 指標が答えを示す

カバレッジが80%あると分かっても、残りの20%が些細なものか重大なものかは分かりません。CRAP 指標(Change Risk Anti-Patterns)は、サイクロマティック複雑度とカバレッジデータを組み合わせ、関数ごとのリスクスコアを算出します。複雑さが高く、カバレッジが低いほど、スコアは高くなります。

  • スコアが30を超える関数は高リスクとしてフラグが立てられ、CoverageBrowser 内のランク付きリストの上位に表示されます
  • エンジニアは、コードベース全体をレビューすることなく、新しいテストがどこで最もリスクを削減できるかを正確に把握できます
  • 結果はソート・エクスポート可能で、スプリント計画、QA レビュー、マネジメント向けレポートに活用できます

最も厳しい安全規格の
認定を取得

Untitled design-23 1

Coco は、SGS-TÜV Saar により独立した認証を受けており、自動車(ISO 26262、ASIL D)、産業機器(IEC 61508、SIL 4)、医療(IEC 62304、Class C)、鉄道(EN 50716、SIL 4)という4つの業界それぞれにおいて、最高水準の安全度水準まで、安全関連ソフトウェアの検証に適していることが確認されています。外部監査により確認済みです。

 認定の詳細を見る

自動車・産業機器・医療・鉄道にわたる認定

SGS-TÜV Saar は、Coco を評価・認定し、4つの業界それぞれにおいて、最高水準の安全度水準まで、安全関連ソフトウェアの検証に適していることを確認しています。

  • 自動車:ISO 26262 で ASIL D まで
  • 産業・一般機能安全:IEC 61508 で SIL 4 まで
  • 医療機器ソフトウェア:IEC 62304 でソフトウェア安全クラス C まで
  • 鉄道:EN 50716 で SIL 4 まで

安全エンジニアがセーフティケースの中でカバレッジツールの妥当性を説明する際、自己申告ではなく、監査担当者がすでに認知している機関から発行された認定を根拠にできます。チーム自身によるプロジェクト向けの Coco の認定作業は依然として必要ですが、その出発点はすでに独立認定を受けたツールです。

監査担当者が検証できる認定

調達の最終承認、サプライヤー監査、認証のマイルストーンは、ツールチェーンの認定ステータスが精査される瞬間です。Coco の SGS-TÜV Saar 認定書(証明書番号 FS/71/220/26/2379)は、自動車・産業・医療・鉄道のプロジェクトを問わず、コンプライアンスチームがプロジェクト文書の中で直接引用できる、外部機関が発行した具体的な結果です。これはツールの適合性を示す独立したエビデンスであり、お客様自身の認定作業を支えるものです。 

ツールの認定作業にかける時間を減らし、製品開発に時間を使う

安全性が重視される検証ツールチェーンにおいては、対象となる安全度水準に対して、あらゆるツールが認定されている必要があります。Coco の SGS-TÜV Saar 認定により、すでに独立認定を受けたツールを土台にできます。 

特定の規格のもとで完全なツール認定が必要なプロジェクトには、Coco 向けツール認定キットが、その規格が求める的確なドキュメント、構築済みのテストケース、安全マニュアルを提供するため、白紙からではなく、すでに整った土台の上で作業を進められます。キットは、自動車(ISO 26262)、産業(IEC 61508)、医療(IEC 62304、ISO 13485)、鉄道(EN 50128)、航空宇宙(DO-330、DO-178C・DO-278A プロジェクト向け)など、業界ごとに用意されています。 

業界で求められる規格への対応を支援

関数カバレッジからMC/DCまで、あらゆるプラットフォームで必要なカバレッジレベルに対応

コードカバレッジを計測し、改善する

Coco がサポートするカバレッジレベル

Coco は、基本的な関数カバレッジ・行カバレッジから、最も厳しい安全規格が求める MC/DC レベルまで、主要な構造的カバレッジ指標のすべてをサポートします。各レベルは、テストの質を異なる角度から映し出します。適切なレベルは、お客様の規格、求められる安全度水準、そしてリリース前にどれだけの確信が必要かによって決まります。

 

Coco がサポートするカバレッジレベルについてさらに詳しく

関数カバレッジ

関数カバレッジは、コードベース内の各関数(C++ のメンバー関数を含む)がテスト中に少なくとも1回呼び出されたことを確認します。主要なロジック単位がそもそも実行されているかどうかを確認する、分かりやすい最初のチェックです。関数がテストスイート中に一度も実行されなければ、それは定義上未テストです。Coco は関数が呼び出された回数を数え、アーキテクチャレベルでのカバレッジを明確に把握できるようにします。

対応規格:  IEC 61508 SIL 1–4

業界: 自動車・航空宇宙・産業・鉄道・医療

詳細ドキュメントを読む

ステートメントブロックカバレッジ

ステートメントブロックカバレッジは、プログラム内のすべての実行可能なステートメントがテスト中に実行されたかを確認します。Coco は、常に一緒に実行されるステートメントをブロックとしてグループ化するため、コードの書き方によらず指標が一貫します。これにより、さまざまなコーディングスタイルで作業するチームにとって、行カバレッジよりも安定した、信頼できるテストの網羅性の基準になります。 

対応規格:ISO 26262 ASIL A–B · IEC 61508 SIL 1–4 · EN 50128 SIL 0

業界: 自動車・産業・鉄道・医療

ドキュメントで詳細を確認

行カバレッジ

行カバレッジは、コードの各行がテスト中に実行されたかを確認します。テストスイートのギャップを見つけ、コードがどれだけ網羅的にテストされているかを素早く把握するための、シンプルで馴染みのある方法です。Coco は行カバレッジをサポートしており、カバレッジ解析を初めて行うチームや、汎用プロジェクトにおける出発点として有効です。とはいえ、Coco は安全性が重視される開発や規制対象の開発には行カバレッジを推奨していません。コードの書き方によって結果が変わるため、ISO 26262 や IEC 61508 のような規格が求めるエビデンス要件を満たすほど安定した指標ではないからです。そうした用途には、ステートメントブロックカバレッジが、書式に依存しない一貫した結果で同等の可視性を提供します。 

対応規格: 安全規格へのマッピングなし

 業界: 一般用途・非規制プロジェクト 

ドキュメントで詳細を確認

ブランチ/デシジョンカバレッジ

ブランチ/デシジョンカバレッジは、コード内のすべての判定ポイントが、あり得るすべての結果を生み出すことを確認し、ステートメントカバレッジの一歩先を行きます。各条件は true と false のそれぞれについて1回ずつカウントされるため、特定の入力でのみ表面化するエッジケースが、本番環境ではなくテスト中に捕捉されます。Coco は、すべての if、while、for、switch 文について両方の結果を検証し、テストが見落としているパスを見つけやすくします。 

対応規格:  ISO 26262 ASIL A–D · DO-178C DAL A–B · IEC 61508 SIL 1–4 · EN 50128 SIL 1–4

業界: 自動車・航空宇宙・産業・鉄道・医療 

ドキュメントで詳細を確認

コンディションカバレッジ

コンディションカバレッジは、デシジョンカバレッジをさらに一歩進め、複雑な論理式をそれぞれの構成要素に分解します。and や or 演算子で結ばれた各部分式は、true と false の両方について個別に評価されます。これにより、デシジョンカバレッジだけでは捕捉できないギャップ、特に複数条件を持つ判定で、ある組み合わせが一度もテストされていないようなケースが明らかになります。Coco では、コンディションカバレッジは MC/DC へと至る自然なステップとなり、完全な独立性要件に進む前に、論理的なテストの網羅性をより深く把握できます。 

対応規格: MC/DC へのステップ(単独の規格要件ではありません)

業界: 自動車・航空宇宙・産業・鉄道・医療

ドキュメントで詳細を確認

MC/DC・MCC カバレッジ

MC/DC(Modified Condition/Decision Coverage)は、判定内のすべての条件が、結果に対して独立して影響を与えることを求めます。各条件について、その条件だけが変化し、他はすべて同じに保たれる2つのテスト実行が必要です。これは、最高水準の安全度において安全監査担当者が期待する厳密さであり、Coco が ASIL D まで対応を認定されているレベルです。MCC(Multiple Condition Coverage)はさらに踏み込み、あらゆる判定における真偽値のすべての組み合わせを求めるもので、IEC 61508 および EN 50128 の SIL 3・4 において MC/DC の代替として認められています。 

MC/DC 対応規格: ISO 26262 ASIL A–D · DO-178C DAL A · IEC 61508 SIL 1–4 · EN 50128 SIL 1–4

MCC 対応規格:IEC 61508 SIL 3–4 (alt.) · EN 50128 SIL 3–4 (alt.)

認定キット:  IEC 62304 Class C

業界: 自動車・航空宇宙・産業・鉄道・医療 

MC/DC ドキュメント · MCC ドキュメント

テスト実行時間・パフォーマンス指標

カバレッジに加え、Coco は各テストの実行時間や、コードの各部分がどれだけの頻度で実行されるかも記録します。これにより、遅いテストの特定、必要以上に多く実行されているコードの発見、そして CI パイプライン全体でのテスト実行順序の最適化が可能になります。カバレッジ規格が求める要件ではありませんが、必要なカバレッジを犠牲にすることなく、テストスイートを無駄なく高速に保つための実用的なツールです。 

対応規格: CI・パイプライン最適化(カバレッジ規格の要件ではありません)

業界: 全業界 

document

ホワイトペーパー:安全性が重視されるプログラムのためのコードカバレッジ

今すぐ読む

Coco は、チームのあらゆる役割に、
本当に必要なものを提供する

QA マネージャー
・テストリード

バリュージャーニー

可視性を高める

一貫性を拡大

ROIを最大化

  • ユースケース

  • Coco の機能

  • 得られる効果

  • 導入初期

    感覚ではなく、客観的なデータに基づいてリリースを判断

  • CoverageBrowser と cmreport  により、ステートメントブロック から MC/DC まで、あらゆるレベルでプロジェクトのカバレッジを一貫して測定 

  • 各リリースの実際のテスト状況を、推測ではなく把握

    データに基づいたリリースレビューが可能に

    すべてのチームで「完了」の基準を統一

    カバレッジレポートを見る

  • チームの拡大

    すべてのテストを有効に:重要な領域に注力し、不要な作業を削減 

  • cmreport がビルドごとにレポートを自動生成。Cobertura XMLやSonarQube XMLとして外部ダッシュボードに出力可能

    CoverageBrowser ではビルドを並べて比較 

  • カバレッジの不足をリリース直前の問題ではなく、管理可能なバックログとして把握 

    チームやプラットフォームを問わず、同じ測定基準を適用 

    SonarQubeやCodecovと組み合わせ、時系列の傾向をダッシュボードで確認 

    チームのコードベースでCocoを実行

コンプライアンス・安全担当者

バリュージャーニー

監査をクリア

エビデンスを整備

ツール認定を完了

  • ユースケース

  • Cocoの機能

  • 得られる効果

  • 導入初期

    監査で認められるカバレッジエビデンスを生成 

  • 実際のランタイム実行から MC/DC、条件カバレッジ、デシジョンカバレッジ を測定

    CoverageBrowser から、規格に準拠したHTML、XML、CSV形式のレポートを出力 

  • 静的解析ではなく、実際の実行結果に基づくエビデンス

    規格で求められる形式のレポートを再フォーマットなしで作成

    SGS TÜV Saar認証済みのツールチェーンにより、監査担当者にも認められる信頼性を確保

    Cocoを活用した安全認証の事例を見る  

開発者・
SEチーム

バリュージャーニー

リスクを可視化

確信を持ってリリース

開発を加速

  • ユースケース

  • Cocoの機能

  • 得られる効果

  • マージ前の確認

    マージ前に、すべての変更による影響を把握

  • パッチカバレッジ分析 が差分と既存のカバレッジデータを照合し、カバーされている行、されていない行、それらのパスを実行するテストを特定

    テストスイート全体を再実行する必要なし 

  • レビュー前に、変更した行のうちカバーされている箇所を正確に把握

    テストをすべて再実行することなく、パッチをカバーする既存テストを特定

    複雑なロジックでは、MC/DC により各条件が独立して実行されていることを検証

    Cocoの活用方法を見る

DevOps・
CI エンジニア

バリュージャーニー

パイプラインに統合

すべてを自動化

規格への準拠を徹底

  • ユースケース

  • Cocoの機能

  • 得られる効果

  • 導入初期

    カバレッジデータを今すぐパイプラインに統合

  • cmreport がCobertura XML、SonarQube XML、JUnit、EMMA-XML形式で出力

    既存のCIシステムですぐに利用可能

     

  • 初日からCI互換形式でカバレッジデータを取得

    既存のパイプラインを再構築する必要なし

    次のビルドにCocoを追加する 

  • 完全自動化

    手作業をなくし、規格への準拠を自動化 

  • CoverageScanner がビルド時にインストルメンテーションを実行

    cmreport がコマンドラインからレポートを生成し、パッチカバレッジ分析 がすべての差分に対して実行

    CIシステムが出力を読み取り、しきい値を適用 

  • ビルドごとにカバレッジを自動で収集・レポートし、手作業をゼロに

    Cocoがデータを提供し、CIシステムがゲートを適用

    SonarQubeやCodecovと組み合わせ、カバレッジの推移をダッシュボードで可視化

    CIパイプラインでのCoco活用方法を見る 

SEマネージャー・技術リーダーシップ

バリュージャーニー

リスクを特定

チームの認識を統一

意思決定

  • ユースケース

  • Cocoの機能

  • 得られる効果

  • 導入初期

    組織全体のソフトウェアリスクを可視化 

  • CRAP指標 が複雑度とカバレッジギャップを組み合わせ、リスクの高い関数を特定。

    CoverageBrowser と cmreport により、すべてのチームで一貫した測定が可能 

  • 「十分にテストされているはず」という感覚を客観的なデータに置き換え

    コードベースのどこに未テストのリスクが集中しているかを把握

    すべてのチームで共有できる、測定可能な品質基準を確立

    リーダー向けのカバレッジエビデンスを見る  

  • 戦略的計画

    カバレッジデータを投資とリリースの意思決定に活用 

  • cmreport でモジュールごとのカバレッジギャップを分析

    Cobertura XMLとSonarQube XMLをリーダー向けダッシュボードに出力し、CoverageBrowser でビルドを比較 

  • リリース間のカバレッジを比較し、改善状況を把握

    測定可能な品質データに基づいて、テストへの投資を判断

    Coco の出力を SonarQube や CI システムと連携し、時系列ダッシュボードで推移を確認

    組織全体へのCoco導入について相談する  

組み込み・
MCU エンジニア

バリュージャーニー

ターゲットを計測対象に

実データを収集

ビルド全体へ展開

  • ユースケース

  • Cocoの機能

  • 得られる効果

  • データ収集

    あらゆるターゲットからカバレッジを取得し、1つのレポートに統合 

  • CoverageScanner のカスタムI/O機能がGDB、シリアル、TCP/IP、CANバス、ARM semihostingに対応

    Qt for MCUsでは、 cmcsexeimport の --qul-port によりMCUターゲットからワンクリックでインポート

    cmmerge と cocoqmlscanner により、C++とQMLのデータを1つのデータベースに統合

  • 特定の転送方法に依存せず、既存のハードウェア環境をそのまま活用

    すべてのターゲットとテスト実行の結果を1つのレポートに統合

    ビルドからレポートまで、エンドツーエンドのワークフローをスクリプトで自動化

    セーフティクリティカルな組込みソフトウェアの認証事例を見る  

気づいていなかったカバレッジの
ギャップを見つける方法  

Qt Group のシニアソフトウェアエンジニア James Vance が、Coco のコードカバレッジインターフェースを紹介し、
カバレッジの計測方法と未テストコードの特定方法を解説します。

 「コードカバレッジとテストカバレッジを把握して初めて、ソフトウェア品質を正しく評価できます。そのため、Cocoのコードカバレッジ機能は私たちにとって重要なツールです。」 

Jaakko Palokangas氏, Metso のデジタルテクノロジー開発ディレクター

お使いの環境で動作するコードカバレッジツール

Coco は、CI/CD、IDE、品質ツールに組み込まれ、カバレッジに関するインサイトを、お使いの環境でそのまま活用できるようにします。テストデータから品質改善までの道のりを、シンプルにします。 

 

どこにでもデプロイ

Coco はネイティブに実行することも、あらゆるターゲットへクロスコンパイルすることもでき、デスクトップからベアメタルの組み込みシステムまでをカバーします。

ネイティブ対応
チームがすでに使っているシステム上で動作:
 Linux, Windows (32/64-bit), macOS 64-bit — Intel & ARM via Rosetta 2
 UNIX variants: Solaris, AIX (エンタープライズ、要問い合わせ )
クロスコンパイル
組み込み・制約のある環境向け
  組み込み  Linux/Windows(産業・自動車向け) 
 RTOS: QNX, VxWorks, FreeRTOS
 安全性が重視されるデバイス向けのベアメタルマイクロコントローラー
対応コンパイラ
 主流および専用のツールチェーン*
 GCC, Clang, MS Visual Studio, Intel, Mono
 QNX, ARM (Keil), Green Hills, HighTec, Diab, TI など
*一部のツールチェーンには Coco Cross-Compilation Add-on が必要です 
対象ハードウェア
実際の本番ハードウェア上で認定作業を実施可能 
 Intel x86/x64, ARM, PowerPC, MIPS, SPARC, AURIX™ など
 汎用 CPU から安全グレードのマイクロコントローラーまで 

開発・ビルドをより速く

ツールを変更したり、コードをリファクタリングしたりする必要はありません。Coco はそのまま組み込めます。

レポート作成とコンプライアンス対応

お使いのチームと監査担当者がすでに知っている形式でエクスポート可能です。

お使いのフレームワークでそのままテスト

Coco は GoogleTest、Boost.Test、NUnit といった既存のフレームワークと並行して動作します。

自動化とリリース

CI/CD パイプライン内で、自動化されたカバレッジフィードバックを取得します。

組み込みシステム・MCU 向けコードカバレッジ

MCU 向け Coco
あらゆるマイクロコントローラープロジェクトのコードカバレッジ 

Coco は、シリコンベンダー、RTOS、アプリケーションフレームワークを問わず、あらゆる C・C++ MCU プロジェクトで動作します。ビルド時に既存のコンパイラをラップするため、ツールチェーンの移行もソースコードの変更も不要です。カバレッジデータは実際のターゲット上で収集され、CoverageBrowser で解析されます。

ほとんどの MCU プロジェクトには、データ収集を助けるファイルシステムも OS もありません。Coco は、テスト実行中にカバレッジデータを取得し、ハードウェアがすでに備えている通信チャネルを通じてそれを取り出すことで、これに対応します。 

  • Qt for MCUs でビルドしている場合、C++ と QML 両方の完全なカバレッジ、デバイス検出、ワンクリックでのデータインポートに対応した専用統合が利用できます。 
  • Qt を使用していない場合も、GDB、シリアル、TCP/IP、CAN バス、ARM セミホスティングを通じて、まったく同じ方法で動作します。 

シリコン:NXP · Infineon · Renesas · STM32 · Microchip · TI · AURIX

コンパイラ:ARM GCC · IAR · Green Hills · HighTec · Clang · Diab

OS:ベアメタル · FreeRTOS · QNX · VxWorks · Zephyr · SafeRTOS

MCU 向けコードカバレッジの計測方法

  1. ビルド時に計測
    Coco は既存のコンパイラをラップします。計測済みバイナリは、通常通りにビルド・書き込まれます。
  2. 実機でテストを実行 
    テストは、ベアメタルまたは RTOS の実際の MCU ターゲット上で実行されます。カバレッジデータは、実行中にデバイス上で取得されます。 
  3. 利用可能なチャネル経由でデータを取得 
    Coco は、お使いのハードウェア向けに実装するカスタム IO 関数を提供します。対応する転送経路: 
    • GDB 変数ダンプ(あらゆるターゲット) 
    • Serial / COM ポート(一般的) 
    • TCP/IP(ネットワーク接続されたターゲット) 
    • CAN バス(自動車向け) 
    • ARM セミホスティング (ARM Cortex-M/R)
    • Qt for MCUs DeviceLink(Qt for MCUs プロジェクト向け) 
  4. マージ、解析、レポート作成
    複数のテスト実行・ターゲットからの結果は、1つの CoverageBrowser レポートにマージされます。ワークフロー全体は、CI 統合のためコマンドラインから完全にスクリプト化できます。 

Qt for MCUs 統合
C++ と QML を、そのまま完全にカバー

Qt for MCUs でビルドするチーム向けに、Coco は C++ と QML(Qt Quick Ultralite)の両方を1つのワークフローでカバーする専用統合を提供します。対応する Qt for MCUs ツールチェーン向けのコンパイラプロファイルは標準で含まれているため、手動設定は不要です。C++ と QML のカバレッジ結果は、1つのデータベースにマージされ、アプリケーション全体のカバレッジを総合的に把握できます。 

  • CoverageBrowser 上で、ボードからのデバイス検出とワンクリックでのカバレッジインポートが可能 
  • テスト実行中のデバイス出力を監視するデバッグ出力コンソール 
  • --qul オプションによる QML 計測が、プロジェクト統合を自動的に処理 
  • データ取得にデバッガーやカスタム IO 関数は不要 

Qt for MCUs バージョン 2.12.1 以降に対応

規制対象業界
監査担当者が検証できるカバレッジエビデンス

MCU ソフトウェア向けの安全規格は、特定のレベルでの構造的カバレッジエビデンスを求めています。Coco は、関数カバレッジやステートメントカバレッジから、ブランチ、コンディション、MC/DC まで、そうした規格が求めるすべてのレベルに対応しています。レポートは監査対応済みで、お客様の規格に沿った形式です。完全なツール認定が必要なプロジェクト向けには、ISO 26262、DO-178C、IEC 62304、EN 50128 向けの規格別認定キットを別途提供しています。 

 

ISO 26262(ASIL D まで)・DO-178C・IEC 62304・IEC 61508・EN 50128
SGS TÜV Saar により独立認定済み、証明書番号 FS/71/220/26/2113 

「Coco は、コードとテストの間に存在していたギャップを埋めてくれました。当初は一般的なコードカバレッジツールのように見えましたが、実際に使い始めると非常に高度な機能を備えていることが分かりました。」 」 

InnovMetric 社

tool qualification
規制対象業界向けツール認定

数ヶ月に及ぶ手作業を削減

ソフトウェアを認証する必要があるなら、ツールも認定する必要があります。

Coco の認定キットは、安全性が重視される開発において Coco が安全かつ信頼できることを証明するために必要な、すべてを提供します。テストスイートをゼロから構築したり、正当性を一から書いたりする必要はありません。

  • 構築済みのテストケースと期待結果 

  • ツール分類と安全マニュアル 

  • ISO 26262、DO-178C、IEC 62304、EN 50128 などに対応 

幅広い業界をサポートするよう設計されており、Coco はすぐに使える妥当性確認レポート、プロセス文書、認証テンプレートを提供することで、コンプライアンスと品質保証をシンプルにします。 

ツール認定キットについて詳しく見る

 

最新リリース ― Coco 7.5

  • CRAP 指標: サイクロマティック複雑度とコードカバレッジを1つのリスクスコアに統合し、バグを含む可能性が最も高い C++ 関数の優先順位付きリストを提供。パーセンテージを追いかけるのをやめ、本当に重要な箇所の修正に集中できます。 
  • cmimport: Python の coverage.py レポートを Coco の形式に変換し、Python と C++ のカバレッジを1つの統合レポートにマージ。スタック全体で別々のツールを維持する必要がなくなります。 
  • Coco セットアップ: コンパイラツールチェーンを自動検出し、カバレッジスキャナー用のラッパーを生成します。数日かかっていた設定作業を、ガイド付きの5分間のセットアップに短縮します。 
  • Qt for MCUs: 組み込みターゲットデバイス上で動作する C++ と QML の両方を計測し、Device Link プロトコルを使ってカバレッジデータを自動転送します。デバッガーのスクリプト作成なしに、実機からフロントエンドからバックエンドまでの完全なカバレッジレポートが得られます。 

 

最新リリースを読む

認定キット

テストプロセスが安全規格を確実に満たしていることを確信できる、カスタムかつ包括的な認定ツールです。 

詳しく読む

ドキュメント 

Coco の技術的な詳細について深く掘り下げます 

詳しく読む

Coco 評価ガイド 

評価ガイドは、ツールのダウンロードからインストール、そして実際の利用開始まで、評価プロセス全体を通してサポートします。 

詳しく読む

ブログ 

コードカバレッジ70%で十分?80%?90%?それとも100%?

70%、80%、あるいは100%といった数字は、すべてを語ってくれるわけではなく、時には誤った安心感を生むこともあります。今回のブログでは、こうした指標が実際には何を示しているのか、そしてなぜ100%のステートメントカバレッジでも危険なギャップが残り得るのかを掘り下げます。 

チュートリアル 

AI コードアシスタントでユニットテスト生成とカバレッジ最大化

本記事では、GitHub Copilot + Coco コードカバレッジ を使ってテストカバレッジを65% から 78% まで向上させる方法と、この手法を他のフレームワークや業界、安全性が重視される分野にも応用する方法をご紹介します。 

ソフトウェア開発における品質保証の完全ガイド

ガイドを読む

よくある質問

組み込みの C/C++ システム向けに、コードカバレッジをどう計測すればよいですか?

組み込み C/C++ システムのコードカバレッジを計測するには、クロスコンパイルされたターゲット向けにコードを計測し、実機から実行データを収集できるツールが必要です。Coco はコンパイラレベルでの計測を使用し、コンパイラ(GCC、Clang、IAR、ARM/Keil、Green Hills など)をラップして、ビルドプロセス中に計測ポイントを挿入します。カバレッジデータは、QNX、VxWorks、FreeRTOS といった RTOS ベースのシステムやベアメタルマイクロコントローラーを含む、実際の組み込みターゲット上でのテスト実行中に収集され、CoverageBrowser で解析されます。複数のターゲットや構成からの結果を、1つのカバレッジレポートにマージできます。

MC/DC とブランチカバレッジの違いは何ですか?

ブランチカバレッジ(デシジョンカバレッジとも呼ばれます)は、if 文などのあらゆる判定が true と false の両方に評価されたことを確認します。MC/DC (Modified Condition/Decision Coverage)はさらに踏み込み、判定内のすべての個別条件が、結果に対して独立して影響を与えること、つまり各条件が単独で結果を変えられることを示す必要があります。MC/DC はブランチカバレッジよりも多くのテストケースを必要としますが、はるかに強い保証を提供するため、ISO 26262 の ASIL D や DO-178C の DAL A で求められています。

C++ や組み込みシステム向けに、優れたコードカバレッジツールとは何ですか?

Coco は、デスクトップおよび組み込みシステム全体にわたる C・C++ 開発向けに特化して設計された、コードカバレッジ解析ツールです。GCC、Clang、IAR、ARM/Keil、Green Hills コンパイラ向けのコンパイラレベル計測をサポートし、QNX、VxWorks、FreeRTOS、ベアメタルマイクロコントローラーを含む組み込みターゲット上で動作します。ISO 26262、DO-178C、IEC 62304 といった安全規格のもとで作業するチーム向けに、Coco は SGS TÜV Saar により ASIL D までの独立認定を取得しており、規格ごとの認定も提供しています。

ソースコードにアクセスせずに、コードカバレッジを収集することはできますか?

はい。Coco は、計測とソースコードへのアクセスを分離する仕組みを通じて、ブラックボックステストをサポートしています。ソースコードを持つ開発者が、ソースコードを一切含まない計測済みバイナリである、ブラックボックス計測データベースを作成します。このバイナリは、QA エンジニアや委託先チームに配布され、彼らはテストを実行して実行レポート(.csexe ファイル)を生成します。この実行レポートは開発者に返却され、QA チームがソースコードを一度も目にすることなく、マスターのカバレッジデータベースにマージされます。これは特に、分散チーム、委託テスト、知的財産に敏感なプロジェクトにおいて有用です。

組み込みの C・C++ ターゲット上で、コードカバレッジをどう計測しますか?

Coco はコンパイラレベルでの計測を使用し、既存のコンパイラをラップしてビルド時に計測ポイントを挿入します。カバレッジデータは、QNX、VxWorks、FreeRTOS を実行する RTOS ベースのシステムやベアメタルマイクロコントローラーを含む、実際の組み込みターゲット上でのテスト実行中に収集されます。複数のターゲットや構成からの結果は、CoverageBrowser 内で1つのカバレッジレポートにマージできます。ツールチェーンの移行は不要です。

Coco は CI/CD パイプラインとどう統合しますか?

Coco は Jenkins、GitHub Actions、GitLab CI とネイティブに統合します。カバレッジデータはパイプライン実行中に自動的に収集され、Cobertura XML、SonarQube XML、JUnit、EMMA-XML を含む CI 対応形式でエクスポートされます。カバレッジが定義されたレベルを下回った場合にマージをブロックする、品質ゲートとしての閾値も設定できます。cmreport コマンドラインツールにより、GUI を使わずに任意のビルドスクリプト内で自動レポート生成が可能です。

ソフトウェアテストにおけるコードカバレッジとは何ですか?

コードカバレッジ解析は、テスト実行中にソースコード内のどのステートメント、ブランチ、条件が実行されたかを、実行可能コード全体に対するパーセンテージとして記録するものです。これは、要件のカバレッジを計測するテストカバレッジや、テストが実際の不具合を捕捉できているかを計測するテストの有効性とは異なる概念です。

ISO 26262 ASIL D には、どのようなコードカバレッジが必要ですか?

ISO 26262 の Part 6、Table 14 は、ASIL レベルごとに構造的カバレッジ要件を分類しています。ASIL D では、MC/DC(Modified Condition/Decision Coverage)が「強く推奨(++)」に分類されており、これは認証機関がそれを期待し、欠如している場合は正当化を求めることを意味します。ASIL C では、MC/DC は「推奨(+)」です。ステートメントカバレッジとブランチカバレッジは、ASIL A・B で求められます。なお、ISO 26262 における「強く推奨」は、DO-178C の一部の要件のような厳格な義務ではありませんが、実務上、監査担当者は ASIL D において事実上必須として扱います。Coco は、ISO 26262 プロジェクトにおいて ASIL D までの使用について、SGS TÜV Saar(証明書番号 FS/71/220/26/2113)の認定を取得しています。

IEC 62304 Class C には、どのようなコードカバレッジが求められますか?

IEC 62304 は、医療機器ソフトウェアを安全リスクのレベルで分類しています。Class C ソフトウェア(故障が死亡や重大な傷害を引き起こしうるもの)には、リスクコントロール対策に関連するすべてのコードがテストされたことを示す、カバレッジレポートを伴う包括的なソフトウェアユニット検証が求められます。Class C 機器の規制当局への申請には、構造的カバレッジエビデンスが含まれることが期待されます。Coco は、IEC 62304 の要件に沿った監査対応レポートを生成し、IEC 62304 認定キットも提供しています。

安全性が重視されるソフトウェアでは、コードカバレッジツール自体の認定が必要ですか?

はい。ISO 26262、DO-178C、IEC 62304、IEC 61508、EN 50128 のもとでは、安全性が重視されるソフトウェア検証に使用されるすべてのツールが、対象となる安全度水準に対して認定されている必要があります。事前認定されたツールがない場合、その認定の負担はすべて開発チームにかかり、ツールの挙動に関する文書、妥当性確認テストスイート、認定レポートの作成に、通常は数ヶ月の労力を要します。Coco は、この負担を大幅に軽減します。Coco バージョン 7.4.0 は、ISO 26262-8:2018 の Clause 11 に基づき、SGS TÜV Saar(証明書番号 FS/71/220/26/2113)による独立認定を取得しています。ISO 26262、DO-178C、IEC 62304、EN 50128 向けの規格別認定キットが残りのドキュメント、構築済みテストケース、安全マニュアルを提供するため、ツール認定は数ヶ月ではなく数日で完了します。

Coco は ISO 26262 の安全性が重視される開発での使用について認定されていますか?

はい。Coco バージョン 7.4.0 は、ISO 26262-8:2018 の Clause 11 に対して、SGS TÜV Saar(証明書番号 FS/71/220/26/2113)による独立した評価・認定を受けています。自動車における最高水準の安全度水準である ASIL D までの、安全関連ソフトウェアの検証に適していることが確認されています。ISO 26262、DO-178C、IEC 62304、EN 50128 向けの規格別 認定キットも利用可能です。

Coco は、どのカバレッジレベルに対応していますか?

Coco は、関数カバレッジ、行カバレッジ、ステートメントブロックカバレッジ、デシジョン/ブランチカバレッジ、コンディションカバレッジ、Modified Condition/Decision Coverage(MC/DC)、Multiple Condition Coverage(MCC)に対応しています。MC/DC は、ISO 26262 の ASIL C/D や DO-178C の DAL A/B で求められるレベルです。すべてのレベルは、色分けされたソースコード注釈とともに CoverageBrowser 上で可視化されます。

Coco は、組み込みシステムや実機ターゲットに対応していますか?

はい。Coco は、エミュレーターだけでなく、実際の組み込みターゲットからのカバレッジ収集にも対応しています。GCC、Clang、IAR、ARM/Keil、Green Hills など、組み込み向けのコンパイラで動作します。対応プラットフォームには、組み込み Linux、QNX、VxWorks、FreeRTOS、ベアメタルマイクロコントローラーが含まれます。実機実行から得られたカバレッジデータは、他のターゲットからの結果とマージされ、CoverageBrowser 内でまとめて解析されます。

Coco における CRAP 指標とは何ですか?

CRAP は Change Risk Anti-Patterns の略です。サイクロマティック複雑度とカバレッジデータを組み合わせ、関数ごとのリスクスコアを算出します。複雑さが高く、カバレッジが低いほど、スコアは高くなります。スコアが30を超える関数は、CoverageBrowser 内で高リスクとしてフラグが立てられます。これにより、QA チームは勘ではなく客観的なリスクのランクに基づいて、新しいテスト作成の優先順位を決め、スプリント計画やマネジメント向けレポート用にランク付けされた結果をエクスポートできます。

Coco のパッチ解析は、どのように機能しますか?

パッチ解析は、統一差分(unified diff)形式のファイルを取り込み、それをテストスイートの既存のカバレッジ実行データ(.csmes・.csexe ファイル)と照合します。パッチ内のどの行が既存のテストでカバーされているか、カバーされていないか、そしてパッチ適用後のバージョンに対してテストスイート全体を再実行することなく、どのテストが変更されたコードパスを実行したかを示す、注釈付きレポートを生成します。出力は、コードレビュー、リリースゲート、認証エビデンス用に HTML または CSV で利用可能です。

安全性が重視されるプロジェクトでは、コードカバレッジツール自体を認定する必要がありますか?

はい。ISO 26262、DO-178C、IEC 62304、IEC 61508、EN 50128 のもとでは、安全性が重視されるソフトウェア検証に使用されるすべてのツールが、対象となる安全度水準に対して認定されている必要があります。事前認定されたツールがない場合、その認定の負担はすべて開発チームにかかり、通常は数ヶ月の労力を要します。Coco の TÜV Saar 認定は、この最初の認定の負担を取り除きます。ISO 26262、DO-178C、IEC 62304、EN 50128 向けの規格別 認定キットが、残りの作業を数ヶ月ではなく数日で完了させます。

Coco は、C・C++ 以外の言語にも対応していますか?

はい。Coco は、C、C++、C#、QML、Tcl、Python(Python モジュール向けの coverage.py 連携を通じて、ネイティブな C/C++/C#/QML/Tcl レイヤーは Coco 自身が計測を担当)に対応しています。Coco は Qt 専用のツールではなく、フレームワークを問わず、これらの言語を使用するあらゆるコードベースで動作します。対応するすべての言語にわたるカバレッジ結果を、1つのレポートにマージして解析できます。

テストの抜けを、今日中に把握する

Coco の評価版ライセンスを使えば、既存のビルドシステムとテストスイートに対して、コンポーネントを計測できます。その日のうちに、実際のカバレッジレポートが手に入ります。デモでもサンプルデータでもなく、お客様自身のコードから得られた、テストがどこで不足しているかを正確に示す実行結果です。