自動改札機ダウンの原因
自動改札機ダウンの原因はプログラムミス |
毎日、深夜2時以降に、センターサーバから自動改札機へ期限切れや不正使用など無効クレジットカード情報や定期券のデータが送られてきます。
12日早朝に自動改札機を起動し、自動改札機がこのデータを取り込んだところ、このデータ量が特定量だったためプログラムで不具合が発生し、自動改札機が停止してしまいました。
データ量が特定の時だけで、それよりデータ量が大きくても小さくても不具合が発生しないと発表されています。おそらくプログラムの繰り返しの終了条件か判断条件にこの特定量の数字が使われているのでしょう。
データはICカードにチャージされている金額が不足になった場合、クレジットカードから自動的に入金するオートチャージ機能のデータでした。
今まで、センターサーバから送られてくるデータ量が特定量にならなかったため、プログラムの処理が実行されずトラブルになりませんでした。
※自動改札機のフラッシュメモリーに無効データが5451件が送られ、しかもデータ量が一定の条件を満たした時、フラッシュメモリーにデータが正しく書き込めなくなるプログラムミスがあったと発表されました。
今後も不具合は防げれるか?
結論から言うと難しいでしょう。プログラム単独で発生する不具合であれば単体テストで見逃したことになります。これはテストケース不足であり、プログラムの全ての処理を実行して確認するカバレージ(ホワイトボックステスト)が不足していたことになります。
複数のプログラムがからみあって起きる不具合の場合、システムテストや運用テストで見つけることになりますが、これはかなり困難です。困難な理由は膨大なテストケース数にあります。
1967年、阪急電鉄北千里駅でオムロンが開発した定期券専用自動改札機から自動改札機の利用が始まりましたが、この時は阪急の定期券だけを処理するプログラムで対応できました。テストケースもそれほどではありません。その後、磁気乗車券が登場しますが、基本的に乗車券(普通券・定期券)の確認だけですみました。
やがてプリペイドカードが登場し、乗車券とプリペイドカードの組み合わせなど2枚、3枚の投入に対応するようになります。鉄道会社間の相互乗り入れ、乗客の利便性を上げようと共通乗車券(スルッとKANSAI、パスネット)が登場し、何社もの鉄道会社を乗り継いだ乗客への対応や鉄道会社間の決済が必要になります。そこにICカードの登場です。しかもSuicaとPasmoの相互利用が始まりました。
想定される乗車パターンは気が遠くなるような数になります。想定される乗車パターンを全てテストすることになればテストだけで何年もかかります。
今回発生した不具合のケースではICカードの残高不足についてはシステムテストを行っていたはずですが、サーバからのデータ量が特定量になるテストケースを考えるのは想定外です。ただしデータ量がゼロのケースとオーバフローになるデータ量が送られてきた場合のテストは行っているはずです。