https://www.imperialviolet.org/2014/02/22/applebug.html [imperialviolet.org] > A test case could have caught this, but it's difficult because it's so deep into the handshake. One needs to write a completely separate TLS stack, with lots of options for sending invalid handshakes. In Chromium we have a patched version of TLSLite to do this sort of thing but I cannot recall that we have a test case for exactly this. (Sounds like I know what my Monday morning involves if not.)
テストしてねーの? (スコア:3, すばらしい洞察)
OSのクセにこれぐらいのバグも検出できないぐらいテスト項目が粗い、ということがわかった。
他の機能も危なそうだな。
Re:テストしてねーの? (スコア:0)
SSL周りのテストは難しいと、Google Chromeのネットワークスタックをやっているエンジニアの論評です。
https://www.imperialviolet.org/2014/02/22/applebug.html [imperialviolet.org]
> A test case could have caught this, but it's difficult because it's so deep into the handshake. One needs to write a completely separate TLS stack, with lots of options for sending invalid handshakes. In Chromium we have a patched version of TLSLite to do this sort of thing but I cannot recall that we have a test case for exactly this. (Sounds like I know what my Monday morning involves if not.)
つーかこの件でテストテストテスト言うやつはテストに夢見すぎ。どんな開発体制を採ろうが、バグは確率的に必ずどこかに入るんだよ。そしてたまたま入ったバグが、結果として素人でもすぐ分かるようなマヌケな内容に見えただけで(子供の頃にBASICやったことがあればすぐ分かる平易なバグなどと言っている記事もあったが、ミスリードもいいとこ)。よくあるだろ、そういうことは。今までテストやっててこの手のバグを産んだこと一度もないのかよ。
静的解析とか、ちゃんとコンパイラで警告出せとか(Xcodeで試したけど出ねーのな……)、goto文避けろとか、コードレビューとか、他にも今回のバグを止め得る手段がたくさん考えられるのに、真っ先に「だせえwちゃんとテストしてねーのw」っつーのはアンバランスっつーかエンジニアの態度としておかしいでしょ。テストも含め、これらの技法はすべて、あくまでもバグの発生確率を「減らす」ものにすぎない。バグを根絶することはできない。
Googleにしたところで、例えばこういう豪語をしているんだが、
開発者たちが明かすGoogle Chromeが目指すものとは|【Tech総研】
http://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002245 [rikunabi.com]
> しかし、Google Chromeではそういうことはなく、あるコードを書いた人は、テストも同時に行わないといけない。このとき、テストは自動化されているんです。ほかの人が別の機能を足したときも、自動的にテストが入るので、元のものに影響を与えるようなものは受け入れられない。
最近のChromeにどれほどリグレッションが多いかは、ウェブの最前線にいる開発者なら皆承知しているはずだ。
「バグのないプログラムは存在しない」という言葉の意味を噛みしめるべきだ。