オープンソースのテスト管理ツールを調べようとして何の成果も得られませんでしたぁぁ！！

# はじめに
[TestLink](https://qiita.com/mima_ita/items/ed56fb1da1e340d397b9)は10年の歴史を誇るテスト管理ツールですが、さすがに10年前のツールなだけあって、GUI的に昨今厳しい評価を受けがちです。

そこでオープンソースでかつ、TestLinkに代わってテスト管理が行えるツールについて調査しようと思いました。
もしTestLinkの弱点であるGUIが改善されたものがあれば、Excelとの置き換えが捗ると考えたからであります。

**駆逐してやる…！テスト管理から…Excelを残らず！**



# 予選敗退組
実はオープンソースのテスト管理ツールは結構存在しています。
ここでは、実際にインストールする前に予選敗退となったいくつかを紹介します。

**tarantula**
https://github.com/prove/tarantula
http://www.testiatarantula.com/

最終コミットが2014年。
運営元から将来の計画もありませんとかいわれているので見送り。

**Testopia**
https://github.com/bugzilla/extensions-Testopia

最終コミットは2018年2月
Bugzillaを使ったのがかなり昔であり覚えていない、かつBugzilla5.xには対応していないようなので見送り。

**qaManager**
http://qamanager.sourceforge.net/site/en/
https://sourceforge.net/projects/qamanager/

テストケースの管理やリソースの管理ができそうだが、さすがに最終リリースが2008年は辛い


**Radi**
https://sourceforge.net/projects/radi-testdir/

軽量テスト管理ツール。 Radiはテスト計画の設定、テストイメージ/ビルドのテスト結果の更新（作成/編集）、バックアップ、ユーザー管理などの機能をサポートする。
2013年が最終更新。多分、死んだプロジェクト。

**RTH**
https://sourceforge.net/projects/rth/
https://requirementsandtestinghub.wordpress.com/

アプリケーションのライフサイクルを通して、要件、テスト、テスト結果、および欠陥を管理するように設計されたWebベースのツール
2013年時点でプログラマいなくなって、募集したのが最後の公式のメッセージ。


**TCW**
https://sourceforge.net/projects/tcw/
テストケースとその追跡ができるようだが、最終更新が2006年はさすがに厳しい。

**moztrap**
https://github.com/mozilla/moztrap
2019年にコミットしてたから生きていたプロジェクトかと思ったが死んでいる。
コミットしたのはREADMEのみ。
ログイン機構につかっている「login.persona.org」が2016年に停止したのでログイン画面からすすまない。
https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Persona


# 予選通過組
過酷な予選を通過して実際インストールして使おうとしたツールについて紹介します。

## Redmine impasse
http://kawasima.github.io/redmine_impasse/
Redmineのプラグインとしてテストケースの管理ができます。
このため、Redmineを使用している組織では導入コストを抑えられることが期待されます。
ただし、オリジナルのコードが古いので、最新のRedmineでは動かないと思われ予選落ちでした。

しかし、最近のプルリクエストを見ると4.x対応をしているような履歴があるのでこれを試してみます。
https://github.com/Neticoa/redmine_impasse

### 導入失敗の軌跡
**実行環境**

 - Redmine version                4.0.3.stable
 - Ruby version                   2.5.5-p157 (2019-03-15) [x86_64-linux]
 - Rails version                  5.2.2.1


※bitnamiの仮想環境
https://bitnami.com/stack/redmine/virtual-machine

#### インストール時のトラブル
プラグインを入れる際に、pluginフォルダで以下のコマンドを実行します。

```
rake redmine:plugins:migrate RAILS_ENV=production
```

この際、以下のエラーが発生しました。

```
NameError: uninitialized constant ImpasseProjectsHelperPatch::ImpasseSettingsHelper
```

これに関しては以下の修正で無理やり通すことができます。

```rb:impasse_projects_helper_patch.rb
require_dependency 'projects_helper'
# rake redmine:plugins:migrate RAILS_ENV=production エラー対応↓
require_dependency '../app/helpers/impasse_settings_helper'

module ImpasseProjectsHelperPatch

```

#### Impasseを有効にするとプロジェクトが開かなくなる
プロジェクトの設定でImpasseにチェックを付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/89a8d401-9f4b-61d2-484a-e082ba225697.png)

するとプロジェクトを開くと以下のようなエラーとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/4819d08c-85a5-4368-e576-070c7cb0ba1f.png)

この時のエラーログは以下のようになります。

```
Completed 200 OK in 47ms (Views: 32.2ms | ActiveRecord: 3.5ms)
Started GET "/projects/test1/settings" for 192.168.0.14 at 2019-07-08 15:13:21 +0000
Processing by ProjectsController#settings as HTML
  Parameters: {"id"=>"test1"}
  Current user: user (id=1)
  Rendering projects/settings.html.erb within layouts/base
  Rendered projects/_form.html.erb (15.8ms)
  Rendered projects/_edit.html.erb (17.2ms)
  Rendered projects/settings/_members.html.erb (5.2ms)
  Rendered projects/settings/_issues.html.erb (11.0ms)
  Rendered projects/settings/_versions.html.erb (5.1ms)
  Rendered projects/settings/_issue_categories.html.erb (4.2ms)
  Rendered projects/settings/_repositories.html.erb (3.2ms)
  Rendered projects/settings/_boards.html.erb (2.4ms)
  Rendered projects/settings/_activities.html.erb (13.7ms)
  Rendered common/_tabs.html.erb (70.9ms)
  Rendered projects/settings.html.erb within layouts/base (75.2ms)
Completed 500 Internal Server Error in 145ms (ActiveRecord: 10.5ms)
  
ActionView::Template::Error (No route matches {:action=>"index", :controller=>"impasse_test_case", :id=>"test1", :project_id=>#<Project id: 1, name: "Test1", description: "", homepage: "", is_public: true, parent_id: nil, created_on: "2019-05-16 08:22:02", updated_on: "2019-05-16 08:22:02", identifier: "test1", status: 1, lft: 1, rgt: 2, inherit_members: false, default_version_id: nil, default_assigned_to_id: nil>}):
    87:     <% end %>
    88: 
    89:     <h1><%= page_header_title %></h1>
    90: 
    91:     <% if display_main_menu?(@project) %>
    92:     <div id="main-menu" class="tabs">
    93:         <%= render_main_menu(@project) %>
```

**ここで撤退しました。**
いままで当該ツールを使っていた場合は、redmineのバージョンアップに合わせて対応する選択肢はあると思いますが、正直、初めて使う場合、メリットが薄いのが撤退の理由となります。

## SquashTM
テスト管理ツールとして、JaSST Tokyo2017で導入事例が紹介されたツールです。
https://qiita.com/miwakai/items/843c76e50eef7719ae6d

日本語自体の対応はされていないものの、直観的なGUIは使いやすく、また機能的にも十分そろっているように見えます。

**公式：**
https://www.squashtest.org/en

**Wiki:**
https://sites.google.com/a/henix.fr/wiki-squash-tm/

**デモサイト：**
https://demo.squashtest.org/squash/login

### インストール方法
公式ドキュメントに記載があるので参考にするとよいでしょう。
https://sites.google.com/a/henix.fr/wiki-squash-tm/installation-and-exploitation-guide

日本語のページだと以下があります。
https://qiita.com/soon/items/bc46138fb6fce97fed43
https://jupiterr.blog.so-net.ne.jp/2017-02-08

基本的な手順は以下になります。
(1)JDK8以上を入れる
(2)データベース（mysql/mariadb/postgresqlのいずれかを入れる。
　データベースは以下参考に作成する。
　https://sites.google.com/a/henix.fr/wiki-squash-tm/installation-and-exploitation-guide/2---installation-of-squash-tm/5---change-database
(3)httpdを入れる
(4)squash-tmを入れる
(5)(2)で作成したデータベースにSQLを流す

```text:centosの例
mysql -u root -p squashtm < /usr/share/doc/squash-tm/database-scripts/mysql-full-install-version-XX.XX.XX.RELEASE.sql
```
(6)DBの接続情報の修正をする。
CentOS7の場合は「/etc/sysconfig/squash-tm」を以下参照して修正
https://sites.google.com/a/henix.fr/wiki-squash-tm/installation-and-exploitation-guide/2---installation-of-squash-tm/3---redhat-4-5-installation

(7)ファイアウォールの設定でポート80と8080を開ける。

```text:centosの例
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
firewall-cmd --list-all
```

(8)squash-tmを起動する

```text:centosの例
squash-tm 起動
/etc/init.d/squash-tm start

自動起動
chkconfig squash-tm on
```

### 使用した感想
機能としてはTestLinkと同等のものがそろっております。
その上で特別すぐれていると感じられるところは以下の通りです。

・GUIは直観的で使いやすい
・自動テストとの連携がしやすそう。
　Squash TAという自動テスト管理ツールとの連携
　gherkinという記法でテストケースでスクリプトを記載できる。
　https://sites.google.com/a/henix.fr/wiki-squash-tm/User/04---test-case-administration/script-management-for-gherkin-test-cases
・データセット機能が便利そう

#### データセットの使用例
データセットを使用することで、同じテストケースを別のパラメータで実施することが容易にできます。

(1)テストケースのparametersタブでデータセットを指定する。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/5a2c480f-dd83-e354-a909-f183c5198136.png)

(2)テストケースに{$～}という記述を行いパラメータを埋め込む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/b12ba0e3-c674-4f98-f7f1-5421581090de.png)

(3)テスト計画時に実行するテストケースで、どのデータセットを使うかを指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/94d264be-282a-244d-74b8-2db0902e6b2d.png)

(4)テスト実行中にデータセットで指定した値が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/55be11b9-b468-a36b-f6b6-f5c00a372133.png)


#### おしいところ
たいへん素晴らしいツールですが、**utf8で入力した値が文字化けする**ページがいくつかあるという弱点があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47856/2352959a-c32a-3447-03e2-189644e10e35.png)


この事象はロシアの同志がフォーラムで報告しており、バグとしてあがっています。（なお優先度は低）
https://forum.squashtest.com/viewtopic.php?f=37&t=3633

いずれ直るとは思いますが、現時点でこの不具合を自力で直したい場合は以下を参考にしてください。
[SquashTMのビルドの方法と日本語対応の仕方 「Attach Test Cases」画面での文字化けの修正をしてみる](https://qiita.com/mima_ita/items/94bbb2c0ce41a82a8587#attach-test-cases%E7%94%BB%E9%9D%A2%E3%81%A7%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E3%81%AE%E4%BF%AE%E6%AD%A3%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B)

:::note info
2025年1月時点のDockerで試したら文字化けの問題は治っていました。
:::


また、レポート画面が表示されなくなったり、テキストエリアの入力ができなくなることがたまにありました。
　→再現性が不明だが、ブラウザのキャッシュを削除したらとりあえず動作した。


私の感想としては英語ベースでやりとりする環境ならともかく日本語という環境では正直導入が厳しいと思います。
「eclipse用意して、次に独自の修正後、デプロイしてから使います」とかいうツールの提案は通す自信がないですし、日本語の資料を用意して説得するというのも提案するコストが高すぎます。

# さいごに
最初は威勢のいいことは考えましたが数日の調査の結果、残念なことに、目ぼしい成果を上げることはできませんでした。

**-でも役に立ったのですよね？休日や睡眠時間の犠牲は…Excelへの反撃の糧になったのですよね！！！？**

もちろん・・いや・・今回の調査で我々は、いや、今回も・・くっ・・何の成果も得られませんでしたぁぁ！！
私が無能なばかりにただ、いたずらに休日と睡眠時間をなくし、Excelによるテスト管理を止めることが、できませんでしたぁぁ！！