テスト回数が多いほど、はかどる件
目次
テストがめんどくさい部分にはバグが多い
こんにちは、こたかです。
こたかのサイトの課金システムでは「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が出ると、全身ストレスがたまったりします。頭かゆかったなー!
テストファーストの威力を証明できましたが、バグが逃げられない追い詰めることは快感だったりします。お勧めです♪
今日は、テスト回数が成功の近道の件についてでした。
それでは、また次の記事でお会いしましょう。