SuperTest
compiler test and validation suite

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

コンパイラまかせで良いですか?

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

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

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

 
 
 

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

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

■SUPERTEST の優れた特性

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

 
 

■ABI-Tester

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

 

■Depth suites

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

■Tempest (TEMPlate Expander for SuperTest)

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

■顧客の声

車載システムの機能安全のリスクを軽減するSuperTest
 
実はコンパイラを検証する必要があるのは、コンパイラ開発者だけではない。コンパイラによってアプリケーションコードに不測のエラーが混入されることがないように、ソフトウエア開発者であってもコンパイラの品質を意識する必要がある。特にセーフティクリティカルな製品では、その傾向が顕著になる。
 
株式会社デンソー(最先端のオートモーティブテクノロジー、システムおよびコンポーネントのサプライヤー)も、この問題を解決するコンパイラテストと検証用のパッケージとして、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の販売とサポートを通じて、機能安全規格などで要求されている、コンパイラツール自体の不具合が製品システムにまで影響しないことを確認する作業の軽減に、貢献してまいります。