Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS+(CubeSuite+)自動運転 スクリプト作成マクロの紹介 ~人力から自動化への道~

Similar presentations


Presentation on theme: "CS+(CubeSuite+)自動運転 スクリプト作成マクロの紹介 ~人力から自動化への道~"— Presentation transcript:

1 CS+(CubeSuite+)自動運転 スクリプト作成マクロの紹介 ~人力から自動化への道~
2016/2/27 Yasushi Tanaka

2 CS+を使ったデバッグ操作 CS+に限らず、統合開発環境(IDE)を使ったデバッグ操作は以下のような作業が大半を占めている
ブレークポイントを設定 プログラムを実行 変数の値をウォッチ(または変数値を設定) 期待値通りになっていることを作業者が確認 画面キャプチャを取得しExcelへ貼り付け

3 CS+が提供する自動運転 CS+はスクリプトによる自動運転をサポートしているが、サポートするスクリプト言語はPython (正確にはIronPython)である IronPythonとは何か? ⇒汎用インタプリタ言語であるPythonを、Microsoftが提供する.NET Frameworkを利用して実装したもの( ⇒Windowsおよび.NETとの親和性が高い

4 CS+のIronPythonサポート IronPythonからCS+のデバッガを操作するための関数・プロパティ・クラス・イベントを提供している。詳細は付属マニュアルで確認できる

5 CS+とIronPythonで出来ること
手動(マニュアル)で行うデバッグ操作は、原則すべてスクリプトでも行える ブレークポイントを設定 プログラムを実行 変数の値をウォッチ(または変数値を設定) 値の確認(Python言語のIf文で確認できる) 画面キャプチャの取得(IronPythonの持つ .NET Framework連携機能で行える)

6 じゃあ、どうして使わないのか? Python言語を知らない(わからない) CS+の提供する関数・プロパティ・クラスを知らない(わからない)
CS+から.NET Frameworkを呼び出す方法、さらに.NET Frameworkの使い方を知らない(わからない) ⇒C言語しか知らない技術者にはハードルが高い .NETなんて言葉、IT系ニュースサイトで聞いたことあるだけだよ。IronPython?CLR?なんだか難しそうだなぁ~ CS+が提供するクラス? オブジェクト指向? 名前は聞いたことあるけど、それって美味しい食べ物?

7 ハードルが高いから、使わない? “マニュアル操作で出来るから、まあ、いいか”
⇒この結果、テストに大量の時間が消費されていると共に、単純ミスも混入していく 人は単純作業を続けていくと、いくら精神論で「注意しろ」と指示したところで、1000回に1回くらいは間違えてしまう。それは誰しも同じ。

8 解決策はないのか? Python言語の習得を全員に呼び掛けてマスターさせることは非現実的。スキルを持った人間が作ればいい
⇒Excelで「やりたいこと」を設計すれば、それをPythonに落としてくれるジェネレータが欲しい!

9 やっと本題です IronPythonScriptGenerator.xlsがその悩み、解決します
ExcelからPythonスクリプトを自動生成する (CS+を制御する部分はPythonの関数群で構成) (生成されたスクリプトの例) # # スクリプト実行開始 start_script() # No.1: コメント コメント comment("コメント") # No.2: CPUリセット cpu_reset() # No.3: ブレークポイント設定(ソフト) R_TAU0_Channel0_Start add_sw_break("R_TAU0_Channel0_Start") # No.4: ブレークポイント設定(ソフト) r_cg_timer.c#116 add_sw_break("r_cg_timer.c#116") # No.5: ブレークポイント設定(ソフト) main add_sw_break("main") ...

10 Excel上で直感的に自動運転を編集 ユーザはリストボックスから「やりたいこと」を選択し、パラメータを与えるだけでOK!

11 自動運転テストの設計例 ブレークポイント時の変数値をチェックし、画面キャプチャするテストを設計した例
ブレーク箇所を ソースファイル名#行番号 で指定するため保守性が下がるのが唯一(?)の難点か。

12 スクリプトの自動生成 必要事項を記入してボタンを押すだけ! ↑この部分は自動生成される

13 スクリプトの冒頭部分を見てみると テスト設計パラメータが埋め込まれる # coding: shift-jis #
# ToolVersion: version 1.01 # Testcase: 機能テスト_A_12 # Created by: yasushi # Date: 2015/12/13 # Revision: 1 # TargetVersion: Ver.1.00 # TestDescription: ソフト起動後、g_count変数が所定の値になっていることを確かめます # CLRインポート import clr clr.AddReferenceByPartialName("System.Windows.Forms") from System.Windows.Forms import * clr.AddReferenceByPartialName("System.Drawing") from System.Drawing import * clr.AddReferenceByPartialName("System.Threading") from System.Threading import * # ライブラリインポート import os import datetime # スクリプト開始 common.ViewOutput = True print "Pythonスクリプトを開始しました" テスト設計パラメータが埋め込まれる

14 CS+の操作 表示(V)→Pythonコンソール(N)を選択し Excel上で表示されたコマンドを貼り付け

15 スクリプトを実行した例 “スクリプト実行を正常終了しました”が表示されていれば、テストにパスしている

16 ログファイルを覗いてみる 複数行にわたる説明が埋め込まれている
[000000] 2015/12/13 19:02:02 ToolVersion: version 1.01 [000001] 2015/12/13 19:02:02 Testcase: ( )IronPythonScriptGenerator [000002] 2015/12/13 19:02:02 Revision: 6 [000003] 2015/12/13 19:02:02 TestDescription: サポートしているコマンドを一通り実行してみる コマンドの差異を調査する 出力結果が正しいか確認する 次期バージョンではコピー⇒形式を指定して貼り付け(値)でセットすること [000004] 2015/12/13 19:02:02 TargetVersion: [000005] 2015/12/13 19:02:02 スクリプト実行を開始します [000006] 2015/12/13 19:02:02 ブレークポイントを全て初期化します [000007] 2015/12/13 19:02:02 CPUリセットします [000008] 2015/12/13 19:02:03 ブレークポイント追加(ソフトウェア) R_TAU0_Channel0_Start (中略) [000056] 2015/12/13 19:02:14 プログラムの実行を開始します(Ctrl+Dで中断)。現在の実行中フラグ: [000057] 2015/12/13 19:02:14 False [000058] 2015/12/13 19:02:15 プログラム実行開始しました [000059] 2015/12/13 19:02:15 時間待ち 2048(ms) [000060] 2015/12/13 19:02:17 プログラム実行を強制停止します(Ctrl+Dで中断)。現在の実行中フラグ: [000061] 2015/12/13 19:02:17 True [000062] 2015/12/13 19:02:19 プログラム停止しました [000063] 2015/12/13 19:02:19 実行時間: [000064] 2015/12/13 19:02: nsec [000065] 2015/12/13 19:02:19 変数値を符号なし10進数で表示 r_cg_timer_user.c#g_count: [000066] 2015/12/13 19:02:19 10 [000067] 2015/12/13 19:02:19 比較( > 4 )に成功しました [000068] 2015/12/13 19:02:19 比較( <= 10 )に成功しました [000069] 2015/12/13 19:02:19 g_countが意図通り変化していることを確認 [000070] 2015/12/13 19:02:20 スクリーンキャプチャを保存しました C:\Git\Repository\Excel\( )IronPythonScriptGenerator\ _190220_0_g_count変化.png [000071] 2015/12/13 19:02:20 メッセージボックス:スクリプトを終了します [000072] 2015/12/13 19:02:23 スクリプト実行を正常終了しました 複数行にわたる説明が埋め込まれている

17 画面キャプチャを見てみる 実際はスクリーン全体が保存される (説明用にCS+ウィンドウだけトリミングした)

18 ログファイルの自動収集・結果集計 ログファイル格納フォルダのログを自動検査 パラメータを設定して“結果集計”をクリック

19 “結果集計”ボタンで最新結果を得る 最も新しいログファイルを取得して判断

20 スクリプト/マクロの品質は? スクリプト、Excel VBAマクロ共に品質保証はされていない(実験的なレベル)
品質保証が不十分だからという理由で、今後も手動操作、人海戦術に頼るつもりですか? ⇒自動運転で浮いた時間を、スクリプト/マクロの品質確保や最終結果ログの確認に費やす方が将来的な生産性の向上につながります!

21 IronPythonExecutorとの連携
IronPythonExecutor.xlsは複数のテストケースを管理する、IronPythonScriptGeneratorの上流ツールです。以下の機能をサポートします サブ階層を含むGeneratorファイルの自動収集 IronPythonスクリプトの一括生成 IronPythonスクリプトの一括実行(自動運転) ⇒これらの機能により、回帰テスト(リグレッションテスト)が極めて効率的に行えます!

22 姉妹品:TclScriptGenerator.xlsの紹介
旧世代品にあたるHew(High-performance embedded workshop)向けのスクリプトジェネレータとして、TclScriptGenerator.xlsを開発しました。 HewではIronPython言語ではなく、Tcl/Tk言語を使用します。Hewのスクリプトサポートが弱いため、以下の制限事項があります。 変数値の監視ブレークはサポートしていません SFRの設定・表示はサポートしていません メモリ内容のファイルロードによりシンボル情報が消去されます

23 ご清聴ありがとうございました The End


Download ppt "CS+(CubeSuite+)自動運転 スクリプト作成マクロの紹介 ~人力から自動化への道~"

Similar presentations


Ads by Google