Webサービスのテスト
Silicon Valley Super Ware
2020年6月25日
Webサービスのテスト
品質の話の最後は、Webサービスのテストについて書いてみました。実はこのテスト、とても奥が深くてプログラミング言語を勉強するよりも 大変な場合が多いです。
フリーランスなどは人でも時間も限られているので何をどこまでやるかがポイントです。
理想的な話をしてしまえば、「全部」をテストすればよいわけですが、 全部と言っても範囲を決めるのも難しいのでプログラムの「バグ」が 全部取れないという永遠の課題です。多くの場合範囲を決められない!
まず最初に問題を言ってしまうと、ある程度の規模のWebサービスになると 「全てをテストする」のは現実的にはできない場合が多いという事です。Webサービスの場合は、「人」が操作をするわけで、操作の対象となる物も テキストの入力、ファイルの読み込み、ボタンやメニューの選択など かなりの数になります。
しかも、どの順番でどのタイミングで操作するという事まで考えると その組み合わせは事実上全てを検証する事は不可能に近いといえます。
そこで、小さな部品に分けて範囲を限定してテストをするというやり方が 良く使われます。
小さなモジュールに分けてテストすれば、組み合わせを減らせるので テストできる範囲も限定できるのでテストはやりやすくなります。これを行うだけでも、相当数の問題を見つけて修正する事は可能です。 しかし、組み合わせる事によって起きる問題も多くあるので、 単にモジュールレベルのテストを行うだけでは問題は解決できません。 そこで今日の話は、テストを完璧にやる話ではなくて、最低限やらなければ 行けないテストについて考えるという話です。
まずは、「機能のテスト」です
当たり前ですが要求されている機能がきちんと思ったような動作をするかの 確認です。最低限の条件として、要求されている機能が動作する事を 確認します。殆どの場合、この要求されている機能を作るのが仕事なので 多くの場合は殆どの機能が動くはずですが、別の機能を作る時にちょっとした 変更があると、最初は動いていた機能が動かなくなることはよくある事です。 基本機能は、コードを変更するたびに毎回全項目テストするのは最低限の 確認になります。通常の機能が動くのは当たり前!
要求されている機能は、当然それを目的に制作しているので、 開発者は間違いなく意識して良く考えて作るので多くの場合はきちんと動作するのが 普通です。しかし、ちょっとしたミスの可能性はあるので、「動くはず」ではなく きちんと毎回確認するのがとても重要です。問題になるのが、設計者が余り考えていない部分です。 これは、考えられていないので、その条件が起きた時の動作がどうなるかで プログラムがクラッシュしたり、固まってしまったりの不具合が起きます。
いわゆる想定外の問題です!
想定外の問題はきちんとエラー処理をして、問題を利用者に伝えればよい のですが、想定外なのでプログラムの流れがたち切れになてしまって、 プログラムがクラッシュしたり、固まったりする原因になります。これを防ぐには、プログラムを書くときに「全ての条件」を意識するのが とても重要になります。
プログラムの処理の流れを書いた図がフローチャートと呼ばれるものですが これをきちんと作るとこうした条件漏れをかなり減らす事ができます。
処理フローの中で、条件に漏れがないかが見つけやすくなるからです。 全ての条件に関する処理がきちんと書かれていれば、想定外の状態で 回復不能な状態になる事をかなり減らす事ができます。
- 「If文」に必ず「else」を入れる
- 「switch文」に必ず「default」を入れる
値が無い状態!
処理をしている過程で「値がない」状態が起きる事があります。 例えば、ある配列中の特定の値の要素を探す場合です。 正常動作している場合は、値がない(見つからない)という事はないはずでも プログラムの記述に不具合がある場合、値が見つからないと「値がない」状態 は起きる可能性があります。この場合、値が無い場合の処理を適切に行っていれば問題ないのですが、 それがされていないと、値が無いままプログラムの動作が進み大きな問題に 繋がる事はよくある不具合です。
先日話題に取り上げたTypescriptを使うとこうしたケースを減らす事ができます。
いじわるテスト
想定外の状況をテストする事で、想定外を想定内にしていくことも大切です。会社などでは、作った人以外にテストをしてもらうことで、設計者が想定していないような ケースを見つけて予め対策をするというのは普通に行われています。
しかしフリーランスの場合、全てを自分でやらなければ行けない場合が多く こうしたテストを行う場合は頭を切り替えないと難しいいものです。 自分で、こんなことをしたらプログラムが困るだろうなという条件を考えて テストするとう事です。つまり、やられたらいやだなと思う操作を積極的に やってプログラムがどう反応するかをテストするのが重要です。
シリコンバレースーパーウエアでは、テストのやり方やテスト内容をどのように 決めて行けばよいのかも学ぶことができます。 Webサービスを作るだけではなく、どのように品質を確保するかをシリコンバレー仕込みの 考え方で実践する方法を受講生の方にお伝えしています。
興味のある方は今すぐお問合せください!
またよろしければ、ニュースレターの登録をお願いします!大体週一回お届けしています。ブログよりは一歩踏み込んだもっと濃い内容を発信しています。
コメント
コメントを投稿