ソフトウェアの品質を学びまくる

ソフトウェアの品質、ソフトウェアテストなどについて学んだことを記録するブログです。

テスト管理ツール「PractiTest」を触りながら勝手にテスト管理を語る - その6

 「その5」(イシュー作成)の続きで、インポート・エクスポートの話です。
 ただ「その5」でRedmine連携を試したので、先にSlack連携も試してみましょう。

www.kzsuzuki.com

 
 こちらもとても簡単です。すでにSlackにログイン中であれば、その中のチャネルから投稿先を選んで連携し、そのあと投稿内容を選択します。Slack側でも連携を承認する必要があります。

f:id:kz_suzuki:20191128040419p:plain
試用期間が残り9日に迫っている。

 この設定で、テストの開始→途中で失敗→イシュー作成 をやってみます。すると・・・、

f:id:kz_suzuki:20191128040523p:plain
すぐに投稿された。

 とても簡単ですね。まずはイシュー作成くらいを投稿させておくとよさそうです。*1

インポート・エクスポート

必要性と困難

 さて、テスト管理ツールがサポートしておくべき基本機能の一つが、「インポート・エクスポート」です。
 多くの組織ではすでに、テストケースという(場合によってはネガティブな)テスト資産をもっているはず。これを一括インポートできず、1件1件よなべして登録しなければいけないとしたら、テスト管理の移行などできるはずもありません。

 一方で、インポートの厄介さは想像に難くありません。
 テスト管理ツールでは、テストケースが0個以上のインスタンスに紐づき、インスタンスが0個以上のランに紐づくという、1:nの構造になっています。また、テストケースには1個以上のステップに紐づきますし、テストセットとテストケースはn:mで紐づいています。オブジェクト同士に複雑な関係があるということです。*2

f:id:kz_suzuki:20191123065159p:plain

 よって、Excelで扱おうとすると、データベースの「テーブル」に相当する表が何枚もできるうえに、それぞれの表がIDで関連づいていることになります。この関連付けを保ったまま編集するのはなかなか困難であり、人類ではなくツールにお任せする部分でしょう。

ほしい機能

 わたしがテスト管理ツールに最低限求めるのは以下の点です。

  1. 一通りの情報が汎用的な形式でエクスポートできること
  2. エクスポートしたファイルと完全に同形式でなくとも、インポートが可能であること
  3. インポートエラー時に、どこに原因があるかをある程度特定できること

 順にみていきましょう。

一通りの情報が汎用的な形式でエクスポートできること

 PractiTestでは、イシュー・テストケース・テストステップ・要件の4つがインポート可能です。
 また、イシュー・テストケース(+ステップ)・要件・実行・テストセットの5つと、添付ファイルがエクスポート可能です。*3

f:id:kz_suzuki:20191128042131p:plain
CSVの作成は2時間に一度まで。

 ここでは、一番利用するであろうテストケースを試してみましょう。「Export All Tests」で生成が始まります。
 生成されたファイルはこんな姿。

f:id:kz_suzuki:20191128042317p:plain
CSV形式で出力される。

 小さくてわかりづらいのですが、少し意外な姿でした。
 Squash TMでは、テストケースの大元が1枚のシート上にあり、テストステップは別のシートにあって、テストケースのIDで関連づける形で管理していました(記憶あいまい)。一方PractiTestでは、ステップも含めてテストケースを1枚のシート上で扱っています。このため、空白セルがたくさん現れる形です。
 後者の方が人間には扱いやすいのですが、取り込みの際のツール側のチェックがより大変な印象です。

 さて、エクスポートしたファイルはそのままインポートにも使いうるので、ファイル・表・列がそれぞれどんな意味・制約・関連を持っているかは、公式ドキュメントできちんと解説してもらいたいですね。これなしだと、試行錯誤でがんばるしかなくなります。
 たとえばSquash TMであれば、公式のWikiでかなり丁寧に書かれていまし、PractiTestでも丁寧なページがあります。

www.practitest.com

エクスポートしたファイルと完全に同形式でなくとも、インポートが可能であること

 エクスポートしたファイルをそのままインポートしてみましょう。
 インポート画面では、PractiTestにおけるフィールドと、CSVファイルの列の対応を決めたうえで、インポートします。つまり、PractiTestと関係ないオレオレxlsx形式でも、基本的にはインポートが可能なのです。ステキ。

f:id:kz_suzuki:20191128043302p:plain
列の対応付けを行う。

 なお上述の通り、エクスポート時にはテストケースとステップが一体化した1枚のシートなのですが、テストケースとステップを分離してのインポートも、「Importing Tests and Steps in two operations」という形でサポートされています。こういう「かゆいところに手が届く」のがPractiTestらしさですね。

インポートエラー時に、どこに原因があるかをある程度特定できること

 「インポートエラー!」とだけしか教えてくれないツールだと、テストケースが1,000個入ったファイルの後半500個を消して再インポートし、エラーが起きるかを確認・・・みたいな二分探索大会は始まってしまいます(そして原因が一か所とは限らない地獄)。エラー原因はちゃんと教えてほしい。

 ではさっきエクスポートしたファイルをそのままインポートしようとすると

f:id:kz_suzuki:20191128043515p:plain
・・・。

 するとエラーが出る。ですが、エラー内容はしっかり書かれており、切り分け可能です。
 まず1つ目のエラーは、Authorに相当する列に不正な値が入っているというもの。これは、インポートするExcelの1行目(ヘッダ)を無視するオプションにチェックを入れていなかったため、「Author」というAuthor IDでインポートしようとしたということです。ごめんなさい。ここには、eメールアドレスまたはスクリーンネームを入れる必要があります。
 2つ目のエラーは、ステップの名前が必須だということですね。PractiTest上では任意項目なので、エクスポート時に空だったのです。

 では修正してリトライ。

f:id:kz_suzuki:20191128043710p:plain
無事取りこめた。

 OKですね。

 ちと気になる点としては、手順付きテストとはフィールド構造の違う探索的テストをどう扱うかということなのですが・・。
 まずエクスポートした時点で、テストチャーターとガイドポイントの情報は失われているようです。そのままインポートしても、手順付きテストとして扱われました。まあ、「探索的テストを大量にインポートする」ことはあまりなさそうですし、実害は小さいでしょう。

インポートのもう一つの需要

 既存Excelからのテストケースインポートの他に、「テスト管理ツールで扱うたくさんのテストケースをいったんエクスポートし、Excelで一括編集したうえで、テスト管理ツールに戻したい」というものがあります。全体的な管理としては圧倒的に優れるテスト管理ツールでも、「1テストケースn画面」である以上、編集面ではExcelなどに劣ることもあるためです。

 ちゃんと調べ切れてはいないのですが、「PractiTest上にある既存のテストケースを、インポートするExcelで上書きする」ということはできなさそうです。とはいえこれは既存の情報を壊しうる危ない機能なので、なくていいかもしれません・・・。

 以上、インポート・エクスポートについても、手堅くまとまっていました。
 最後に「その7」で、ダッシュボードを見てみたいと思います。

*1:Redmineと一方向連携している場合、イシュー作成はSlack通知されませんでした。やはり双方向の設定が必要か。

*2:幸か不幸か、Excelの1行が1つのテストケースであり、そこに複数のランが含まれるようなExcel管理であれば、構造が単純になる。

*3:実行をインポートできないのは、Squash TMも同様だったように思います。