rake statsを晒してみる
こんにちは。那由多屋の加藤です。
みなさん、今日も元気にテストコード、書いてますか?
那由多屋では、Webアプリケーションの開発にRuby on Railsを使っています。そんなRailsプロジェクトのテストコードの変遷を、ここに晒して見たいと思います。
なお、各プロジェクトのメトリクスは「rake stats」の出力結果で、テスティングライブラリにはtest/unitを使用しています。
Nayuzonβ(ナユゾン)
2007年3月に公開。プロダクトコードは457行、テストコードは89行、コード比は0.2。Subversionのリビジョン番号は434。
この時点で、Rails歴2ヶ月くらい。テストコードはほとんど無いに等しい。
NTTドコモのJavaアプリケーション(iアプリ)であり、Java側のソースコードは2,014行(空行、コメント含む)。
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 289 | 226 | 3 | 19 | 6 | 9 | | Helpers | 222 | 195 | 0 | 5 | 0 | 37 | | Models | 48 | 36 | 5 | 3 | 0 | 10 | | Libraries | 0 | 0 | 0 | 0 | 0 | 0 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Integration tests | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 36 | 26 | 4 | 6 | 1 | 2 | | Unit tests | 83 | 63 | 4 | 8 | 2 | 5 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 678 | 546 | 16 | 41 | 2 | 11 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 457 Test LOC: 89 Code to Test Ratio: 1:0.2
それ、Lingrで。(それりん)
2007年6月に公開。プロダクトコードは147行、テストコードは177行、コード比は1.2。リビジョン番号は337。
Rails歴5ヶ月くらい。データベースを使わないWebアプリケーションであり、モデルなし。
ほとんどがJavaScriptで書かれており、JavaScriptの単純行数は1,819行(空行、コメント含む)
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 94 | 69 | 3 | 7 | 2 | 7 | | Helpers | 82 | 78 | 0 | 4 | 0 | 17 | | Models | 0 | 0 | 0 | 0 | 0 | 0 | | Libraries | 0 | 0 | 0 | 0 | 0 | 0 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Integration tests | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 215 | 177 | 4 | 15 | 3 | 9 | | Unit tests | 0 | 0 | 0 | 0 | 0 | 0 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 391 | 324 | 7 | 26 | 3 | 10 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 147 Test LOC: 177 Code to Test Ratio: 1:1.2
Stack Stock Books - スタック・ストック・ブックス 〜いっぱい積んでる?〜
2007年8月に公開。プロダクトコードは6,997行、テストコードは19,501行、コード比は2.8。リビジョン番号は2853。
Rails歴7ヶ月くらい。もっとも長くメンテナンスされているコード。
RailsでのWebアプリケーション開発と、テストファーストでの開発にだいぶ慣れてきた感じ。
現在、がりがりとリファクタリング中。
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 5048 | 3959 | 65 | 279 | 4 | 12 | | Helpers | 616 | 522 | 0 | 44 | 0 | 9 | | Models | 2038 | 1659 | 19 | 138 | 7 | 10 | | Libraries | 1102 | 857 | 1 | 67 | 67 | 10 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Integration tests | 93 | 62 | 1 | 1 | 1 | 60 | | Functional tests | 15690 | 11379 | 122 | 817 | 6 | 11 | | Unit tests | 10382 | 8060 | 29 | 500 | 17 | 14 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 34969 | 26498 | 237 | 1846 | 7 | 12 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 6997 Test LOC: 19501 Code to Test Ratio: 1:2.8
LDR candle - livedoor Readerの未読数を株式チャート風に表示!
2008年7月に公開。プロダクトコードは958行、テストコードは3,084行、コード比は3.2。リビジョン番号は311。
Rails歴1年6ヶ月くらい。無駄なテストコードが減り、要点を押さえたテストコードを書けるようになってきた頃(な気がする)。無駄なテストコードが減ったため、テストの実行時間がだいぶ短くなった。
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 542 | 404 | 7 | 34 | 4 | 9 | | Helpers | 18 | 17 | 0 | 1 | 0 | 15 | | Models | 510 | 425 | 7 | 38 | 5 | 9 | | Libraries | 158 | 112 | 0 | 16 | 0 | 5 | | Integration tests | 0 | 0 | 0 | 0 | 0 | 0 | | Functional tests | 631 | 469 | 6 | 39 | 6 | 10 | | Unit tests | 3788 | 2615 | 8 | 137 | 17 | 17 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 5647 | 4042 | 28 | 265 | 9 | 13 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 958 Test LOC: 3084 Code to Test Ratio: 1:3.2
とある非公開プロジェクト
非公開。プロダクトコードは7,072行、テストコードは26,733行、コード比は3.8。リビジョン番号は2097。日々、成長中。
コントローラ内の実装が減り、シンプルで見通しが良くなっています。また、個々のテストの目的が、より明確になっています。
+----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 2658 | 1971 | 34 | 195 | 5 | 8 | | Helpers | 129 | 119 | 0 | 6 | 0 | 17 | | Models | 5946 | 4759 | 69 | 395 | 5 | 10 | | Libraries | 263 | 223 | 0 | 22 | 0 | 8 | | Components | 0 | 0 | 0 | 0 | 0 | 0 | | Integration tests | 205 | 145 | 2 | 12 | 6 | 10 | | Functional tests | 12844 | 9592 | 66 | 896 | 13 | 8 | | Unit tests | 21398 | 16996 | 72 | 1516 | 21 | 9 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 43443 | 33805 | 243 | 3042 | 12 | 9 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 7072 Test LOC: 26733 Code to Test Ratio: 1:3.8