チュートリアル

API テストを学ぶ

このチュートリアルは API とは何かから始まり、負荷テストと CI パイプラインで終わります。最初の 7 レッスンはプログラミングの知識がなくても大丈夫です。その後は JavaScript や Python を使う例もありますが、どれもコピーしてすぐ実行できる短さです。

レッスンのリクエストはすべて本物の API、https://api.testingapis.com に送られます。 書き込みができ、決まった形で失敗するように作られたエンドポイントもあるので、ほかでは再現しにくい問題で練習できます。ほとんどの例には、このページからリクエストを実行できる「送信」ボタンがあります。最初のレッスンはアカウント不要のエンドポイントを使いますが、後半のレッスンには無料アカウントが必要で、サインインすると「送信」ボタンが使えます。

全 19 レッスン3 レベル無料

初級

全 7 レッスン

API とは何か、HTTP の仕組み、リクエストの送り方と返ってきたものの読み方。

  1. 01API とはクライアント、サーバー、そして気づかないうちにもう送っていたリクエスト。
  2. 02リクエストの構造メソッド、URL、ヘッダー、ボディ、そしてサーバーが実際に受け取るもの。
  3. 03レスポンスの読み方ステータスコード、レスポンスヘッダー、そしてボディ。
  4. 04HTTP メソッドGET、POST、PUT、PATCH、DELETE、そしてどれが繰り返しても安全か。
  5. 05JSON の読み方JSON の 6 つの型と、テストをつまずかせる値。
  6. 06curl と Postman でリクエストを送る毎日使うことになる 2 つのツールと、それぞれの使いどころ。
  7. 07最初のテストケースを書く期待結果、ネガティブテスト、境界値、同値クラス。

中級

全 7 レッスン

本物のエンドポイントをきちんとテストする:CRUD、検証、認証、ヘッダー、コードで書くテスト。

  1. 08リソースを端から端までテストする作成、取得、更新、削除、そしてそれぞれが本当に起きたかの確認。
  2. 09検証とエラーをテストする不正な入力、欠けたフィールド、違う型、そしてよいエラーとはどういうものか。
  3. 10絞り込み、並べ替え、ページネーション3 ページ目まで誰も気づかない、一覧エンドポイントのバグ。
  4. 11Authentication and authorizationBasic auth, API keys, bearer tokens and JWTs, and the difference between 401 and 403.
  5. 12Headers, caching and cookiesContent negotiation, ETags, 304 responses and session cookies.
  6. 13Automating tests with codeTurning manual checks into tests with JavaScript or Python.
  7. 14Schemas and contract testingChecking the shape of a response, and using an OpenAPI document as the source of truth.

上級

全 5 レッスン

本番でしか出てこない障害:タイムアウト、非同期処理、セキュリティホール、負荷。

  1. 15Timeouts, retries and rate limitsFlaky servers, idempotency keys, 429 responses and how clients should behave.
  2. 16Async jobs, webhooks and streamsTesting work that finishes later, requests the server sends to you, and open connections.
  3. 17Security testing basicsBroken object access, auth bypasses, mass assignment and injection.
  4. 18Performance testingMeasuring latency, reading percentiles and running a small load test.
  5. 19Running tests in CITest data, flaky tests, pipelines and deciding what to test at all.