底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

Web APIのテストを通して学んだこと(現在進行形)

現在、あるWeb APIのテスト業務に携わっている。「Web API」と書いたが、実はWebAPIとは何か?という部分が実ははっきりとよくわかっているわけではない。漠然とWebアプリケーションと同義と捉えていたけれども、厳密には違うような気もしている。

 

クライアントサイドとサーバサイドでHTTPでリクエストとレスポンスがあると、WebAPIという仕組みになると理解しているのだけど、合っているだろうか...静的なサイト(Webページは)WebAPIではない、という理解で合っているだろうか...

今回のエントリーではその部分(WebAPIの詳細)については、無関係ではないが書きたい部分では無いので、省略します。

今までやってきたWebAPIのテストは導入に過ぎなかった

これまで3つのWebAPIのプロジェクトに関わってきて、結合テスト(含む単体テスト)をメインに経験を積んできた。 それまで非Webの業務系アプリケーションのみの経験しかない自分にとっては、「これがWebAPIのテストというものか!」と 非常に勉強になったし、この先テストエンジニアとして成長したいと思わせるものだった。

問題は「無知ゆえの万能感」だったのかも知れないが、3つのプロジェクトを経験したことで「これでどこのプロジェクトに参加しても大丈夫」と 高を括ったことだろうと思う。

今のWebAPIプロジェクトに参加してわかったが、これまでの2つのプロジェクトは使うツールにしても非常に限定的で 現在のWeb界隈でいえば何も使ってないに等しい状態だったのでは?と今では思う。

「★」印をつけた箇所が新しく知ったり使うことになったツール類なのだけども、数えたら9つもあった。

幸い、「使ったことないんですか?w」というようなこちらの無知を笑うような人がいないので助かっているが、 知らない・使ったことのないものが多過ぎて正直しんどい。

GoogleDriveについては私用で利用していたけど、業務的に利用していたわけじゃなかったので、 「こうやって使うと共有してドキュメントが見られるのか」と初めて知ることになっている状態。

XAMPPについては業務利用の経験はなかったが、PHPの勉強を個人的にしていたおかげで、XAMPPそのものについては 知っていたのでよかった。

AWSについては、利用はしているがサーバにアクセスしているだけなので、本質的な意味では何も知らないまま。

テストのやり方に違いはあるか

復習の意味も含めて、これまでのWebAPIテストのやり方を振り返ってみよう。

これまで
⓪. テストソースに更新があればSVNのUPDATEで最新化
①. テストケースに沿って、入力値をブラウザの各項目に入力
②. 登録・更新形であれば、DBを参照しINSERTされているかUPDATEされているかを確認
③. 参照系であれば、事前にDBを参照し参照先のテーブルの値が表示されているかを確認 

そして、現在のテストのやり方はどうだろうか。

現在
⓪. テストソースに更新があれば、SVNかGitにて最新化
①. Dockerに入り、RDBを起動
②. テストケースに沿って、入力値をブラウザの各項目に入力。場合によってはPOSTMAN経由でJSON入力
③. 登録・更新形であれば、DBを参照しINSERTされているかUPDATEされているかを確認
④. リクエストが通っているか、レスポンス結果は想定通りであるかをF12(ブラウザの開発者モード)で確認
⑤. 参照系であれば、事前にDBを参照し参照先のテーブルの値が表示されているかを確認  
⑥. ④と同じ



眺めてみると基本の部分は変わらないことがわかる。JSON入力のためにPOSTMANを利用したり、 ソースファイルの最新化にSVNと並行してGitを利用している。 リクエストとレスポンスの確認としてブラウザの開発者モードを利用しているのは大きな違いと言えるかも知れない。

実は、「JSON」について現在のプロジェクトで初めて知った。 これまで入力といえば、数値か文字列かくらいで JSONのようなひとまとまりのデータ形式というのは意外なデータ形式だった。 C言語でいえば、構造体のような。

どんな形式かというのはわかったが、受け取り側はこれをどのように処理しているのかまではまだわかってない。 今後の課題である。

WebAPIのテストを通して学んだこと、は何か

ただ現在使っているツールを並べただけのエントリーになってしまった感があるが、 何より「今までテストしたことは方向性として間違っていたわけではないが、ツールの知識がなさ過ぎた」 ということを現在のプロジェクトで痛いほど思い知った。それが学んだことかも知れない。


はっきりいって、今のソフトウェア開発においてツールを知らないということは 開発環境を知らないということと同じだと思う。 C言語の開発環境では、UNIXとエディタ・DB(とDBをみるためのクライアントツール)を知っていればよかったけど Web業界は毎年新しい環境が生まれて利用されているので、せめて標準とされているものくらい 知っておかないといけない。


何よりその知識がないと、「テストができない」ことがよくわかった。


わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Webサイト制作の基本

わかばちゃんと学ぶ Webサイト制作の基本

ポストマン (ハヤカワ文庫SF)

ポストマン (ハヤカワ文庫SF)

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで