2009-08-11 14 views
2

RS-422ポート経由でFPGAとのシリアル通信用ライブラリを開発中です。このライブラリは、より大きなプロジェクトの一部です。ユニットの通信プロトコルのテスト

私はメッセージの生成として、その一部をテストすることができます。入力を設定して、バイト配列が期待通りのものかどうかをテストすることができます。しかし、より一般的なテストをしたいのであれば、どうすれば単体テストを生成できますか? FPGAの動作をシミュレートする必要がありますか?ライブラリを単独でテストすることは可能ですか?

答えて

2

私は、エミュレータやモックでのテストでは、実際のものを突き刺すよりもはるかに簡単にコードパスを行使できると言います。

理想的には、既存のものを使用します。さもなければ、エミュレーションを構築するための少々の努力ではないかもしれません。しかし、あなたがそれをエミュレートするプロトコルを十分に理解していなければ、それと確実に通信することはできません:-)

+0

この場合、問題は次のとおりです。おそらく単体テストは大変な努力を必要とするでしょう... – yeyeyerman

+1

いくつかの並べ替えのライブラリから始めて、それが**素晴らしい**努力であることを確信しています。代替案が** no ** testingの場合は、その作業を行う必要があります。おそらく、あなたは実際のプロトコルに対して簡単なことをすることができますが、エッジのケースにはおそらく何らかのエミュレータが必要です。 – djna

+0

ええ、私はあなたに同意します、私が見ているので嘲笑しているか、単体テストではありません。また、複雑なシステムの一部であるため、可能な限り多くのエラーを特定することをお勧めします。 – yeyeyerman

1

シミュレータとして動作するモッククラスを作ることができます。あなたの書き込み関数があなたが送信した情報を処理し、その結果をある種のバッファに保存するようにしてください。これは単に普通の文字列である可能性があります。その後、文字列を読み込み、それを消去してからあなたに返します。

+0

これは単体テストではなく、統合テストなので正しい方法です。単体テストは、自分でテストするクラスだけです。 –

+0

@BeowulfOFそれは私が考えていることです...私は単体テストのユニットテストを終わらせたくありません:-) – yeyeyerman

+1

モックを使用することは統合テストではありません、一般的なユニットテストでは、いくつかの見せかけ。 – djna

0

FPGA用のドライバをユニットテストするか、プロトコルのユニットテストを行いますか? 両方をテストしたい場合は、すでに(システム)統合テストのように見えます。

はい、はい、通信ライブラリを単独でテストすることは可能です。あなたの通信プロトコルがデバイスドライバとあまり絡み合っていないことを確認してください。この方法で、あなたはそれを孤立してテストすることができます。

私の提案:

  • ユニットテスト小さな部品。それらを徹底的にテストしてください。
  • 統合テストの内容を確認してください。多くのデータやストレステスト?あなたは、ハードウェアをモックアップならば、ユニットテスト
  • にそれを直交させる、それは非常にシンプルな

作る私はFPGA +通信ライブラリをテストするときに興味があるエラーの種類:

  • それは仕様に従ってプロトコルを処理していますか?
  • バッファオーバーフロー/アンダーフローでどのように動作しますか?
  • は期待どおりの割り込み処理ですか?
  • すべてのrsx22信号(ブレーク、パリティ、ストップビット)を正しく処理しますか?

Matlab/Simulink内で実行中のコードが非常に良い結果を出しました(フリー・プラグインのTrueTimeを使用しています)。 Simulinkを使用して、ループ内のハードウェア(HIL)またはループ内のモデルに接続することができます。また、ソフトウェアモックアップを使用することもできます(ただし、ハードウェアに近い場合、つまり割り込みハンドラなどの非同期イベントをシミュレートするのは難しい場合があります)

+0

私はちょうどコンピュータ側のプロトコルをテストしたいです。 FPGAは他の誰かによって開発されており、我々は両方の仕様を持っています。 – yeyeyerman

関連する問題