ラウンドアバウトのテスト1 品質管理チーム
今やわが社の看板の一つになっているラウンドアバウト。 ここまで来るのに長い長い道のりがありました(きっとこれからも)。品質管理チームとして、テストのイロハも知らないままラウンドアバウトに関わり、 実体験をもって学んだテストのあれこれを書いていきます。
何の経緯も書かずに学んだことを説明してもわかりにくいと思うので、今回は僕が品質管理チームになりたての時の事を書きます。

今日からあなたは品質管理チームです
社内でラウンドアバウトという製品を開発しているのは知っていたものの、どういった製品なのか、今どんな状況なのか、何もしらないまま品質管理チームに任命されてしまいました。どんな製品なのか、どころかテストの方法とか全然知らないんですけど・・・・
何も知らない方がいい
ラウンドアバウトの事をなんにも知らない僕がテストを任されたのは、理由があるそうです。製品について詳しい方がしっかりしたテストが出来るかというと、一概にそうは言えなくて、深く関わっていくと、情が移ってあまり厳しいテストが出来なくなってしまったり、出てきた結果に対して中立の目で見ることが出来なくなってしまったりするのです。 もちろん、機能が正常に動いているか、といった詳細なテストは詳しくないと出来ませんが。
ラウンドアバウトって何?

テストの話に入る前に、ラウンドアバウトについて最低限は知らないと意味がわからないと思うので、説明を少し。
ラウンドアバウトというのはHTMLや画像、CSSを自動的に変換して、携帯に表示できるようにしてくれるサーバーサイドソリューションです。apacheのモジュールとして動作するんですが、なんとこれ一つあればdocomo、AU、SoftBankとか気にしなくても全部出しわけしてくれるとか。
今までやってきた仕事では、僕も各携帯会社用のHTMLや、携帯の画面サイズごとに画像を用意したのですが、もうHTMLや画像をいっぱい用意しなくてもいいんですね!
ラウンドアバウトのテスト?
さて、実際にテストといっても何をしていいのか社長に相談したところ、既にユニットテストやインテグレーションテストは終わっているとの事でした。ユニットテスト?インテグレーションテスト?わからない単語だらけです。
調べてみたところ、ユニットテストというのは製品の個々のモジュールが仕様通りに作成されているかと確認するテスト。インテグレーションテストは、モジュール間のインターフェースに主眼を置いたテストということでした。
後は実際に市場に出すことが出来るかどうかをテストする必要があって、僕がするのはその為のテストだそうです。具体的には、動作中のメモリ消費量を調査するテストを行います。製品が動作中にどれだけメモリを消費するかを調査することで、その製品の安定性を計ることが出来るのです。確かに、apahceは常時動作が前提のソフトなので、ラウンドアバウトのせいで落ちたりしたら洒落になりません。
とりあえず、僕が関わることになった経緯の説明はおしまいです。
メモリ消費量を調査する
WEBサーバーにリクエストをすると、そのユーザーエージェントに応じて、ラウンドアバウトは出力するHTMLや画像を動的に変換します。だから、PHPとかで作ったページでもラウンドアバウトを使うことが出来るそうです。さらに、ラウンドアバウトは変換したファイルをキャッシュしてしまうので、ずーっと動作させるために、違うURLでリクエストを送り続ける必要があります。その為、大量のコンテンツが必要なのです。
大量とはいうものの、どれぐらい必要なんでしょう。メモリ消費量を計測するためには長い間動かさないといけないと思う(皆さんも長時間パソコンを動かしていたら調子が悪くなった経験ありますよね?)ので、とりあえず一晩中動き続けることを目標に、wgetコマンドを使ってテストの素材となるコンテンツをWEBからダウンロードすることにしました。
この後は実際にwgetコマンドの-rや-Hといったオプションや、どれだけのコンテンツを集めたのか、といった話をしようと思うのですが、今回はここまでにします。なるべく早く次の記事をアップしますので、よろしくお願いします。