テスト回数が多いほど、はかどる件

テストがめんどくさい部分にはバグが多い

こんにちは、こたかです。

こたかのサイトの課金システムでは「square」さんに世話になっていますが、この頃はAPIのバージョンアップの対応を進めていたりします。
課金システムが止まってしまうと機会損失が発生してしまうので、気分的にも大変だったりします。

今日は、テストが大変だったので、全力で撃破したお話です。

課金システムの更新が完了して安心していたら・・・

squareさんの「Payment API」に切り替えて、動作確認を進めていたら、どうもレシートに決済情報が反映されません。
以前は出ていましたが、今回は決済情報が空になっています。

決済情報はJsonのデータなので、Jsonのデータに問題がある状態と推測されました。

システムの仕様変更で、データ変換に失敗している

結果からお伝えしてしまえば、object > json > arrayの変換を勘違いして、object > json >objectとしていたためでした。
arrayとobjectは違うよ!っとphpに怒られていました。

実装ミス?設計ミス?SEあるあるの、実装に自信がある時ほど、何か単純な勘違いが発生している状態でした。
この状態は、自身では正しく実装したと思った部分に、仕様勘違いや実装の齟齬が起きて、なかなかバグが見つかりません。
他の人なら分かるの?と思いでしょうがこれは「Yes!!」「はい!」分かるんですよね~他人が見れば一発です。
大したミスではないため、気が付くのにとても時間がかかってしまう状態でした。

全力で改善してみた

何故このような状態になってしまったかと言うと、一度のテストでデータ入力に30秒ほどかかり、「NG」になると再度テストを行うのが大変な状況であったためでした。

テストは1回の手順が簡単なほど、テスト回数を増やすことができます。
今回、テストの煩雑さにすぐに気が付いたため、テスト改善に全力を注ぎました。

驚異的なパフォーマンス、400倍

テストを難しくしている理由は、手入力があるためでした。
そこで、手入力した結果をjsonファイルに保存し、後続処理で保存済みのjsonファイルを使いまわすようにしました。

結果、一度入力さえしてしまえば、ブラウザーのURLを一度入力し[F5]キーを押下すれば何回でもテストできる状態になりました。
その効果は、実に40秒:0.1秒、400倍以上です。

これによりテスト回数が飛躍して、バグを早期に発見修正できるようになりました。

ちょっとの変更ですぐバグるが、効率化で押し切り!

phpは型チェックが無いので、自由に設計できる反面、関数の引数のチェックが緩いために、少しの変更で動作しなくなることが多くあります。

今回、テスト効率を400倍にした結果、試し打ちが気軽になったので、沢山の確認できました。
少量の変更だけでもすぐバグる状態であったことが分かりました。
今回、早期発見できるので気にしませんでしたが、30、40回バグるだけでも、テストに1200秒、20分弱かかっていたと思うと、効果抜群です。

テストが速いと、脳的にも短期記憶で済むので、作業効率が飛躍的に向上します。作業にもよりますがメモを取っていては非効率だったりします。
※こたかはメモに肯定です。こたかはものすごい量のナレッジのメモを蓄えていますよ♪
1テスト40秒だったころでは、変数名のミスでも馬鹿になりません。テスト回数が稼げることがどんなに効率的かということです。

C言語にはコンパイラーがあり、凡ミスが実行前に解決できますがphpはスクリプトなので実行して初めてバグに気づくことがあります。
テスト回数の向上の差は、品質向上にとても貢献します。

まとめ

青色LEDでもそうでしたが、結局Try&Error なのが現実です。
テスト回数が多くできることは成功に直結しているので、気軽にテストできる環境には成功が訪れやすい、となります。

テストでNGが出ると、全身ストレスがたまったりします。頭かゆかったなー!
テストファーストの威力を証明できましたが、バグが逃げられない追い詰めることは快感だったりします。お勧めです♪
今日は、テスト回数が成功の近道の件についてでした。

それでは、また次の記事でお会いしましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

次の記事

iPhone7を買い替え