みんなでやろう、システムテスト！

[テックタッチアドベントカレンダー](https://qiita.com/advent-calendar/2019/techtouch)22日目担当の@mosimosiです。

21日目は@mochibuta による [golandの設定紹介](https://qiita.com/mochibuta/items/f767efcacc186923d1e0) でした。
テックタッチでは特に希望がなければ開発チーム全体でIDEを統一し、ノウハウをうまく共有できるようになっています。
実際 @mochibuta によりチーム全体のgolandの活用が飛躍的に向上しました。ショートカット一つにしても、こういった共有って嬉しいですよね。


# はじめに
みなさん[Katalon](https://www.katalon.com/)というE2Eテストツールはご存知でしょうか？
Katalonは2015年1月にリリースされた比較的新しいテスト自動化ツールです。
まったく新しいツールかと思いきや、古くから実績のある元祖E2EテストツールSeleniumのコアエンジンを活用できるようにSelenium上に構築されています。
[ガートナーレビュー]((https://www.gartner.com/reviews/market/software-test-automation/compare/katalon-vs-selenium))でも、負けず劣らずの評価を得ています。

Katalonはエンジニアはもちろんですが、**非エンジニアも想定利用ユーザ**として作られております。

この想定利用ユーザの広さがKatalonの魅力の一つであり、システムテスト運用に置いて**利用ユーザの広さ**が如何に重要かという点をお話ししたいと思います。

（最初はKatalonの紹介記事を書こうと思っていましたが、少しづつ脱線してしまい、このようなまとめになりました。紹介記事はまた今度書こうと思います。）

# 想定利用ユーザが広い
Katalonはエンジニアはもちろんですが、**非エンジニアも想定利用ユーザ**として作られております。
例えばテストケースを書くエディターですが、それぞれに合わせたものが用意されています。
エンジニアはコードベースで記述できるScirptエディターを選択できますし、非エンジニアの方はGUIベースのManualエディターを選択できます。

Manualエディターを用いた場合でも、かなり複雑なテストケースを作成することが可能です。
![alt](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Katalon_Studio_screenshot.png/600px-Katalon_Studio_screenshot.png)


ではなぜ、**システムテストの運用において「想定利用ユーザが広い」必要がある**のかソフトウェアテストまで立ち返って考えてみましょう。

（最初はKatalonの紹介記事を書こうと思っていましたが、、、紹介記事はまた今度。）

# システムテストの役割は何？
こちらに[V字モデル](https://www.softwaretestinghelp.com/what-is-stlc-v-model/)というソフトウェアテストライフサイクル（STLC）の図があります。
最下部をCodingとして、右側上部へ湧き上がっている部分が「検証フェーズ」となっています。

![alt](https://cdn.softwaretestinghelp.com/wp-content/qa/uploads/2014/04/STLC-V-Model.jpg)

逆に、左上から最下部のCodingに向かっているのが「開発フェーズ」となっています。
「開発」と「検証」が対になっており、こちらをみると**システムテストが要件定義を検証する為のもの**ということが確認できます。

**要件定義を検証するって何？**

これはわかりやすくいうと、その**プロダクトがお客さんに届ける価値を検証する**と言い換えることができます。

# 誰でもできる！
例えばGmailという製品を例にとってお話しすると、以下のような一つの価値を提供していると言えます。

*「誰でも簡単に始められ、特別なソフトを必要とせずブラウザさえあればメールが送信でき受信できる。」*

この要件、僕的には満たされていると思いますが、皆さんはどう思います？
もちろん結果は◎ですよね。
**そう、システムテストって作り手じゃなくてもできるんです！**

要件を検証するに当たって重要なのは、**内部のプログラムがどのように作られているかではなく、ユーザ目線に立ち、要件を満たしていると言えるシナリオを如何に作り実行するか。**ではないでしょうか。

*「誰でも簡単に始められる」というのは、こういう事なんだ！*というシナリオを作られる方がシステムテストの最適な担当者で、そこに**エンジニアとしての知識はマストではない**と僕は思います。

# エンジニアがやるべきシナリオ
非エンジニアのシステムテストへの関わり方についてお話ししましたが、もちろんエンジニアもシステムテストに置いて重要な役割があります。

もう一度Gmailの価値をみてみましょう。

*「誰でも簡単に始められ、特別なソフトを必要とせずブラウザさえあればメールが送信でき受信できる。凄くセキュアな環境で。」*

最後に文章が追加されています。



製品の要件の中には当たり前のように、セキュリティ、可用性などが入ってきます。
こういった部分を検証する**シナリオ作成と実行**にはエンジニアとしての視点が重要になってきます。

![alt](https://3.bp.blogspot.com/-ctRyFkN-YlI/WWXW_1yLwYI/AAAAAAABFeg/PiYWsub5HG43BreXGlCQ0YRsLUkxedpGwCLcBGAs/s180-c/internet_f5_attack.png)

ユーザの中には、**優良なユーザだけではなく悪意のあるユーザもいます**。
そんな人たちが取るべきシナリオを想定して、如何にブロックするかもシステムテストが担保するべき領域ではないでしょうか。



# システムテストは全員で向き合う
システムテストの領域ではエンジニアと非エンジニアの境界線などはなく、全員の共通認識としては、自らのプロダクトの価値を検証するためのテストという位置付けであり、それぞれに役割があります。

**役割を持つ人が全員コードが書けるわけではない。**
**ただその人たちの品質を上げていこうという気持ちに応えるために、Katalonは利用ユーザの裾野を広げているのだと、僕は思います。**

![alt](https://1.bp.blogspot.com/-olFVshZJTzk/WvQHOjmnOEI/AAAAAAABL5M/SEz0GaUgc3MvGxqw45qO_6XrRx1gUigfQCLcBGAs/s180-c/enjin_people.png)


# つづく
今回、非エンジニアと表現した人の職種は何でしょうか？
一般的にはプロダクトチーム内のQAを筆頭にスモールチームではPM、PdMと言う方達も思い浮かべると思います。
では、デザイナの方がシステムテストにどの様な役割を持てるでしょうか？

システムテストに限らず、テストの領域ではそのテスト設計や運用の良し悪しは費用対効果で語られることがあります。コストを如何に抑えるかは、全てのテスト領域においていつでも議論されます。

システムテスト（自動化）においてのコストはやはりメンテナンスコストになると思います。日々変化していくプロダクトにおいて、シナリオに正常な検証機能を持たせるのは大変です。

この辺りの鍵を握っているのはデザイナの方々だと僕は思っています。
次回はこの辺りをお話しできればと思います。