misc.log

日常茶飯事とお仕事と

TestLink 1.9.17 でExcelからのインポートを行う

※まだ作業の途中なので適宜追記していきます。

ソフトウェアのテスト管理ツールTestLink(Version 1.9.17)」の導入をもくろんでいろいろと試しているのですが、TestLink自体のGUIが微妙に使いづらいため、大量のテストケースを書いて登録するという作業をTestLinkを使わずに行えないかと考えています。本末転倒かもしれませんが、Excelの利用が妥当かと。Excelから脱却する目的でTestLinkを考えているのにExcel!?と思われるかもしれません。しかし、元々の問題は

  • テストケースの記述から、実施、その後の確認までを含めた一連のフローをすべて本来表計算ソフトであるExcelで実施することの道具のミスマッチ。
  • なまじ自由度が高いExcelを使う目的のために、テストケースの記述方法など様々なルールを都度都度決めないといけない作業コスト。
  • あくまでファイルベースの管理になるExcelを使うことで、過去のテストや現在進行中のテストなどを管理するのにファイルの管理方法(フォルダわけやファイル名の命名など)も考えないといけない余計なコスト。

こういうものを嫌っての話ですから、表形式の情報を書き連ねるというExcel本来の「表(計算)ソフト」としての使い道であれば道を外れてはいないはず……なのです。

知識ゼロから学ぶソフトウェアテスト 【改訂版】

知識ゼロから学ぶソフトウェアテスト 【改訂版】

テストケースの取り込み

TestLink自体はXML形式でのテストケース情報インポート、エクスポートに対応していますが、Excelファイルを直接やりとりするようにはできていません。なので、最終的な情報は所定のXML形式で記述する必要があります。これについては MrBricodage という方がExcel VBAを使ってExcelデータをTestLink用のXMLファイルに変換するマクロ付きExcelファイルをGitHubで公開してくださっています。

github.com

この中の「02-TestCases,xls」を使います。他にも「Requirements」と「Executions」がありますが、それぞれTestLinkが管理できる「要件情報」と「テスト実行情報」を指すようです。今回、要件管理機能は使う予定がありませんし、テスト実施についてはもう少し先になりそうなのでまずはテストケースのみ利用させてもらいます。

英文での説明がPDFファイルで公開されていますので、そちらを読んでも良いのですが、ざっくりした手順と日本語環境での用法については下記のブログでも取り上げられているので参考にしてください。

forza.cocolog-nifty.comforza.cocolog-nifty.com

先ほどのGitHubからExcelファイルをダウンロードし、とりあえず記載されているサンプルのテストケースをExcelシートに用意されたVBA処理起動ボタンからXML形式として出力。Excelファイルと同じフォルダに同名のXMLファイルができるので、それを以下の手順でTestLinkに取り込みます。「Requirements Coverage」についての確認メッセージが表示されますが、「いいえ」で閉じてください(今回要件についての機能は使わない)。

  1. テストケースの編集ページを開く。
  2. 左のテストスイート/テストケースのツリー表示からルートノードを選択する。
  3. 右上の歯車アイコンから、テストケースのインポートを選択する。
  4. ファイルの指定ボタンが表示されるので、先ほどのXMLファイルを指定する。

そのまま実施すると……エラーになります。理由は文字コード。先ほどのExcelが吐き出すXML形式ファイルの文字コードはどうやら「文字コード: Latin1、改行: CR」になっています。一方でTestLinkのサイトはUTF-8しか取り扱えないようなので、出力されたXML形式ファイルの文字コードをLatin1→UTF-8に変換してください。私はサクラエディタを使ってファイルを開き、保存時に文字コードUTF-8、改行コードをCR+LFに指定して変換しました。

02-TestCase.xlsの特徴と問題……

02-TestCase.xlsを使って取り込んでみた結果気づいたことは下記の通りです。

  • Test Suite列の「Name」1行目は親スイート、2行目が子スイートとなります。
  • 同じ親スイート(Parent)に子スイートやテストケースを繰り返しImportすると、重複したテストケースは同じスイートの下に再度追加されますが、その際、TestLink上で「テストケースのコピー」を実施した場合と同様、取り込み年月日日時を頭に冠したテストケース名が自動的につけられます。
  • 例ではテストスイートは2階層になっていますが、3階層以上にしたければ下図のようにTest Suiteの行を書き増やせばOK。

Test Case Import / TestSuiteを多段構成にする場合の記述例
Test Case Import / TestSuiteを多段構成にする場合の記述例

あと、とりあえず見つけた問題点は下記の通り。

まずはこの文字化け問題をなんとかしましょう。

TestLinkインポート時(Excelからのエクスポート時)の文字化けを解消する

ExcelからエクスポートしたXMLファイルですが、ExcelファイルのVBAプログラムを見るとOpen命令でファイルを使ってPrintで出力しています……ということはUTF-8で無いことは確か(多分ShiftJISで出ていると思われます)。一方でTestLinkUTF-8で取り込もうとするようなので、以下の方法で対応します。

XML書き換え

前者については、VBAのプログラムを一部書き換える必要があります。「開発」→「Visual Basic」でVBAエディターを開き、「libraries」というファイルにある「addTestCasesXMLprefix」というメソッドの、「ISO-8859-1」という記述を「UTF-8」に書き換えてください。この記述でXMLファイルの内容をどのコードで読むかの指示が行われています。最初の状態は文字コード名で言うなら「Latin1」。英数字のみならこれで問題ないのですが、アジア圏の文字が入った時点で文字化け化けになってしまいます。

文字コード変換

出力されたXMLファイルの文字コードUTF-8に変換します。面倒だったのでVectorなどで「nkf」をダウンロードしてきて、変換するバッチファイルを作って変換を行うようにしました。nkfをダウンロードして展開したら出てくるフォルダから「\nkfwin\vc2005\win32(98,Me,NT,2000,XP,Vista,7)ISO-2022-JP」にある「nkf.exe」をExcelファイルと同じフォルダに配置。続いて下記コマンドのbatファイルを作ればダブルクリックで変換完了です。インポートも行えるように逆変換(UTF-8SJIS変換)も行えるようにしておきました。

rem NKFコマンドを使ってファイルをUTF-8に変換します
rem 設定: w8:UTF-8 / Lw,c: 改行コードをCRLFに
nkf -w8 -Lw -c 02-TestCases.xml > 02-TestCases_UTF8.xml
rem NKFコマンドを使ってファイルをShiftJISに変換します
rem 設定: s:ShiftJIS / Lw,c: 改行コードをCRLFに
nkf -s -Lw -c 02-TestCases.xml > 02-TestCases_SJIS.xml

上記のUTF-8変換で、オプション「-w8」を指定するとBO(バイトオーダーマーク)有りになりますが、TestLinkの取り込みには影響ありませんでした。もしうまくいかなければ「-w80」を指定すればBO無しのUTF-8になります。


【新人SEのための】テスト仕様書作成法

【新人SEのための】テスト仕様書作成法