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

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

テスト管理ツール「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も同様だったように思います。