Linuxに足りないのはテスト方法論

消費者は、さまざまなLinuxディストリビューション上で動作するアプリケーションのパフォーマンスの違いをどのようにして判断しているのだろうか?

Linuxカーネルについては、主にLinux Test Projectなどの努力のおかげで、非常に高度な安定性テストと信頼性テストが行われているが、Linux上のアプリケーションのパフォーマンスを測定するのはもっと困難である。Open Source Development Labs(OSDL)は各アプリケーションベンダに対して、自社製品の信頼性、セキュリティ、クラスタリングに関するテストを実施するよう求めている。さらにOSDLは、オープンソース精神にのっとり、それぞれのテストとテスト結果を共有することを各ベンダに要求している。

OSDLのラボディレクタでありオープンソーステストの提唱者であるTim Withamは、Linuxのパフォーマンステストをより高度なレベルに引き上げ、実世界のアプリケーションに積極的に適用することで、信頼のおける、再テスト可能で、比較可能なデータを提示し、ユーザがオペレーティングシステムやオープンソースアプリケーションを公平なやり方で比較できるようにすることを目指している。

パフォーマンスメトリックスが何を意味するかという点については誰もがそれぞれ異なるイメージを抱いているようだ、とWithamは語っている。開発者にとっては、ターンアラウンドをどれだけ短くできるかという問題であるかもしれず、データベース管理者にとっては、I/O時のスレッドの速度とサポート、さらには応答時間の一貫性という問題であるかもしれない。Withamによれば、OSDLの最初の重要な発見の1つは、「通常の」I/Oテストでは現れなかったいくつかのI/Oスケジューリングの問題が認識され、修正されたということだ。

パフォーマンスメトリックスはテスト担当者の個人的な作業負荷以上のものを意味していない可能性があるので、高度なエンタープライズレベルのアプリケーションに関する標準的テストではもっと大きな作業負荷をかける必要がある、とWithamらは主張している。

作業負荷が高度なレベルに達すると、Linuxおよびオープンソースアプリケーションのテストは、標準的なテストとテストデータが少ないという点で、プロプライエタリソフトウェアや従来的なテストに遅れをとりがちである。実世界のアプリケーションは非常に複雑なので、人工的な負荷を適用するのは難しいとWithamは語っている。しかし単純なアプリケーションは、大きな変更を加えない限り、有効な計測手段にはならない。「(テストを)セットアップするための時間がテストの大部分を占めてしまう」とWithamは述べている。

Withamによれば、OSDLがテストとテスト結果を開発するときの最大の課題は、テストの際にレビューしなければならないデータの量であるということだ。

アプリケーションテスト/ツールの開発会社であるParasoft’sの取締役副社長Arthur Hickenは、これに付け加えて、LinuxとWindowsの比較はたとえまったく同じハードウェア上であっても難しいことが多いと述べている。それは、両オペレーティングシステムのセットアップが大きく異なるからだ。

「さらに、多くのベンダは、自社製ソフトウェアのすべてのポートに同じ労力をつぎこんではいない。たとえば、OracleのLinuxサポートは長らくお粗末なものだったが(遅いなど)、これは彼らがLinuxにあまり関心を寄せていなかったからである」とHickenは語っている。

もしもOracleがより良いソフトウェア、サポート、テストデータを提供していたら、このLinuxサポートはもっと改良されていたかもしれない。しかしこの情報は、さまざまなベンダやアプリケーション開発者からバラバラな形で提供されているようだ。今足りないと思われるものは、企業のIT決断を後押しする(または思い留まらせる)ような、すぐに利用できる評価テストである。

PostgreSQL AdvocacyのボランティアであるJosh Berkusはこれに同意して、次のように語っている。「我々はテストを利用して、プロプライエタリ製品に対する同等性、あるいは場合によっては優越性を証明することが可能である。その一例が、オープンソースソフトウェア(OSS)データベース上に構築されたアプリケーションに関するTPCベンチマークだ。あるいは、たとえばMicrosoft Word、Mac Word、OpenOffice.org、AbiWord、WordPerfectとの比較を行う完全に独立したデスクトップアプリケーションテストも考えられる」。

Berkusは、現在進行中のOSDLとの協力体制について述べるとともに、PostgreSQLをハイエンドのビジネス用途向けのあらゆる主要なプロプライエタリデータベースに等しいか、それを上回るものにしようとする試みにOSDLがかなりの貢献をしてくれたことを指摘した。「我々は、OSSかプロプライエタリソフトウェアかを問わず、他のいくつかのデータベースと我々のデータベースを具体的な数字で比較できるようにしたいと考えている」。

より高度なレベル

Withamは、Linuxおよびオープンソーステストでは、全体的なシステム+ソフトウェアの構成テストを高度なレベルで計測していない可能性があると指摘している。

「我々はしっかりした単位テストを何度も行ってきたが、カーネル内のコードをテストするのと同じように、Apache、Jboss、PostgreSQLというアプリケーションスタック全体を含めたこの高度なレベルのシステム全体をもっとテストする必要がある」とWithamは述べている。

Withamによれば、OSDLとそのメンバは、オープンソーステストをOSDLのDatabase Test Suiteと同じレベルにまで持っていくための統合環境を作ろうと努力しているそうだ。

「アプリケーション開発者はこれを求めている。つまり、今とは別の方法が必要だということだ。そこで我々はデータベーステストをさらに発展させることにした」とWithamは語っている。

Withamは、より良いメトリックスが必要なその他の領域として、より複雑な環境でのWebパフォーマンステスト、オープンソースコミュニティ内で共有されるJavaパフォーマンステスト、売掛金などの垂直アプリケーションのための現実的テストを挙げている。

オープンソースへの非対応

Withamによれば、Linuxディストリビューションや他のオープンソースソフトウェアのパフォーマンスを計測する際のもう1つのよくある課題は、透過性に対する熱意に関係している。オープンソースコードを書く開発者は、テストツールのソースコードも見たいと考える。しかし、業界標準のテストツールの多くはプロプライエタリであり、コンソーシアムか企業によって所有されていて、その使用には制限が課せられている(これは主に、そのツールに市場価値があるからである)。「商用のメトリックス製品の多くは、オープンソース精神に従わない監査を要求する。それらの製品は、変更前と変更後のシステムを比較するには非常に便利だが、我々にとって重要なのは、それらをオープンソースのために利用できないということだ。OracleやDB2上にロードすることも、数値を計測することも、情報を共有することもできない」とWithamは述べている。

さらに彼は、プロプライエタリなオペレーティングシステムでは大勢の人を使って高度なレベルのテストを実施できるのに、オープンソースの世界では優れた計測方法を見つけ出すことも難しい、という点について不満を述べている。

彼は、「我々の全体的な目標は、テストを自動化し、カーネルドロップによる自動テストを行うことだ。我々は、カーネルドロップによって高度なレベルのソフトウェアをもたらし、それに対してApacheのパフォーマンステストを実行したいと考えている」と語っている。

Berkusは、テストに費やす有償の労働力の増加はオープンソースコミュニティにとって不利になるかもしれないということを認めている。「問題は、アプリケーションをテストし、修正し、再テストし、調整し、さらに再テストするという作業はきわめて退屈なプロセスであり、それに長期間携わりたいとは誰も思わないということだ。テスト開発は、それだけでMozilla級の長期プロジェクトになる可能性がある」とBerkusは述べており、それに付け加えて、テストはその退屈さのために、「もっと面白い新機能についての作業」の方がついつい優先されて、やったりやらなかったりという事態に陥りやすいと指摘している。さらにBerkusはこう述べている。「もう1つの問題は、これは解決不能な問題かもしれないが、OSS界とプロプライエタリ界の両方で尊敬を集めている権威者がいないということだ。ほとんどの研究機関はテスト資金のスポンサーにとって好ましいテスト結果だけを公表しているし、大手業界メディアの大部分は非営利のOSS寄りの組織から発表された研究成果を無視している」。

すべてのアプリケーション開発者への呼びかけ

Withamによれば、Linuxのパフォーマンスメトリックスをプロプライエタリ製品と同じくらい有益で一般的なものにするにはある種の包括的なシステム/ソフトウェアテストが必要だが、それを作成する動機付けになるようなものはほとんどない。「アプリケーションレベルの開発者は、現在のテストは必要なレベルに近付いてもいないと考えている。カーネルの開発者は、そのことに興味も持っていない。自分とは関係のない話だと思っているのだ」。

Withamは、カーネルの開発に当たっている人々はいずれにしてもテストの開発に適した人材ではないので、この空白地帯を別の誰かで埋める必要があると指摘している。

「Linuxを良くするためには、(アプリケーション開発者が)ここに進出してくるべきだ」とWithamは述べている。「これはLinuxへの参加方法の1つである。これはまさに、エンドユーザとアプリケーション開発者がこのプロセス全体に貢献できる場所である」。

Linuxとオープンソースのためのより良いパフォーマンスメトリックスを求めているアプリケーション開発者は、自らテストに取り組まなければならないとWithamは語っている。「これまでは、テストに協力して貢献しようとするアプリケーション開発者の数が(本来そうあるべき数よりも)少なかった」。

これからはもっと多くのアプリケーション開発者がシステムレベルのテストに関心を持たねばならず、アプリケーション開発者こそがシステムレベルのテストを行うべき人材であるとWithamは主張している。なぜなら、アプリケーションを知っているのは彼らだからだ。「ユーザアプリケーションのコードの大部分がテストパック内にないときに、それをどうやってシミュレートしろというのだろうか? それができるのは、そのアプリケーションを書いた本人だけである」とWithamは述べている。

PostgreSQLのBerkusも、テストによってOSSプロジェクトに協力したいと考えている組織は、テスト結果をオンラインで正式に発表することでどんどん貢献してもらいたいと語っている(「もちろん、そのOSSプロジェクトがテストに耐える段階になってからの話だが」というただし付きではあるが)。

OSDLがしたように、テスト代行機関は、テストを公平に行うためにそのオープンソースプロジェクトのメンバと進んで協力しなければならないとBerkusは述べている。Berkusは、OSSアプリケーションをテストするために必要なインストールスクリプトに加えて、手動セットアップとチューニングについて言及している。

Withamは、OSDLはJava環境をテストするためにJBOSSテストレイヤに追加を予定しているということを指摘し、カーネルおよびアプリケーションの開発中に自動テストを組み込んでしまえばもっと効率が良くなるだろうと述べている。「プロセスの早い段階でテストができれば、無駄も小さくて済む」と彼は語っている。

Withamは、あるベンダがアプリケーションを提案し、別のベンダがそれに対して長所と短所を指摘するという古いやり方に批判的である。「それも悪くはないが、それでは自分で変更を確認することも、自分で変更を加えることもできない。オープンソースとLinuxを採用しているならば、必要なのは早い段階でのテストとデータである」。