第二回チキチキ 日本ペアプログラミングの会java-ja支部会(仮)
http://java-ja.yoshiori.org/index.php?%E7%AC%AC%E5%8D%81%E4%BA%94%E5%9B%9E
30分遅刻した
テスト
- 開発者
- 顧客
- 品質保証
それぞれの立場でのテストがある
現在のソフトウェア開発三本柱
- バージョン管理
- branchをどこまでmergeしたかとかの管理が大変だった
- モダンなSCM(Mercurial,Git)ではその辺憶えててくれてるから楽になったよねー。
- テスティング
- 自動化
- Hudson
- 自動化→自働化
3本足のイスの足みたいなものなので一つ破綻すると全部破綻する
動作する・きれいの2軸
red→green,refactoringのフィードバックサイクルは色んなスケールで回す。
TDDと品質
- TDDは品質を保証しない
- TDDは品質を向上させる
TDDは設計技法です
TDD ミクロの視点/マクロの視点
- テストケースが増えていくと全部流したときの時間がどんどん増えていく
- スローテスト
- 一週1,2日という例もあり
- どうやって解決していくか?
→テストのカテゴライズをし、カテゴリ別のテストの実行計画をする
- DBに接続してるとかネットワークに接続してるとかでタギングする
- とりあえずDB以外のテストを全実行→オールグリーン→DBに接続するテストを実行
- 実装コードとテストコードが一対一でなくなってくる/きている
TDDのこころ
一つずつ少しずつ
- 五輪の書に一対多の喧嘩の仕方として「複数を相手にせず、一人ずつ対処する。」というのがある。
- 宮本武蔵はAgiler
- MercurialQueueの活用とかこれに役立ってる気がすると思った。
- REPL(Read Eval Print Loop)→対話環境大事
- System.out.printlnはおkか?
- 最初はOK
- テストコードは資産になる
- もしSystem.out.printlnで出している内容が有用ならassertに取り込むべき
- キャラクタライゼーションテスト
- テストコードがないコードがどう動くのか把握するためのテスト
- とりあえずasserEqualsで空文字列と比較する等して、red出して何が出てるのか把握して、assertに写し取る
テストがある範囲を広げていく
不安をテストに
アクセサとかは不安ない→テスト要らないよね