前提
考察:想定外のアクセスを許さないコードのテストの手法
- 想定した操作手順では起こり得ないリクエストをどう作るか
HTTPプロトコルの特性
- ステートレス
- 状態がない=前回のリクエストがなくてもいい
- ちなみにブックマークできるのはこの性質のため
- 毎回全ての情報をリクエストの詰める仕様
ということは・・・
リクエストの構成要素
- URL
- ヘッダ:キーと値
- Authorization:認証情報を入れることがある
- Cookie:同じく認証情報を入れることがある
- ボディ
これらの要素が分かれば、ブラウザからでなくてもHTTPリクエストを投げることができる
ツール紹介
- F12ツール
- Postman
- Linux系OS:curlコマンド
- PowerShell
- Invoke-WebRequest
- Invoke-RestMethod
- JavaScript:fetch関数
- C#:HttpClientクラス
APIをテストする
- 任意のリクエストをプログラムで送る環境は整っている
- つまり自動テスト化は可能!
大切なこと
- HTTPリクエストの中身を知る
- 大量のヘッダがある!
- F12ツールが大活躍!
- 認証の仕組みを知る
- どのようなHTTPリクエストとレスポンスが交わされているか、と言う知識は重要
- セキュリティ面からも認証の仕組みを知っていることは価値が高い
- アプリの仕様を知る
- 必要なヘッダなど、仕様を把握しないとHTTPリクエストを組み立てられない
- 時々、わけの分からない仕様ものがある(CSVを送るAPIなのにContent-Type: text/csvを指定するとエラーになる、など)
最後に
- HTTPのことをよく知ろう
- 認証のことをよく知ろう
- アプリの仕様をよく知ろう