Shashi Kumar Rajaの翻訳
APIオートメーションを実行したいとしますが、Google検索バーに最適なAPIオートメーションツールを入力するたびに、トップ10ツールへのリンクが非常に多く表示されるため、混乱してしまい、 明日は間違いなく実行することになります
APIオートメーションプラットフォームをセットアップしたい場合(できれば明日)に必要なものを理解することから始めましょう。 この考えをちょっと待ってください ...私は言った、考えないでください ... 私はあなたの上司が有料ツールにダイムを割り当てないことを知っています 。 見て、私はあなたの心を読んで、大声で考えないでください
有料ツールは実行せずにハングアップする必要があります:)
1.地獄はどこでテストを書き始めるべきですか?
テストを作成するための一連のルールとガイドラインを提供するものが必要になります。また、いくつかのツールとテクニックにアクセスできるようにすることでこれを行うことができます。 ベルが鳴る音が聞こえます、いいえ!!! まあ、私は鐘が何を作るか知っています。
TESTNG 、 JUNIT 、 MOCHA 、 PYTEST 、 ROBOTについて聞いたことがありますか? はい、すべてテスト自動化環境です。
要件に基づいて適切なテスト環境を見つける必要があります。どの既存の技術スタックを使用していますか? どのような自動化を行いたいですか? どの言語があなたにとってより便利かなど 自動化環境は、 ユニット、機能、およびその他のタイプのAPIテストを作成できる最も一般的な言語で見つけることができます。
テスト環境の詳細については、シリーズのパート2を参照してください。MochaとPytestについて詳しく紹介しました 。
2.テスト環境でAPI呼び出しを行う方法を教えてください。
これらのプラットフォームのほとんどは、 HTTP要求ライブラリを含むAPI呼び出しをサポートしています。これは、REST APIが通信にHTTPプロトコルを使用するためです。
mochaなどの一部のフレームワークでは、 superagentなど、選択したHTTPリクエストライブラリを自由に使用できます。
<code class = "lang-JS">リクエスト .post( '/ api / pet') .send({name: 'Manny'、species: 'cat'})// JSON投稿本文を送信します .set( 'X-API-Key'、 'foobar') .set( 'accept'、 'json') .end((err、res)=> { //終了関数を呼び出すと、リクエストが送信されます }); </ code>
GET、PUT、POST、DELETE、その他すべてのメソッドを簡単にサポートしており、ヘッダー、キャッシュ、リクエストパラメーターを渡すことができ、呼び出した-受け取った
3.クールですが、私のAPIの一部はJSONを提供し、他のAPIは応答としてXMLを提供します。これに対処するにはどうすればよいですか
これらのHTTP要求ライブラリのほとんどでは、 JSON、XML、CSV、テキスト、画像、フォームデータ、エンコードされたデータ形式のデータを 、いくつかのサポートされている承認標準で送受信できます 。
また、HTTP応答ステータスコードを処理し、必要な応答ステータスコードを受け取ったかどうかを確認することもできます。
- 情報応答コード(1xx)
100-続行
101-プロトコルの切り替え
102-処理中
- 成功応答コード(2xx)
200-OK 206-部分的なコンテンツ
201-作成済み207-マルチステータス
202-承認済み208-報告済み
203-信頼できない情報226-使用されたIM
204-コンテンツなし250-低ストレージスペース
205-コンテンツのリセット
- リダイレクト応答コード(3xx)
300-複数の選択肢304-変更なし
301-永久に移動305-プロキシを使用
302-見つかった307-一時的なリダイレクト
303-その他を参照308-永続的なリダイレクト
- クライアントエラー応答コード(4xx)
400-複数の選択肢410-変更なし
401-永久に移動411-プロキシを使用
402-見つかった412-一時的なリダイレクト
403-その他413-永続的なリダイレクトを参照
404-複数の選択肢414-変更なし
405-永久に移動415-プロキシを使用
406-見つかった416-一時的なリダイレクト
407-その他を参照417-永続的なリダイレクト
408-見つかった418-一時的なリダイレクト
409-その他を見る
- サーバーエラー応答コード(5xx)
500-内部サーバーエラー508-ループが検出されました
501-未実装509-帯域幅制限
502-不正なゲートウェイ510-拡張されていません
503-サービス利用不可511-ネットワーク認証が必要
504-ゲートウェイタイムアウト550-許可が拒否されました
505-HTTP Verはサポートされていません551-サポートされていないオプション
506-バリアントもネゴシエートします598-ネットワーク読み取りタイムアウトエラー
507-ストレージ不足599-ネットワーク接続タイムアウトエラー
4.良いですが、テストデータをどのように処理しますか?
テストデータの取得元に依存します。 これらのテストフレームワークを使用すると、ベースとなっている言語のすべての機能を使用できます。
a。 データベース:データを読み取るためのデータベース接続を簡単に作成できます。
b。 外部ファイル:外部テキスト、JSON、CSV、またはその他のファイルを読み取ることができます。
c。 ランダムデータ: フェイカーなどのライブラリを使用して、その場でランダムなテストデータを生成できます。
<code> var faker = require( 'faker'); var randomName = faker.name.findName(); //ローワン・ニコラウス var randomEmail = faker.internet.email(); // Kassandra.Haley@erich.biz var randomCard = faker.helpers.createCard(); //多くのプロパティを含むランダムな連絡先カード </ code>
d。 API応答からのデータ:テスト中に何度も、あるAPIの応答を要求データとして別のAPIに渡す必要があります。 フックを使用してこれを行うことができます.Before 、Before each、After、After eachなどの関数を取得し、名前が示すとおり、テストの一部またはすべての前後に実行されます。 API2の前にAPI1を呼び出し、その応答をAPI2に渡します。 ちょうどいい!!! ️
5.テストデータの処理とAPI呼び出しの作成は簡単に思えますが、API応答を確認する方法を教えてください。
回答を確認するには、 Assertion libraryと呼ばれるライブラリが必要です。 多くのテスト環境にはアサーションライブラリがバンドルされており、構文などの単純な英語でassertを記述することができます。 また、応答のJSONスキーマを確認することもできます。
mochaでは、 chaiなどのアサーションライブラリを使用できます。
<code> response.status.should.equal(200) foo.should.be.a( 'string'); foo.should.have.lengthOf(3); tea.should.have.property(「フレーバー」) .with.lengthOf(3); </ code>
6.すごい!!! このすべてのテストの後、些細なことが残っていましたが、どういうわけか私が上司に私が何をしたか、そしてどこで問題を見つけたかを示していますか?
これらのフレームワークのほとんどは、ダウンロードして共有できる基本的なHTMLテスト実行レポートを提供します。 グラフとチャートを備えたより美しいレポートが必要な場合は、 allureやmochawesomeなどのオープンソースのレポートツールを使用できます。
7. APIオートメーションを今すぐ開始するために、これらのものを備えた何らかのテンプレートを取得できた場合のみ
何を言ったの?
これは、 node.jsでmochaを使用してAPIを自動化するために作成したテンプレートです。
含まれています
- テストフレームワーク(モカ)、
- HTTPリクエストライブラリ(スーパーテスト)、
- アサーションライブラリ(chai)、
- 記者(魅力)、
- ロガー(ウィンストン)、
- ランダムデータジェネレーター(フェイカー)、
- Eslintのサポートと
- いたずらな文字列検証が統合されました 。 あなたがしなければならないのは、それをクローン/ダウンロードすることです、そしてあなたは行く準備ができています。
別の言語のテンプレートが必要な場合は、明日のために準備できます。