QualityForwardを使ってみた

## テスト管理ツール

2024年のアドベントカレンダーを眺めているとQualityForwardというテスト管理ツールのアドベントカレンダーに目が留まりました。

https://qiita.com/advent-calendar/2024/qualityforward02

ほー、なるほど、テスト管理のwebサービスか。
今までユニットテストなどのテストプログラム以外のテストケースはスプレッドシートで管理してきました。
それで特に不便を感じたことはなかったかと言われれば噓になりますが、テストってそもそも地道なものだし...というイメージがあって、何かのツールを使ってみようという発想がありませんでした。

https://www.veriserve.co.jp/helloqualityworld/service/qualityforward/

QualityForwardの製品紹介を見て、これは面白そうだぞ、スプレッドシートと比較して何が良くなるだろう? という好奇心が湧いてきたので、この機会に触ってみようと思いました。

## ファーストインプレッション

### インタラクティブチュートリアルがわかりやすい

アカウント登録をさくっと済ませましてさっそくQualityForwardにログインすると

右上に「基本の操作ガイド」というのがあって、選択するとインタラクティブチュートリアルが開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/00ec541b-776a-a3ff-f6cb-87cd5b3231d3.png)
プロジェクトの作成から始まって、テストケースの追加...etcと順を追って続くのでとても分かりやすいです。

### あ、スプレッドシートだ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/674caad8-5b1e-7912-5c52-51aa9d764b15.png)

一番多く触るであろうテストケースを作成する画面はスプレッドシートでした。今までのスプレッドシートと変わらない使い勝手で運用できそう。

### テスト要求ツリーとは?

テスト要求ツリーというものがあり何だろうと表示してみると...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/89bb5b1f-8274-4dd8-e6b5-51fa29c0fd7b.png)

マインドマップみたいだ! なつかし～!(以前頻繁に使っていたのですが、最近使って無かったので。)
テストの要求分析で使えるツールですね。

## スプレッドシートからQualityForwardへの乗り換え

テストケースの取込機能でExcelファイルを読み込めました。予めQualityForward側のヘッダーを合わせておけば今まで使っていたExcelファイルの使い勝手と変わらずに使用できそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/1ab64104-f1c6-bce0-77f1-7c2de3b9e5dc.png)

Excelでテスト管理始めてしまったプロジェクトでも割と低コストで乗り換えできそうです。

## テストケース作成の使い勝手

基本的な操作感はスプレッドシートと変わらないので良いかなという第一印象だったのですが、実務レベルの使い方をしていくともう少し機能が欲しいかなという感想です。

例えば以下の機能がまだないため今後の開発に期待です。

* スプレッドシートのようにセルを選択&ドラッグで連番が入力できない。
    * 繰り返しになってしまいます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/2722af74-faaa-d48d-d611-9b5d060a31f5.png)
* 文字色やセルの色が変えられない。
* ~~文章の左右中央寄せが指定できない。~~
    * テスト実施画面の方では変更できました。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/2384f67d-4679-e8dc-8b0c-c6c811172406.png)
* コメント機能があるがセルが指定できない。
    * コメント内に「ID何番のxx」みたいな感じで書くしかない。

(初心者のレビューなのでもしショートカットキーなどでできるとかであればすみません。)

ヘッダーの「装飾形式なし/あり」のトグルボタンを押すと同じ内容が連続するセルの色が薄くなる機能がありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/e3257e0a-f432-3abf-754e-0f0142e83647.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/a2c73498-7991-61be-f614-2fe32c463b1e.png)

使いどころがパッと思いつきませんが同じ手順で入力値が違うみたいなテストケースでは見やすくなるかもしれません。

## テスト計画

### テストフェーズ
QualityForwardではテスト計画をテストフェーズ/テストサイクルと呼んでいるようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/14b2db4d-5d08-c85d-90a9-f533c0787924.png)

これはどういう使い方をするんだろう、と思っていたところ既に色々と設定済みのサンプルプロジェクトがあることに気づきました。
SNSアプリのテストというサンプルプロジェクトのテストフェーズはこの様になっていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/6e8c0c41-e247-c4ce-8c3a-f0b4dff4a6e2.png)

ここではリリースバージョン毎にテストフェーズを区切っているようです。なるほど。

### テストサイクル

各テストフェーズの中にはテストサイクルというものがありました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/96281103-0dad-8cc7-07a7-bc2f072da9e4.png)

ここではブラウザ(テスト環境)の違いでサイクルを分けているみたいです。
また同じテストスイートでも1回目でFAILだったテストについて再テストする、という使い方ができるようです。
なるほど、なるほど。

これはかなりいいですね。スプレッドシートのテスト管理ではちょっと工夫が必要でやりにくい部分かもしれません。
フルリグレッションテストみたいな何度も行うテストも管理しやすそうです。

テストの資産性という点でとても良い機能だと思います。

マルチサイクルというのもあってこちらは複数の環境を1枚のシートにまとめて表示したい時に使うみたいです。
ChromeとSafariという2つの環境を追加してみるとこの様になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/0ee057e6-4c28-c6d1-22e2-60cb3156c64c.png)

お～、いつも使ってるスプレッドシート管理のテストスイートみたい。
そうそう、こんな感じで環境毎に横に長くなっていってしまうんですよね。
環境の種類が少なければこのフォーマットでも良さそうですが。

## テスト実施

いよいよテストの実施です。
テストフェーズ > テストサイクルから一つ選択してテストを実施します。
テストケースの作成時にはなかった結果列というものが追加されています。
ここにテスト結果を入力していくわけですね。テスト結果を入力すると、自動で担当者と実施日が入力されました。
これは地味ですがとても良いですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/16bbe873-4555-cc16-7f44-5aab548be5a3.png)

### 履歴

変更履歴が細かく残るので何かの時(あまり考えたくない)には役立ちそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/65ba4a41-9162-cc7e-8df2-ea08fe649d52.png)

## レポート

テストが進むとレポートが更新されます。
収束曲線が表示されるので特に管理職系の人には嬉しい機能ではないでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/b7800d3b-15f9-906c-14bc-de41e6bedf69.png)

テスト要求ツリーとテストスイートを適切に紐づけておけばテスト要求毎のカバレッジが表示できます。

キャプチャで分かりにくいですが、テスト要求ツリーとカバレッジの図が対応しています。
クリックすると子項目へドリルダウンしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/89bb5b1f-8274-4dd8-e6b5-51fa29c0fd7b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/7a1aae24-ee9c-3d12-15a4-b05c8007937a.png)

テストのトレーサビリティもばっちりですね。素晴らしい!

### テストケースに変更があったらどうするの?

いざテストを始めたけど、やってるうちに「あれ、ここの仕様(期待結果)おかしいんじゃない?」、「このテストケース抜けてない?」みたいな理由でテストケースに変更が入ることがあると思います。というか絶対ある。

そういう場合、QualityForwardはどうなるのでしょうか?

既に実施したテストスイートを編集しようとすると警告文が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/2cb0ef00-4aef-ee5b-14b4-442dbe02cbd2.png)

警告を無視して編集を有効にすると...
更に強めの警告文が。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/7979e869-6d35-6a11-7aca-e1f21503c888.png)

既に実施済みのテストスイートに関してはIDで上書き削除されるのを念頭に置いて慎重に編集するか、
さもなければ新しいバージョンを作れということですね。

テストスイートにバージョンがあるのはとても良さそうだなと思ったので試しに別バージョンを作ってみました。
既に存在するテストスイートをコピーすることで新しいバージョンを簡単に作ることができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/29eafe50-6b35-33bf-e79b-222128cbcc8c.png)

前バージョンとの差分も表示できるのがGoodです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/5dfc47c4-a8d4-52d8-5373-ecac8388ed21.png)

ただし、バージョンが変わると全く別のテストスイートとして扱われるので、前バージョンのテスト実施結果を引き継いだりはできないみたいです。

テスト実施中にテストスイートを編集したくなったら、警告を念頭に入れて慎重に元のテストスイートに手を加えるしかなさそうです。

## テスト自動化

QualityForwardにはテスト自動化のソリューションもありました。
といってもQualityForward自体に自動テストを行う機能があるわけではないです。
詳細はこちらのドキュメントに記載があります。

https://qualityforward.zendesk.com/hc/article_attachments/34661244680857

詳しくはドキュメントを読めばわかるのですが、以下ドキュメントを引用しながら良いなと思った点をまとめてみます。

簡単に言うと以下の2点が肝の様です。

* 自動化が完了するまでの支援: テスト自動化状況レポート
* 自動化が完了した後の支援: 自動テスト安定性レポート

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/153241dd-ac95-4643-b671-7b9a6b1bb539.png)


「テスト自動化対象にする」というチェックボックスがあるのでこちらにチェックを入れると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/3e08ac17-c377-145c-2254-99b7b65d8f91.png)

テストスイートに「自動化状況」、「自動テストケースID」という列が追加されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/851c5a40-b10a-2148-599c-c7241fb5cd31.png)

「自動化状況」のステータスを管理して、テストスイートの自動化の対応状況が可視化できるということですね!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/fbd562c6-faea-33c5-3b36-19f5776914f8.png)

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/d21b5cff-ac3e-94bd-beb1-f0f27d2622f9.png)

自動化が完了したテストケースに関して、「自動テストケースID」を元にSeleniumなど自動テストを行っているシステムから、後述するWebAPIで結果を更新します。
そうすると、自動化されたテストケースがちゃんと動作しているのかが可視化される様です。
手動のテストケースの結果とは違って「Error」という値が入ってくるのが良いですね。
自動化したテストがちゃんと動いているのかどうか一目で確認することができます。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/f277e9d0-9f50-b809-df7d-7f7a42e510a2.png)

テスト自動化って大変なんですよね。以前勤めていた会社でもSelenium等を使用して自動化に取り組んだことがありました。
個人的な感覚としては、テスト自動化は実装と並行してできるような代物ではなく、専任をたててがっつり取り組まないと中途半端になってしまうなと感じています。
ただし、自動化が検討されるテストというのは何度も実行が必要になるリグレッションテストが最優先に上げられると思うのですが、そういう既にリリースされてしまった過去の機能に対する作業って、バグ修正とか必須なものを別にすると直接的に利益を生まないですから、そこに少なくないリソースを割くのって中々認められない雰囲気がありました。

ですが、QualityForwardの自動化支援ソリューションであれば、どのくらいのペースで自動化対応が進んでいるのか可視化されて計画も立てやすいですし、どれくらいのテストケースが自動化で効率化できたのか、自動化されたテストがちゃんと運用できているのか、というのもグラフィカルにレポートが作成されるので説得材料としても、とても良いなと感じました。偉い人たちってそういうの好きそうじゃないですか。

## WebAPI

テストスイートやテスト結果のCRUDなど一通りのエンティティを操作できるAPIが用意されていました。

https://qualityforward.github.io/api-spec/

無料版ではWebAPIは使用できなかったので実際に試せていませんが
CIや自動テスト機能を使用する場合は必須の機能ですね。
その他、外部のツールと連携する時に工夫次第で色々できそうです。

## ツールはワークフローを定義するもの

業務をサポートするツール全般に言えるのですが、ツールというものは作業効率を上げるという役割も重要ですが、もっと重要なのは「ワークフローを定義できるかどうか」、というのが自分の考えです。
ワークフローを定義するとは、このツールを使えば次に何をやるのかが明確になって、プロジェクトに関わるメンバー全員の足並みが揃うのかどうかということです。

そういった観点からみてQualityForwardはとても良いなと感じました。
テストの要件分析から設計、実施、振り返りまですーっと流れます。

以下細かいですがワークフロー構築に役立ちそうな機能をメモ。

### ワークスペース

自分の担当作業が一目でわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/06cd3ea8-f05e-d731-eee4-70edd3266e80.png)

### アサイン表

誰がどのテストをするのか役割分担が明確になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/33330d56-6d83-49fb-0963-997e7ff288f7.png)

### テストスイートのステータス

テストスイートにはステータスが設けられており、編集中、利用可、利用不可、レビュー待ちの4つから選択できました。
レビューを通ったテストスイートだけテストフェーズで使用するという使い方が出来そうです。

### バグトラッキングシステムとの連携

RedmineとJIRAが選べました。実際に連携するとどのようなことができるかまでは試せていませんがマニュアルがあるので参考になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/f6736394-d6f8-d818-465e-ab58640cd283.png)

### ダッシュボード/チームWiki

プロジェクトの説明などを記載できるのでちょっとしたルール周知などに役立ちそうです。

## まとめ

QualityForwardの基本機能をざっと触ってみました。
スプレッドシート管理よりは断然良い! という結論です!
そこで気になるのがお値段ですが...この様になっております。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11698/b1b4f6e6-81ef-4462-fa3e-9bdb3100e97e.png)

絶妙な予算感!(個人の感想です。)

ひとまず自分の場合はフリーランスで細々とやっておりますので、3000件あればしばらくは余裕そうですし、使ってみようかなと思います。

無料から始められますので皆さんもぜひ。