継続的なテスト⾃動化のための取り組み事例
ソフトウェアテストシンポジウム 2020 新潟
⼭内 佑⼆
オムロン株式会社(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

はじめにテストを⾃動化したのに、次の開発プロジェクトでは、・テストが動かない・NGが発⽣問題が発⽣している中、納期通りテストを完了させないと。。
(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⾃動テストの現状
画像センサのシステムテスト（性能、負荷、タイミング）を⾃動化
・スクリプトを組み合わせることで、テスト追加可能・複数のテストを連続したテストセットを実⾏
テストセット-テスト１-スクリプトA-テスト２-スクリプトB-スクリプトC(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

テスト⾃動化の経緯
機能追加、シリーズ拡充をしている商品• 決まったテストの繰り返し– 前回Ver.との⽐較– テスト対象毎に同じテストの実施• 実施ミス、やり直し

性能、負荷、タイミングテストを対象とし、テスト実施の効率性と信頼性を求めて⾃動化(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⾃動テストのプログラム
テストセット
テストデータ
設定データ-テスト１-スクリプトA-テスト２-スクリプトB-スクリプトC

期待結果
⽐較テスト結果

実⾏結果

結果/⽐較ツール

実⾏ツール

テストセット︓
テスト︓
スクリプト︓

⼀度に実⾏するテストの集まり
テストケースの条件を含めた実⾏単位
処理、コマンドの集まり(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⾃動テストのシステム構成
実⾏ツール
結果/⽐較ツール
設定/表⽰機器

電源装置

テストコマンド

カメラ/照明Ethernet

トリガ、コマンド

制御機器（PLC）

周辺機器
USBメモリSDカード
HDD/SSDNAS

計測値、判定結果

Parallel I/O
RS232C

画像センサ
テスト対象(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

開発プロジェクトの状況
⾃動テストの規模が増⼤・テスト対象の追加

機能︓多くの画像処理機能とそれらの補助機能
型式︓性能スペック、形態違いの商品バリエーション・システム構成の多様化

何と︓制御機器（PLC）、設定/表⽰機器、ロボット
何で︓通信I/F

製品リリースのサイクル短縮化
リリース回数の増加、納期短縮

開発プロジェクト毎の⼈の⼊れ替わり
製品知識、スキルのばらつき(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

課題
発⽣した問題
1. 新しいテストをどう追加すべきかわからない
2. テスト環境の組み替えの⼿間
3. テスト環境の設定ミスによる後戻り
4. テスト結果の確認に時間がかかる
現場の負担を少なくすることで、継続的にテスト⾃動化を⾏いたい(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⽅針
テストは複数の⼯程から成り、個々に問題が発⽣している
個別最適 →

全体最適1.新しいテストをどう追加すべきかわからない

計画

設計

2.テスト環境の組み替えの⼿間

実装

3.テスト環境の設定ミスによる後戻り

実⾏

4.テスト結果の確認に時間がかかる

⽐較確認

分析

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

戦略
価値の最⼤化• ⽣産性と品質の向上• 持続的な⾃動テスト（価値向上）

必要な⼯数
•

新機能、システムへの追従•

テストケースの追加•

⾃動テストの改善-効率性、信頼性•

滞留している⼯数＋ • メンテナンスコスト•

⼿順ミス、トラブル•

結果の確認、分析•

属⼈的な運⽤チーム資産として運⽤(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

施策
1. テスト設計での保守性の改善
2. 実⾏効率を上げる計画
3. ⼿順ミス、トラブル回避
4. テスト結果の信頼性の改善(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

１.テスト設計での保守性の改善
スクリプトを理解しやすく、再利⽤できるようにする
FROM・⼀つのスクリプトに複数の処理が⼊っている
・他のテストでスクリプトが再利⽤されていない

スクリプトの変更に時間がかかるTO・スクリプトを分割し、理解しやすくする
・共通処理を部品化(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

スクリプトを分割し、理解しやすくする•••

単純な処理に分割する
⽬的に沿った構造でグループ化する
他の処理とできる限り依存しないようにする① 設定データ読込＆再起動② テストデータ読込③ 実⾏（テストケース１）④ 実⾏（テストケース２）⑤ 結果の⽐較⑥ 結果の記録⑦ 初期データ読込＆再起動

1. テスト環境のセットアップ① 設定データ読込＆再起動② テストデータ読込
2. テストケース実⾏① テスト条件のセットアップ② 実⾏③ 結果の⽐較④ 結果の記録⑤ テスト条件のクリーンアップ
3. テスト環境のクリーンアップ① 初期データ読込＆再起動
4. 結果のまとめ

条件変更
繰り返し

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

共通処理を部品化••

共通処理 → 個別実装をしないようにライブラリ化
データ、条件をスクリプトから分離 → テストの拡充制御スクリプト1. テスト環境のセットアップ① 設定データ読込＆再起動② テストデータ読込
2. テストケース実⾏① テスト条件のセットアップ② 実⾏③ 結果の⽐較④ 結果の記録⑤ テスト条件のクリーンアップ
3. テスト環境のクリーンアップ① 初期データ読込＆再起動
4. 結果のまとめ共有スクリプト••

データ読込＆再起動
データ読込

••
•

実⾏
結果の⽐較
結果の記録

⼊⼒データ••
•

設定データ
テスト環境
テスト条件

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

２.実⾏効率を上げる計画
効率のよいテスト順序、実⾏時間を⾒積もる
FROM

・テスト項⽬毎に順番に実⾏・テストの完了時期が⾒積もれない

度重なるテスト環境の変更、完了待ちが発⽣する
TO

・テスト環境毎のテストセット作成
・テスト実⾏時間を考慮した計画(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

テスト環境毎のテストセット作成••

⼀気に多くのテストを実⾏できる
途中でNGが出てもテストを続⾏できるようにする

テストセット（項⽬１）-テスト１（環境A）-テスト２（環境B）
テストセット（項⽬２）-テスト３（環境A）-テスト４（環境B）-テスト５（環境C）

テストセット（環境A）
-テスト１
-テスト３
テストセット（環境B）
-テスト２
-テスト４
テストセット（環境C）-テスト５(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

テスト実⾏時間を考慮した計画
テスト対象の組み替えが必要→ ⼿動

カメラ型式違い

カメラ複数台接続

⽇中に組み替え必要なテスト

テストセット１

２

３

時間のかかるテストは夜中に回す

４５(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

３.⼿順ミス、トラブル回避
誰でも正確なテストができるようにする
FROM

・テストの度に機材を集めて、テスト環境を再構築
・テストに必要な設定が分かりづらい

テスト失敗による後戻りが発⽣する
TO・機材をひとまとまりに固定し、複雑な接続をなくす
・テスト環境チェック⽤のスクリプトを導⼊(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

機材をひとまとまりに固定し、複雑な接続をなくす• 複雑な配線• 設置スペースが必要• 付け替えによる断線

配線済の状態を保持する(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

テスト環境チェック⽤のスクリプトを導⼊• 接続機器、テスト条件が正しいことをチェック• NGであれば、ユーザに警告を出す
1. テスト環境のセットアップ① 設定データ読込＆再起動② テストデータ読込③ テスト環境チェック
2. テストケース実⾏① テスト条件のセットアップ② 実⾏③ 結果の⽐較④ 結果の記録⑤ テスト条件のクリーンアップ
3. テスト環境のクリーンアップ① 初期データ読込＆再起動
4. 結果のまとめ(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

４.テスト結果の信頼性の改善
テスト結果のエビデンスを適切に残す
FROM

・NG原因が不明、OKの判定処理がわからない仕様かどうかの切り分けに時間がかかるTO・スクリプトを分割し、理解しやすくする
・途中経過のデータを残す(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

スクリプトを分割し、理解しやすくする
・独⽴性の⾼い、⽬的に沿った構造にする– どんな条件でテストされたのか– どんな判定、結果を⽐較したのか① 設定データ読込＆再起動② テストデータ読込③ 実⾏（テストケース１）④ 実⾏（テストケース２）⑤ 結果の⽐較⑥ 結果の記録⑦ 初期データ読込＆再起動

1. テスト環境のセットアップ① 設定データ読込＆再起動② テストデータ読込
2. テストケース実⾏① テスト条件のセットアップ② 実⾏③ 結果の⽐較④ 結果の記録⑤ テスト条件のクリーンアップ
3. テスト環境のクリーンアップ① 初期データ読込＆再起動
4. 結果のまとめ

条件変更
繰り返し

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

途中経過のデータを残す
・テスト結果のトレーサビリティの確保
テストセット
テストデータ設定データ1.

2.

3.
4.

・ソフトVer.
・テスト対象
・実施者
・メモ

テスト環境のセットアップ①
設定データ読込＆再起動②
テストデータ読込③
テスト環境チェック
テストケース実⾏①
テスト条件のセットアップ
②
実⾏
③
結果の⽐較
④
結果の記録
⑤
テスト条件のクリーンアップ
テスト環境のクリーンアップ①
初期データ読込＆再起動
結果のまとめ・実⾏ログ・⼀時データ
・実⾏時間

期待結果
⽐較

テスト結果

実⾏結果

・期待結果
・実⾏結果
・判定基準

紐づけ

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⼯夫• タスク管理• 構成管理• ⼈材教育(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

タスク管理・優先度、課題を共有する
・テストの設計、実装と並⾏して、改善の計画を⽴てる
・改善はスコープを絞って開始

改善計画

設計

実装

実⾏

⽐較

確認

分析

(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

構成管理• 実施した環境が再現できる• 仕掛り、暫定、恒久を明確にする• 変更履歴を残すBinMasterDoc

Release

Src
ScriptDevelop

DataFeature(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

⼈材教育・⾃分で実施し、⼿順書を更新する
・⾃動テストに関わる⼈を増やす(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

結果
1. 新しいテストをどう追加すべきかわからない→⾒て理解するのが容易な構造で、テスト追加のための⼯数を削減、⼿順化も可能になった

2. テスト環境の組み替えの⼿間→テスト環境の組み替えや完了待ちを最⼩限にすることで、⾃動テストの稼働時間を効率化できた

3. テスト環境の設定ミスによる後戻り→実⾏ミスやトラブルを回避し、テスタからのQ＆A数も削減された

4. テスト結果の確認に時間がかかる→妥当性チェックのためのテスト再実⾏回数やスクリプトの分析⼯数が少なくなり、⼯数を削減できた(C) Copyright 2020 OMRON Corporation. All Rights Reserved.

まとめと今後の展開
・まとめ

肥⼤化している⾃動テストのメンテナンスコストを下げ、実⾏効率を上げることで、今後も無理なく⾃動テストの運⽤を継続できるようになった・今後の展開-⾃動テスト環境のテスト⼯程以外への展開-遠隔テスト、検証の検討(C) Copyright 2020 OMRON Corporation. All Rights Reserved.