バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • Virtualizer Development Kitを使用したソフトウェアの継続的インテグレーションとテスト自動化

2018 Mar. vol.109

Virtualizer Development Kitを使用したソフトウェアの継続的インテグレーションとテスト自動化~ Jenkinsのケース・スタディ

継続的デプロイ(CD)の概要と組込みソフトウェア特有の課題

CIに加え、多くの企業が継続的デプロイまたは継続的デリバリー(CD)と呼ばれるプロセスを導入しています。CDプロセスでは、ソフトウェアは(ある一定の成熟度に達した後)いつでも本番環境にリリースできます。 ただし、新しいソフトウェアによって混入するバグや古いバグ(リグレッション)が残ったままソフトウェアが本番環境にリリースされるのを防ぐため、CDでは品質に関する要件が更に厳しくなり、より多くのテストを自動で実行する必要があります。 このレベルのテスト自動化を、最終的なターゲット・システムに近い物理ハードウェアを使用して実行するのは非常に複雑で、コストもかかります。 また、一般にシステム・テストは非常に特殊で複雑なハードウェア・ラボで行われるため、すべてのソフトウェア開発者が利用できるように拡張することも自動化することも困難です。 ハードウェア・ラボでのシステム・テストには数日、あるいは数週間かかることもあるため、このような状況でCDの概念を実践するのは事実上不可能です。

VDKを使用した継続的インテグレーションと自動テスト

Virtualizer Development Kit(VDK)はターゲットとしてバーチャル・プロトタイプを使用する「ソフトウェア開発キット」です。バーチャル・プロトタイプとは、システムのデジタル・ハードウェアを機能レベルで完全に表現したものです。 この表現は、実際のハードウェアと同じ組込みソフトウェアのバイナリを修正なしで実行でき、なおかつほぼリアルタイムでのシミュレーションが可能な抽象度であるのが特長です。 このため、バーチャル・プロトタイピングではハードウェアに依存するソフトウェアや完全なソフトウェア・スタックを早期に統合してテストできます。

VDKはシミュレーション・ベースのため、同じCIシステムで作業しているすべてのソフトウェア開発者が利用できるように容易に拡張できます。 物理ハードウェアベースのフィジカル・プロトタイピングのように特別なハードウェアを追加する必要もないため、セットアップとメンテナンスが容易で、コストも抑えることができます。 しかも、VDKなら並列処理によって必要なテストを夜間にいくつでも実行できるため、CDプロセスでも使用できます。 たとえば実際のVDK導入事例として、クラウド・ベースのサーバ・ファームで600のシミュレーションを並列に実行し、1晩で700,000回のテスト(機能安全のバリデーションに使用する故障注入テストを含む)の実行に成功したカスタマーもあります[1]

テスト・フレームワークとの統合

前のセクションで述べたように、VDKはターゲット・ハードウェアをシミュレーション・モデルで置き換えますが、テストの作成、スケジューリング、ディスパッチ、モニタに必要なテスト・フレームワークは置き換えません。 VDKは既存のフローで使用していたテスト・フレームワークおよびツールとシームレスに統合することを前提としています。このため、これまで使用していたのと同じテストを再利用できます。

画像

図2:VDKを既存のテスト・フレームワークに統合

一般的なテスト・フレームワークはDUT(テスト対象デバイス)にスティミュラスを印加する(またはスティミュラス・ソースを制御する)テストを実行し、その結果を収集してテストの合否を判定します。 VDKには既存のテスト・フレームワークとリンクするためのインターフェイスがいくつかあり、これらを使用してリモートからVDKの制御やVDKとの通信が可能です。 このインターフェイスによって提供されるTCP/IPソケット・ベースのコネクションを利用して、内蔵のスクリプト実行レイヤを制御します。このインターフェイスの詳細については、以前のホワイトペーパー[2]をご参照ください。 VDKスクリプト実行レイヤはシミュレーションの制御(実行/停止、一時停止/再開)の他、スティミュラスを印加して物理ハードウェアなどとの外部インターフェイスから応答を収集するのにも使用できます。

[1] "Model-based Fault Injection for Large-Scale Failure Effect Analysis with 600-Node Cloud Computers", Y. Nakata, Y. Ito, Y. Takeuchi, Y. Sugure, S. Oho, H. Kawaguchi and M. Yoshimoto.
http://www.hitachi.co.jp/New/cnews/month/2011/12/1202.html

[2] "Scaling Automated Software Testing with Virtualizer Development Kits",
https://www.synopsys.com/cgi-bin/proto/pdfdla/pdfr1.cgi?file=vdk-lava-wp.pdf

もちろん、VDKはこれらの外部インターフェイスだけでなく、ハードウェア・モデル内部の任意の部分に対してシミュレーション、故障注入、モニタを実行できます。 これらの機能を使用することにより、テスト・シナリオを拡張してハードウェアでは再現が難しいコーナー・ケースをカバーしたり、故障注入シナリオを拡張してハードウェアの障害/過渡エラーを模倣したりできます。

カテゴリートップ