広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 11 その45
エラー処理とテスト

それから
エラー処理とテスト
についても軽く話しておこう。

実は、今回のゲームは
エラーに対応する処理を
考えていないんだ。

エラーに対応する処理?

気軽に
聞いといて。
しっかり
聞くよー。


 
ほら、例えば
解答番号のキーの入力時に
「数字を入力してください」
ってお願いしてるだろ。

でも、もし数字以外が入力
されたらどうなる?
 
あっ!そうか、
間違えて「文字」とか
入れたらどうなるのかな?

プログラム
壊れちゃうのかな!?
  うわー
全然考えて
なかった!
 


こんな風に、
作り手の想像しない値が
入ることで、プログラムが
おかしな動きをしたり、
セキュリティホール
なることがあるんだ。

本来はそういった
規定外のことも考慮して
プログラムを作らないと
ダメなんだよ。
えー!!

そんな怖いことに
なるの!!

 
こわーい!
 

セキュリティホール

プログラムのセキュリティ上の欠陥のこと

セキュリティホールからプログラムを誤動作させる事で
コンピューターを破壊されたり、情報を盗み取られたり
乗っ取られて利用される恐れがある。


重要!
そうしたエラーが
起きないようにするために、
また、万が一、エラーが
起きた場合の事を考えて、
エラー対応の処理
作ることが重要になるんだよ。
 
うーん。
今回の場合なら、
文字が入力された場合の
処理を作るんだね。

確かにすごい重要だね。
  しっかり
やらないと。
 


そして、
エラーを防ぐだめには
配布する前に考えられる
全ての動作をテストを
しなくちゃだめだ。

実行される条件の一覧表を
作ったりしてね。
これも
重要だな。
たいへんだー
いろいろ考えないと
だめなんだね。
 
 
テストの例
 
 
確認 テスト名 内容 備考 確認日 確認者
数字を入力する
(1~3)
規定値の値を入力する   20XX/01/XX なぽ
数字を入力する
(1~3以外)
規定外の数字を入力する   20XX/01/XX なぽ
文字を入力する 文字を入力する   20XX/01/XX なぽ
× 問題表示確認 全ての問題が出題されるか 4問目が
表示されなかった。
20XX/01/XX こと
  解答確認(正解) 全ての問題に解答できるか      
  解答確認(不正解) 全ての問題に解答できるか      
  ・・・・・・ ・・・・・・      

テストをして結果を記入していく


うーん・・・
エラー対応かあ・・・。

例えば、今回なら
switch文で解答の入力番号は
3番までになってるけど、
それ以外の数値が
入力された場合とかもあるよね?


どうすればいいのかな・・・?
そういう場合は
それ以外をdefaultで受けて
エラー処理をすればいい。


もちろん、
if文でもelseでやれるよ。
100番とか
入力されたら
どうしよう。
いろんな
対応の仕方
あるけどー

1つの例ねー
 

クイズゲーム完成 モード処理関数化
(KotoQuizのKQMain.java)144行目~
 
・・・      
144           //問題を表示する  
145           switch(nowQuizNum){  
146               case 0:  
147                   System.out.println("変数の型でint型の最大値はいくつ?");  
148                   System.out.println("");  
149                   System.out.println("-----------------------------------------------");  
150                   System.out.println("1:256 2:98776342 3:2147483647");  
151      
152                   break;  
153               case 1:  
154                   System.out.println("変数の型を変換するのに使う方法はどれ?");  
155                   System.out.println("");  
156                   System.out.println("-----------------------------------------------");  
157                   System.out.println("1:キャスト 2:スコープ 3:インクリメント");  
158      
159                   break;  
160               case 2:  
161                   System.out.println("変数aが「4以上でかつ10以下」か「40未満」");  
162                   System.out.println("正しい条件式はどれ?");  
163                   System.out.println("");  
164                   System.out.println("-----------------------------------------------");  
165                   System.out.println("1:(a >= 4 || a < 10) && a < 40");  
166                   System.out.println("2:(a >= 4 || a <= 10) || a < 40");  
167                   System.out.println("3:(a >= 4 && a <= 10) || a < 40");  
168      
169                   break;  
170               case 3:  
171                   System.out.println("ことが一番好きな場所はどこ?");  
172                   System.out.println("");  
173                   System.out.println("-----------------------------------------------");  
174                   System.out.println("1:動物園 2:水族館 3:遊園地");  
175      
176                   break;  
177      
178               default:  
179                           //それ以外の番号が来た時の対応をする  
180                   break;  
181           }  
・・・    
「それ以外」の値の対応も重要になる



うわー
たいへんだー!


あれも、これも、
なんでも、かんでもー!


エラーになるかもしれない
動作やテストする項目だけ
でもすごいありそうー!
今回の
ゲームでも
いっぱい
ありそうー。
穴を
埋めるのは
たいへん。
そう。実は、コードを作るよりも
こっちの方がたいへんだったり
するんだよな。

でも、
これはソフトウェアの品質に
関わるすごい重要なことだよ。

しっかりやらないとね。



まあ、今回のプログラムは
練習だからね。参考までね。


まだまだ「覚えること」が
たくさんあるからね。
頭の片隅に入れて置いて。

エラー処理や、テスト、
セキュリティについては
別の機会に詳しく考えるよ。
はいっ。

心に留めておきます。
ゆっくり
行こうぜ。
焦らない
ように
するね。


     

ちなみに、
今回のキー入力処理は
簡単なエラー対応の処理が
してあるよ。

数字の1~3しか受け付けない
ようにしてあるんだ。

テストも俺が
ざっとやっちゃってるよ。
そうなんだ。
文字を入れても
壊れないんだ。

なぽちゃん、ありがと。
これも1つの
方法ね。

本当は何重にも
チェックしないと。
ほっ
 

今回のエラー対応の処理

キー入力処理で、「入力」の時点でチェックしている
数字の1~3しか受け付けない
「文字」を入力すると「3までで入力してください」のメッセージとともに、存在しない0番を選択して不正解になる。

 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告