前回で「動的テストの自動化を考える」が最終回を迎えたばかりのところで恐縮なのですが、「最終回のおまけ」として、実環境のターゲットが実際に「パイプライン」で動作するところを動画でお見せしたいと思います。「ホントに自動化して動いているの?」とあるお客様からご指摘をいただいたのと、弊社内からも「動画で見たい」との声がありましたので、最終形を動画でお見せしたいと思います。

デモ環境について

今回ターゲットとするデモ機ですが、弊社の定期セミナーでお馴染みのデモ機を使用します。このデモ機は、言ってみれば車のコーナーセンサーを模していて、基板上の距離センサーが検知した距離に応じて、BEEP音を鳴らしたり、距離の近さをLEDで表示するようなデモ機となっております。

デモ機のテスト自動実行処理について

距離センサーを変化させるには、物理的な変化を与える必要があります。しかしながら、物理的な動作を伴う自動テストでは、それこそ、ロボットが必要になりますので、ここはソフトを一部変更してデモ機内でテストを自動で実行できるようにします。図1はもとのデモ機のタスク構成となります。

図1: デモ機のタスク構成

コンソールタスクを含め計6個のタスクで構成されています。HW監視タスクがセンサー類の検知を行っていますので、物理操作を発生させずにテストを行うには、このHW監視タスクの代わりになるタスクが必要になります。そこで、図2のように、HW制御タスクをテスト制御タスクで置き換えます。テスト制御タスクは、コンソールタスクを通じて外部から指示を受け、それをテスト制御タスクに渡すことでテストの自動実行を実現します。

図2: テスト制御タスクを使用したタスク構成

Jenkinsによる動的テスト自動化の動画

今回のデモ機を対象にJenkinsのパイプラインのJobを動かしたときの動画がこちらになります(全画面表示推奨)。一連の動的テストの自動化を実現しているのをご確認いただけると思います。

最後に

いかがでしたでしょうか?動的テストの自動化の一連の動きを確認いただけたでしょうか?動的テストの自動化に必要な処理をパイプラインで記述し、かつJenkinsfileに落とし込んでGitに置いておくことで、動的テストの自動化のスクリプトのバージョン管理ができるだけではなく、個々のフェーズで実行する処理内容の保守性が高まっていることを実感していただけたと思います。

今回、デモ機側のソフトに手を入れて自動でテストを実行できるような仕組みを作りましたが、やはり、組込み機器自体のテストの自動化はいろいろ壁がありそうです。特に、物理操作をどのように実現するかは永遠のテーマになるかもしれません。また、それ以上に、テストケースを如何に簡単に作れるかも今後の課題になりそうです。CI環境でいつでも自動でなんでも実行できる環境を作ったとしても、そこで流すテストケースの中身が薄かったり、テストケースを作るのに時間が掛かっているようだと、CI環境でテスト環境を作る意味が薄れてしまいます。

よく、弊社のお客様と自動化の仕様についてお話しすることがありますが、「テスト自動化」用のテストケースのうまい作り方はないか、という話題がよく出て来ます。

 「文章からパラメータを素早く取り出せないか」
 「エクセルにパラメータを記述するにも数が多すぎるので素早く入力できる方法はないか」
 「パラメータの入力ミスをチェックしてくれるUIはないか」

といった様々な懸念や課題を皆さん感じられているようです。

当然、弊社も然りで、自動テストシステムは、使いやすい自動でテストする環境を提供するのもさることながら、素早くテストケースを作ることができるシステムをあわせて提供して行かないと、真の効率化は目指せないと考えています。

今後は、自動テストシステムに適したテストケースの作り方は何かをテーマに、はやくて、やすくて、うまいテストケースの作り方を見出し、ハートランド式テストケース作成手法として情報発信して行きたいと考えています。