T-DASHを他３つのテストサービスと、技術的・サポート面から比較してみた

# はじめに
この記事は[T-DASHと他のテスト自動化ツールを比べてみた！](https://qiita.com/advent-calendar/2021/tdash02)アドベントカレンダー2021の20日目の記事として投稿しています。

T-DASHは日本語でかつコードをほぼ書かずに、ウェブサービスの**外形監視・自動テスト**ができるプロダクトです。

ウェブサービスが外からアクセスしたときにちゃんと見えているか、UIが崩れていないかを、継続的にチェックするのが外形監視で、様々なプロダクトがありますが、なかなか使いづらいものが多く、作っても後で管理するのが大変、ということがほとんどです。

その中でもT-DASHはすべて日本語で設定ができ、管理がしやすいUIと、データプライバシーも気にする必要がないローカルサーバーでの運用となるため、非常に強力なツールとなります。

本記事では、T-DASHと似たサービスを展開するAPMベンダー製品を２つと、OSSのウェブテスト基盤であるSeleniumを、技術面と日本語サポートの面で比較しました。

# T-DASHでできること（簡易まとめ）
[T-DASHのOPENβ申込からテストツールの起動まで実施したら、とてもハードルが低かった](https://qiita.com/84zume/items/5051531c1d82139b4267)や[T-DASHのサンプルアプリで自動テストを実行して結果を見てみた](https://qiita.com/84zume/items/3a23d6c435dd418e98b2)などですでに使い方が紹介されているので、こちらを見てみて下さい。

T-DASHのアプリでテストしたいURLをセットし、UIの要素をクリックして指定すれば、簡単にテストが実行できるようになってます。詳細については、[4.T-DASH](#4t-dash)で取り上げていますので、まずは概要のみのご紹介です。

## なぜテスト・監視が重要か

バグが無いように開発しよう、というのは当たり前ではありますが、テスト無しではダンプカーで未知の酷道に突っ込むようなもので、どれだけ優秀なエンジニアでもバグを量産してしまいます。自分が書いたコードは大丈夫でも、依存ライブラリのバージョンアップでバグに当たったり、気をつけても避けづらい場合もあります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/90706c70-dc61-6cfc-acf0-cc8577048494.jpeg" width=500 />

そこで、完成品を自動テストする基盤があると、バグを生んでも修正ポイントがすぐわかり、完成度を上げることができます。しっかりとしたガードレールがあるイメージですね。

![road_guard_rail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/4042e4fd-cd6e-0f89-59bf-285e9d75c5f4.png)

このようなガードレールがあって舗装された道と、先程の酷道とで、どちらが早く走れるかと言ったら、当然ガードレールがある方で、開発陣も安心して開発できるため、バグを生みづらいというだけでなく、非常に早く開発のサイクルを回せるメリットもあります。


# 他製品との比較

T-DASH以外の選択肢について、無償のSelenium、商用のNew Relic SyntheticとDynatrace Synthetic Monitoringの３つを比較しました。まずは簡単に紹介すると、

- Seleniumはウェブブラウザ操作を自動化するプログラマー用のライブラリ
- New Relicはアプリケーション監視を一括でできるAPM製品の一つ
- DynatraceはNew Relicと同様、APM製品の一つ

となります。そして機能を比較した結果のマトリクスが以下となります。一つ一つ見ていきましょう。

||T-DASH|Seleniumで自作|New Relic Synthetics|Dynatrace Synthetic Monitoring|
|---|---|---|---|---|
|プログラミングスキル必要か|不要|必須|ある程度|ある程度|
|監視・テストの自由度|◎ |◎|○|○|
|テスト作成の労力|◎ (簡単)|☓ (非常に高い)|△ (そこそこ高い)|☓ (かなり高い)|
|日本語で書ける|◎|☓|○|☓|
|商用日本語サポート|◎|☓|◎|△(法人契約で購入しないと不可)|
|海外からのアクセステスト|△ (海外サーバーで動かす必要あり)|△ (海外サーバーで動かす必要あり)|◎|◎|
|データプライバシー|◎ (自社内ローカル)|◎ (自社内ローカル)|☓ (New Relicに預ける形、コントロール不可)|☓ (Dynatraceに預ける形、コントロール不可)|
|ランニングコスト（月）|3600円(無制限)|0円+サーバー代|8000円/1万アクセスごと|1500円/1万アクセスごと|


## 1. Seleniumで自作
ウェブアプリの監視を自作する場合、最もポピュラーなのが、このSeleniumを使った方法だと思います。SeleniumはWebブラウザの操作をプログラムからコントロールできるフレームワークです。

たとえば、[SeleniumでWeb監視をしてLINEに通知する](https://qiita.com/mochi_yu2/items/c1b5fb8279166598cb92)というQiitaの記事でも取り上げられている通りです。

実際、以下で紹介する商用サービスもSeleniumを内部的に使っているところが多いようです。

こちらはすべて自分でプログラムを書かなければいけないので、非常にコストが高いですが、自由度は高いです。
たとえば、こんなコードを書けばGoogleの検索がちゃんと動いているか確認できます。
当然日本語では書けませんし、ここからアラートをする仕組みも書かなければいけません。

```Python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def is_up_Google(url):
    # Chromeをヘッドレスモードで起動
    options = Options()
    options.binary_location = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
    if is_headless:
        options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)

    # URLにアクセスして、「Google 検索」のボタンがあることを確認
    driver.get(url)
    if driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/form/div[1]/div[1]/div[3]/center/input[1]'):
        return True
    else:
        return False

if __name__ == '__main__':
    google_toppage_url = "https://www.google.com/"
    is_up_Google(google_toppage_url)

```

## 2.New Relic Synthetics
New Relicはアプリケーション監視（APM）のサービスを一括で提供している会社です。その中で外形監視を行うサービスがNew Relic Syntheticというサービスです。[日本語での公式記事](https://newrelic.com/jp/blog/how-to-relic/newrelic-synthetics-overview)もあり、力を入れている感じです。

こんなふうに地図上のどこで問題が発生しているのか可視化できるので、かなり使いやすそうです。
![geo.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/4d3bb07d-c51f-db19-d2db-2dd9721ea89c.jpeg)

また、以下のようなウォーターフローグラフから、どこで詰まっているのか詳細に把握するのも簡単ですね。
![product_synthetics_improve_sept2020_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/d45422e3-a160-3aac-424b-b0ccb5fa01e8.png)

監視・テスト設定もかなりやりやすく、UIのレベルが高い印象です。

### 日本語サポートについて
実際にNew Relicのサポートに問い合わせてみたところ、海外サポートの方から日本語のテンプレートで以下の様に丁寧に返信が来て、そのあと日本の方に引き継いでもらえました。かなりシームレスで対応いいですね！（個人情報は隠してます）
![Screen Shot 2021-12-19 at 10.50.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/87326837-f8a2-3d76-9a10-9e40df6ac393.png)


### 料金について
料金については、少しライセンス体系が複雑ですが、基本的には[このページ](https://docs.newrelic.com/docs/licenses/license-information/usage-plans/product-based-pricing-usage-new-relic-platform-pricing-usage-plan/)に準じるようで、1万アクセスで約8000円/月と、結構高めですね。たとえば一つのサイトを毎分チェックするとして、60*24*30=43,200なので、それだけで約3万円くらいはかかるようです。。。

UIの良さと日本語サポートはいいですが、料金が高い・・・

## 3.Dynatrace Synthetic Monitoring
DynatraceはNew Relicと同様にAPM製品の一つですが、日本語サポートがかなり貧弱のようです。公式ドキュメントもUIも全て英語のため、結構使うのが厳しかったです・・・

Synthetic Monitoringの説明は[こちらの公式ドキュメント参照](https://www.dynatrace.com/support/help/how-to-use-dynatrace/synthetic-monitoring)です。

機能面としてもNew Relic Syntheticに近いもののようで、シンプルにURLを監視するモードや、Scriptモードがあります。Browserのクリックを記録できる機能があり、これはとても便利でした！Chrome Extensionをインストールして、記録する形ですね。[こちらのドキュメント参照](https://www.dynatrace.com/support/help/how-to-use-dynatrace/synthetic-monitoring/browser-monitors/record-a-browser-clickpath)です。

![SynHTTPMonitors11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/d289a937-8610-fc9d-4241-c4324f9efe6c.png)

ただ、UIがかなり見づらく、パネル式なのはいいのですが、どこに何があり、異常があるのかないのか分かりづらいです・・・この問題はDynatrace製品全体で言われているようで、TrustRadiusという日本で言うkakaku.comのようなサイトでの評価はこんな感じでした。

![Screen Shot 2021-12-19 at 10.01.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/06299e72-1138-67f1-1039-86acafc87a3d.png)
>(参考訳)
>いい点：パフォーマンス監視ができて、ダッシュボードカスタマイズできるのはいいね！効率的に見れる！
>悪い点：UIが悪く、改善する余地大。高い。最初のアクセス時の表示が遅く、トランザクションを表示するのに時間かかりすぎる。

### 日本語サポートについて
実際にDynatraceのサポートに問い合わせてみたところ、１週間以上たっても返信がなく、催促しても返事が来ず・・・
どうやら法人契約でないと日本語サポートは使えないようです。
![Screen Shot 2021-12-19 at 10.54.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/be803837-95bf-6a28-ef4b-06a3ac0c0530.png)


### 料金について
[料金表](https://www.dynatrace.com/pricing/)からは詳しくわかりませんでしたが、1万アクセスで1500円から可能のようです。かなり安いですね。日本語サポート等がない分、安めなんでしょうか。大きなメリットですね。

## 4.T-DASH

やはり全て日本語なのは楽、という一言に尽きます！ダウンロード後についてくるドキュメントも日本語で、かなりわかりやすいです。
![Screen Shot 2021-12-19 at 11.06.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/9aa45695-e3d3-b5ca-e474-0dd5ce61ee11.png)

最初のサンプルを実行した画面ですが、画像を見ていただくと分かる通り、ローカルで実行出来る上、GUIがブラウザからとなるため、かなりとっつきやすいです。
![Screen Shot 2021-12-19 at 11.10.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/182ddf5a-f48f-5138-4370-ee117ab5869c.png)

そしてDynatraceと同様、トラッキングやパスチェックも可能です。この画面ではテストしたい部分にUI上でマウスで合わせるだけでパスを取得できてます。
![Screen Shot 2021-12-19 at 11.15.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/98c3ddab-26ac-fe76-1858-6feacc665c22.png)


そしてそれらを組み合わせてテストシナリオを、日本語で作ることができます。やはり日本語だと圧倒的に見やすいですね！
![Screen Shot 2021-12-19 at 11.16.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1228813/8518d0a4-eae1-1e65-95c3-643a9b69d76b.png)


### 日本語サポートについて
[プロキシが原因でT-DASHを起動できない問題の対処](https://qiita.com/kikuchi_seiya/items/37c7785a31e724188e2b)にて、@kikuchi_seiya様がサポート対応されていたログを載せられていたあったので、こちらを参照ください。ネットワーク関連の問題は環境依存が大きいため、かなりサポートが大変な部類に入ると思いますが、的確に丁寧にサポート受けられるようですね！

そして実際対処法がうまくいき、テストできたとのことでした。

### 料金について
[こちらの公式ドキュメント](https://www.t-dash.io/pricing/)にある通り、１ライセンスで3600円/月で、そこから無制限にテストできるようです。無制限はかなり嬉しいですし、自分のマシンの中で動くため、コントロールが効くので情報管理が楽そうです。

複数のサーバーで処理する必要があるのはかなり特殊な環境だとは思いますが、複数場所からのアクセスを試したい、という場合には、VPNを使用するか、物理的に海外サーバーに展開する必要があると思います。


# 自動化ツールの勘所
以上のように複数のサービスを紹介してきましたが、どう選択すればいいのかが難しいかもしれません。なので、自己流ですが勘所を紹介したいと思います。

- 変化が少ない古株の大企業のウェブサイト: APM製品などで時間とお金をかけて監視する方法が合ってます。特に銀行などは複雑な要件が多いため、開発サーバーの段階で監視を行う必要があり、イントラネットへのアクセスなど細かい設定が必要です。
- 中小企業、変化が大きいウェブサイト：T-DASHで監視すれば、かなり少ないリソースで十分なテスト・監視ができますので、おすすめです。特に、中小企業にとってはコストが大きすぎるAPMを選ぶ必要はないかと思います。
- トリッキーなウェブサイトで自社開発チームが大きい場合：Cy○er A○entなどのようなサイトがトリッキーで、かつ自社にエンジニアがいる場合はSeleniumで自社開発するのも手です。


# おわりに
本記事ではT-DASHとその他３サービス・フレームワークの比較を行いました。状況によって使い分ける必要がありますが、スモールスタートからできて、だいたいの環境をカバーできるT-DASHはおすすめです。現在オープンβ版とのことなので、本リリースが待ち遠しいですね。


## 参照
- [T-DASHの公式ページ](https://www.t-dash.io/)
- [T-DASHの料金プランについて](https://www.t-dash.io/pricing/)
- [T-DASHの申し込みの流れがわかりやすい記事](https://qiita.com/84zume/items/5051531c1d82139b4267)
- [New Relicの概要紹介](https://newrelic.com/jp)
- [Dynatraceの概要紹介（日本語）](https://www.dynatrace.com/ja/)