トップ «前の日記(2010/02/24 (水) ) 最新 次の日記(2010/02/26 (金) )» 編集 RSS feed

HsbtDiary


2010/02/25 (木) [長年日記]

[tDiary][ruby][security] tDiary の脆弱性に関する注意喚起

tDiary に XSS 脆弱性が発見されたため、対応策と対策済みバージョンが公開されています。詳細は以下を参照してください。

この脆弱性を確認するために、VirtualBoxにライセンスが余っているXPをわざわざインストールして、IE8がデフォルトでアップデート表示されるなかIE7をインストールして、環境を再現したのは内緒です。これはひどい。

[TDD][Work] TDDと品質とビジネス

最初に宣言しておくと受託開発の話ね。投資先が自分達であるところの自社サービスやパッケージの場合はまた違う話になるのでここでは触れません。また、理解が不足、話を勘違いしている部分も多々あると思うので、違う部分は指摘してもらえると助かります。

まず始めに話がかみ合わないなーというところで

この辺を読んで理解を深めた。

誤解の発端

オレは今まで TDD で作った単体テストは、検収要件としてのテスト(品質保証の一部)を単純に自動化することを目的として作っているものという理解だった。そして、単体テストでカバー出来ない領域、主に機能要件やOSレベルでの異常系のテストは別の手段を用いてテストを実施することで、検収要件としての品質を確保するものと思っていた。

なので、「 TDD は品質保証が目的ではない」という話を聞いてなんのこっちゃと理解できなかったんだけど、goyoki さんのエントリを読んでやっと、 TDD の思想として

  • 検収要件としてのテストを書くことを目的としない(品質保証の話もこの辺に含む)
  • 網羅的なテストは書かない

ということは理解した。

あくまでも開発のリズムを重視して、不安を取り除くことでよりよいコードを書くことが目的であって、品質保証まで視野に入れて開発してしまった結果 Slow Test や複雑化することは本末転倒であるということね。

ただし、TDD としてのテストと検収要件としてのテストが重複する領域も確かにあるので、品質向上にも寄与することもある(が無いこともある)。

ビジネスとしての課題

さて、対外的には品質保証に寄与しないことになっている TDD を受託開発で用いて費用請求出来るのだろうかという問題を考えた場合、顧客としては受け入れることのメリットはあまりないように思う。

yoshiori さんも品質保証としてのテストは別に実施すべきと言っていることから品質保証の仕組みは別途検討されている前提とした場合、顧客からすると同じ値段でテストコードも書いて検収要件としてのテストも実施してくれるなら是非やってくださいという話になるだろう。

しかし、ビジネスであるからテストコードを書く時間、またはコードそのものの費用も請求することになるわけだが、そうなると話が途端に複雑になってくる。(請求しませんというのはもはやビジネスではないので対象とはしない)

これが品質保証に明らかに寄与する形態、例えば検収要件としてのテストを TDD で自動化するテストに含めて納品物として提出するとか、 TDD を用いることで開発工数を劇的に減らすことができるということを明示できるのであれば TDD を受託開発に用いることは双方にメリットがある。

しかし、前者の場合は Slow Test や TDD の思想からは離れている方法だし、後者の場合は TDD でテストコードを作成する分を加味した上で従来のテスト工程も減らさないで総和を低下させるという話なのでプログラマかテスター、または別の何処かにに大きな負荷がかかるだろう。

もし、負荷が増えることはなく工数を単純に削減できるということを感覚ではなく体系だって言えるのであれば、それは事例報告として論文やレポートを書いても良いくらいの凄いことだと思うので、誰かやってください。

解決策を考える

このような中で TDD のあるべき論を離れて妥協点を考えたけど

  • TDD のテストコードを作る時に可能な限り検収要件としてのテストを意識する(というか、機能仕様と領域が全く交差しない TDD のテストってあるんでしょうか? オレには想像できません。機能仕様に関係ないテストコードを用いるならリファクタリングって何って話にもなるし。)
  • TDD のテストコードと検収要件としてのテストとのトレーサビリティの確保

こんな面倒なことやってるなら最初に戻って検収要件としての単体テストも機能テストも全部含めて TDD っぽい開発手法で作ればいいじゃないかって気になってくるのはオレだけでしょうか。

この話に参加している人は経歴も狭義の業界もロールも異なることが話の発散の要因になっているとは思うんだけど、受託開発で金銭が見えてる視界の人の意見はどんな感じなんだろう。

この辺を解決する一つの鍵が moro さんの cucumber の話にも繋がるような気もするけど、どうなのかなー。何処かで考えよう。

[DNS] hsbt.org のレジストラを livedoor ドメインにした

そろそろ更新の時期が来ていたりしたんだけど、今まで利用していたレジストラは年間4000円弱とちょっと高めの価格設定だったりしたので、年間980円の livedoor ドメインに移管してしまった。

年間980円なら、とりあえず10年くらい契約しちゃおうかなあ。とりあえず4月くらいまで様子見。

[DNS][hsbt.org] hsbt.org にアクセスできない状態になっていた

レジストラを移管すると同時に DNS サーバーも livedoor が管理するものにしてしまおうと設定を変更してみたんだけど、Shared Server な環境での DNS の設定をよくわからないまま切り替えをしたこともあって、hsbt.org にアクセスできない時間ができてしまった。404 が出ていた方、すみません。

そんなこんなで、仕組みを理解するまで joyent が提供する DNS に戻すことにした。とほほ。