開発フェーズごとのテスト手法

ソフトウェアテスト

こんにちは、AITPのキムです!

今回、「テスト手法」について調べる機会があり、多くのテスト手法、目的などを知ることができました。その中でも「開発フェーズごとに優先的に行うテストは何か?」が気になったので、そこに主眼をおいてまとめてみました!
プロジェクトにテストを組み込む際のイメージとなれば幸いです。

◼️具体的には

フェーズだけではなく、サイトの特性によってもテストしたいことは変わるため、3つのサンプルサイト/サービスを例にあげ、

1:サイト立ち上げ時
2:機能追加時

のタイミングで、

「どのテストをするか、またそのテストの詳細」
「なぜこのテストがおすすめか?」

をまとめてみました。

💡実際にはサービスの規模、要件、目的などで行うテストは左右されますし、ここで挙げたテストだけを行えばOKというわけではありませんが、 特に優先度の高いおすすめテスト、という観点でそれぞれのフェーズで一つずつ挙げています。




◼️テスト対象

今回サンプルとした対象のサイト、サービスは以下の3つです。

🎮 A:家庭用ゲームのPRサイト

  • ある人気家庭用ゲームの続編のPRを行うサイト(いわゆるLP)。
  • 大きな画像、動画などを使いゲームのシステムや雰囲気を表示します。
  • 実際の購入は、外部の購入ページで行うためリンクで誘導します。
  • サイト公開と同時期にネット広告、SNS、テレビなどでも宣伝するため、大量アクセスが見込まれます。
  • 求められること・・・アクセス数、購入サイトへのクリックのコンバージョンが多いこと。
  • 個人情報の扱い・・・なし(※購入はリンク先の外部サイトで行うため)
  • 運用期間・・・3ヶ月

☕️ B:カフェのポータルサイト

  • 全国のカフェ情報を登録するポータルサイト。
  • 食べログ、ぐるなび、Rettyのようなイメージです。
  • カフェオーナーは会員登録+お店を登録し、自身のお店のメニューやイベント、記事などが設定できます。
  • 有料登録をすれば自分の店を優先的にサイト内に広告として表示したり、本サービス専用のクーポン等、集客効果の高い機能を利用できます。
  • エンドユーザーは町で今いる場所の近くのカフェを探すときなどにこのサービスを使います。
  • 求められること・・・お店の更新情報の即時性や、スマホ利用に備えた表示(レスポンシブ対応)
  • 個人情報の扱い・・・あり
  • 運用期間・・・特に定めなし

👨‍💻 C:顧客管理システム

  • toB向けの顧客管理システム。個人情報を取り扱うCRMシステムです。
  • 導入企業は、クライアントとの取引、売り上げを記録し、顧客情報管理の効率的に行えます。
  • 「アポイントメントをした」などのメモも各顧客の詳細ページに残すことができます。
  • 各メンバーは、ID、パスワードでログインすることで利用可能です。
  • 求められること・・・個人情報を扱うため、セキュリティの高さは必須です。
  • 個人情報の扱い・・・あり
  • 運用期間・・・特に定めなし




それでは、ここからそれぞれのサイトで行うテストを挙げてみます!

【1】サイト/サービス立ち上げ時の優先テスト

立ち上げ時には統合的なチェックという意味で様々なテストが必要にはなってきますが、ここでは優先度の高いテストを以下のように選択してみました。

🎮 A:ゲームPRサイト・・・負荷テスト
☕️ B:カフェのポータルサイト・・・互換性テスト
👨‍💻 C:顧客管理システム・・・セキュリティテスト

以下、具体的なテストの概要、選択理由です!


🎮 A:ゲームPRサイト

✅ 実施テスト:負荷テスト

アクセス多過時などの負荷においてシステムが適切に動作し続けることを確認し、性能の限界をチェックするテストです。 手動で負荷をかけるほどのアクセス検証は難しいので、「JMeter」「k6」などの専用の負荷テストツールなどを利用すると良さそうです。

◼️選んだ理由
SNS、メディアでのPRキャンペーンもあるため、リリース直後は特に瞬間的なアクセス負荷がかかる可能性があります。「どの程度までアクセスがあればサーバースペックやその数を増やすか」などの基準をつかみ、入念な準備が行えます。


☕️ B:カフェのポータルサイト

✅ 実施テスト:互換性テスト

エンドユーザーが利用する多様な環境(OS、ブラウザ、端末、ネットワーク環境)において、表示や動作の安定性をテストします。

◼️ 選んだ理由
管理画面を利用するカフェオーナーだけではなく、その情報を閲覧するエンドユーザーも閲覧環境は多種多様で、スマホアクセスできることが最近では求められています。 特にiOS、Androidなどスマートフォンで、「表示崩れやアクセス時のUI、UXに問題がないか」を全体的にチェックします。

💡常に増え続ける全てのブラウザ、OS、端末をカバーすることは難しいので、事前に動作環境(例:最新バージョンのモダンブラウザのみ)をある程度決めておき、サイトにも動作環境説明ページを設置しておくと良いと思います。


👨‍💻 C:顧客管理システム

✅ 実施テスト:セキュリティテスト

フォームのSQLインジェクション対策やブルートフォースアタック対策などの細かいテストはもちろん、規模などに応じて外部団体を利用しての脆弱性診断なども行うと良いと思います。

◼️ 選んだ理由
セキュリティ対策は個人情報を少しでも扱うのであればどのサイトでも必要ではありますが、企業や個人の情報を管理するサイトということで、特に最重要項目として選択しました。





【2】機能追加時のおすすめテスト

続いて、機能の追加時のテストです。一言で「機能」といってもざっくりしすぎているので、それぞれのサイトで具体的な追加する機能とその概要も考えてみました。

🎮 A:家庭用ゲームのPRサイト・・・カウントダウン機能 / ABテスト
☕️ B:カフェのポータルサイト・・・カフェのお気に入り機能 / 互換性テスト
👨‍💻 C:顧客管理システム・・・顧客ステータス管理機能 / QAテスト

機能の概要、テストの情報は以下のとおりです!


🎮 A:家庭用ゲームPRサイト

➕ 追加機能:カウントダウン機能

期間限定のお得なキャンペーンイベントを実施し、「今購入すると特典が追加される旨」と「残り時間カウントダウンのリアルタイム表示」を画面表示し、ユーザーに購入を促します。
また、実装後も1ヶ月に1度程度の頻度でキャンペーンを行います。

✅ 実施テスト:ABテスト

要素の違いのある2つ以上のバリエーション(Aパターン、Bパターン)のデザインを作成し、アクセスしたユーザーにランダムでどちらかを表示します。 その結果(コンバージョン、サイト滞在時間など)を比較し、より効果がある手法を選択するテストです。

◼️選んだ理由
・カウントダウンの残り時間をいつから開始するか(3日前 or 1日前)
・デザインや文言の微妙な変化(あと1日!or 今だけ!など)
このような変化をつけたパターンでよりコンバージョン結果が出るのはどちらか?を測定するのに適しています。定期的にキャンペーンを行う予定もあるため、ABテストで最大限の効果を探ります。


☕️ B:カフェのポータルサイト

➕ 追加機能:お店のお気に入り機能

これまではサイト内でいきたいお店を見つけても、たくさんのお店が掲載されているのでどこだったか分かりづらく、後日改めて検索し直す必要がありました。
一覧ページ、検索ページ、詳細ページなどでお店ごとに「お気に入り」機能を追加することにより、後から簡単に行きたいお店を再チェックできるようになります。

✅ 実施テスト:ビジュアルリグレッションテスト

コード変更時、コンポーネント追加時など、変更前、変更後の見た目の画像比較をしてUIに意図しない崩れ、変更が発生していないかをテストします。「Playwright」などのE2Eツールが利用できます。

◼️選んだ理由
様々なページのカフェ情報付近にお気に入りボタンを追加したため、「ページAでは問題なくとも、ページBでは汎用CSSが影響し意図しない崩れになる」といったケースが起き得ます。
既存の表示に意図しない崩れが起きていないかを確認することが求められるため、このテストを選択しました。


👨‍💻 C:顧客管理システム

➕追加機能:顧客ステータスのラベル機能

詳細のメモを残せる機能はありますが、細かい状況を記載するなど長文になりがちでした。
顧客ステータスを認識しやすくするよう、「ステータスのラベル機能」を追加します。
一覧ページ、詳細ページで、顧客ごとにステータスのラベル(例: 「新規」、「優良顧客」、「見込み薄」、「要フォロー」「受注」など)を追加、設定、変更ができるようになります。

✅ 実施テスト:シナリオテスト

ユーザーが一連の流れに沿ってシステムを問題なく利用できることをユーザー視点で確認するテストです。実際に利用者のシナリオを考えし、操作を行っていくことで、
「この位置だと追加された機能が分かりにくいのではないか」
「この画面でもこの機能は操作できた方がいいのではないか」
といった、要件や仕様をただ満たしているだけでは見つけづらい部分を洗い出すことができます。

◼️選んだ理由
本機能で以下のような複数の利用ケースが想定されます。
・詳細ページでラベルを追加する、変更する
・顧客一覧ページで、そのラベルを確認、変更し、状況を一目で判断する
普段のユースケース、操作のメインフローに影響する機能は、シナリオテストを行うことで、よりユーザー視点での使い勝手を確認することができます。





【3】運用中の障害に役立つテスト(番外編)

最後に番外として、特定のサイトに関わらず、サイトやサービスの運用中に何らかの障害発生時に、横断的に役立つテストを紹介します!
これらを行っておくことで、トラブル時、迅速に原因特定などを行えます。

ログ設計テスト

ソフトウェアのログファイルを解析してエラーや警告を特定するテストです。 正しいタイミングで正しくログが出るか、またエラーや警告が正しいか確認を行い、これを元にログ設計の見直しを行う。 運用を見据えて正しいログ設計になっていることを確認する重要なテストです。

バックアップ・リカバリテスト

バックアップしたデータから正しくリカバリができる確認をするテスト。緊急時に備えたシミュレーションを行うことが目的です。





最後に

今回紹介したテストをまとめると、以下のようになります。

サイト フェーズ テスト内容 目的
ゲームPRサイト 立ち上げ時 負荷テスト 大量アクセスに備える
カフェポータルサイト 立ち上げ時 互換性テスト 複数環境の利用に備える
顧客管理システム 立ち上げ時 セキュリティテスト 顧客情報を守る
ゲームPRサイト 機能追加時 ABテスト パターン違いの効果検証
カフェポータルサイト 機能追加時 ビジュアルリグレッションテスト 予期せぬ崩れをチェックする
顧客管理システム 機能追加時 シナリオテスト 様々なユースケースを想定する

今回は特性に応じた優先的なテストを紹介しましたが、プロジェクトの規模や目的によって他のテスト手法も組み合わせ、検討することが大切です。
特に番外としてあげたような、運用中の障害対応や継続的な改善に役立つテストを事前に実施しておくと、さらに効率的な運用が可能になります。

テスト手法の参考になれば幸いです!

関連するタグ