0 1. 一般的なプロジェクト構造
02. インターフェースとは
インターフェイス:サーバー プログラムによって外部に提供される統一アクセス方法。通常は HTTP プロトコルを使用して、さまざまな URL、さまざまなリクエスト タイプ (GET、POST)、およびさまざまなパラメータを通じてさまざまなビジネス ロジックを実行します。
クライアントのビジネス操作のほとんどは、データを取得したり、ビジネスをトリガーしたりするためにサーバー インターフェイスを呼び出す必要があり、クライアントはインターフェイスから返されたデータを受信した後、データの内容に応じてさまざまな処理と表示を実行します。
03. インターフェーステストはなぜ行うのか
A.社内では、クライアントとサーバーは別のチームで開発するのが一般的ですが、プロジェクトの開発プロセスでは、サーバーの開発が先に完了するなど、クライアントとサーバーの開発進捗に一貫性がありません。サーバーのロジックと戻りデータが正しいことをテストしてから、クライアントをテストします。または、一部のテスト部門はサーバー側開発チームのテストを専門としているため、テスト オブジェクトはインターフェイスです。
B.特定のサービスをテストする場合、ユーザー登録などのフロント エンドだけを介してテストすることはできません。フロント エンドではユーザー名が空にならないように制限されていますが、人によってはツールを使用してフロント エンドをバイパスしてサーバーを直接呼び出す場合があります。サーバーが関連する論理的判断を何も実行しない場合、データ エラーが発生します。インターフェースデータ送信時に鍵情報を暗号化するかどうかを含みます。したがって、サーバー インターフェイスに対して個別にテストする必要があります。
C.開発とテストの後、最初にツールを通じてサーバーのインターフェイス テストを実行して、インターフェイス テスト ケースがすべて合格していることを確認し、サーバー インターフェイスが期待を満たしているかどうかを迅速に判断できます。次に、UI インターフェイスを通じてテストします。それ以外の場合、インターフェイスにバグがある場合は、フロントエンド ページにもバグがあるはずです。
0 4. インターフェースのテストツールとプロセス
一般的な HTTP インターフェイス テスト ツールには、Jmeter、Postman、SoupUI などが含まれます。Jmeter は企業で広く使用されています。
Jmeter は、インターフェイスの機能とパフォーマンスをテストできるオープンソースの無料インターフェイス テスト ツールです。インターフェースの自動化も可能です。
Jmeter の具体的な使用方法については、ドキュメント「Jmeter Interface Tool Combat」を参照してください。
インターフェイスのテストプロセス:
通常の Web テストと同様に、要件分析、テスト ケースの作成、テストの実行、バグの提出、回帰テスト、テスト レポートの提出も最初に実行されます。
0 5. インターフェーステストの焦点
1.入力
入力とは主にインターフェースの入力パラメータを指します。通常のテストでは、まず正常な入力パラメータと異常な入力パラメータを考慮します。異常な状態にはパラメータ例外とデータ例外が含まれます。ユースケース設計は主に次の目的で使用されます。クラス分割と境界値分析
-
通常の入力
通常の入力パラメータは理解しやすいです。つまり、インターフェース設計書の入力パラメータ規格に従って、通常のパラメータを入力すると、インターフェース設計書の合意条件に従って正常に応答が返されます。
-
パラメータ例外
パラメータの例外には、空のパラメータ、多かれ少なかれパラメータ、間違ったパラメータが含まれます。
-
データ例外
データ例外: データ型エラー、null 以外のパラメータが空、長さが設計を満たしていない、データが範囲外、不正なメンバー、特殊文字または機密文字、関連関係のある異常なパラメータ データなど。
2. ビジネスロジック
インターフェイステストもUIベースの機能テストと同様に、インターフェイスの背後にあるビジネスロジックを理解する必要があり、ビジネスプロセスの処理ロジックについては、入力パラメータの制約条件や操作対象など、さまざまな次元で検討することができます。イベントとビジネスの状態遷移。
-
制約分析
① 数値制限:辞書、成績制限、業種制限、数量制限、点数制限など。
②ステータス 制限:有効|無効、オンライン|オフライン、ブラックリスト|ホワイトウォッシュなど。
③ 関係の制限:存在の有無、拘束の有無、拘束の有無など。
④権限 の制限:管理者、一般ユーザーなど
-
オブジェクト分析
オブジェクト分析では、主に合法オブジェクトと違法オブジェクトを操作します。たとえば、銀行カードのユーザーがカードにチャージする場合、ユーザー A がユーザー A 以外のカードでチャージ、ユーザー A が自分のカードでチャージ、カードが有効期限が切れている ; ユーザー A が自分のカードを使用してリチャージし、カードがブラックリストに登録されるか、紛失したと報告されます。
-
状態遷移の分析
例えば、決済事業では、先に決済が成功した場合は注文キャンセル後に返金されますが、再度決済が失敗した場合は決済が失敗したことになるため、異常な状態が発生していないかを制御可能です。空の州ビジネスにどう対処するかなど。
-
タイミング解析
一部の複雑なアクティビティでは、アクティビティは指定された順序で一連のアクションによって実行されます。これらのアクションはアクション フローを形成し、期待される結果を待つために順番に実行する必要があります。その後、実行中に発生する他の分岐アクションプロセス プログラムは何をするのでしょうか?
3. 出力
例外を考慮するとき、通常は通常の状況と無効な状況を考えますが、それらはすべてのエラー コードをカバーしているわけではない可能性があり、インターフェイス定義によって返されるエラー コードは、ネットワーク例外や無効なルールなどのユースケースのこの部分を補足するのに役立ちます。 、無効なパラメータ、無効なビジネス ID、無効なタスク、サーバー例外など、より多くのユースケースを設計するために errorcode の値を追加します。
出力に基づくこの種の設計ユースケースでは、フロントエンドとバックエンドの出力結果が正常かどうか、プロンプトがフレンドリーかどうか、プロンプトに機密情報が含まれているかどうかなどを確認できます。
4. データベースの操作
-
業務データの保管は正常か、データの二重保管はないか、文字化けはないか
-
データ更新が正常かどうか、特に時刻フィールド、時刻が 24 時間形式であるかどうか
-
テーブルの各フィールドが期待を満たしているかどうか
5. セキュリティ
機密情報(ユーザー名、銀行口座番号、パスワード、送金金額など)が暗号化されているかどうか
6. パフォーマンス
-
インターフェイスでサポートされる同時実行の最大数はどれくらいですか?
-
インターフェイスが 1 秒あたりのトランザクションを処理できる回数 (TPS)
-
インターフェースの平均応答時間 (RT)
-
インターフェイス別のサーバー リソースの消費 (CPU、メモリ、ネットワーク、ディスク)
7. 互換性
インターフェイスのテストでは、クライアントの互換性、主にデータの互換性を考慮する必要はありません。たとえば、古いインターフェースの履歴データに互換性があるかどうか、古いデータが新しいインターフェースで正常に処理できるかどうかなどです。
8. その他
-
冪等性:同じ操作に対してユーザーが開始した 1 つまたは複数のリクエストの結果が一貫しており、複数のクリックによる副作用がないことを意味します。
最も単純な例を考えてみましょう。
それが支払いです。ユーザーが商品を購入した後、支払いを行い、代金の引き落としは成功しましたが、結果が返されると、ネットワークが異常です。このとき、お金は引き落とされています。ユーザーがもう一度ボタンをクリックすると、システムは現時点では支払いを拒否し、「繰り返し支払うことはできません」というメッセージを表示します。2回目の支払いは効果がなくなるのと同じです。インターフェイス テストを行う場合、冪等性要件を持つ一部のインターフェイスでは、冪等性をテストする必要があります。
通常、Jmeter を使用してインターフェイスを 2 回連続して呼び出し、支払いや送信などの操作を実行して冪等性をテストできます。
勉強アレンジ終了!
最後に、私の記事を注意深く読んでくださった皆さんに感謝します。ファンの成長と関心を常に見ていると、相互主義が常に必要になります。それほど価値のあるものではありませんが、使用していただければ、直接受け取ることができます。
これらの資料は、[ソフトウェア テスト] を行う友人にとって、最も包括的で完全な準備倉庫となるはずです。この倉庫は、私が最も困難な旅を乗り越えるのにも同行してくれました。そして、あなたにも役立つことを願っています。
最後に:私の VX 公開アカウント [プログラマー Xiaohao] で、 216 ページのソフトウェア テスト エンジニアのインタビュー集ドキュメントを無料で入手できます。また、対応するビデオ学習チュートリアルは無料で共有できます。これには、基礎知識、Linux の要点、シェル、インターネット プログラムの原則、Mysql データベース、パケット キャプチャ ツールのトピック、インターフェイス テスト ツール、高度なテスト - Python プログラミング、Web 自動テスト、APP 自動テスト、インターフェイス自動テスト、高度な継続的インテグレーションのテストが含まれます。テストフレームワーク開発 テストフレームワーク、パフォーマンステスト、セキュリティテストなど 私と交流することもできます