空調冷熱機器の熱源機開発におけるマイコン変更時の同一性検証（単体試験）の自動化
和歌山支所

機器組込ソフトウェア技術部

機器技術第二課・小門希・目方徹・田井一

要旨

空調機等，冷熱システム機器の製品開発を開始して以

この課題を解決するため，winAMS という自動試験実降，性能改善やマイコン生産中止により，マイコン変更行ツールに着目した。本ツールは，マイコン変更前のソー対応が数年周期で発生している。マイコン変更に伴い，スコードより，自動で試験パターンの抽出，試験の実行コンパイラも変更となる。高級言語で書かれた同一の及び試験手順書の生成まで行なうことができる。さらに，ソースコードであっても，異なる機械語に翻訳されるた

その試験手順書を用いて，マイコン変更後のソースコー

め，マイコン変更前に動作が保証されていたプログラムドに対して自動で試験を実行し，結果判定を行なうこと

でも，マイコン変更後は保証できなくなる。

ができる。よって本ツールを用いて，マイコン変更時の当社では，マイコン／コンパイラ変更の際，マイコン同一性検証作業の効率化を図った。

変更前後でソースコードに変更が発生していない箇所に今回，空調冷熱機器の熱源機における，16bit マイ対しても動作保証するため，シミュレータを用いて全てコンから 32bit マイコンへのマイコン変更開発にて，手動で同一性検証を実施してきた。しかし，変更していwinAMS ツールの調査を実施し，本ツールを用いた同ない全てのソースコードに対して同一性検証を行なうに一性検証自動化の手順を確立し，マイコン変更開発で初は，ライン数が多く，多大な時間を要しており，開発しめて適用した。結果として，従来と同等の品質を保っている全ての機種に対して今後も周期的に作業が発生すたまま，同一性検証の工数を削減することに成功し，約るため，大きな課題となっていた。

17％の開発費用削減に繋げることができた。

40

1．まえがき
１．１

修正する必要がある。

背景

修正例：if（val==（int）0x8000）{

空調機等，冷熱システム機器の製品開発を開始して以降，性能改善やマイコン生産中止により，マイコン変更

このような差異は，マイコンメーカー側では保証されな対応が数年周期で発生している。マイコン変更に伴い，いため，開発側にてマイコン／コンパイラの変更前と変更後コンパイラも変更となる。高級言語で書かれた同一ので，プログラムが同様に動作することを保証する必要がある。

ソースコードであっても，異なる機械語に翻訳されるた

2．同一性検証め，マイコン変更前に動作が保証されていたプログラム
でも，マイコン変更後は保証できなくなる。
２．１

当社では，マイコン／コンパイラ変更の際，マイコンシミュレータを用いた手動試験（従来手法）

変更前後でソースコードに変更が発生していない箇所に対しても動作保証するため，シミュレータを用いて手動で同一性検証を実施してきた。しかし，変更していない全てのソースコードに対して同一性検証を行なうには，ライン数が多く，多大な時間を要しており，開発している全ての機種に対して今後も周期的に作業が発生するため，大きな課題となっていた。
今回，これらの課題に対して，空調冷熱機器の熱源機（以下熱源機）における，16bit マイコンから 32bit マイコンへのマイコン変更開発において，ツールを用いて，試験仕様書の自動作成及び試験を実施（同一性検証）す

図1．シミュレータを用いた手動試験る手法を適用した。さらに，一度作成した試験仕様書を再利用することによって，今後のマイコン／コンパイラ

図1にシミュレータを用いた従来の手動試験の流れの変更に対し，検証に要する工数削減を見込むことがでを示す。図1から，試験仕様書作成と試験実施の2つきる。本稿では，これらの手法について紹介する。の工程に分けられる。図2に 32bit マイコンにおける手動試験の例を示す。図２.（a）は1.2節で示した修正

１．2

コンパイラ変更によるソースコード翻訳の差異

前の構文に対する試験の例であり，図２.（b）は修正後マイコン変更に伴い，コンパイラも変更されることにの試験の例である。試験仕様書通りに変数に値を設定

よって，異なる機械語に翻訳される例を下記に示す。
例：signed int val;

し，1ステップずつプログラムを実行する。図２.（a）（val は 16bit 型）

において，条件文にあらゆる値を設定しても 19 行目がif（val==0x8000）{

TRUE にならず，20 行目が実行されないため，期待通TRUE;りの動作とならない。一方，図２.（b）では，条件文に}else{

0x8000 を設定すると，TRUE となり，期待通りの動作
FALSE;となる。このように手動試験では，マイコン／コンパ}イラ変更により，図２.（a）のような想定外の動作にならないかの検証を行なう必要がある。手動試験は，試

上記例のような構文において，val に 0x8000（-32768）

験設計と試験実施を手作業で実施する必要があるため，が格納されている場合，ベースの 16bit マイコンにおいライン数が多い場合，多大な工数が必要になる。ては，もちろん TRUE となる。しかし，32bit マイコン
では結果が FALSE となり，同構文にも関わらず動作が異なる。これは，32bit マイコンでは，if 文判定時に以下のように 32bit 長で判定されるためである。
左辺の val：符号ありのため，0xFFFF8000（a）試験結果（NG の場合）（b）試験結果（OK の場合）

右辺の 0x8000 ：符号なしのため，0x00008000

図2．手動試験の例

よって 32bit マイコンでは上記の if 文を右上のように

41

2.
2

自動試験（今回適用した手法）

表2．試験環境

３．１

OSWindows 10 Enterprise x64
バージョン 1909

プロセッサ

Intel（R）Core（TM）i7-8650U

RAM

32.0 GB

ソースコードの解析

最初に，Case Player で既存のソースコードの解析を行なう。その結果として図4に示すフローチャートが生成物として出力される。

図3．ソースコード解析ツールと自動試験実行

図4から，正確にプログラムの解析が行われているこツールを用いた自動試験とがわかる。

図3に今回採用した，ソースコード解析ツールと自動試験実行ツールを用いた自動試験の流れを示す。マイコン変更前の開発環境において，解析ツールを用いて対象のプログラムの解析を行なう。次に，自動試験実行ツー
ルに上記の解析結果を入力として，試験パターンを自動生成し，試験結果を出力する。さらに，マイコン変更後の開発環境において，同じ試験パターンを用いて試験結果を出力する。同一性検証における自動試験は，試験パターン作成及び試験実行の工数を削減できる。

3．ソースコード解析ツールと自動試験実行
ツールを用いた自動試験の手法

図4．生成されたフローチャート
３．２

本手法による同一性検証は，マイコン変更前と変更後試験パターンの生成の異なる開発環境において，プログラムが同じ結果にな

次に，Case Player によるソースコードの解析結果をることを検証し，品質を保証する。以下に自動試験の手もとに winAMS を用いて，試験パターンの生成を行なう。

順を示す。ただし，1〜4はマイコン変更前，5はマイ図5に生成された試験パターンがテスト分析エディタにコン変更後の開発環境で実施する。

よって展開された画面を示す。

1.マイコン変更前のベースソースコードの解析
2.試験パターンの生成
3.試験パターンの確認・修正
4.試験仕様書の作成
5.結果の出力（マイコン変更後の開発環境）
今回，16bit マイコンから 32bit マイコンへのプログラムの移植を行なった。表1に使用する試験ツールを，表2に試験環境を示す。

表1．試験ツール
ソースコード解析ツール

Case Player[1]v6.5試験自動実行ツール

カバレッジマスター winAMS[1]v6.5

図5．テスト分析エディタ

この画面では，0x8000 と 0x8001 が入力値として自動

42

100% になっていれば，試験仕様書の作成は完了となる。

で記載されている。追加でパターンを設定したい場合，入力値を手入力する必要がある。自動生成された試験パ
ターンによっては，Case Player による解析が十分に行われず，不完全な試験パターンが生成されることがある。
また，同一性検証という観点において，TRUE，FALSEを満たす試験パターン以外に，1.2節で述べたコンパ
イラ変更によるソースコード翻訳の差異についても検証を行なう必要がある。そのため，自動生成された試験パターンを確認し，不十分であれば手動で修正を行なう。
３．３

試験パターンの確認・修正

図6に新たな入力値として0を設定したパターンを示

図8．テスト実施結果

す。パターンと入力値を設定後，修正後の試験パターン３．５の作成を行なう。図7に修正後の試験パターンを示す。
生成された試験パターンに対して，試験することによっ結果の出力（マイコン変更後の開発環境）3.4節において作成された試験仕様書をマイコン変て，出力値が自動で入力される。

更後の開発環境を用いて試験を実施する。図9に結果を示す。図９.（a）の試験結果が NG であることから，0x8000 の解釈に差異が生じていることがわかる。これは，1.2節において述べたように，16bit マイコンと32bit マイコンでは，ビット数が異なるため，同一の結果を得ることができなかった。一方，図9.（b）では，試験結果が OK となっていることがわかる。これは，16bit マイコンから 32bit マイコンへプログラム移植時，キャスト演算子を用いて，ビット数の違いに対する処理を施したからである。

図6．パターンの追加（a）試験結果（NG の場合）（b）試験結果（OK の場合）

図9．テスト実施結果（32bit マイコン）
次章に本章で述べた手法を用いて，熱源機のマイコン

図7．修正後の試験パターンの作成

３．
４

変更開発にて，同一性検証を行なった結果を示す。

試験仕様書の作成

winAMS の機能の一つであるテストデータ分析エディタを用いて，テスト結果を確認する。図8に，試験結果，網羅率を示す。テスト結果が全て OK で，かつ網羅率が434．結果

手動試験となった。今回のマイコン変更開発では，本課題への対策の検討／実施を行なった場合の開発スケ

本稿で採用した手法を用いて，16bit マイコンからジュールへの影響が不明であったため，開発中には解決32bit マイコンへのプログラムの移植を行なった。表3

できなかった。その後の調査で winAMS 適用率の低さに結果を示す。の主な原因は以下の3点であることがわかった。
1.C 言語規格である C99 への対応不十分

表3．同一性検証結果
手動試験（従来手法）

手法
関数の合計

2.試験対象に戻り値を返す下位モジュールが存在
3.H／W からの応答を期待する下位モジュールが存在

自動試験（適用手法）

2238[個]

適用した関数 [ 個 ]

1439

799

1人月あたりの進捗関数 [ 個 ]267476

5.1

C 言語規格である C99 への対応不十分

1点目の課題について，コーディング規約では ESCRVer.3.0（C99 に対応）に従うことになっているが，対象製品は派生開発がメインであり，過去資産を流用する

表3から，試験対象の合計件数は 2238 件であり，自ことが多く，ソースコード全体として C99 に対応でき動試験の適用件数が 799 件であることがわかる。これは，ていないのが現状である。この課題を解決するためには関数や変数の構造によって，自動試験を適用すること過去資産流用時に現在のコーディング規約に沿うようリが困難であると判断した関数については，従来の手動ファクタリングする必要がある。

試験を適用したからである。また，1人月あたりの進5.2捗関数は，1人月を 160 時間としたとき，それぞれ手動・試験対象に戻り値を返す下位モジュールが存在

自動試験にて完了した試験項目（関数）の個数を示す。

2点目の課題は，戻り値を返す下位モジュールが存図 10 に自動試験適用による工数削減結果を示す。図 10在する場合，適用が困難である。理由は，下位モジューは自動試験を適用した 799 件の試験に対して，従来手法

ルが任意の値を応答する試験パターンを手動で作成すで実施した場合の推定値と本手法で実施した場合の実測るため。図 11 に戻り値を要求する下位モジュール例を値の工数を示す。従来手法と適用手法を比較した結果，示す。図 11 に示すような戻り値を要求する下位モジュー削減率は 44% となった。

ルが2つ存在する場合，それぞれ TRUE／FALSE となる試験パターン設計を手動で行なう必要がある。

図 11．戻り値を要求する下位モジュール例

図 10．工数削減結果
5.3

H／W からの応答を期待する下位モジュールが存在

3点目の課題は，H／W，マイコンからの応答依存する5．課題への対応下位モジュールが存在する場合も適用が困難である。理由は，シミュレータでは再現不可能なため。これらの課題を熱源機のソースコードに winAMS を適用するにあた

解決する方法としてスタブ関数と呼ばれる代替モジュール

り最も大きな課題は自動試験の適用率の低さである。前を使用することが考えられる。下位モジュールをスタブ関

項の結果から自動試験を適用できたのは全体の 36% 程数に置き換えて疑似的な応答を返すことで下位モジュール度であり3分の2は winAMS を使用せず従来手法でのの実際の処理によらず期待する結果を試験パターンに組み446．むすび込むことができ，自動試験の適用が可能となる。
5.4

改善後の工数削減効果

今回，ソースコード解析ツールである Case Player と上記3点の課題を解決することで従来手法によって自動試験実行ツールである winAMS を用いた同一性検試験を行なっていた 1439 件の内，792 件に対して自動証の方法を紹介した。結果として，16bit マイコンを搭試験を適用することが可能となり合計 1591 件，全体の載した熱源機から 32bit マイコンを搭載した熱源機への71% の適用が見込める。よって，今後の開発では本対策プログラム移植の工数は，自動試験適用箇所において，を実施することで，今回のマイコン変更開発以上の削減

約 44% 削減できた。今後開発予定の機種においても同効果が期待できる。図 12 に対策を行った場合の工数削様の成果が期待でき，かつ一度作成した試験仕様書は再減見込みを示す。図 12 から，初回適用時は試験設計の利用可能であるため，次のマイコン変更開発では試験仕時間が必要となるが，課題解決前と比較して 22% の改様書作成分の工数も削減できる。そのため，作業全体と善を見込む。さらに，一度自動試験を適用したモジューして更なる工数削減に期待できる。また，自動試験の適ルに対して，次回開発の同一性検証では，自動試験の実用を進めることで，手動では多大な時間を要する回帰試行時間のみとなるため，大幅な工数削減が見込める。

験の工数も削減でき，開発毎に回帰試験の適用が容易になるため，デグレードの防止や潜在不具合の発見などの品質向上も見込める。
最後に，本開発及び本稿執筆にあたり，ご指導，ご支援いただいた三菱電機（株）冷熱システム製作所の関係者各位に深く感謝いたします。
商標・登録商標について■ Case Player，winAMS はガイオ・テクノロジー株式会社の登録商標です。
執筆者紹介 小門図 12．工数削減効果

希2006年入社。業務用産業冷熱機器のソフトウェア開発に従事。現在，和歌山支所

図 13 に次回開発での工数削減効果の見込みを示す。

ウェア技術部

図 13 から，次のマイコン変更開発において試験設計の機器技術第二課
目方時間が不要となるため，全体として 70% の工数削減が見込める。

機器組込ソフトグループリーダー

徹

2011年入社。業務用産業冷熱機器のソフトウェア開発に従事。現在，和歌山支所
ウェア技術部

機器組込ソフト機器技術第二課
田井一

2020年入社。業務用産業冷熱機器のソフトウェア開発に従事。現在，和歌山支所
ウェア技術部


図 13．次開発以降の工数削減効果

45

機器技術第二課

機器組込ソフト