ネットワーク全体で最高のポストマン インターフェイス テスト - 高度なアプリケーション戦闘 (概要)


序文

プロセス制御

つまり、フロー制御はインターフェイスの実行順序を設定するものであり、フロー制御はコレクション ランナーまたは Newman でのみ有効になります。

複数のインターフェースのサイクルを実装する必要がある場合は、各インターフェースのテストにスクリプトを記述するだけです。

postman.setNextRequest('下一个接口名');

動作を以下の図に示します。

C1

if を使用して実行を終了するかどうかを判断します。

if(globals["我的地盘::创建新列表 - 禅道"])postman.setNextRequest("null");
tests["执行完毕!"] = responseCode.code ===200;

私のサイト::新しいリストを作成します - Zen Road はインターフェイス B の戻り値であり、それをインターフェイス B のグローバル変数として定義します。インターフェイス A は、グローバル変数が存在するかどうかでインターフェイス B を実行するかどうかを判断します。
グローバル変数が存在する場合は実行が終了し、存在しない場合はインターフェイス B が実行されます。

postman.setNextRequest("null");	//是一个终止程序作用

注:
終了条件が設定されていない場合、インターフェイス A の実行はインターフェイス B につながり、実行後にインターフェイス B はインターフェイス A をポイントするため、無限ループが形成されます。この例では、if(globals["My Site::Create a new list - Zen Road"]) が終了条件です。

判定に使用するグローバル変数は、実行前に削除する必要があります。削除しないと、最初のインターフェイス A の実行後に実行が終了します。

実行結果をより明確かつ直感的に表示するには、各インターフェイスのテストにアサーションを追加するのが最善です。そうしないと、インターフェイス A が実行された回数を判断することが困難になります。

デバッグ

デバッグには 3 つの方法があります。
Ctrl+Alt+c を使用して Postman コンソールを開き、リクエストとレスポンスを表示できます (クライアントのみ、Chrom プラグインは表示されません)。

console.log() を使用して出力し、コンソールに移動して確認します。

testing['ここに表示したい文字列を入力してください'] = true インターフェイス/レポート内のアサーションを表示します。

次の図に示すように、Postman コンソールを使用して表示します。

C2

console.log() を使用して、次の図に示すように出力内容を出力します。

C3

testing['here to spell out the string you want to see'] = true を使用すると、テストはアサーションの設定を参照するだけでなく、次の図に示すように、一般に特定の情報を出力することもできます。

C4

公共の機能

一般的に使用されるパブリック関数は、次の 6 種類に分類されます。

タイムアウトするかどうかを決定します (assertNotTimeout)。

var hasResponse=postman.getResponseHeader('Content-Type')?true:false; 

if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;

タイムアウトになっていない。送信されたリクエスト パラメーター (logParams) が表示されています。

if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${
      
      JSON.stringify(request.data)}`]=true;

タイムアウトなし。返された JSON オブジェクト (getResponseJson) を解析します。

try{
    
    
	if(hasResponse) var json=JSON.parse(responseBody);

}catch(err)
{
    
     
tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;
tests[`[INFO] 返回:${
      
      responseBody}`]=true; 
console.error(err);
}

要素のタイプ (assertType) を返します。

var assertType=(name,value,type)=>{
    
    
	let isType=(type==='array')? Array.isArray(value):typeof value===type; 

	tests[`${
      
      name}${
      
      type}(实际值:${
      
      value}`]=isType;
	};

要素が期待値 (assertEqual) と一致するかどうかを返します。

var assertEqual=(name,actual,expected)=>{
    
    
	tests[`${
      
      name}等于${
      
      expected}(实际值:${
      
      actual}`]=actual===expected;
	};

要素が期待値と矛盾するかどうかを返します (assertNotEqual)。

var assertNotEqual=(name,actual,expected)=>{
    
    
	tests[`${
      
      name}不等于${
      
      expected}(实际值:${
      
      actual}`]=actual!==expected;
	};

使いやすいように、上記の関数はグローバル変数として設定され、次の図に示すように、グローバル変数として設定されるキー:値のペアの形式で各行が編集されます。

C5

設定後、上記の機能を使用するには、使用するコードは次のとおりです。

eval(globals.assertNotTimeout);//判断是否超时
eval(globals.logParams);//未超时,显示发出的请求参数
eval(globals.getResponseJson);//未超时,解析返回的JSON对象
eval(globals.assertType);//返回元素的类型
eval(globals.assertEqual);//返回元素是否与预期值一致
eval(globals.assertNotEqual);//返回元素是否与预期值不一致

各機能の具体的な使い方については、以下で詳しく説明します。

①1つ目の関数と2つ目の関数を併用し、タイムアウトかどうかを判定し、タイムアウトしていない場合は送信したリクエストパラメータを表示します。動作は下図のとおりです。

C6

テスト内のコードは次のとおりです。

eval(globals.assertNotTimeout);
eval(globals.logParams);

②最初の関数と3番目の関数を併用し、まずタイムアウトしたかどうかを判断し、タイムアウトしていない場合は、返されたJSONオブジェクトを解析します。その動作は次の図に示されています。

C7

テストに次のコードを入力します。

eval(globals.assertNotTimeout);
eval(globals.getResponseJson);

tests[json.expires_in] = 7200;

注: getResponseJson は解析によって返される JSON オブジェクトであるため、インターフェイス リクエストは使用される JSON を返す必要があります。

外部データファイル

外部データ ファイルは、HTTP リクエストやスクリプトで CSV ファイルまたは JSON ファイルをインポートし、データ ファイル (CSV または JSON ファイル) の値を使用できる Collection Runner です。Postman UI でそれらを使用するには、次の手順に従う必要があります。環境またはグローバル変数と同じ構文。

操作手順:
コレクションリクエストで変数を使用します。以下のすべての変数は、データファイル内の対応する値に置き換えられます。

実行に必要なデータ ファイル (JSON/CSV) を準備します。Collection
Runner で動作する CSV ファイルです。最初の行はリクエストで使用される変数名である必要があります。各行はユース ケースであり、反復を表します。

JSON ファイルの場合、ファイルにキーと値のペアの配列が含まれていることを確認する必要があります。配列内の各要素はキーと値のペアのオブジェクトであり、反復を表します。キーは変数名として使用され、値はリクエスト内の値を置換するために使用されます。

「コレクションランナー」ウィンドウを開き、適切なコレクションまたはフォルダーを選択します。

「ファイルを選択」を選択して、ファイル選択領域からデータ ファイルをロードします。ロードが成功すると、コレクション ランナーで実行されたデータの量をプレビューできます。

反復回数を設定します。各反復ではデータ ファイルの行が使用されます。反復回数がデータ ファイルの行数を超える場合は、最後の行が繰り返されます。

収集を実行して結果を観察する

注: キー値が複数ある場合は、途中で英語を入力して区切ってください csv ファイルの 1 行目のパラメータ名は、送信リクエストに設定されている変数名と一致している必要があります。

Baidu インターフェイスを例として、以下の図に示すようにパラメータを設定します。

C8

以下の図に示すように、左側のパネルでインターフェイスを選択して実行します。

C9

次の図に示すようにパラメータを構成します。

Q10

最初に csv 形式のファイルが作成され、実行時に追加されると、プレビュー効果は次のようになります。

C11

最終的なランニング効果を次の図に示します。

C12

以下は、私がまとめた 2023 年の最も完全なソフトウェア テスト エンジニア学習知識アーキテクチャ システム図です。

1. Pythonプログラミングの入門から習得まで

画像の説明を追加してください

2.インターフェース自動化プロジェクトの実戦

画像の説明を追加してください

3. Web自動化プロジェクトの実戦

画像の説明を追加してください

4. アプリ自動化プロジェクトの実戦

画像の説明を追加してください

5. 一流メーカーの再開

画像の説明を追加してください

6. DevOps システムのテストと開発

画像の説明を追加してください

7. 一般的に使用される自動テストツール

画像の説明を追加してください

8、JMeterのパフォーマンステスト

画像の説明を追加してください

9. まとめ(最後にちょっとしたサプライズ)

時の激流の中で、挫折を恐れずに突き進んでください。勇気と粘り強さを使って人生の壮大な章を描き、努力と苦労を使って成功の壮大な章を書きましょう。自分の可能性を信じて、魂の翼を放てば、高く飛べる!

いばらといばらを乗り越えて、悔いなく、自信を持って未来を見つめてください。闘争は瞬間に限定されるものではなく、継続的な追求です。あらゆる努力は痕跡を残し、あらゆる闘争は輝きを生み出す。

心の炎を勇敢に追いかけ、夢の翼を羽ばたかせ、粘り強さと努力で素晴らしい人生を描きましょう。困難は成功への出発点であり、挫折は成長への触媒です。自分を信じて努力し続けることで、やがて自分の輝きと価値が生まれます!

おすすめ

転載: blog.csdn.net/x2waiwai/article/details/132023867
おすすめ