とりあえず僕は
当方ずっとベンチャーで働いてきたWeb系エンジニアである。 なのでテストの計画などは立てない環境で育ってきた。 テストといえばケントベックのTDDで、ユニットテストばかり書いてて 時偶watirとかでブラウザの挙動をテストしたりするエンジニアである。
ソフトウェアテストって何ですか
ソフトウェアテストはじめての二歩目 業務をスムーズにするためのテスト計画 #SWTEST_NIHO - by shigemk2
SIerのテストは比較的綿密に計画を練ることを大切とする。
- 何をテストするか
- テストを行うことでどのように品質保証を行うか
- 特定のテストをいつまでに行うか
といった事をメインに綿密な計画を立てるようだ。
また、ドキュメントを書くことをかなり大切にする。 (なお、僕の知ってるドキュメントは関数ヘッダであった)
なおソフトウェアにバグがあると人命の損害につながる事もあり、下手をすると億を下らない損害になる場合もある。
僕の知ってるテストと違う
一方Web系におけるテストは、TDDなんかに代表されるように、テストについて綿密な計画は立てる事に重きを置かない。
ドッグフードの例にもあるように、コードを書いてテストを行うというとりは、顧客(それは開発者自身も含まれる)にテストを行わせる事も視野に入れている。トライアンドエラーでガチャガチャやって高速に開発することに主眼を置いているから。
高速にドッグフードを食べる方法 #エンジニアブロガー祭り - by shigemk2
故に、鈴木氏が提唱するアンチパターンにWeb系エンジニアのテストはどれも当てはまらない。そもそもWeb系のテストは計画を立てる事を重要視していない。
また、WebアプリケーションでのテストはSIerのソレに比べて厳密さや正確さを求められているわけではない。
そしてあらゆるパターンを網羅したテストで品質保証を行うよりも、むしろテストコードを書くことでプロダクトコードをリファクタリングすることが大切だったりする。
まとめ
項目 | SIer | Web系 |
---|---|---|
テスト計画 | すごい厳密に立てる | そんな厳密に立てない |
コードの品質保証 | テストを行うこと自体で行う | リファクタリングがメイン |
テストをやる人 | 製品の提供者で完結する | 顧客もテストをやる |
開発スピード | 正確さ重視 | スピード重視 |
えーっと、どちらかといえばSIerとWeb系っていうより、ウォーターフォールとアジャイルみたいな比較になっちゃってました。
どちらが優れているってことではなく、立場とか環境とかにあわせてやり方をかえていくべきなんだと思った。