※2022年3月現在開発中の機能となり、リリース時の仕様と異なる場合があります。

 

はじめに

従来、トレース機能を持ったテストツールを使用するうえで、弊社DTシリーズDT+シリーズに関わらず必ずと言っていいほど課題になってしまうのが、オーバーヘッドです。このオーバーヘッドとどうやってうまく付き合っていくか、ここが上手くいかないことにはテストのしようがありません。

※オーバーヘッド:ある特定の処理を実行するのに必要となる時間やメモリ量のこと

弊社の動的テストツール「DT+」の場合、処理の通過情報を出力するために、テストポイントと呼ばれるものをソースコード中に挿入する必要がありますが、このテストポイント挿入によって、オーバーヘッド(この場合、通過情報を出力する処理にかかる時間)が増加します。すると、この処理時間の増加がソフト全体に影響し、場合によってはテスト対象機器の動作が不安定になる場合があります。

これについては、弊社でも長年の課題となっています。理想としては、もちろんオーバーヘッドが全くかからない状態でテストするのが望ましいです。ただし、現実的には、動的テストが実機を動かしてテストをするものである以上、オーバーヘッドを0にすることは不可能で、ターゲットの動作に大小さまざまな影響を与えてしまいます。print文デバッグにおけるprint文であろうが、DT+のテストポイントのような「ツールのテストコード」であろうが、この前提は覆りません。

でも、機能安全規格に準拠した開発をされている方であればご存じとは思いますが、テストコードを挿入したテストを行うことは必ずしもNGではありません。テストコードを挿入したコードでの動作でも、実際の動きと差異なく動作することがテストにより保証できれば、場合によってはツールを用いてトレースすることも認められています。

それならば、動的テストツールを使って一度に広範囲にテストコードを入れられるほうが、より楽で効果的なテストを実現できます。そのためにはオーバーヘッドは極力小さいほうがいい。しかし、オーバーヘッドを極小にしてしまうと、十分な通過情報が集められず、あまり意味のないツールになってしまう・・・。

そこで今回は、オーバーヘッドを最小限に抑えつつ効率的なテストを実現するために、ハートランド・データの技術陣が新規投入する最新テストポイントを、オーバーヘッドと照らし合わせつつご紹介します。

 

新機能と新規テストポイント挿入アルゴリズムの開発

弊社のテストツール開発部門は、かねてより汎用ポート接続におけるオーバーヘッド改善のために試行錯誤を重ねてきましたが、その過程で3つの機能を生み出しました。
まずはこちらからご紹介しましょう。

高速テストポイント

この機能は、通過情報出力時間を通常のテストポイントから半分程度に抑えることができます。
小規模のシステムや、関数の実行時間や周期時間を見るために、テストポイントを間引いて使っている方にオススメの機能です。
(最大1024個まで挿入可能)

ラピッドロジックトレース

テストポイント通過時、通常であればポートのHi/Loの組み合わせによって通過情報を出力しますが、本機能では任意の空きポートを1回だけHi/Loさせ、それを通過情報として識別させます
これにより、割込み処理がからむような、「処理時間に影響が及ぶと動作に支障をきたしてしまう」ケースでも、テストによって得られる情報量を減らさずにテストできるようになります。ただし、通常のテストポイントの出力と組み合わせて使う場合は、余分に空きポートを準備する必要がありますので、ポートに余裕があるシステムでのご使用がオススメです。
(最大8テストポイント/8区間まで挿入可能)

カバレッジ専用ドライバ

通過情報をbit管理して通過の有無だけを出力する機能で、
名前の通り、1度に広範囲のカバレッジを取得したい方にオススメです。テストポイント通過時には、通過情報を格納しておくバッファのビットを0⇒1にする処理だけが実行され、テスト終了後にそのバッファの情報を出力する処理により通過情報を取得します。ただし、テストポイント通過時に汎用ポート制御を行わないことから、関数の実行時間や通過回数、関数の遷移などといった情報は確認できません。

このように、オーバーヘッドのお悩み解決を目指して機能を開発してきました。
これらはオーバーヘッドの削減に大きく寄与できるものの、

  • ・挿入できる各機能のテストポイントの個数が限定されてしまうこと
  • ・カバレッジ計測のための機能に限定されてしまうこと

といった制限事項のために、オーバーヘッドとは別の課題が残ってしまうことがありました。

そこで弊社では、せっかくテストポイントを挿入するのであれば、次に通過するテストポイントを予測して、予測が正しければ正しいことを示す信号を出すだけでもいいのではないか?というところに着目しました。

この考え方によって開発されたのが「AI予測トレース機能」です。

 

新機能!AI予測トレース

次に通過するであろうテストポイントを予測し、予測が当たっていれば最小のオーバーヘッドで最大の計測データを取得できるテストポイントです。※予測が外れた場合は通常のテストポイント出力となります。
この機能には、従来のテストポイントの挿入のために作られたソースコード解析アルゴリズムとは異なる、新開発されたアルゴリズムを使ったアプリケーション「DT+Builder(仮)」が使われています。

このDT+Builderがテストポイントの通過予測を行うのですが、ただ予測するだけではありません。
レポート収集をするたびにテストポイントの通過情報を学習し、予測アルゴリズムの精度を上げていきます。

つまりは、「使えば使うほど予測精度が上がる」ツールになるということです。

本機能を使用するうえで、ユーザーの操作は変わりません。
従来通り、「テストポイントを挿入」⇒「ビルド/コンパイル」⇒「実行してデータ取得」の流れです。
新しく覚える操作は特にありませんので、ユーザーが操作感における違和感を感じることなくご使用いただけます。

対応する接続方式は、汎用ポートを使用する接続です。

 

オーバーヘッド実測

さて、ここまでお読みいただいた方は、
「とはいえ、実際どのくらいオーバーヘッドが減るのだろう?」
とお思いではないでしょうか。

そこで、以下のとおり、測定を行ってみました。(弊社にあるデモ用の環境での参考値となります。)

以下のようなサンプルコードにテストポイントを2行連続で入れ、その時の差分の時間(実質のオーバーヘッド)を計測しました。

※クリックで拡大します。
※マイコンスペック:Arm Cortex M3 / ClockSpeed 50MHz

赤枠のところをご参照いただくと、軒並み桁数が減っていることがお分かりいただけます。
SPIやI2Cにおいては、オーバーヘッドがおおよそ10%~20%まで削減されたことがわかりました。
※環境によってこの値は異なります。

ここの結果から読み取ると、使用する汎用ポート数が少ない接続ほど、効果を感じられやすいのかもしれません。

オーバーヘッド時間の削減率でいえばラピッドロジックトレースには敵いませんが、その代わりAI予測トレース機能のテストポイントには設定数の制限がありません。また、通常のデータ出力用ポートの他に専用ポートを確保するようなことも必要もありません。そういった使い勝手の面において、「より使いやすく」「幅広い箇所の可視化」が実現できるものと確信しています。

使用用途に合わせて、どの機能を使うべきか?もしお悩みでしたら、まずはこの「AI予測トレース」をご使用いただければと思います。

 

まとめ

今回はオーバーヘッド削減の観点から、DT+が持つ様々なテストポイントと開発中の新機能AI予測トレースについてお送りしました。

従来の通常テストポイントでは、

  • ・テスト対象機器の空きポートが足りない
  • ・オーバーヘッドがかかりすぎる

といった問題で導入できなかった方、ぜひ改めてご検討いただきたく思います!

弊社では、エンジニアが抱える組み込み開発の不便の解消を目指して、今後もより小さなオーバーヘッドでご使用いただけるツールを目指して開発を続けてまいります。
引き続きDT+にご期待ください!

今回ご紹介した機能は、2022年3月現在開発中のものとなります。
リリース時の実際の仕様とは異なる場合がございますので、予めご了承ください。
なお、ご不明な点につきましては、弊社サポートチームまでお問い合わせください。
お問い合わせはこちら

第31回 Japan IT Week 春 出展のご案内

この4月に東京ビッグサイトで開催される 第31回 Japan IT Week 春『IoT & 5Gソリューション 展』に出展いたします。 会場では、最新の「60GHzミリ波レーダー」や、開発中の新バージョンの動的テストツール「DT+」などをご紹介します。 ぜひハートランド・データのブースへお越しください!