SuperTest
compiler test and validation suite

C/C++コンパイラをテストして妥当性を検証する

コンパイラ品質の重要性:アプリケーション開発やシステムインテグレーションに欠かすことのできないコンパイラは、非常に複雑なソフトウエアであり、たったひとつのエラーであっても、コードの開発段階、あるいは市場投入後に、甚大な問題を引き起こす原因になりかねません。それゆえコンパイラの確かな品質は極めて重要であることは明らかです。間違ったコードが生成されることでこうむる損害は、コンパイラの品質管理への投資と比較になりません。また、ISO 26262 等の機能安全規格では、ソフトウエアツールチェインの適正なレベルの信頼が要求されます。コンパイラが正しいことの証明には、C/C++言語標準規格への適合性、正確性、堅牢性を厳密にテストすることが必要です。


「Vermeer」リリース

SuperTestは最新版「Vermeer」をリリースしました。

SuperTest「Vermeer」リリースには最適化コンパイラの包括的なテスト、「ベアメタル」システムのサポート、C ++ 17サポート、トレーサビリティの強化、およびマルチプロセッサWindows環境でSuperTestを実行する機能が含まれています。

SuperTestはコンパイラがC/C++言語標準規格を満たすことをテストする中で、結果的に多くの最適化のテストをカバーしていましたが、新たに追加された最適化テストスイートで、どのようなコンパイラに対しても最大のカバレッジを達成できるようになりました。

関連記事

「最適化の正しさを検証する」

先進のコンパイラ最適化が安定していて十分テストされているものだと考えることは間違っています。最近、最適化のテストを行う中で私どもが入手できるどのコンパイラ技術においてもエラーが存在することを確認しました。 
記事へのリンク

関連記事

「GNU-C++の -Os が壊れた日」

ところがC++のテストで例外処理や継承に関するもののいくつかが、新しいフリースタンディングの設定では突然フェイルしました。 
記事へのリンク


ET2019名古屋、
ET2018横浜の講演資料
 

画像クリックでダウンロード

C/C++コンパイラをテストして妥当性を検証する

ユーザーまでもがコンパイラをテストすべき理由とは?

コンパイラは、非常に複雑なソフトウエアであり、たったひとつのエラーであっても、甚大な問題を引き起こす原因になりかねない。また、ISO 26262 等の機能安全規格では、ソフトウエアツールチェインの適正なレベルの信頼が要求される。そこで、主要コンパイラメーカのみならず、コンパイラを使用する組織が機能安全規格で求められるコンパイラツールの認定にも活用するSuperTestについて、活用事例を交えて紹介する。


ユーザーがコンパイラをテストすべき理由とは?

コンパイラに潜在する問題から、安全で安心なシステムを守るために必要なことを紹介。

高いレベルのコンパイラ品質を得る手段は

Solid Sands 社の SuperTestは、コンパイラ品質への信頼を得るためのコンパイラテストと検証のためのテストスイートです。業界最大クラスのコンフォーマンステストとともにテストファイルが提供され、コンパイラの開発者のみならず、コンパイラを使用する組織やその品質管理部門が、機能安全規格の要件(コンパイラの不具合が製品システムに影響しないことを確認する)を満たすことや、コンパイラによって間違ったコードが生成されることを未然に防ぐことを目的に活用しています。
 
これにはコンパイラによる解析、変換、最適化を評価する多くのテストも含まれます。また、このテスト群や特別な機能は、継続的に追加されています。フレームワークには、コンフォーマンステストと診断テストの両方が組み込まれています。診断テストは、不正なプログラムに対するコンパイラエラーを検証します。またフレームワークには、テストスイートのサブセットを選択する機能があり、以前にフェイルしたテストを再実行するなどの柔軟性を備えています。POSIXベースのユーザインターフェイスは直感的であり、あらゆるコンパイラ開発環境とシームレスに統合できるので、新しいテストの追加やクロスプラットフォームでの検証サポートをも容易に行えます。
 

コンパイラが効率的なソースコードを効率的なマシンコードにコンパイルすることで、アプリケーション開発において重要な役割を果たすことは周知のことですが、その役割には大きな責任があります。私たちの経験では、x86やARMなどの主要なプロセッサーアーキテクチャー用に広く使用されるCおよびC ++コンパイラーは、一般的に信頼性があります(完全ではありませんが...)。しかし、DSPやアプリケーション固有の8ビットマイクロコントローラなどのアプリケーション指向プロセッサ用のコンパイラはどうでしょうか?

アプリケーション指向プロセッサは、汎用的で規模の大きなものよりも、はるかにコスト効率が良く、便利でオンチップI/O機能が適切にパッケージ化されています。アプリケーション開発者は、これらのデバイス用のコンパイラが主要なデバイスと同様に信頼できることを願っていますが、残念ながらこれは必ずしもそうではないことがわかりました。

弊社(Solid Sands社)は最近、そのようなコンパイラのクオリフィケーション(適格性の評価)をお請けしました。これはよく知られているベンダーの商用コンパイラでしたが、SuperTestのような包括的なテストスイートに初めて直面したようです。すぐに2つの主要なランタイムエラーを発見しました。1つは値の伝搬で、もう1つは呼び出し規約と組み合わせたレジスタ割り当てです。この2つのエラーは数十ものテストに関わっていて、全てに実行時のエラーが発生しました。値の伝播は通常、明示的にオンにする必要がある最適化と見なされますが、このコンパイラはデフォルトでそれを適用していたことが注目すべき点です。

アプリケーションにこのように重大なエラーが潜在することがわかったことで(このコンパイラのクオリフィケーションは、顧客の機能安全プロセスの一部であった)、この製品開発プロジェクト全体のスケジュールが脅かされることにもなりました。コンパイラーのクオリフィケーション中に、コンパイラー・ベンダーにエラーを報告し、修正または回避策を待ってから、コンパイラー設定の適切な変更について議論する必要があり、アプリケーション開発プロセスに支障をきたすことになりました。 

これは珍しいことではありません。昨年、パイプラインを持つターゲットプロセッサの命令スケジューリングで、エイリアス関係にあるロード命令とストア命令を誤って並べ替えたコンパイラを評価しました。スケジューラは、コンパイルされたプログラムごとに重要な役割を果たします。したがって、毎回うまく動作しなければなりません。

このような落とし穴を避けるために何ができるでしょうか?少なくともコンパイラベンダーにテスト手順を尋ねてください。彼らはSuperTestのような評判の高いテストスイートを通しているでしょうか? 
ミッションクリティカルな市場や、安全性が重要な市場でビジネスをしている場合は、使用しているコンパイラの弱点を把握しておく必要があります。エラーを修正できない場合でも、弱点を知ることで、予防的対策を講じたり、回避策を実装したり、機能安全規格で知られる「緩和」策を講じることができます。
 
また弊社ではコンパイラのクオリフィケーションサービスを提供していますが、SuperTestのライセンスを取得されることもお勧めしています。
SuperTestが有れば、必要となる全てのコンパイラの各バージョンで、様々なオプション設定の組合せで、好きなだけ評価できるので安上がりです。また開発の早い段階で評価することで問題を事前に避けることができますし、そのような経験と知識を社内で蓄積できるようになります。


■SUPERTEST の優れた特性

一般的なコンパイラのテスト・検証スイートに求められるC言語標準規格の準拠や正確性と品質チェック等はもちろんのこと、さらにSuperTestは次のような機能も持っています。
 
􀄑 C++とC++11のテスト
􀄑 リモート、及びパラレルテスト
􀄑 HTML形式の明解なレポート
􀄑 テストの追加が容易にできる
􀄑 パワフルで柔軟性に富むテストジェネレータ
􀄑 …

 
 

顧客の声「コンパイラをバージョンアップする時にSuperTestでチェックして、使ってはいけない最適化などの社内ルールを施行することで、過去のバージョンに戻さなければならないような問題が起こらなくなった。」

 

顧客の声「C99 コンパイラなのにC89のライブラリが混同されていて、sin, cosなどの数学関数で問題になるところを、事前に回避できた。」

 

顧客の声「自動運転などで画像認識等はC++のライブラリに依存することになるので、SuperTestのライブラリテスト機能にも注目している。Float16、AUTOSAR C++14 など

■ABI-Tester

ABI-Tester for Cは、コールする側とされる側それぞれを含む一対のファイルを自動生成して、呼び出し規則やバイナリーインターフェイスのエラーを明確にします。単一コンパイラのApplication Binary Interfaceのコンプライアンスだけでなく、同じコンパイラの異なるバージョン間や、あるいは同じターゲット用の異なるコンパイラ間でも検証することができます。
 

顧客の声「ABIの規則に準拠することで、他のサプライヤーの製品と繋がることで問題が発生しても、お相手の問題として切り分けすることができている。各社がSuperTestを使ってくれると、もっと助かるのだが、、」

 

■Depth suites

C言語の標準規格では、データモデルは実装依存となっています。それゆえテストスイートは、演算処理の前提を一定の範囲内に収める必要があります。SuperTestのDepth-suitesは、特定のデータモデル用に生成されて、演算処理の境界について詳細な情報が得られます。Depth-suitesは、5つのオペランドまでの徹底した演算処理のテストを行います。既に30もの異なるDepth-suitesがSuperTestに組込まれていますが、要求に応じてカスタマイズしたものをご提供することもできます。
 

顧客の声「アーキテクチャ固有のデータ長(例えばchar もint も24ビット)に合わせて演算精度のテストができる。」

 

■Tempest (TEMPlate Expander for SuperTest)

ランダムなテストのバリエーションを作るための、ユニークで柔軟性に富んだ、プロダクションルール駆動型のテストジェネレータです。ジェネレータースクリプトベースのプロダクションルールのセマンチックによって、振舞いが予測可能な複雑なプログラムを生成することができます。コンパイラの特定の問題に対して、そのテスト範囲を全面的なテストを生成することで拡張して、それ以上の問題が存在しないことを掘り下げて調査することができます。


■顧客事例

機械知能プロセッサメーカーのGraphcore社(英国、ブリストル)は、イノベーターが次世代のAI製品を作り出す超並列計算プラットフォームを開発しています。同社は、独自の知能処理ユニットアーキテクチャをテスト・検証するため、コンパイラ開発ツールチェーンの一環としてSuperTestを使用しています。
 
徹底的なコンパイラテストが要請される理由はいくつかあります。第一は、プロプライエタリなターゲットアーキテクチャ用にコンパイラを開発している場合で、開発者コミュニティでの豊富な経験が活用できないことです。次には、そのコンパイラがアプリケーションに依存する複雑な最適化を実施しなければならない場合で、ターゲットアーキテクチャの特性や命令を最大限に利用するコードの並べ替えや変更があるということです。
 
英国に拠点を置き、人工知能(AI)アプリケーション加速のシリコンプラットフォームを開発するチップメーカーGraphcore社にとって、この状況が当てはまります。同社の超並列知能処理ユニット(IPU:Intelligence Processing Unit)は一片のシリコン上に1200を超えるプロセッサコアを統合するもので、その命令セットとメモリアーキテクチャは、エンジニアが新たな分野のAIモデルと製品を創生しつつ、今日のAIアプリケーションを加速できるように独自に設計されたものです。同社のPoplar®と呼ぶソフトウェアスタックのバックエンドは、多層からなる最適化を使用してタスク群をコアに分配し、それらが最高の速度と効率で実行されることを保証します。
 
AI応用の領域での探求と革新を促進するため、同社はアプリケーション開発者がIPUをC++レベルでプログラムできるようにする取り組みも行っており、このことが、開発者が投入するものすべてを扱える高度にロバストなコンパイラを提供することを非常に重要にしている理由です。
 
「我々は、今日存在するすべてのものとまったく異なる構造で、既存のソリューションを超えてAIの新たな応用を開拓できる新しいシリコンプラットフォームを開発しました。この新たな応用への扉を開くために我々は、ユーザーがC++のような標準のプログラミング言語を使用して自由に探査できるよう、高度にロバストなプログラミング環境を提供することに全力を尽くします。これが、我々のコンパイラをテスト・検証するためにSuperTestを選んだ理由です。」‐Graphcore社Matt Fyles副社長
 
ユーザーの信頼と利便の点から他にもGraphcoreのIPUに対するC++コンパイラが厳格なテストと検証を必要とする理由があります。
例えば、C++レベルでのプログラミングに加えて、Poplarソフトウェア開発スタックは、高度に抽象化されたディープラーニングAIフレームワークからの入力を受け付けます。これによって抽象化されたモデルとターゲットハードウェアのマシンコードとの間に層が追加されるのです。
 
「我々のソリューションの主要部はソフトウェアプラットフォームとそれがアプリケーションをIPUにマップする方法です。トップレベルにはTensorFlowやPyTorchのようなAIフレームワークがあり、それらによって基盤のハードウェアをプログラムすることなくニューラルネットワークを構築できる抽象レイヤーが提供されています。Poplarソフトウェアスタックはそれらフレームワークの出力を得、中間言語を介してIPUの個々のハードウェアコアにコンパイルします。中間言語は我々の場合C++です。アプリケーションの機能テストではユーザーは、問題を起こしているのはコンパイラではないことに全幅の信頼を置けることが必要です。」‐Matt Fyles副社長
 
「SuperTestの強みは、言語機能のカバレッジとテストできることの広さにあります。このことが、カスタムメイドのバックエンドでスクラッチからコンパイラを作る場合にSuperTestが特に有用となる点です。この能力と利用できるユーティリティ全般があるので、我々は繰り返しSuperTestを使うようになりました。SuperTestはほとんど業界標準といっていいものです。」‐Matt Fyles副社長
 
Graphcore社の知能処理ユニット(IPU)技術の詳細については、こちらをご覧ください。
 
会社概要
Graphcore社は、機械知能向けに専用に設計されたまったく新しいプロセッサである知能処理ユニット(IPU)を創り出しました。このIPU独特のアーキテクチャが意味するのは、開発者が現状の機械学習モデルを桁違いに高速に実行できるということです。さらに重要なことは、AI研究者が汎用の機械知能における次の大きなブレークスルーを実現するという、現在の技術ではできない完全に新しいタイプの仕事ができるようになることです。
 
我々のIPU技術が機械知能計算における世界標準となることを確信しています。Graphcore社IPUの性能は、すべての産業や部門にまたがって、医療技術者やロボット技術者、自立走行車などいずれに対しても変容して行くものです。

カリフォルニアに本拠を置く、運航自動化ソフトウェアの世界トップメーカーPeloton Technology社はソフトウェアシステムが安全であることの重要性を認識しています。同社の高度な車両間通信と制御技術は、2台のトラックを一定の距離約20メートルを保って隊列走行させますが、これは前方のトラックが急ブレーキを踏んだ時や、追い越し車両が割り込んだ場合でも、後方のトラックのドライバーの反応時間に頼ることなく衝突を回避します。
 
トラックの隊列走行の利点は単純で、先導車と後続車の燃料消費量が総計で7%ほど削減されます。(主に後続のトラックが受ける空気抵抗が小さくなり燃費を高められる)
これは米国のトラック輸送業界だけで年間800億ドル分以上の燃料消費に相当し、目覚ましい節約となります。ただこれが市場に受け入れられるには、「全ては安全第一」と、Peloton社のRod McLaneマーケティング副社長が指摘しています。
 
「現在我々が考えている車間距離では、前方のトラックがブレーキをかけると後方のトラックは10分の1秒以内にブレーキをかけることが必要で、これは後方トラックのドライバーが反応できるよりずっと速いものです。トラックを電子的に接続することで、短い車間距離を保ち、アクセルとブレーキを同期させることによって、燃費を向上させるばかりでなくトラック隊列走行の安全性を向上させることもできます。」‐McLane副社長 
 
Peloton社の技術は自動運転と同じものではなく、前後、双方のトラックのドライバーは完全に車両を操作する状況にあります。ドライバーによる制御に替わり、Peloton社の技術では前方トラックのエンジンECU(Electronic Control Unit:電子制御装置)とブレーキECUに接続して専用の近距離通信(DSRC)チャネルを通じ、関連するコマンドを後方トラックのエンジン、ブレーキそれぞれのECUに中継します。そして両トラックの前方監視レーダーと連携することで、要求される車間距離での自動隊列走行を可能にします。DSRCにはビデオチャネルもあり、後方のドライバーは前方のドライバーと同じものを見ることができます。また暗号化された音声チャネルもあり、双方のトラックドライバー同士で会話することができます。
 
機能安全を保証するため、Peloton社のシステムには専用のHerculesTM ARM® Cortex®-R MCUが使用され、これですべてのセーフティクリティカルな通信とコマンドをモニターします。そしてPeloton社は、このMCUの組込みコードのソフトウェア開発と実装が、国際的に認められる道路車両に対する機能安全標準(ISO 26262)を満たすことを保証するために、Solid Sands社のSuperTestコンパイラテスト・検証スイートを採用しました。 
 
「我々のシステムはトラックに既装着のクルーズコントロールと衝突回避システムと強固に統合していますので、システム全体の安全性を保証して、すべての人に安心していただくことを確かにするために、OEMのトラックサプライヤーおよびティア1の部品サプライヤーと密接に協業しています。それゆえ、セーフティクリティカルな自動車アプリケーションにおけるベストプラクティスである業界規格ISO 26262への準拠は当然のことです」‐McLane副社長
 
「ISO 26262の準拠に、SuperTestとそのqualificationスイートは、システムのコアであるHercules™ Safety MCU用の組込みコード開発に使用するGCCコンパイラの検証に大きく貢献しました」‐Peloton社のTodd Klaus主幹ソフトウェア技師
 
「主要な関心事の一つは、適切なISO言語標準に対してGCC C++11コンパイラを検証することでした。SuperTestは膨大で非常に豊富なテストスイートを提供していて、コンパイラが言語標準に合致しており、我々のC++コードがあるべき振る舞いをすることを保証してくれます。GCCは自身のテストスイートとともに提供されますが、それは車両での使用に対して決してcertificationされていませんし、すべての領域で標準に合致している保証も決してありません。SuperTestは欠点がどこか教えてくれるので、その状況を回避するためにコードレビュー標準を修正することができます。SuperTestはコンパイラを隅から隅までテストして、欠陥がどこにあるかを教えてくれるのです。」‐Klaus主幹ソフトウェア技師 
 
Klaus主幹技師にとって、SuperTestテストスイートがターゲットハードウェア上で直接実行できることも重要な点でした。
 
「コードがコンパイラのフロントエンドで正しく構文解析・意味解析されることを検証したいというだけでなく、採用するARMプロセッサ上で正しく実行されるコードがバックエンドで生成されていることを検証することも重要なのです。そのためにセーフティモニタチップを含む開発ボードに、コンパイラによって生成されたSuperTestのコードを直接展開します。これはテストにより多くの工数をかけることになりますが、ISO 26262の重要な要件の一つである全ツールが検証されているということに対する信頼が得られるので、十分に価値があるのです。」
 
会社概要
Peloton社は、ネット接続され自動化される車両技術の会社で、米国や世界での貨物輸送の安全性と効率の向上に専心しています。フォーチュン・グローバル500の10社の支援を受けているシリコンバレー拠点のPeloton社は、顧客とともにネット接続や自動化、先進のデータ解析を通して、燃料節約や衝突回避、操作上の洞察力向上を行う革新的なツールを提供しています。Peloton社の旗艦製品であるドライバー支援隊列走行システムは、対になるトラックのアクティブセーフティシステムを連携し、ドライバーのチームワークを向上させ、トラックをクラウドベースのネットワークオペレーションセンターに接続することで隊列走行を適切な道路および条件に限定するようにします。Peloton社のソリューションは、隊列の中でも外でも有効に機能するクラス最高の衝突回避システムや他の安全機能を要求しますので、それによってトラック個々の安全性も向上します。
 

実はコンパイラを検証する必要があるのは、コンパイラ開発者だけではない。コンパイラによってアプリケーションコードに不測のエラーが混入されることがないように、ソフトウエア開発者であってもコンパイラの品質を意識する必要がある。特にセーフティクリティカルな製品では、その傾向が顕著になる。
 
株式会社デンソー(最先端のオートモーティブテクノロジー、システムおよびコンポーネントのサプライヤー)も、この問題を解決するコンパイラテストと検証用のパッケージとして、Solid Sands社のSuperTestを支持している。 
 
コンパイラで実績済みのソースコードを再利用することは、ソフトウエアや製品の品質を維持する最善策のひとつである。しかしながら新たに製品系列を展開する場合に、新しく生成されるソースコードが、コンパイラの欠陥を表面化させる可能性がある。さらにソフトウエア開発担当者ごとで異なる様々なコードスタイルによって、コンパイラの欠陥が浮き彫りにされることもある。また一方、コンパイラに潜在する問題が露呈するのは、新規のソースコードをコンパイルする場合に限らない。
 
“新しいバージョンのコンパイラを入手するたびに、コンパイルされたコードが旧バージョンと一致することをチェックする必要があります。以前はアセンブラレベルでの手動比較や、機能テストを実施していましたが、いずれも膨大な時間と労力を必要とし、また再現性のない結果が出ることもありました。また同じことはC言語の規格やCPU種別を切り替える際にも起こり得ます。” - 株式会社デンソー 基盤ソフト技術部 谷 充弘氏
 
SuperTestは、コンパイラのバージョン間の違いの評価や、言語規格やCPUの違いに対する検証のプロセスを自動化することに加えて、独自のテスト要件を取込む柔軟性も備えている。
 
コンパイラメーカはテストスイートを用いて正当性の確認をするものの、それは代表的な設定で行われるのであって、全てのコンパイラオプションの組み合わせがカバーされるわけではない。SuperTestが有れば、実際の製品開発に採用するオプション設定でテストができるうえに、社内で蓄積された知見を活用して、各アプリケーションの評価に重要なテストケースの追加が行える。
 
またSuperTestは定期的にアップデートされるので、ライブラリコードを採用する際に必要となる検証にも有効である。例えばSupetTestで検出される欠陥には、数学関数のC言語規格との不一致動作や、異なるコンパイラバージョン、メーカ間でのライブラリのふるまいの違いなどがある。
 
“コンパイラに潜む問題点が、製品開発途中や製品出荷後に見つかり手戻りが発生する可能性があったことを考えると、コンパイラ入手時に検出できるSuperTestの採用は、大きな投資対効果があったと言えます。” - 株式会社デンソー基盤ソフト技術部 中里 弘樹氏
 
SuperTestに提供される相当な規模のテストスイートを自前で開発することや、様々なコンパイラの問題を検出するコードサンプルを入手することを考えると、SuperTestへの投資効果は非常に高い。
 
大規模なテストから、欠陥の検出と特定に必要なテストを素早く効果的に選別できるし、コンパイラがC言語標準に準拠することのチェックは自動実行で1~2日で済むので、多くの工数と費用を削減できる。
 
車載システムの機能安全規格に準拠して、顧客からの高い信用を維持するには、コンパイラの品質は常に問題になる。コンパイラが十分な信頼水準であることの判断に活用できるSuperTestは、今や必須のソフトウエア開発ツールとして位置付けられる。
 

 

最新の組込みプロセッサを採用する際に、コンパイラがISO 26262の要件を満たし、厳密に検証され品質保証できることが重要視されました。
 
「コンパイラは供給元の開発者によって検証されていましたが、コンパイルによって、製品のアプリケーションコードに実行時のエラーがもたらされないことを証明する、追加のテストが必要であると判断されました。横滑り防止装置(Electronic Stability Control = ESC)などの車載システムは、そのセーフティクリティカルな特性として、高度なリアルタイム性能が要求されますが、いくらプログラムをリアルタイム処理向けに正しく書いても、コンパイラに欠陥があれば誤ったオブジェクトを出力して、リアルタイム性能にも支障が出る可能性があるからです。
 
 最新の組み込みMPUの採用には時間的な制約があり、コンパイラの包括的なテストを、迅速に行えるツールの選択が求められました。 そこでコンパイラテストと検証の一連の機能を有するSolid Sands社のSuperTestを評価した結果、特にテストケースのカバレッジが要求を満足することを理解しました。そして、限られた期間でコンパイラの検証が求められる中、常識を破るソリューションとなりました。
 
 SuperTestの設定項目は実に直接的であり、数日で必要な機能を実行できるようになりました。また十分なドキュメントが提供されるので、Solid Sands社のサポートを殆ど必要とすることもありませんでした。また99%のテストカバレッジを数週間で満たすことができるSuperTestの実行速度は、大きな優位性のひとつであり、コスト効率が非常に高いと言えます。
 
 特定の条件下でコンパイラが誤った出力を生成してしまうのは珍しいことではなく、たいていはコンパイラ開発者によるテストが十分で無かったことがその原因です。 SuperTestを用いた広範囲にわたるテストを経て、問題となっていたコンパイラのテスト不足が事実であることが明らかになりました。SuperTestの機能志向型のテストを活用して、コンパイラの欠陥箇所を突き止め、またその正確な発生条件を特定することができました。そしてアプリケーションコードがこれらの欠陥を誘発しないことが確認されたので、コンパイラに対するSuperTestの厳密なテストは、アプリケーションコードに対するソフトウエア品質のチェックにもなりました。なぜならある種のコンパイラの欠陥はプログラミングルール違反によって表面化するものだからです。
 
 車載システムの機能安全規格に準拠して、顧客からの高い信用を維持するには、コンパイラの品質は常に問題になります。セーフティクリティカルな車載システムのアプリケーションに、最新MPUが採用に十分な信頼水準にあることの判断に活用されたSuperTestは、今や必須のソフトウエア開発ツールとして位置付けされています。」
 

“SuperTestの必要な構成はとても容易で、数日でコンパイラテストを設定して実行することができました”

“使用して直ぐに思ったのは、SuperTestのテストカバレッジが、市場で入手可能な他のコンパイラ評価ツールと比較して極めて優れて、GCC test suiteに比較しても明らかに優れていることでした。そして数年の使用経験から、それは実証されました。SuperTestは、GCC test suite では明らかにされなかったGCCの新リリースに含まれるいくつものバグ(非常に深刻なコード生成に関する問題も含む)を検出したのです”

“SuperTestによって、弊社のコンパイラの問題を、他の方法で行うことに比べて圧倒的な速さで検出することができました。ツールのライセンスとメンテナンスに掛かる費用と比較すると、コンパイラの品質を改善するために必要な工数が、倍以上節約できたことになります”

“SuperTestの主なる機能ではありませんが、コードのサイズと性能解析にも利用しました。その目的で使用することの長所は、SuperTestの検証用テストコードはコンパクトで、なぜコードのあるセクションのサイズあるいはパフォーマンスが変わったのかを、比較的直接に発見することができることです”

“テストケースは十分にドキュメント化されていて、問題個所も正確に特定されます”

“SuperTestは実に有益なツールです。詳細なレポートはコードの欠陥箇所を特定することに役立ちました。SuperTestによって実装上の欠陥、バグ、ドキュメントエラー、シミュレーションのバグを検出して、多くのリグレッションに貢献しました。これはリグレッションテストベンチとして、将来のコンパイラプロジェクトでは早期段階から使用するつもりです”

“SuperTestによって開発中に多くのエラーを検出できました。テストスイートの実行に成功することで、次にリリースされる各コンパイラバージョンの品質に十分な確信を得ることができました”

“SuperTestの実行速度が速いことは、機能以外の大きなアドバンテージになっています。数週間で99%以上のテストカバレッジを達成して、高い投資対効果を得ることができました”

“SuperTestの長所は、従来の常識を破る革新的な成果をもたらしてくれること”

顧客

 
 

■無償評価版

お問い合わせください
 

■価格情報

お問い合わせください

■Solid Sands 社について

Solid Sands 社(オランダ・アムステルダム)は、C/C++ コンパイラとライブラリの品質を改善するための、最高峰のテストと検証スイートを提供しています。その製品であるSuperTestは、顧客の声に応えることで、継続的に改善して進化しています。またコンパイラとライブラリのテストと検証の豊富な経験と実績を生かして、最新のC言語規格 や、解析、最適化技術、新しいユースケースに最前線で備えています。
 
富士設備工業(株)は、コンパイラとライブラリを包括的にテストするSuperTestを提供するSolid Sands社と代理店契約を締結しました。SuperTestの販売とサポートを通じて、機能安全規格などで要求されている、コンパイラツール自体の不具合が製品システムにまで影響しないことを確認する作業の軽減に、貢献してまいります。
 

お問い合わせ

購入前の製品説明・資料請求・見積依頼・デモ依頼など

 メールでお問い合わせください 
 

購入後の製品の技術サポートに関するお問い合わせ

 技術的なお問い合わせは、ヘルプデスクまでメールでお問い合わせください