この記事は ACCESS Advent Calendar 2023 18日目の記事です。
こんにちは、一人用こたつから離れられない @keigo1450 です。
今回は弊社プロダクトである Linkit Maps を題材に、テスト設計初心者向けの小技を紹介したいと思います。
対象読者:
- テストの経験が浅め
- 担当になった製品・サービスやその業界にまだ詳しくない
- テスト技法についてあまり知らない
- きちんとテスト項目を出しているつもりなのにレビューで観点漏れをたくさん指摘される
- 今すぐテストを改善したい
3行まとめ
- 仕様書だけを使ったテスト設計には限界がある
- テスト対象を使う人・使われる状況にどんなバリエーションがあるか、一般的な知識から書き出してみよう
- バリエーションを使って「こんな条件でも動くか?」「こんな状況でも使えるか?」という実用性を確認するテストケースを作ろう
お題:Linkit Maps 位置情報ライブ自動停止・再開機能
(※以下の仕様は題材とするために簡略化したものです)
Linkit Maps には「位置情報ライブ」という機能があり、 自分の現在位置を他のユーザーと共有する ことができます。
この位置情報ライブ機能に対し、追加で「自動停止・再開設定」を行うと、毎日・自動的に 「始業時間に位置情報共有を開始し、終業時間に停止する(=業務時間外は位置情報を共有しない)」 ことができます。(エアコンやテレビのOn/Offタイマーや旅行中に部屋の照明をOn/Offする防犯機能などをイメージしてもらえればと思います。)
自動停止・再開設定は3つのUI部品で行います。
- 自動停止・再開スイッチ(初期値 Off)
- 自動再開時刻(初期値 9:00)
- 自動停止時刻(初期値 17:00)
テスト初心者あるある
「テストをしてください」「テストを作ってください」と言われたときに仕様書からキーワードを拾ってテストしていませんか?
例えばこんな感じです。
- スイッチがオフのとき自動停止・再開しないこと
- スイッチがオンのとき自動停止・再開すること
- 自動再開時刻を変更できること
- 自動停止時刻を変更できること
- …
これらは必要なテストケースですが、これで十分かというとどうでしょうか?
「そうは言っても、まだ製品に詳しくないし…」「テスト技法を身につけるには時間がかかるし…」という人もいるかもしれません。
でも実は、「誰でも知っている普通のこと」がテストの強化に使えるんです!
(脱線しますがまずは仕様書から情報を絞り尽くそうという過去記事はこちら → 天・地・表・裏で仕様を読む)
テスト対象の「外側」=現実世界の「色々」に目を向けよう
もしテスト対象について詳しくなくても、それが使われるこの世界のことを私達は色々と知っています。
例えばテスト対象を使う「人」や「環境」について考えてみると、さまざまなバリエーションを思いつくでしょう。
- 業種の違い(建設業、運輸業、不動産業など)
- 職種の違い(営業職、管理職など)
- 勤務時間帯の違い(日勤、夜勤、時短など)
- 利用シーンの違い(朝、昼、夜、深夜など)
- 勤務場所の違い(都心、地方、海外など)
- …
(Linkit Mapsは主に企業を対象にした製品なので職業に関するバリエーションを例として挙げています。別の製品であれば年齢や性別、趣味などのバリエーションも考えられるかもしれません)
また、「環境」を「ユーザの日常生活」と言い換えてみると、さまざまな出来事(イベント)が起きうることも分かります。
- 仕事中、スマホの電池が切れる
- 移動中に圏外になる
- 電話がかかってきて作業が中断される
- 有休を取る
- …
こういう人もいる、こういうことも起こる、というような、大抵の人が知っていることをテストに組み込んでみるとどうなるでしょうか?
- 夜勤の人が自動停止・再開機能を設定しても(例:再開 20:00 / 停止 6:00)動作するか?
- 日本で自動停止・再開を設定した人が海外(例:時差+3時間)に行ったら何時に動作するか?
- 自動停止時刻にスマホの電池が切れていて、帰宅後に充電して電源が入ったら停止状態になるか?
- 自動再開時に圏外エリアにいても正常に再開するか?
- 停止時刻・再開時刻に別のアプリ(例:通話アプリ)を使っていても停止・再開するか?
- …
テスト対象が現実世界のさまざまな場面にきちんと対応できること、実用に耐えうることを確認するテストケースを作ることができます。
注意
「これができれば専門知識やテスト技法が不要だ!」ということではありません。また、テストケースの増え過ぎに注意しましょう。
「ちゃんとしなきゃ」と思わなくていい
テストケースを作るとき、無意識に「仕様書などチーム内で認められた文書を元にテストケースを作らなきゃいけない」と思っていませんか?
"電池が切れたら"、"スマホを落としたら" なんて日常的なワードは、なんとなく「ちゃんとしてない」と思っていませんか?
大事なのは「仕様書通りに動くこと」ではなくて「実社会で使えること」です。
そしてそれをテストするために必要な知識の一部は、既にあなたの中にあります!
頭の中から「色々」を発掘してテストに活用しましょう!
読んでいただいてありがとうございました。
明日は @komitake さんです!