【初心者】プログラミングにおいてバグは必ずあるもの

プログラミング

プログラミングをして、いざ確認をしてみた際にうまく動かないこと、思い通りに表示されないこと、などがよくあります。

こんなにも間違えがあるのかと、1つ1つ確認して修正をしていきます。

これは当たり前に発生することです。

バグがないプログラムはありません。

バグ

プログラム内の誤り、不具合のこと。「虫」という意味。

当時のコンピュータ「Harvard MarkⅡ」(1940年代 アメリカ)が、故障した際に、コンピュータの内に入り込んだ虫が原因だったことから、コンピュータの不具合は「虫=バグ」となったと言われています。

プログラムには必ずバグがあり、それを極力無くしていくために試験があります。

では、以下の内容で具体的にお話します。

バグをとことん見つける手順

あなたはプログラムを作り一通り作り終えたのでそれが正しく動くか確認してみます。

その際に、どんな操作をしても、すべて正しく動いていた場合、普通は怖くなります(笑)

それはバグがひとつもないということだからです。

システムの大きさ、複雑さにもよりますが、バグはほぼ必ずあります)

その場合、確認の仕方が甘いということが考えられます。

本来作られる内容と突き合わせて、1つ1つが正しい動きをしているか確認しましょう。

確認の仕方(試験の種類)はいくつもあります。

バリエーション試験

色々な組み合わせパターンでも正しく動作するかを確認する方法。

例えば数字を入力する機能があったとします。

  • 1、2、3・・・100まで入力して問題がないか
  • 100万、1億までしても問題がないか
  • -1、-2とマイナスを入れても問題がないか
  • 0入れても問題はないか
  • 0.50、0.25、-1.03333など少数れて問題はないか
  • 文字や記号など数字以外を入れても問題がないか
  • 「空白」何も入れずにそのまま決定押しても問題がないか

などです。

数字を入れる機能なので、文字が入れられた際に、ちゃんとエラーメッセージを出すなど決められた動きがあり、そのように動作しているかなどを確認します。

他の機能含めた確認

今、自分が作った機能と、他の機能が連携するものがあれば、それらの連携は上手くできているでしょうか。

例えば、もともとあったWEBサイトに、新しくページを追加したとします。

もともとのWEBサイトと新しいページにはリンクが相互にあったり、共通の画像やCSSなどが利用されていたりしますね。

それらが、双方ですべて問題なく機能しているか。

要するに今回作った機能以外のもともとある機能も含めた、関連性のかる部分は確認しましょう。ということですね

これらの確認を行ったら、何かしら想定外の動きがわかることは、当たり前のお話ですね。

確認・試験のレベル感

もちろん良質なプログラムは、バグの数というものは少ない傾向にあります。

ただ、プログラムをよりよく記述するということと同じぐらい、バグを見つける(試験)ということが大切にはなります。

また、皆さんが作っていくプログラムがどういうものかよりその試験のレベルは変わってくるでしょう。

  • 自分自身の個人的な Web サイトなのか
  • お客から受注したサービスなのか
  • 写真を閲覧して表示するだけのサイトなのか
  • 細かい数値の入力出力を多数取り扱うサイトなのか
  • それがユーザーのお金に関する数字を扱うサイトなのか
  • また個人情報や健康や命に関わる医療系のサイトか

何を作るかにより、その機能の信頼性は大きく違います。

それに合わせて、試験のレベルをコントロールしていくことも大切ですね。

まとめ

まず、作ったプログラムにはバグは必ずあるということをお話しました。

また、バグを見つけるには「確認」「試験」が大切だということ、その試験にはどのような方法があるか。ということを簡単に説明しました。

そして試験のレベル感についてお話しました。

プログラミングやるぞ!となったときに、プログラムを作る!ということが大きくイメージとしてはされるかと思います。

ただ、その作られたプログラムの確認ということも忘れてはいけません。

バグをつぶしていくことも、プログラマーとして重要なお仕事の一つになります。

(正直面白くない作業ですが)w

それも踏まえて進めることで、プログラミングでより良いものを作っていけるようになるかと思います。