朝日新聞2024/07/21の抜粋ですが、過去最大級だったそうですが、世界規模のシステムトラブルについては既にこのブログで取上げましたが、トラブルの引き金になったのはfalcon(セキュリティソフト)のupdateにバグがあったためです。

ファイルレス攻撃も防げる機能を持っているこの技術的に高度な製品を作ることができるこの会社は、リリースする前にテストをやったのか?随分いい加減なザルテストをやったと断言できるのは、複雑な発生条件が同時に重なって起きるテスト環境を作ることが難しいものではなく、updateした後、Windowsを起動すればすぐ分かることだからです。updateした後に、再起動すれば分かったはず

 

当たり前だと思われている単純なものほど、忘れがちなのは、家電メーカのコールセンタの統計でも分かります。何等かのトラブルが起きてコールセンタに問い合わせてくるものの大半は、家電のプラグをコンセントに差し込んでいないというものでした。掃除や移動の際にプラグを抜き、そのまま差し込むことを忘れてしまうようです。また、電源スイッチをonにしなかったというものも多いそうで、家電製品そのものの不具合という本来(?)のトラブルではないそうです。基本中の基本ですが、だからこそ忘れるという逆説的な面があることを忘れてはいけません。

 

余りにも基本的すぎるので却って見落としてしまう心理的な要因はなにかをちょっと調べてみました。

① 確認バイアス(Confirmation Bias)/正常性バイアス(Normalcy Bias)
セキュリティツールが正常に動作しているかの機能を確認するためのテストにだけ注目していた可能性があり、これにより、update後に電源を再投入して再起動させるなどの基本的なテストを見落とした。基本的なテストの必要性を過小評価した。

注意の過信(Overconfidence Bias)
複雑なテストばかりに注目してしまい、基本的な確認作業を疎かにした。

複雑性バイアス(Complexity Bias)

複雑なものに問題点が潜んでいると思い込み、複雑な問題解決やテストにばかり目が行ってしまった。その結果、シンプルな確認手順を見過ごしてしまった。人間はしばしば、複雑な方法や手法を優先し、基本的なアプローチを軽視することがある。

④計画錯誤(Planning Fallacy)

 自分たちの計画やスケジュールに過度に楽観的(自信過剰)であり、すべてが順調に進むと見込んでいた可能性がある。これにより、基本的なチェックリストやテストプロセスを省略してしまった。

 

いずれも、技術的に高度なことをやっているという自負心が基本中の基本を忘れさせてしまったようです。

 

ところで、この会社の出荷前のテスト手順はどうなっていたのでしょう。新規にサポートした機能は元より、修正の場合には、きちんと修正されているか確認します。しかし、それにも増して重要なのは、デグレートを起こさないことです。デグレートとは、今迄正常に動いていたものが、修正ミス、あるいは新規機能によって不具合を生じることで、ソフトウェア開発者としては最も避けなければならないことです。それを防ぐには、新規機能、修正などによって他の正常に動いていた処理に不具合を生じさせないことを確認する作業です。

 

私はメインフレームのOS開発をしていましたが、OSはアプリケーションが実行される基盤/土台なので、バージョンupやリビジョンup、バグ修正版のリリース時には、多くの工数を割いて『これでもか!』のテストしたことを思い出します。falcon開発チームというかクラウドストライク社のテスト作業はどの様にしていたのか公開されていないので分かりませんが、一般論としては次の様にやります。

 

①テスト仕様書を作る

 - テスト項目

 - どうなっていれば合格か

 - テスト方法

②テスト仕様書の妥当性のレビュー

 - テスト項目に漏れはないか

 - 示されているテスト方法でテストしたことになるのか

 - 複合条件でテストする場合には、その条件を作り出す方法が妥当か

 

レビューは、OSを構成する機能を設計している関連部署から技術者が出席し、一方向から確認するのではなく、多方面に亘って行います。しかし、既述のように機能の確認が中心になります。今回のように、updateした後、一旦Windowsを終了し、電源再投入して再起動するという基本的テストをやらずに、リリースしてしまったのでしょう。

 

こんな単純なことが見落とされた結果、世界中の850万台のパソコンが影響を受ける大事件になってしまいました。初心に帰ってテストレビューの方法と体制を見直しべきでしょう。これは、万が一の時の影響の大きさを考えれば、様々な社会システムと接続をするマイナンバシステムにトラブルが発生したら、こんなものでは済まず、日常生活ができなってしまいます。一体誰が責任を持って仕様を決め、テストを行うのでしょうか?しかも、接続予定の社会システムは既に動いていて、改廃変更があります。その時、マイナンバシステムとの間で、齟齬なくインターフェイスが取れていることを如何にして確認するのでしょう。

 

※質問はosugisama@gmail.comにどうぞ!
※本ブログの内容を全部、あるいは一部を無断で転載、流用することを禁じます。