Charles Proxy の Map Local を使うときの備忘メモ

はじめに

  • APIの仕様書は事前に来るんですが、stgサーバーのリリースは未定
  • クライアントアプリ側の納期は、社内プレゼンのため、カツカツ

という状況で結構仕事をしていたりするんですけど、

結合テストの段階までstgサーバーがリリースされないとかもザラなので

その状態でどう実装するかという話を毎回しらべていたりするので備忘としてメモっておく

Charles Proxy でいつも思うこと

とにかく公式サイトのドキュメントが文章だけでわかりづらい><*1

使い方調べるために毎回ググるのはキツイですよ・・

  • stackoverflowとか・・

でどうするかというと

Charles Proxy の Map Local でとりあえずレスポンスをMapする

  • ローカルにサーバー立てるのもなにげに手間

    • クライアントのAPIのURLを変更するのも面倒
    • privateレポジトリにその手の情報のコミット等ができない*2
  • 開発PCに鯖を立てると、port forward をしないとだめなのでシンドイ

    • ASくんが不調なときは adb kill-server 等が必須なのでこのタイミングで設定が毎回消える
adb forward tcp:8888 tcp:8888

グルグると毎回このgistがひっかかるんだよな(汗

他のProxyソフトは

色々と試してみたんだけどやっぱり使い勝手が悪いんだよな・・

  • httpの検証ログをテストエビデンスとして取るのには使えるんですが・・・
    • Excelに貼り付ける or テスト番号のファイル名でログ残す 文化は健在

まあだからtest codeでという文化が未だに浸透しないという事はありますけど

端末のキャプチャ作業の省力化は

いまさら再導入 peco for mac (1) - exception think

  • AS + screenshot2 って実寸だから画像がでかい =>
  • Excelに貼るとファイルが凄いでかくなる><
  • 要縮小

な話になるからそこは自動化したほうがイイって話で・・(苦笑

まあテスト職人とかはSelenide とか使うんでしょうが・・

qiita.com

ライセンスの話は。。

仕事場によって微妙なのであえて言わないけど

フリーのまま使っていると

  • 30分するとエラー終了したり、
  • 一定時間立つとポップアップブロックが定期的に出る*3

あたりは変わらず・・

Charles 基本手順的には

How to use Charles Proxy Map Local

でOK。

1個作ったらExportしてxml弄っちゃて importし直ししたほうが楽。

でもこれ相対パス指定ができないから可搬性は悪いんだよなー(遠い目

httpsのサイト対応するには

SSL プロキシ設定 辺りは必須。じゃないとホストチェック以前で弾かれる

証明書は、端末内の内部ブラウザから入れないと駄目なので、下記コマンドで入れるのが楽

adb shell am start http://www.charlesproxy.com/getssl/

でも動かなかった・・・

  • APIテスト用のホストサイトが現在存在していない*4から

よくブログに書かれているのは

  • 自社サイトのスタイルとか差し替えようぜ

という奴なので確かに気づかない話かもしれない・・・

Androidの端末側視点だと

OkHttpの通信挙動的に

  1. httpsチェック
    1. SSL証明書対応をする
  2. ホスト存在チェック
  3. URLレスポンスチェック
    1. この段階で Map Local が動く

なので、2) の対処を行う

対処的には

Map Remote で下記の設定を追加してやるだけ

  • 存在しないホスト => 存在するホスト

f:id:kimukou_26:20170415094520p:plainf:id:kimukou_26:20170415094534p:plain

手順的には下記参照

*1:何何できるよぐらいしか書いてない事も。具体的な操作手順すらわからず。。

*2:レビュー?という名でコミット履歴を指摘されることが有り

*3:このときは通信失敗 or 通信処理自体が待たされていたりする

*4:AWSでのスタイルだとインスタンスを落としている場合もあり