RTIでのソフトウェアテスト
RTIソフトウェアは多くのミッションクリティカルの中心ですシステム。もちろん、お客様はシステムの信頼性と品質に深く関心を持っています。そのため、お客様と会ってRTI開発プロセスを紹介するときは、開発手法、使用するツール、およびRTIIIoTラボについて話し合います。多くの人が、RTIで行うソフトウェアテストと使用するテストフレームワークに特に興味を持っています。私はいつもこれらの会話を楽しんでいます。私たちはテストに注意を払っていることを誇りに思っています。このブログ投稿は、私たちが実行するテストをまとめたものです。
当社の開発プロセスとテストは、RTIConnext製品スイート全体で共通です。例外はRTIConnext DDS CERTです。これは、安全認証を必要とし、異なる開発プロセスに従うアプリケーションを対象としています。開発中、およびRTIが新しいソフトウェアをリリースする前に、大量のテストを実行して、正しい機能を検証し、ソフトウェアのパフォーマンスと拡張性を確認します。
単体テスト 個々の機能が期待どおりに機能することを検証します。単体テストは、すべての製品リリースで主要な回帰テストメカニズムとして使用されます。単体テストフレームワークは、個々の機能をテストするだけではありません。また、単一ノードの機能テストのレベルも可能になります。最近のリリースでは、テスト構成の一部として、顧客提供のサービス品質(QoS)設定も組み込んでいます。私たちのプロセスは、可能な限り現実的な環境で正しい機能を確保するように設計されています。
新機能開発の一環として、機能テストプランを作成し、一連のエンドツーエンドの機能テストを実装します。 。これらのテストは、特注の一連のテストを介して、またはConnext DDS Microの場合は、新しい分散テストフレームワークで実装されます。このテスト環境では、さまざまなマシンでテストを実行する多数の「テストランナー」と、テストランナー間でテストの実行を同期する「テストマネージャー」を使用します。テストを記述するために単純なDDSテスト言語が開発され、各テストランナーはスクリプトを実行し、結果(PASS / FAIL)を公開して、次のスクリプトが実行されるのを待ちます。機能テストの主な焦点は次のとおりです。
- アプリケーションレベルのAPIとDDSQoSポリシー(期限、活気など)をテストします
- リソース制限をテストする
- クロスエンディアンをテストする
- テストディスカバリー
- テストパフォーマンス
- 安定性を確保する
さまざまなレベルの相互運用性テストを実行します:
- 他のRTI製品との相互運用性をテストします 開発中およびインストールテスト中。自動化された相互運用性テストのセットを開発しました。たとえば、Connext 6では、Connext DDS Micro3.0ライブラリとConnextDDSコア6.0ライブラリに共通する多くの新機能が導入されました。何千もの構成の組み合わせを自動的に生成し、正しい動作を検証しました。古いRTIバージョンとの相互運用性は、分析の結果、相互運用性を損なうリスクがあると判断されたときにテストされます。
- 言語の相互運用性 私たちのツールのいくつかはJavaまたは他の言語で書かれているため、間接的に行われます。たとえば、RTI Admin ConsoleなどのRTIのJavaベースのツールを他の言語のアプリケーションと組み合わせて使用する場合、Javaベースのアプリケーションとの相互運用性をテストします。
- 基本レベルの他のDDSベンダーとの相互運用性 Object Management Group(OMG)のDDS会議で定期的に行われます。ベンダーは、DDSセキュリティ、拡張可能タイプ、およびDDS-RTPSワイヤープロトコル(https://github.com/omg-dds)を検証するために、より詳細な一連のテストを調整します。
テストのインストール 複数の製品間の統合および相互運用性テストをキャプチャします。これらのテストは、手動と自動インストールテストスイートの両方で実行されます。 インストールテスト さまざまな統合と相互運用性の問題をカバーしています:
- インストール -すべてのファイルが正しくインストールされていますか?
- グラフィカルユーザーインターフェイス(GUI) -現在、自動化されたGUIテストはありません。手動インストールテスト中に、統合が適切に機能することを確認します。たとえば、RTILauncherと rtiddsgen 、または rtiprototyper 。
- ドキュメント -適切なドキュメントが出荷されていますか?
- 基本的な機能テスト 出荷された例を使用したすべての製品。一部の製品については、スタートガイド全体を実行します。このテストは、さまざまなプラットフォームで繰り返されます。
- 基本的な製品と言語の相互運用性テスト 。
これらのテストを加速および拡大するために、自動インストールテストを用意しています。 多くの機能のために。現在のテストの対象:
- インストール-ファイルをチェックして、ファイルが正しくインストールされていることを確認します。
- rtiddsping を含むユーティリティの実行 、 rtiddsspy および rtiprototyper。
- 静的/動的およびリリース/デバッグDDSライブラリの組み合わせを使用して、C、C ++、C ++ 03、C ++ 11、C ++ CLI、C#、およびJavaでrtiddsgenで生成された例を実行します。
- 静的/動的およびリリース/デバッグDDSライブラリの組み合わせを使用して出荷されたサンプルを実行します。
- C ++およびJavaでのパフォーマンス例。
- CでTCPで出荷された例。
これらのテストは、Windows、Linux、Solaris、Lynx、QNX、Darwin、VxWorksプラットフォームを含む80の異なるアーキテクチャで実行されます。
さまざまなパフォーマンスおよびメモリプロファイリングテストがあります。 有効で意味のある分散パフォーマンステストを作成することは非常に困難です。単純なアプローチでは、バッファ、スループット、レイテンシ、リアルタイム配信、スタック、およびオペレーティングシステムのトレードオフを処理したり、大まかに測定したりすることはできません。 RTIは、実際のシステムにとって最も重要なパフォーマンスメトリックの評価に豊富な経験を持っています。
- 単体テストは、特定の機能のパフォーマンスとメモリ情報をキャプチャします。
- パフォーマンステスト(perfTest)を使用します ConnextDDSのパフォーマンスを特徴づけるため。現実的な測定を行うことができるように、perfTestに多大な投資を行っています。ルーティングサービスなどの他の製品と組み合わせて使用できます。 PerfTestを使用して、パブリックレイテンシとスループットのデータを収集します。パフォーマンスの結果は、https://www.rti.com/products/dds/benchmarks.htmlで入手できます。
- memTestは、Connext DDSCoreのメモリフットプリントを監視するために作成されました。 Connext DDS Microは、単体テストの一環として詳細なメモリフットプリント情報を収集します。
- RTI AdminConsoleやRTIRecording Serviceなどの他のアプリケーションには、パフォーマンス監視機能が組み込まれています。
PerfTestとMemTestの継続的インテグレーションにより、Connext DDS製品に新しい機能が追加されたときに、(事前に設定されたパーセンテージを超えて)後退しないことが保証されます。
耐久性テスト 長期的なシナリオをエミュレートします。耐久性テストは、リモート参加者の作成と削除、リモートエンドポイントの作成と削除など、さまざまな動的ユースケースでヒープメモリを監視します。耐久性テストフレームワークは、RTPSパケットがランダムに変更されるファジングテストのユースケースで、RTIセキュリティプラグインでも実行されます。テストは、最新の一般提供リリース(GAR)で実行されます。
大規模およびストレステスト 新機能の開発の一環として意図的に構築されています。たとえば、トランスポートモビリティ(IPモビリティとも呼ばれます)を導入したとき、さまざまなワイヤレスアクセスポイントへの接続と切断をエミュレートする一連のテストを作成しました。検出の実装を強化したとき、何千ものエンドポイントをシミュレートし、それらが各アプリケーションによって検出されたことを自動的に検証するための特別なテストフレームワークを作成しました。通常、これらのテストは、機器とネットワークの要件もあり、リリースごとに再実行されるわけではありません。一部のテスト(大規模な検出テストなど)は、検出の実装に変更を加えると再実行されます。
当社の製品は強力で複雑であり、さらに複雑なアプリケーションの驚くべき配列で動作する必要があります。したがって、もちろん、すべてのシナリオをテストしたり、考えられるすべての問題を見つけたりすることはできません。しかし、私たちは業界で最も広範なテストプログラムの1つを持っていると確信しています。この厳格で多面的なテストプロセスを通じて、お客様は最新の製品リリースを高い信頼度で使用できるようになります。
作成者について
Janは2006年にRTIに入社し、SunMicrosystemsやVLSITechnologyなどの企業で技術的および顧客対応のリーダーシップの役割を23年以上経験しています。彼は専門的なサービス、サポート、エンジニアリング組織を率いており、ミドルウェア、グリッドアプリケーション、インフラストラクチャソフトウェア、オペレーティングシステムの設計、デバイスドライバー、ネットワークチップの開発の経験があります。
JanはシニアアプリケーションエンジニアとしてRTIに来て、RTIConnextソフトウェアを使用して顧客にトレーニングとコンサルティングサービスを提供しました。次に、Janは、記録的な98%の顧客満足度を達成した新しいサポート組織を開発しました。 Janは、アプリケーションサービスのディレクターとして、RTIConnextテクノロジーとミドルウェアを使用してシステム設計とカスタム実装を提供するアプリケーションサービスエンジニアのチームを率いています。 Janは現在、エンジニアリング担当副社長を務めており、RTIの研究開発の取り組みを担当しています。彼は、RTI Connextのソフトウェアを開発する60人以上の分散エンジニアリングチームを率い、ソフトウェア開発プロセスと製品品質を担当しています。
Janは、ベルギーのヘールにあるKIHKで、電子工学、デジタルコミュニケーション(Summa Cum Laude)の修士号を取得して卒業しました。
詳細:
自動運転車の生産»
DDSとは何ですか? »
Connext DDSPro»
モノのインターネットテクノロジー