チャットアプリケーションのテストケース
Tags: chat, inappchat, pubnub, realtime
Published: 2023-11-29 08:56:48

ソフトウェアがかつてないほど簡単にアクセスできるようになるにつれ、チャットアプリケーションが典型的なユーザー行動だけでなく、意図しない奇妙な行動、あるいはアプリに問題を引き起こす可能性のある悪意のある行動をうまく処理し、サポートできるようにする必要があります。開発者は、アプリケーションのデプロイ後に問題を修正することができるかもしれませんが、米国だけで、ソフトウェアの品質不良は、[2022年に2兆4,100億ドルを](https://www.it-cisq.org/the-cost-of-poor-quality-software-in-the-us-a-2022-report/)超えました。こうした問題の原因は、急がされる納期、標準以下のセキュリティ、誤った設計の選択、スケーラビリティの問題などです。

チャットアプリケーションのテストが必要な理由、アプリのテストの作成方法、アプリケーションを自分でテストするために使用できるテストケースの例については、続きをお読みください。

チャットアプリケーションのテストの必要性
--------------------

前述したように、ソフトウェアの品質低下は、世界中で何兆ドルもの損失を企業に与えています。チャットアプリケーションを徹底的にテストすることは、入念なソフトウェアテストで防ぐことができるエラーで何百万ドル、何千万ドルもの損失を出さないようにするために不可欠です。

2021年10月、[Facebookのインフラ](https://www.facebook.com/business/news/update-about-the-october-4th-outage)（Instagram、Messenger、WhatsApp）全体が、サーバーのメンテナンスチェック中にエンジニアが発行した1つのコマンドによってダウンした。このコマンドは、ネットワーク・サーバーの容量の健全性を確認するために実行されたもので、意図せずネットワーク内のすべての接続をダウンさせてしまった。

およそ6時間続いた停電により、同社は[推定1億ドルの](https://fortune.com/2021/10/04/facebook-outage-cost-revenue-instagram-whatsapp-not-working-stock/)広告収入を[失い](https://fortune.com/2021/10/04/facebook-outage-cost-revenue-instagram-whatsapp-not-working-stock/)、この収入損失を企業に弁済しなければならなかった。この問題は、エンド・ツー・エンドのテストのためにコマンドやテストスクリプトを徹底的にテストし、テストフレームワークやツールによってこのようなコマンドが捕捉されるようにすれば防げたかもしれない。Facebookがこのような問題をシミュレートするドリルを実行したとしても、このような重大なエラーに対処するためにチームメンバーを訓練し、安全策を講じることで、このようなエラーの再発を防ぐことができます。

ゴールと使用法に基づいてチャットアプリケーションのテストケースを作成する
------------------------------------

ソフトウェアテストには異なるタイプがあるため、チャットアプリケーションにとって意味のあるテストを作成する必要があります。いくつかのテストは、オーディエンスに関係なくチャットアプリケーションに適用することができますが、チャットアプリケーションは、異なる用途とオーディエンスを持っているので、多くのテストは、あなたが実装しているチャットアプリケーションのタイプに合わせて調整する必要があります。

あなたの[チャット](https://www.pubnub.com/use-case/in-app-chat/)アプリケーションは、Messenger、WhatsApp、Discord、Slackのように製品のメインとなるものですか？それとも、オンラインビデオゲーム、eBay や Amazon のような電子商取引アプリケーションのカスタマーサポート、Twitch や YouTube のようなストリーミングプラットフォームで補助的に使用するものですか？アプリケーションのスタイルは、テストケースの方向性を決定します。

次に、ユーザがどのようなデバイスでチャットアプリケーションを操作するかを検討する必要があります。厳密にモバイルなのか、それともウェブ、デスクトップ、モバイルのクロスプラットフォーム体験を提供するのか？これは、異なるブラウザ、デスクトップ、モバイル間の通信に基づいて、エンドツーエンド、受け入れ、およびパフォーマンステストを実装する必要があるため、特に重要です。

アプリケーション内では、ユーザーが良いユーザーエクスペリエンスを得られるようにテストする必要があります。ユーザは、他のユーザ、ユーザのグループ、さらにはサーバにメッセージを送信します。これらのメッセージは、テキスト、絵文字、GIF、ウェブリンク、他のユーザーへの言及、他のメッセージへのリアクション、さらにはファイルにすることができます。ユーザは、適切と思われるようにこれらの異なるグループを整理し、これらの異なるタイプのメッセージやチャットアプリケーションの設定を変更できるようにする必要があります。

### テストシナリオの短いリストを作成する

あなたのチャットアプリケーションのための特定のテストケースは、アプリケーションのタイプ、ビジネス要件、視聴者、および設計に依存します。しかし、あなたがテストケースを作成することを確実にしたい他の一般的な領域があります。

これらの領域を整理し、あなたが作成するテストが手動テストまたは自動テストのためのものであるかどうかを決定することができます：

-   **機能性**：チャットアプリケーションの本質的な機能をテストします。ユーザーは、メッセージを送信、受信、表示できなければなりません。また、ウェブリンク、ファイル、GIF を開くことができなければなりません。ユーザーは友達リストを開き、ダイレクト/グループ/サーバーメッセージを管理し、ビデオやオーディオを介して他のユーザーと簡単に通話できなければなりません。
    
-   **セキュリティ**：ネットワークを介して送信されるメッセージは、TLSとAES256暗号化で保護されるべきである。アプリケーションにサインインするユーザーは暗号化され、SSOオプションが適切に機能していることを確認する必要があります。パーミッションの権利は意図したとおりに機能すべきです。つまり、会話や友達グループ、サーバーに参加するためには、ユーザーを招待する必要があります。
    
-   **プラットフォーム**：チャットアプリは異なるデバイス上で適切に機能する必要があります。デスクトップ（Windows、macOS、Linux）、モバイル（Android、iOS）、ウェブ（主要ブラウザ）の各デバイスでアプリケーションにシームレスにアクセスできる必要があります。デバイスがクロスプラットフォームで適切に通信できるようにしましょう。
    
-   **実用性**：チャットアプリケーションのユーザビリティをテストし、ユーザーがアプリケーションをシームレスに操作できることを確認します。
    
-   **パフォーマンス/スケーラビリティ**：高負荷下でアプリケーションをテストします。一度に複数のユーザーを入力し、異なるユーザーから複数のメッセージを送信し、サーバーにリクエストを行うなど。
    
-   **アクセシビリティ**：アプリケーションのローカライゼーション機能が適切にサポートされ、正しく翻訳されていることを確認してください。アクセシビリティオプション（色覚異常のユーザー向けなど）が適切に機能することを確認する。
    
-   **統合**：アプリケーションがサードパーティのアプリケーション、データベース、クラウドサービスと容易に接続できるようにする。
    
-   **セーフガード**：アプリケーションがネットワーク接続を失った場合や、アプリケーションをサポートするネットワークサーバーがオフラインになった場合のテストケースを実行する。
    

チャットアプリケーションのテストケース
-------------------

先に述べた一般的な領域の議論に基づいて、以下の領域に基づいて、より詳細なテストケースを作成することができます。単体テストを作成し、機能テスト、アプリケーションテスト、および、性能テストを実施するときに、独自のアプリ ケーションのために、これらのテストの詳細版をどのように作成するのが最適かを決定してください。このリストは、網羅的なものではなく、あなたのアプリケーションに固有の詳細なテストケースを作成するための出発点 として意図されています。

### 機能性

1.  ユーザは他のユーザに基本的なテキストメッセージを送ることができます。メッセージが送信されたことを、配信レシートが示すはずです。
    
2.  絵文字やGIFを他のユーザーに送ることができます。
    
3.  他のユーザーからの新着メッセージを受信し、閲覧することができます。
    
4.  未読のメッセージは、未読であることを示すハイライトやマークが表示されるべきである。
    
5.  既読のメッセージは、もはやハイライトされたりマークされたりすべきではない。メッセージが読まれたことを示すために、最初の送信者に既読のレシートが表示されるべきです。
    
6.  アプリケーションを使用していないときにメッセージを見逃した場合、モバイルデバイスではプッシュ通知でユーザーに警告するように表示されるべきです（バナー、バッジアイコンなど）。オフラインユーザーにメールを送信する設定がある場合、これらのメールは適切な設定に基づいて動作すること。
    
7.  メッセージにはウェブページへのハイパーリンクを挿入し、メッセージ送信時にリンクのプレビューを表示できるようにする。
    
8.  ユーザーは、エモーティコンを使ってメッセージに反応できるようにする。
    
9.  ユーザーがメッセージボックス内でテキストやリンクをコピー＆ペーストできるようにする。
    
10.  アプリケーションで定義されたファイルサイズの制限内でファイルを送受信できること。
    
11.  ユーザが大きすぎるファイルを送信しようとしたり、拡張子がサポートされていない場合に、適切なメッセージが表示されるようにする。
    
12.  アプリケーションでサポートされているファイル タイプを開いて送信できることを確認します。
    
13.  ファイルがサポートされ、ドラッグ＆ドロップがサポートされている場合、この機能が適切に動作することを確認すること。
    
14.  ユーザーのステータスアイコンが適切に表示され（オンラインは緑色、オフラインは灰色または赤色）、機能が許せばユーザーが変更できること。
    
15.  フレンド・リストを開いて、フレンドのオンライン・ステータスを確認できること。
    
16.  ユーザーは、友達を検索して追加したり、友達リクエストを受信して受け入れることができます。
    
17.  ユーザーは、フレンド・リスト内のフレンドを管理できるべきである。例えば、フレンドにメッセージを送ったり、フレンド・ステータスを宣伝したり（スター付き、親友など）、フレンドを削除したりできるべきである。
    
18.  ユーザーは、他のユーザー、過去のメッセージ、ディスカッション、リンクを検索できるべきです。
    
19.  ユーザーはプロフィール画像を変更したり、アプリケーションの機能を変更するための設定を有効にしたりできるべきです。
    
20.  特殊文字(特に[SQL インジェクション](https://www.w3schools.com/sql/sql_injection.asp)関連)を使ったメッセージの送信を試みてください。
    
21.  メッセージ送信時のアプリケーションの冒涜フィルタが適切に機能していることを確認してください。
    
22.  ユーザは個々のユーザにメッセージを送信し、他のユーザをグループチャットに追加し、これらの関係を管理できるべきです。
    
23.  ユーザーは、他のユーザーをサーバー/組織に作成および招待できること。
    
24.  他のユーザーと音声通話やビデオ通話ができること。通話中にオーディオ/ビデオ設定の調整、カメラのオン/オフ、マイクのミュートができること。
    

### セキュリティ

1.  ネットワーク監視ツールを使用し、送受信されるメッセージを監視することで、ネットワーク上で送信されるメッセージがTLSとAES256で保護されていることを確認する。
    
2.  データプライバシー法とデータ取得の応答性から、メッセージが適切な地域に保存されていることを確認する。
    
3.  ユーザーのログインプロセスをテストする。ユーザーが安全に認証され、回避できないことを確認する。
    
4.  ユーザーがSSOまたはサードパーティーのアプリケーションを使用してログインできる場合、このログインプロセスがシステムで正しく機能することを確認する。
    
5.  ユーザーは、自分の友達、グループチャット、サーバーを適切に管理できなければなりません。サーバーの管理者/所有者は、サーバー/グループチャットに固有の権限を付与して、他のユーザーを管理できるようにする必要があります。ユーザー間のプライベートな会話は、招待されない限り、第三者に侵入されないようにする必要があります。
    

### プラットフォーム

1.  チャットアプリケーションのすべての機能は、サポートされているすべてのブラウザで正しく動作します。
    
2.  別々のブラウザウィンドウでアプリケーションを使用している2人のユーザーは、お互いにメッセージを送受信し、表示することができる必要があります。
    
3.  ウェブまたはソフトウェアストアからチャットアプリケーションのデスクトップ版をダウンロードするユーザーは、デスクトップ用に意味のあるファイル形式である必要があります。
    
4.  ウェブまたはデスクトップウィンドウ上のチャットアプリケーションは、モバイルインターネットブラウザからウルトラワイドモニタまで、異なるサイズのスクリーンに対応できなければなりません。
    
5.  ユーザーは、Google Play や App Store などの主要なオンラインストアを介してモバイルデバイス上でチャットアプリケーションをダウンロードできる必要があります。
    
6.  ネイティブモバイルアプリケーションは、スマートフォンからタブレットまで、異なるモバイルデバイスの画面上で実行するように適切にフォーマットされている必要があります。
    

### 実用性

1.  アプリケーションのインストールは、必要最小限の情報でシームレスなプロセスであるべきです。
    
2.  ユーザーは、ユーザー名とパスワードの組み合わせ、SSOオプション、またはサードパーティとの統合（グーグルやフェイスブックなど）を使って、簡単にアカウントを作成したりログインしたりできること。
    
3.  アプリケーションの様々な機能の使いやすさを判断する。友達の追加、メッセージの送信、サーバーへの友達の追加などが難しいかテストする。
    
4.  アプリケーションの様々な機能を説明するリソースを見つけるのがどれだけ簡単かをテストする。
    
5.  テーマ、通知、テキストのフォント/サイズなど、アプリケーションのさまざまな UI やアラート設定をテストしてください。
    

### パフォーマンス/スケーラビリティ

1.  一人のユーザに対して、すべてのアプリケーションプラットフォームで異なるアクションを迅速に実行する。アプリケーションは、スムーズでレスポンシブな体験のために最適化されなければなりません。
    
2.  前のテストを繰り返しますが、2 人のユーザが同時にネットワークサーバからリソースにアクセスします。
    
3.  複数のユーザが同時にオンラインになっている状態で、アプリケーションにアクセスします。アプリケーションはスケーラブルであり、すべてのリクエストに対応できなければなりません。
    
4.  ステップ 1-3 を繰り返しますが、数百から数千のシミュレートされたユーザーを使用します。
    
5.  チャットアプリケーションのウェブ版とデスクトップ版は、不必要なブラウザとコンピュータリソースを消費すべきではありません。
    
6.  チャットアプリケーションのウェブ版とデスクトップ版は、使用中に他のアプリケーションとのマルチタスクを可能にする必要があります。
    
7.  モバイル版チャットアプリは不必要なリソースを消費しないこと。
    
8.  チャットアプリケーションのモバイルバージョンは、アプリケーションを再起動することなく、バックグラウンドに置かれることが許可されるべきである。
    

### アクセシビリティ

1.  アプリケーションは、サポートされているさまざまな地域でダウンロードできることを確認してください。
    
2.  提供されているアプリケーションのローカライズ機能をテストする。アプリケーションの設定、メッセージ、機能が適切な言語に翻訳されていることを確認してください。
    
3.  異なる言語のユーザ間で送信されるメッセージは、適切に翻訳され、かつ/あるいは、その言語の文字が正しく表示されるべきです。
    
4.  アプリケーションが提供する様々なアクセシビリティ・オプションをテストしてください。色覚異常のユーザのためのオプションが、アプリケーション全体を通して、また、別のプラットフォームでアプリケーションにログインするときと同様に、正しいカラースペクトルを表示し、持続することをテストしてください。
    

### 統合

1.  Google または Facebook アカウントのような、SSO とサードパーティサービスを使用する場合、チャットアプリケーションにサインインまたはアカウントを作成することをテストします。
    
2.  ユーザーは、チャットボット、GIF ライブラリの検索、ビデオ/オーディオ通話など、チャットアプリケーション自体にサードパーティのアプリケーションを追加できる必要があります。
    
3.  これらのサードパーティのサービスのためのこの統合マネージャは、ユーザーがこれらの機能を検索することができ、どのようにユーザーが統合を作成または追加できることを確認します。
    

### 回復

1.  ユーザーがインターネットから完全に切断されたときに、チャットアプリケーションで適切なアクションが行われるようにします。
    
2.  アプリケーションのウェブ版とデスクトップ版で、ユーザーがLANから切断されたがWiFiに接続されているときに行われる適切なアクションをテストします。
    
3.  アプリケーションのウェブ版とデスクトップ版では、ユーザーがWiFiから切断されているがLANに接続されているときに行われる適切なアクションをテストしてください。
    
4.  モバイル版のチャットアプリでは、ユーザーがWiFiから切断され、モバイルLTEに接続されたときに適切なアクションが実行されることを確認してください。
    
5.  デバイスの問題により、ユーザーのアプリケーションが突然切断されたり、フリーズしたり、シャットダウンした場合の動作をテストする。
    
6.  チャットアプリケーションのネットワークバックボーンを運用するネットワークサーバーがダウンした場合のシミュレーション。
    

チャットアプリにPubNubを使い始める
--------------------

チャットアプリケーションのテストケースの作成と実装は、チャットアプリが正しいユーザーインタラクションを処理できること、ユーザーと会社を保護するために適切なセキュリティ対策が実装されていること、信頼性と安全性を確保するためにチャットアプリのスケーラビリティを処理するインフラを確保するために不可欠な側面です。

アプリケーションを構築し続ける際には、ユーザーが必要とする様々なタイプのインタラクションや機能を念頭に置く必要があります。ユーザーは、趣味や仕事用に独自に作成された異なるサーバーや組織に参加できることを望むでしょう。異なるチャンネルやトピックで共同作業ができたり、プライベートチャットルームで友人や同僚とグループチャットや1対1の会話ができることを望むでしょう。ユーザーは、友人やチャンネルメンバーがオンラインかどうかを示すメンバーリストにアクセスできるべきです。メッセージを入力するとき、ユーザーは他のユーザーがいつ入力し、応答しているかを見ることができ、会話を活発にするためにメッセージのリアクションや絵文字のサポートを可能にする必要があります。

これらの機能を実現するのは決して簡単なことではありません。チャットアプリのUIを構築することに加えて、ユーザーへのメッセージの配信、オンラインプレゼンスシステムの検出、ユーザーがオンラインになったときのメッセージのロード、そしてユーザーのためにこれらの機能を安全に維持するためのコミュニケーションプラットフォームを維持するためのインフラをセットアップする必要があります。このようなインフラを自分で構築することも可能ですが、その場合、他のことに費やせる時間やリソース、維持管理が必要になります。そこでPubNubが役立ちます。

[PubNubを](https://www.pubnub.com/blog/pubnub-what-is-it-and-why-do-you-need-it/)使用すると、配信と既読の受信、入力インジケータ、ユーザーとチャネルのメタデータ、ユーザーのプレゼンスインジケータ、メッセージのリアクション、ファイル共有などを含む、ユーザーのための直接、グループ、および大規模なチャットを構築することができます。

PubNubを使用してチャットアプリケーションを開始する方法については、次のリソースを参照してください：

1.  他のお客様がどのようにPubNubを利用して[チャットアプリケーションを動かして](https://www.pubnub.com/customers/?solution=in-app-chat)いるかをご覧ください。
    
2.  [ツアーに従って](https://www.pubnub.com/tour/introduction/)PubNubの基本を学びましょう。
    
3.  JavaScriptを使用して[10行のコードで](https://www.pubnub.com/demos/10-line-chat/)チャットアプリを作成する方法をご覧ください。
    
4.  PubNubでチャットやその他の産業用アプリケーションを構築する方法を[ご覧](https://www.pubnub.com/how-to/)ください。
    
5.  [PubNub SDKを](https://www.pubnub.com/tutorials/getting-started-chat-sdk/)使用したチャットアプリケーションの構築など、PubNubを使用してアプリケーションをセットアップして構築するためのステップバイステップのチュートリアルに[従います](https://www.pubnub.com/tutorials/)。
    

ご質問やご不明な点がございましたら、[devrel@pubnub.com](mailto:devrel@pubnub.com)、開発者リレーションズチームまでお気軽にお問い合わせください。

PubNubはどのようにお役に立ちますか？
=====================

この記事は[PubNub.comに](https://pubnub.com/how-to/test-cases-for-chat-application/)掲載されたものです。

PubNubのプラットフォームは、開発者がWebアプリ、モバイルアプリ、IoTデバイス向けにリアルタイムのインタラクティブ機能を構築、提供、管理できるよう支援します。

私たちのプラットフォームの基盤は、業界最大かつ最もスケーラブルなリアルタイムエッジメッセージングネットワークです。世界15か所以上で8億人の月間アクティブユーザーをサポートし、99.999%の信頼性を誇るため、停電や同時実行数の制限、トラフィックの急増による遅延の問題を心配する必要はありません。

PubNubを体験
---------

[ライブツアーを](https://www.pubnub.com/tour/introduction/)チェックして、5分以内にすべてのPubNub搭載アプリの背後にある本質的な概念を理解する

セットアップ
------

[PubNubアカウントに](https://admin.pubnub.com/signup/)サインアップすると、PubNubキーに無料ですぐにアクセスできます。

始める
---

[PubNubのドキュメントは](https://www.pubnub.com/docs)、ユースケースや[SDKに](https://www.pubnub.com/docs)関係なく、あなたを立ち上げ、実行することができます。