0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Toscaで「既存Excelのテストデータ」を読み込んでテスト実行

Posted at

この記事では、既存のExcelファイル(テストデータ)をToscaからODBCで参照し、必要なテストケースだけを実行する方法案を記載します。
(※Toscaのバージョンや導入構成により画面/名称が異なることがあります。実環境に合わせて読み替えてください)


背景:DBを用意できない/したくない現場で「Excelを活かす」

顧客側でよくある状況:

  • 既にExcelでテストデータ(ID/パスワード、住所、商品、税率…)を運用している
  • そのExcelをToscaのテストデータとして再利用したい

ただし制約条件として:

  • DBの準備や環境構築が容易ではない(社内承認・運用部門の関与・サーバ準備・権限…)
  • 利用範囲が一部のテストケースに限られ、DBを準備する効果が薄い 

そこで今回は、実行端末側でODBC接続を定義し、Excelを「擬似DB」として読む方針を取ります。
(Toscaにはテストデータ管理機能も準備されているので推奨しているわけではないですが、
 どうしても既存Excelを利用したいというニーズがあるので紹介します)


実装方針:ODBCでExcelを“テーブル”として扱う

準備はシンプルです。

  1. Excel側で「1シート=1テーブル」になるようにテーブル表を作成(ヘッダ付き)
  2. Excelの範囲に 名前付き範囲 を付ける(=テーブル作成)
  3. WindowsのODBCで、Excelファイルへ接続できるようにする(DSN)
  4. ToscaからODBC経由で SELECT して、行ごとにテストを回す

事前準備:

1) Excelデータ

  • 1シートに1つの表(ヘッダ行あり)
  • 空行・空列を表の途中に挟まない
  • 列名は英数字 + _ を推奨

各シートごとに以下のようにテーブル表を定義します。
image.png


2) ODBC接続(Windows)を定義する

Toscaが64bitなら、64bit側のODBCデータソース管理でDSNを作る必要があります。

2-1) ODBCデータソースの起動

image.png

2-2) DSNの作成(例:System DSN)

  1. User DSN タブ → 追加
  2. Excel用のドライバを選択(例:Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) 等)
  3. DSN名:例 Excel_Vehicle_Data
  4. 対象ファイル:今回のExcelを指定

image.png

もしExcelへのデータ更新でステータスや値変更をする想定の場合は オプションを押下し
読み取り専用のチェックボックスを外してください。

ドライバが見つからない場合

  • Excel ODBCドライバがPCに入っていない場合があります
    • その場合は「Microsoft Access Database Engine(ACE)」の導入が必要になることがあります(社内ポリシーに従ってください)

Toscaデモ環境でのサンプル(やりたいこと)

ここでは例として、Toscaのデモ画面に対して、

  • Excelから 入力フォームのデータ を1行ずつ取得
  • 取得した値をテストに流し込み
  • 行数分だけ同じテストケースを繰り返し実行

という最小構成を作ります。


Tosca実装手順

Toscaの画面やモジュール名は環境で差が出やすいので、ここは「書き換え前提」で、記事としての流れを固定します。

Step 1:接続情報を用意する(DSN or Connection String)

  • Excel_Vehicle_Data (事前準備で設定したDNS名)

Step 2 :Excel(Name Range)をSQLで参照する

Excelの名前付き範囲 form1 をテーブルとして SELECT します。
まずは疎通確認と件数取得を実施します。

SELECT COUNT(*)
FROM [form1$];

image.png

項目
Connection name 任意の名称
DSN 先ほどのDSN名 Excel_Vehicle_Data
SQL Statement 上記SQL "SELECT COUNT(*) FROM [form1$]
Result Table #2: TableRowをBuffer
Close Connection True

補足:テーブル名の書き方

  • ODBCドライバによっては range$ のような末尾に$での参照が必要な場合があります
  • まずは「名前付き範囲」をテーブルとして見せる作戦が、参照を安定させやすいです

補足:テーブル名の書き方

  • Result Tableに#2として2行目を取得する理由
  • 以下のように出力され、1行目はヘッダー情報を保持しているので2行目の情報が実際に利用したい値です
    image.png

Step 3:取得結果をテストケースへ受け渡す(パラメータ化)

Tosca側で以下のように変数 Bufferへマッピングします。

image.png

補足

ここでは Where 句にLoop内でのループ回数 {REPETITION}を利用していますが
任意の値、もしくは数値カウンターなど、ロジックにあった設定をしてください。

Step 4:ループ実行(行数分まわす)

テストケースの中で“ループ”を作成

  • 1テストケースに「データ取得」→「画面登録処理」をまとめる
  • 取得した行数分、同じブロックを繰り返す

image.png

  • 上記では、While LoopとしてExit Criteriaを先ほど SELECT COUNT(*) で取得したレコード件数分を上限にしています。
  • 実処理の前に、読み込みべきテーブル表分のデータを読込、それぞれBufferとして変数化します。

Step 5:画面処理にて取得したBuffer変数を利用

実際のToscaの画面操作処理にて入力値として、取得した値を利用します
(Buffer操作にて呼び出すだけ)

image.png

Step 5.1:(Option)テストデータを更新する

  • もしExcelの列を更新してステータス管理や画面で取得した値を管理する場合には Updateを利用可能です

事前準備のODBC設定で説明の 読み取り専用を解除しておく必要があります。

SQL の実行ですのでUpdate処理を実施するだけです。
検証をいれる場合には、実行レコードの件数を検証する処理をいれても良いです。

image.png

Step 6:実行してログ/結果を確認

  • 想定どおり「Excelの行数分」実行されたか
  • 失敗時に「どのデータ行か」追跡できるか(列にIDを持たせると便利)

以下は正常終了時の実行結果ログの一部です。
画面に表示しきれていませんが、Loop回数が増えているのが分かります。
image.png

また各項目を開くと、実際に Buffer としてExcelから取得した値が格納されている事も確認できます。
image.png


よくあるトラブルシュート

1) DSNは作ったのにToscaから見えない

  • 32bit/64bitの不一致が典型
    • Toscaが64bitなら、ODBC DSNも64bit側で作成

2) Excelファイルがロックされて読めない

  • Excelを開きっぱなしだと、ドライバが読めない/古い内容になるケースがあります
  • 実行前はExcelを閉じる運用が安全

3) テーブル名が見つからない

  • 名前付き範囲が未定義、範囲がズレている、先頭行がヘッダ扱いされていない、$の付け忘れなどが原因になりがちです
  • まずは最小の表(2〜3行)で確実に見える状態を作る

まとめ:

Pros / Cons

Pros

  • DB構築なしで既存Excelをそのまま活用できる(承認/運用の壁が低い)
  • まずは一部テストケースだけ、小さく導入できる
  • SQLで WHERE を使えば、データを絞って実行できる

Cons

  • 実行端末のODBCドライバ/DSNに依存し、環境差分が出やすい
  • Excelのロック・編集運用に影響を受けやすい(再現性が落ちる)
  • 複数人/CIで回す場合、Excelは共有・同時編集に弱い
  • 実行環境毎にODBCドライバの設定が必要 実行端末での設定などが必要

推奨はToscaに付随するTest Data Management機能の利用ですが
諸々の制約で利用できない顧客環境においては、
このような代替案もございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?