SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行

2010年4月22日はてなブックマーク del.icio.us Twitter
タグ : システム開発

軽量なリレーショナルデータベースとして人気のSQLite。そのWebサイトに掲載されている「How SQLite Is Tested」の内容が、海外のプログラマなどのあいだで話題になっています。

3月に公開された最新バージョンのSQLite 3.6.23。本体のソースコードは約6万7200行(67.2KSLOC、Kilo Source Lines of Code:空行やコメントを除いた行数)なのに対し、テストコードはなんと4567万8300行(45678.3KSLOC)だと紹介されているのです! これはテストコードが本体の約679倍もの大きさだということになります。

100%のブランチカバレッジ

SQLiteコアのライブラリをテストするテストコードとして、以下の3つが紹介されています。

TCL Tests
TCL Testsはもっとも古いテストコードで、TCL scripting languageで記述されています。テストコードは1万4700行(14.7KSLOC)、536ファイルから構成されており、2万5400のテストケースが記述されています。それぞれのテストケースはパラメータ化されており複数回実行されるため、全体では220万回のテストを実行します。

TH3
TH3テストはCで書かれていて、SQLiteコアのライブラリに対して100%のブランチカバレッジ(すべての分岐に対してテストを行う)を実行します。TH3は公開されているインターフェイスのみを用いたテストです。テストコードは60万2900行(602.9KSLOC)で2万9644のテストケースが記述されています。それぞれのテストケースは徹底的にパラメータ化されており、全体で150万回のテストを実行します。

SQL Logic Test
SQL Logic Test(SLTテスト)は大量のSQL文のテストを、SQLiteとPostgreSQL、MySQL、SQL Server、Oracle 10gなどほかのデータベースに対して実行し、同じ結果が得られるかどうかをテストします。このテストは1.12GBのテストデータを用いて、720万回のクエリを実行します。

このほか、「Out-of-Memoryテスト」「I/O Errorテスト」「Crashテスト」「Compound failureテスト」、不正な入力値などによって問題が起きないかをチェックする「Fuzzテスト」として「SQL Fuzz」「Malformed Database Files」「Boundary Valueテスト」などもあり、さらにリグレッションテスト、リソースリーク検知など、さまざまなテストが行われています。

テストコードが製品の進化に役立つ

それにしてもなんと緻密なテストコードなのでしょうか。「Experience with full test coverage」(フルテストカバレッジの経験)という章では、このフルカバレッジなテストコードが製品を進化させる際のバグの排除にとても役立っていると書いてあります。

The developers of SQLite have found that full coverage testing is an extremely productive method for preventing the introduction of new bugs as the system evolves.

テストコードの重要性は多くの優れたプログラマが共通して口にすることですが、これだけ徹底的にテストコードを作り込んでいる例を見ると、ソフトウェアの品質を確保するというのはかくも大変な作業なのだなと思わされます。

関連記事


次の記事≫ 3分で読める、本日発表のアドビ最新事業戦略
前の記事≪ 「Google vs Microsoft ~ 将来における戦い」をガートナーが戦略分析

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
RSSリーダーで : Feed
≫ 過去の記事を読む




アクセスランキング - 過去7日間

  1. 次の10年、「統計分析」こそテクノロジー分野…
  2. その分析、Hadoopなら速く安くできます …
  3. 米国で求められているクラウドのスキルは? A…
  4. [速報]VMworld 2010、クラウド時…
  5. グーグルが構築した大規模システムの現実、そし…
  6. 経過報告:「SAP」をSocial Appl…
  7. 技術評論社のクラウド技術誌「G-CLOUD …
  8. グーグル、オラクルとの係争を理由に今年のJa…
  9. グーグルが構築した大規模システムの現実、そし…
  10. [速報]VMworld 2010、IT as…
  11. アドビ「iPadでFlashアプリを動かす」…
  12. グーグルが構築した大規模システムの現実、そし…
  13. 呼びかけ:「SAP」をSocial Appl…
  14. グーグルが構築した大規模システムの現実、そし…

アーカイブ  (最新記事10)

バックナンバー

2010年9月
2010年8月
2010年7月
2010年6月
2010年5月
2010年4月
2010年3月
2010年2月
2010年1月
2009年12月
2009年11月
2009年10月
2009年9月
2009年8月
2009年7月
2009年6月
2009年5月
2009年4月
2009年3月
2009年2月






Trackbacks (TrackbackURL:http://www.publickey1.jp/mt/mt-tb.cgi/1075)

Comments