組込み系版 現場の失敗から学ぶ自動テストの設計プロセス

株式会社AGEST QA事業本部
アドバンスドテストソリューション部
アドバンスドソリューショングループ○ 林 尚平

■ Contents➢ 概要➢ 組込み系製品の自動テストの必要性➢ 組込み系製品のテストの特徴➢ 自動テストの導入を成功させる４つのプロセス➢ TestArchitectを使用した組込み系自動テスト➢ まとめConﬁdential © 2023 AGEST All rights reserved.

2

■概要
組込み系の自動テストは評価対象に合わせた自動化環境を構築する必要があるため、業務系に比べて難易度が上がります。
自動テストの知見がなく中で進めた結果、導入に失敗し時間と費用が無駄になることがあります。

実際に現場で起きた問題を踏まえ、成功するための組込み系の自動テストの設計プロセスを説明します。

Conﬁdential © 2023 AGEST All rights reserved.

3

■組込み系製品の自動テストの必要性
業務系システムと同じく組込み系製品も品質確保とリリース期間短縮などを目的とした自動テストの導入検討が行われています。
組込み系は派生機種が多い製品A1製品A2製品A3

製品B1

製品B2

派生機種が多くソフトリリースとなった際は評価工数が膨大になる
安心・安全にかかわる機能もあるため、評価は手が抜けない

製品C1製品サイクルが比べて長い

Conﬁdential © 2023 AGEST All rights reserved.

4

■組込み系製品の自動テストの特徴

ネットワーク
組込み系製品サーバ

自動化ツール

シミュレータ

組込み系のテストは実製品を使わずシミュレータ機器を使用することがあります。
自動テストを行う際には業務系システムと異なりPCとテスト機材との連携が必要です。
Conﬁdential © 2023 AGEST All rights reserved.

5

■自動テストの導入を成功させる４つのプロセス
組込み系自動テストの導入プロセスを紹介します①計画：方針検討、テスト分析、自動化ツールの構成検討、自動テストの計画作成②設計：自動化機能の実装、自動化範囲の検討③実施：スクリプト作成、実行確認④振り返り ：実績検証と改善
このプロセスを実際にあった現場の失敗事例を踏まえ紹介します。
※全ては説明できないのでポイントを絞って説明します。
Conﬁdential © 2023 AGEST All rights reserved.

6

【①計画】自動テストの方針検討
自動テストの目的、方向性を決め成功基準を作ります。
その方向性で自動化した場合の成功基準を設けることでやるべきことを明確にします。

以下の成功基準は数十機種の製品のリリース確認の効率化を想定した「長期運用できる自動テスト」を目標とした成功基準になります。
No

成功基準

① 1回の実行で手動に比べ最低３０％以上の効率化/工数削減ができる② 必要な自動化するテストが検討できており自動化できている③ シナリオが連続で正しく実行出来ること④ 結果の誤判定などなく全て正しく実行出来ること⑤ 実行から結果確認まで自動化できること⑥ メンテナンスを考慮した設計ができていること
Conﬁdential © 2023 AGEST All rights reserved.

7

【①計画】テスト分析
組込み系の自動テストでは業務系と異なり、自動化ツールにテストに必要な機能が揃っていないことが多い。
必要な機能を作成するため、テスト内容を理解しテストに必要な機能や手順などを把握することが重要です。
テストでの実運用での使われ方などを把握し、運用を簡素化するための自動化環境にする必要があります。

【現場の失敗例】
運用する機種数が実運用で想定を超えた【現場の失敗例】
テストを分析しないNo
内容
１ テスト内容の調査(条件設定、手順実施、結果確認やテスト機能の洗い出し）
２ テスト機材の調査(テストツール、シミュレータなど)
３ 実運用のイメージ(実行タイミング、派生機種数など)
４ 設定内容の調査(機種の区別、機材の連携)
Conﬁdential © 2023 AGEST All rights reserved.

8

【①計画】自動化ツールの構成検討
分析した内容から自動テストの構成検討を行います。
必要なテストを自動化を実現することができる自動化ツールと必要な機能を検討する。
サーバ【現場の失敗例】
複数のツールを連携させて自動化し構造が複雑になる

サーバ連携の機能制御

組込み系製品

自動化ツール
実行結果のログ／液晶パネルの画像の精度の高い結果確認

組込み製品、シミュレータの自動化ツールからの制御シミュレータ【運用の検討】
・仕向け、機種毎の設定内容
・実行エラー時の原因特定方法
・運用しやすいシンプルな構造
Conﬁdential © 2023 AGEST All rights reserved.

9

【①テスト計画】 自動化の進め方を決める
組込み系の自動テストでは実際にスクリプト実行を行った後になってから、数多くの問題が判明することがあります。
・シミュレータなどテスト機材との連携ミス
・結果確認の精度の不安定さ
・運用時のエラー発生時の原因特定の困難さ【現場の失敗例】
一度にスクリプトをすべて作成した後、発覚したミスの修正工数が膨大になり、修正できなくなった

一度に広範囲を自動化する計画ではなく、スモールスタートで問題を潰すことが重要
1M

2M

3M

4M

5M

1W 2W 3W 4W １W ２W ３W ４W １W ２W ３W ４W １W ２W ３W ４W １W ２W ３W ４W １W

6M
２W

３W

7M
４W

１W２W３W

４W

計画
ツールの設計
自動化範囲の選定
実施
振り返り
Conﬁdential © 2023 AGEST All rights reserved.

10

【②設計】自動化ツールの機能設計＆作成
分析した内容から自動テストの構成検討を行います。
必要なテストを自動化を実現することができる自動化ツールと必要な機能を検討する。
No

内容【現場の失敗例】
実施エラー時にログ出力がされず原因特定できない

設計内容(1) 機能の追加：製品制御、シミュレータ制御

ラズパイを使った機能設計(試験に必要な操作)【現場の失敗例】(2) 機能の追加：前提条件の設定

ラズパイを使った機能設計、共通関数の設計自動化する(3) 期待結果の確認方法：ログファイル操作の機能設計(4) 期待結果の確認方法：画像判定

デジカメ画像の液晶パネルの画像判定の機能設計(5) 運用に必要な設定内容：機種別の判定パラメータ

iniファイルのパラメータ設計(6) 運用に必要な設定内容：エラー発生時の原因特定

エラーログの設計、１つの自動化ツールでの一括制御

自動化できる機能だけ

Conﬁdential © 2023 AGEST All rights reserved.

11

【③実施】スクリプト作成、実行確認

実施のプロセスではこれまでのプロセスで決定した自動化方針や詳細内容を元にスクリプトを作成する。
・スクリプトを作成する・スクリプトを実行して確認する

１本１本のスクリプトでは正常に動いても、纏めて実行するとNGとなる場合がたびたびあります。

Conﬁdential © 2023 AGEST All rights reserved.

【現場の失敗例】
機材の連携でトラブル続発【現場の失敗例】
期待結果の精度の低さ

12【④振り返り】 実績検証と改善
導入前に定めた成功基準の考察
No

成功基準

結果

結果詳細

① 手動に比べ３０％以上の効率化/工数削減ができること◎ 40％～80％の効率化が可能② 必要なテストが自動化できていること〇 最大70％の機能は自動化可能③ 実行途中で処理が止まらないこと△ 設定ミスで実行エラーが頻発④ 実行結果の誤判定がないこと△ 設定ミスで実行エラーが頻発⑤ 実行から結果確認まで自動化できること◎ 一連の動作は全て自動化できている⑥ メンテナンスを考慮した設計ができていること◎ 自動化に必要な対策は完了【現場の失敗例】
振り返りをせずトラブルを抱えながら運用を続ける

定めた成功基準と実績との比較を行い、基準をクリアための問題を特定する
Conﬁdential © 2023 AGEST All rights reserved.

13

【まとめ】組込み系自動テストの成功条件
条件①1つの自動化ツールで必要な機能が揃っていること
・組込み製品やシミュレータ機器を制御できること
・Webブラウザ、モバイルなどサーバとの連携ができる機能があること
・テスト項目の前提条件設定、手順実施、期待結果確認が自動化ができること

条件②運用を考えた自動化環境であること
・実行担当者にも理解しやすいシンプルな構造であること
・自動テストを１つのツールで一括制御できること

AGESTのプロダクトであるTestArchitectを使うことで、上記の条件を満たせることが確認できました。
Conﬁdential © 2023 AGEST All rights reserved.

14

TestArchitectを使用した組込み系自動テスト
サーバ

組込み系製品ラズベリーパイ
ハーネス機能画像判定技術
LOG

シミュレータPICTURE

TestArchitectの機能

特徴

ハーネス機能ラズパイで制御する機能を取り込み、TestArchitectで使用できる豊富な自動化機能

モバイルやブラウザでサーバと連携が可能、Windowsアプリなども自動化

豊富な画像判定技術

期待結果の画像の正確な判定が可能

シンプルな自動化システム

１つのツールで一括管理できるため、設定ミスの減るスマートな構造

Conﬁdential © 2023 AGEST All rights reserved.

15

【TestArchitect】KeyPointによる画像判定
ピクセル単位の一致ではNGになる画像も、KeyPointを使えば特異点の一致確認をするため画像比較が可能。
確認方法

判定方法

精度

画像判定

ピクセル単位の一致

KeyPoint

抜き出した特異点の一致 高い
比較元画像

低い

デジカメで取得した画像は位置ずれ、光の加減などより一致は難しい

実施結果の画像

KeyPointを使うと特異点の一致で判定を行うため確認精度が高い

Conﬁdential © 2023 AGEST All rights reserved.

16

【TestArchitect】ハーネス機能を使った制御
ハーネス機能を使えば自動化機能を作成することができます。
ラズパイを使用した機能を作成することで製品の制御も可能になります。

ラズベリーパイ

ラズパイを使用したツールと自動化ツールの連携

組込み系製品
ラズパイを使用したツール

シミュレータ

自動化ツール・複数のツールでは構造が複雑
・エラー時の原因特定が困難
・運用時には高いスキルが必要

TestArchitectのハーネス機能を使用
ハーネス機能・ワンツールのため構造が簡単。
・原因特定が容易で運用しやすい

ハーネス機能で製品制御する機能を作れば、長期間の自動テストの運用が可能になります。
Conﬁdential © 2023 AGEST All rights reserved.

17

【TestArchitect】自動化できる範囲が広い
組込み系では製品の操作だけでなく、サーバとの連携も必要になります。

TestArchitectではWindowsアプリだけでなく、Webブラウザ、モバイルでの制御も自動化することができます。
そのためサーバとの連携が必要な組込み系製品も自動化することができます。
サーバ・サーバと連携する製品の自動化が可能
・ワンツールで一連のシナリオテストが可能
組込み系製品Windows
アプリ

Conﬁdential © 2023 AGEST All rights reserved.

18

まとめ
組込み系製品の自動化テストの注意点は以下になります。
No

組込み系の自動テストの注意点① 運用を考えた自動テストの設計を行うこと② １つのツールで自動テストを一括管理し、構造をシンプルにすること③ 前提条件設定、実施手順、期待結果の確認などテストに必要なものは自動化すること④ コスト削減だけに着目せず必要なコストは掛けること⑤ 自動テストの知識や経験を持った技術者をツール開発に参加させること

組込み系製品の自動テスト成立には自動テストの知識と運用を考えた自動化設計とそれを実現する自動化ツールの選定が重要です。
Conﬁdential © 2023 AGEST All rights reserved.

19