ソフトウェア開発において、テスト自動化に取り組むことは近年ますます重要となっています。
テスト自動化は、手間と時間の削減だけでなく、品質向上や開発プロセスの迅速化にも寄与する重要な要素となっています。

しかし、組込み開発においては、
「メリットがあるのは知っているけどハードルが高そう」
「できたらいいけど、どうしたらいいかわからない」
「検討してみたけど大がかりになってしまって諦めた」
など、お悩みを抱えるテストエンジニア、ソフトウェアエンジニアは少なくありません。

今回は、自動化がなぜ必要になっているのか?組込み開発のテスト自動化はなぜ難しいのか?に焦点を当て、具体的なアプローチや考え方についてご紹介していきます。

CONTENTS
  1. 近年の自動化を取り巻く環境
  2. 組込み開発におけるテスト自動化の課題
  3. テストを自動化してみよう
  4. まとめ
 

近年の自動化を取り巻く環境

近年のソフトウェア開発事情は急速に変化しています。
2022年に83か国で行われたアンケートの設問「あなたの組織はどのタイプの開発/テストモデルまたは原則に沿っていますか?」の結果から見ても、アジャイル開発が86%、DevOpsが38%となっており、これらが主流となっていることが明らかです。
一方で、2020年時点では32%であったウォーターフォール開発はわずか17%まで減少しており、その減少傾向が特に顕著です。

State of Testing™ Report (テストの現状調査レポート) 2022 より作成

日本はどうか?というと、海外に比べまだ導入率は低いものの、ウォーターフォールからアジャイル開発にシフトする動きは確実に進んでいるようです。メインはウォーターフォール、一部のプロジェクトはアジャイルという方も増えてきたのではないでしょうか?

アジャイル開発は短い期間(一般的に1~4週間)で「要件定義」「設計」「開発」「テスト」「リリース」とイテレーション(スプリント)を繰り替えします。柔軟で素早い改善を可能にする一方で、プロジェクトの進行に伴いテストの範囲が広がり、時間不足に陥りやすい課題が浮き彫りになっています。
これに対処するためには、適切なテスト自動化の導入や効率的なテスト戦略の構築が求められます。

では、これまで手作業で行っていたテストを自動化に置き換えている割合はどのくらいか?というと、すでに67%は自動化を実現しているという結果でした。
さらに、手作業で行っていたテストの「約50%」「約75%以上」「すべて」を自動化で代替えしていると回答した合計は46%にものぼり、世界的には自動化が進んでいる傾向が読み取れます。

State of Testing™ Report (テストの現状調査レポート) 2022 より作成
 

組込み開発におけるテスト自動化の課題

私たちハートランド・データは、2018年ごろから組込み開発向けのテスト自動化ソリューションを提供しており、お客様から様々な悩みを伺っています。
テスト自動化に取り組みたい理由として、よく次のようなことをお聞きしています。

  • アジャイルへのシフトに伴って迅速なリリースを求められている。
  • テスト期間が長く取れないので、夜間・土日に自動テストを行ってリードタイムを短縮したい。
  • ソフトウェアの開発規模に比例してテスト規模が大きくなり、リソースが足りない。
  • 仕様の多様化、複雑化によりテストが属人化してしまっている。
  • 単純作業を自動化して、技術や品質の向上に時間を割きたい。
  • リモートワークでもテストを継続したい。

組込み開発のテスト自動化はなぜ難しい?

さて、これらの課題を解決するためのテスト自動化を考える際、最初に直面するのが組込み開発の特異性です。
「テスト対象をどう操作するか」「センサーに外部環境をどう与えるか」「結果をどう計測するか」といった具体的な手法について考えると、組込み開発ではハードウェアが物理的に存在するため、人の手で機器を物理的に操作し、計測することがどうしても必要となってしまいます。

アプリケーション開発ではPCやWEB、モバイル環境でのテスト自動化が比較的容易に実現できるようになってきていますが、組込み開発の場合、これらの物理的な要素が絡むため、複雑さが増します。そのため、組込み開発のテスト自動化は一般的に難しいとされています。

では、組込み機器の「操作」や「計測」をどうすれば自動化できるのでしょうか。下記にいくつかアイディアを挙げます。

自動制御装置(ロボット)の開発
特定の機器を操作することが可能な自動制御装置を開発し、機器の物理的な操作を自動化する手法です。人の手で行っている作業をそのまま自動化することができます。高度なロボットの制御技術が必要になるため、実現のハードルはかなり高い手法となります。スマートフォンやタブレットの液晶など、特定機器の操作から判定までをシステム化した製品・ソリューションも存在します。 

仮想環境(シミュレーター)の構築
ハードウェアを仮想的に模倣した環境を構築し、テストシナリオをシミュレーター上で実行することで、物理的な機器の操作をシミュレートします。柔軟にテストケースを作成できるほか、シナリオの再現がしやすいというメリットがあります。一方で、実機の挙動を完全に模倣できるわけではないので、現実で起こりうる複雑な問題が再現できない場合があります。

リモートアクセス/リモートセンシングの構築
VPN上にターゲットボードを設置し、クライアントPCからの遠隔操作、WEBカメラやセンサーを使った遠隔監視するシステムを構築します。実機が手元にある必要もないので、テレワークや離れた拠点でのテストも可能になります。ただし、火災やセキュリティのリスクが発生する可能性があり、十分な対策が必要です。

スクリプトによる自動操作
テストスクリプトを作成し、UARTやイーサネットなどを介してターゲット機器を自動で操作します。機器側にI/Fが存在しない場合や、ソフトの変更が難しい場合は実現が不可能です。

いずれにせよ、自動テストのためのアプリやハードが必要になるため、1から自社開発となると相当なコスト(費用・工数)が必要になります。
また、コストをかけて開発した場合、「他の機器に流用できないともったいない」と汎用性まで考えはじめると、さらに複雑化します。

 

テストを自動化してみよう

前述した課題のために、「自動化したいけど全然検討が進まなくて・・・」という声もよく聞きますが、まず一歩踏み出すために、あれこれ悩みすぎず「すばやく」「かんたんに」「なるべくコストをかけず」、いつものテストの何かひとつだけでも自動化できることを探してみてはいかがでしょうか。

何から手を付けていいかわからない、どんなツールを使えばいいかわからない・・・という方はこちらの記事「テスト自動化ツールまとめ ~どれを使えばいいのか書いてみた~」も参考にしてみてください。

組込み開発向けテスト自動化プラットフォームAUTOmeal (オートミール)

AUTOmealは組込み機器の「自動制御」「自動計測」を実現するプラットフォームです。
自動テストを始めるために必要な機能がパッケージ化されているので、自動テスト環境を素早く、かんたんに構築することができます。

テストユニットには、お手頃で手に入りやすいRaspberry Pi 4を使用します(お手持ちのものでもOK)。
ターゲット機器の制御/計測を実現するための拡張I/Fボードが選択式になっているため、ソフトウェアの変更や機器が追加になった際には付け替えが可能。様々な組込み機器に、かんたんに適用できます。

テストスクリプトはエクセル形式のフォーマットに入力するだけ。複雑な手順のテストスクリプトもノーコードで生成することができます。
また、テストスクリプトはPython形式なので、自由にコーディングすることも可能です。

 

まとめ

日々開発が忙しい中で、テスト自動化を自力で実現しようとすると大変で、後回しになりがちです。しかし、実現できると効率の向上、一貫性のあるテストの実施、早期のバグ発見、リソースの最適化など、さまざまなメリットが見込めます。

ぜひ、できるところからテストの自動化をはじめてみてはいかがでしょうか。

 


【 無料でみれる! 】
組込み開発向けテスト自動化プラットフォームAUTOmeal デモ動画

AUTOmealによる環境構築から実際の自動テストの様子まで、基本的な使い方をデモンストレーションいたします。ぜひ実動作をご覧いただき、その効果をご確認ください。

お申し込みはこちら!