Code Reading:10
聴いてきた。heapqとpythonのtest手法のお話。
ちょっと細かい感想はtwitterに書いてたので翌朝にでも上げるとして、おおざっぱな感想を。
heapqは配列単体でツリー構造を作るにはよさげですね。heapqの実装ってpythonなのかしら?pythonのtestはいずれやってみたいとは思ってるのですが、一番テストしたいのがhttpのpostとかだからなぁ。。しかもtwitter側の挙動で反応変わるし。そこが面倒い。むしろそれ以外をテストしろって話か。
あとコード書く気が無ければソースでも読んでろって話ですね。。
ログ
- heapqの実装
- anacondaのソース。次へを押すとfrom * importをexecして動的に画面オブジェクトを作ってる
- firstboot:なんで子プロセス作った後に待つのか不思議
- ヒープとは。a[k]<a[2k+1] and a[k]<[2k+2]になる配列
- ランダム探索には向かない。スケジューラ等に向いてる
- heapsortについて
- heapq python標準ライブラリ 2.3新規追加 最小ヒープ
- heapqの使い方。heappush, heapify, heappop, heapreplace, nsmallest/nlargest
- http://bit.ly/1464B5 デモ
- heapq使ったもの:twisted
- twisted モジュール ルーカスフィルム
- pymotwの紹介
- heapの最大の特徴ってツリーを配列単体で表せる、ってことだっけ?
- 標準ライブラリで学ぶpythonのテスト手法
- pythonの標準モジュール:testのカバレッジ高い
- >テストで欠陥が存在しないことは証明できない
- 単体テスト(UnitTest):モジュール、メソッド単位のテスト
- モジュール→関数
- 正常な引数を与えて正しい結果が帰ってくるか 異常になる引数を与えて異常になる結果が帰ってくるか
- テストの利点:開発と並行してバグ発見できる、プログラムの修正、リファクタリングがしやすくなる
- 品質管理を自動化できる
- pythonのテスト手法:doctest, UnitTest
- doctest, 書きやすいとは思うんだけど、ソース中に書くのがなあ
- CookieLibのソース
- あとnetwork周りでテストするとき、ハード系で正常/異常が分かれるんだけど、どう記述すんだろ
- DOCTESTの欠点:冗長、クラスのテストに弱い、複雑な(thread,network,時間で結果が変わる,オブジェクト生成、環境整備を伴うもの)に向かない
- Lib/test/test_cookie.pyにユニットテスト
- unittest。unittest.TestCaseを継承。test_なんとかで始まるメソッドがテストになる
- より複雑な例:sets.py
- 網羅率の測定:メソッド、モジュール、条件分岐毎のテスト
- テストを始めるには:doctestから始める、カバレッジ100%目指さない、他のテストコードを読む
- ツール、テスティングフレームワークを使う。nose,pytest
- Q:ネットワークの相手が環境変わるときのテストは? A:予め環境を作る必要あり
- テストが書きづらい:リファクタリングのサイン
- Q:doctestは今後どういう位置づけになるの? A:標準モジュールでは使われない
- カバレッジを上げる方法:テストを先に書く
- Jtestとかのpython版みたいなのあるのかなぁ。