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

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

TestSphereというカードデッキを買ってみたので、みんなで遊び方を考えよう!

 TestSphereというカードデッキを買ってみましたので、紹介します。
 遊び方を考えたいので、みなさんご協力ください。

f:id:kz_suzuki:20200726153507j:plain
一瞬、ちょい箱ボロいな!?と思ってしまった
f:id:kz_suzuki:20200726153429j:plain
中はちゃんと包装されていた

TestSphereとは

 Ministry of Testingというサイトが開発した、ソフトウェアテストに関するカードゲームのようなものです。

この記事の目的

 TestSphereの紹介ではあるのですが、これを使ってどう遊ぼうか(特にオンラインで!)を考えたいので、みなさん手伝ってください。
 以下の「なぜ、TestSphereを作ったのか」は、公式ページ(https://www.ministryoftesting.com/testsphere)からの翻訳です。

<翻訳> なぜ、TestSphereを作ったのか

 ソフトウェア開発の世界は進化しています。わたしたちは日々、早期のテストを行い、「シフトライト」「シフトレフト」し、かつてよりさらに深く掘り進んで、自動テストを賢く利用しながら、チーム全体が品質にフォーカスしています。
 スクラムチームの中にテストを根付かせたり、アジャイルプラクティスを通して、わたしたちの仕事はずいぶんとよくなっていることがわかります。

アジャイルチームの一員としてのテスター

 テスターは開発の一部です。チームの中で、すぐそばに座っていて、すべてのことをテストします。しかしこれには課題があります。テストの専門家が、様々なチームに分散されているということです。これはつまり、別のロールの人たちとはよく交流できる一方で、話のできるテスター同士の連帯意識を感じることが難しくなっているのです。

孤独なテスター

 チームの中で唯一のテスターにななってしまうことがあるというのが、テスターが直面するもう一つの課題です。作る側のマインドセットにじわじわと吸収されてしまい、テストが浅すぎるものになってしまうこともあります。また、テストを行っている同僚と共有できたはずのナレッジを失い、テストの新しい考え方や直観のひらめきから遠ざかってしまう危険性もあります。
 このような課題に取り組むために、TestSphereは開発されました。

中に入っているもの

 TestSphereのカードパックには、5つのカテゴリーに分けられるカードが100枚入っています。

  1. ヒューリスティックス: 問題に取り組むために考えられる方法
  2. 技法: ありうる問題を見つけるためにテストに用いている賢いアクティビティ
  3. 感情: テストを行うことで引き起こされる感情は何であれ、事実として取り扱われるべき
  4. 品質の側面: 対象のアプリケーションについて、着目するかもしれない側面として考えられるもの
  5. パターン: テストにおけるパターン。ただし、テストにおけるバイアスのように、負の意味をもつパターンも含む

 5つの次元についてそれぞれ20枚のカードがあり、カードがそれぞれテストのコンセプトを紹介しており、各3つの例がそれらのコンセプトに別々の光を当てています
 テストのアイデアを引き出し、話し、学ぶための100枚のカードと300の例というわけです。

(翻訳終わり)

現物はこんな感じ

 5つのカテゴリーごとに、現物を1枚ずつ見てみましょう。

紫 - 感情

 たとえば「ANGER (怒り)」についてはこのような内容になっています。

f:id:kz_suzuki:20200726153440j:plain
ANGER

怒り - ネガティブな感情:
人の気を昂らせるものはたくさんあります。怒りは不合理で、人を冷淡にさせることもあれば、改善のモチベーションになることもあります。

  1. 多額の投資を受けたプロジェクトで長期にわたって働いていると、人はとても感情的になってしまうことがある。彼らのストレスを発散させるには、どのような方法があるだろうか?
  2. あなたとプログラマーは、ディスカッション、拒否されたバグやフィーチャなど、いたるところで激しく言い争っている。
  3. 必要な時にしょっちゅう壊れたり落ちたりしてしまう環境に、あなたはうんざりしている。二度とそれが起きないように、今回はしっかりと対策を用意しておかないといけない。

緑 - 技法

 「ABテスト」の例。

f:id:kz_suzuki:20200726153446j:plain
A/B TESTING

ABテスト - プロジェクトレベル:
1つのコンセプトを、別の方法で行ってみるもの。両方を評価し、ベストのものを選ぶ。マーケティングでよく行われます。

  1. ある企業は、2種類の人のサンプルに対し2つの異なるメールを送る。そしてキャンペーンでは、もっとも反応の良かったものを使う。
  2. 新しいフィーチャーについて、異なるコンセプトに基づく2つ以上ののモックアップを作る。そして、ユーザからの反応がいちばんよかったものを使う。
  3. テストのミッションを達成するために、2つの戦略を提示する。チームやステークホルダーと議論し、彼らの興味をもっともひくものを選ぶ。

赤 - ヒューリスティック

 「説明可能性」の例。

f:id:kz_suzuki:20200726153453j:plain
EXPLAINABILITY

説明可能性 - 一貫性のヒューリスティック:
説明の難しいプロダクトは、ユーザにとって、理解がそうとう難しいかもしれません。

  1. FAQはドキュメンテーションより長くないだろうか。だとすると、アプリが説明困難なものである可能性がある。
  2. あるややこしい振る舞いについて説明してみよう。説明のために妙なモデル、コンセプト、スキームを持ち出さなくてはならないとしたら、その機能自体がうまくなじんでいないのかもしれない。
  3. 製品は、ツールチップやヘルプ機能を提供しているか? それは実際どう役に立っているか?

青 - 品質の側面

 「テスタビリティ」の例。

f:id:kz_suzuki:20200726153457j:plain
TESTABILITY

テスタビリティ - 保守性の側面:
あなたのテストの作業がどれだけ容易か、あるいは困難かに影響を与えるあらゆるものを指します。

  1. ゲームをより簡単にテストする方法として、しばしば「チートコード」というものがある。「最強」の状態をテストしたければ、上上下下左右左右BA、スタート、セレクト」*1を入力するとか。ただこれはショートカットだということを忘れないように!
  2. テストのための環境は十分か? その環境を何に使う? チームメンバー全員に、それが明らかになっているか?
  3. ある特定の時刻にして発生しない機能をテストするために、システムの時刻を操作できるか?

オレンジ - パターン

 「自動化」の例。

f:id:kz_suzuki:20200726153502j:plain
AUTOMATION

自動化 - アプローチ:
ロボット。心や頭脳は持っていませんが、迅速に、素晴らしい計算をこなすことができます。

  1. 同じことを50個同時に実行することのできる、性能テスト用のスクリプト。ベースラインを定めて、耐久性を設定しておくことで、結果を分析するのに役立つ。
  2. 退屈なチェック作業をしなくてはならない? 自動化して時間を作り、新しく面白いテストをしよう。
  3. ロボットは、何かをモニターするのが得意。あなたが働いている時間、寝ている時間、食べている時間、人生を楽しんでいる時間に、トラブルがないか調べてもらおう。

 このようなカードが、全部で100枚あるわけです。けっこう分厚い。

使い方の紹介

 使い方の例を、公式サイトからのかいつまんでみましょう。

1. ナレッジの共有

 引いたカードをトリガーにして、テストに関する話や経験などを話す。

2. リスクストーミング

 プロダクトやプロジェクトについての重大なリスクを洗い出すために使う。

3. TestSphereアリーナ

 基本デッキに拡張パックを追加して、UNO風のゲームに仕立て上げたもの。カードを捨てる際に、そのカードと直前のカードを関連付けるストーリーを話すというゲーム。

4. スプリントプランニング

 カードをベースにして、計画対象のストーリーに対してテストすべきことを考えていく。

5. レトロスペクティブ

 「感じたこと」が置き去りになりがちなレトロでカードを使うことで、人間としての側面も見せられるようになる。

6. インスピレーション

 テストはアートのようなもの。TestSphereを使って、次のテストに向けたインスピレーションを得る、

 また、使い方などが書かれたカードには、「アイスブレイカー」としてこんなことが書かれています。

  1. 孤独なテスターを見つける
  2. 彼らのところに歩いていって、無作為にカードを1枚引く。たとえば「同値分割」。
  3. そのテスターに、「同値分割について、何か話題や経験を教えてくれないか」と尋ねる。

 いや、どんな強メンタルだよ・・・そんなやついるかよ・・・と思いますが。。。

 「ゲーム」はこう。

  1. テスターを集めてグループを作る
  2. デッキをカテゴリーで分ける
  3. 1枚(もしくはもっと)カードをめくる
  4. めくられたすべてのカードに関して紹介できるようなストーリーを考えて、できるだけ早く宣言する
  5. 最初にストーリーを話せた人がカードをとる これを一定時間行って、最後に一番多くカードをもっていた人の勝ち

 前述の「TestSphereアリーナ」を追加してのゲームもそうなんですけれど、「速さを競う」はオンラインと相性悪そうですよね。なので、集まった人が順番になんかしゃべるようなやつにできないもんかなと。

 「ソフトウェアの品質を学びまくる」では、TestSphereで一緒に遊んでくれる人を募集しています!

*1:コナミコマンドというもののようですね。