Part13:非機能テスト1 – パフォーマンス

花陽「じゃあ今回から、非機能テストの話を始めます。非機能テストっていうのは、その名の通り機能以外のテスト」
ことり「今まで、仕様通り動くか、っていうのは見てきたよね」
花陽「はい。けど、ISO9126-1にあるように、機能が正しく動くっていうのは品質特性の一部に過ぎないんです」
穂乃果「そういえば、いっぱいあったね・・・」
花陽「非機能テストの種類を挙げていくときりがないんだけど、その中でも重要とされるパフォーマンス、セキュリティ、信頼性の3つを見ていきたいと思います」


花陽「パフォーマンステストは、システムの性能が期待された通りに出ているかを確認するテスト」
穂乃果「よくあるよね。いつまでもページ表示されなくていらいらするやつとか」
ことり「無理だと思ったら早く猫出せばいいのにね」
穂乃果「・・・猫?」
ことり「これでTwitterを連想するか艦これを連想するかで人間性が問われます♪」

花陽「まずは目標値を設定することです。サーバ1台で1分間に3000リクエスト捌けるとか、100MBのデータを30秒以内に処理できるとか」
穂乃果「ふむふむ、それを計ればいいんだね」
花陽「甘いです。たとえば100MBのデータを確かに30秒で処理できても、110MBにしたら60秒かかるようなら、それはバグと見なすべきです」
ことり「そっか、前後も見ないといけないんだ」
花陽「一般的には複数の計測点を決めて、それをグラフにして性能曲線を見ます。それでリニアになっていればまあよし、指数関数になってたら対処を考えないとかな」

花陽「それと、パフォーマンステストは早い段階から常にやらないといけないです。テストレベルでいうとコンポーネントテストの段階から」
穂乃果「全部組み上がってからでないと意味ないんじゃないの?」
花陽「パフォーマンス不良っていうのは、機能的なバグと違って修正がすごく大変なんです。だから、個々のコンポーネント単位で性能を確保しておかないといけないんだ」
ことり「だからコンポーネントテストからやるんだね」
花陽「Javaでstr = str1 + str2 + str3;とか書いてるようじゃ話にならないから」

花陽「パフォーマンステストは5段階から成ると言われています」


アーキテクチャバリデーション

花陽「アーキテクチャバリデーションは、机上チェック。設計自体がパフォーマンス要求に耐えうるものかを実装前に検証するの」
ことり「設計時点で駄目だったら実装しても駄目だもんね・・・」


パフォーマンスベンチマーク

花陽「パフォーマンスベンチマークは、ソフトウェアが動くようになったら実際に性能を測ってみることです」
穂乃果「さっきの話だと、これは早いほうがいいのかな?」
花陽「うん。できるだけ早く、こまめに」


パフォーマンス回帰テスト

花陽「これは普通の回帰テストと同じだね。開発が進むに従ってパフォーマンスが劣化していないか、繰り返し計測するんだ」
ことり「取り返しがつかなくなる前になんとかしないとね」
花陽「間隔が短ければ、どこが原因か突き止めるのも簡単になるから」


パフォーマンスチューニング・アセプタンステスト

花陽「これは、最終製品に対するテスト。ここで十分な成績が出ないようだと不合格でリリースはできないよ」
穂乃果「成績・・・不合格・・・うっ、頭が・・・」
ことり「赤点とか補習とかは穂乃果ちゃんの専門分野だもんね♪」
穂乃果「そんなの専門分野にしたくないよっ!」


24×7パフォーマンスモニター

花陽「パフォーマンスは常に計測し続けるのが重要です。それがリリース後であっても」
ことり「ずっと監視し続けるのかな?」
花陽「はい。もちろん人間がやるのは大変だから、自動化が必要になるね」
穂乃果「24時間週7日とか働きたくないよね・・・」
花陽「あと、この段階ではデータも重要になります。実データでやるのが基本なんだけど、ポリシー的に使えないこともあるから、その場合は近いダミーデータを作ることになるね」
ことり「個人情報とか最近アレだしね」
花陽「これを怠った結果客先のサーバルームで徹夜する羽目になった人がいるみたいだよ」


花陽「パフォーマンステストはストップウォッチという超原始的手段もあるけど、普通はツールを使うかな」
ことり「どんなのがあるの?」
花陽「ブラウザ系なら、FirefoxのアドインのFirebugがよく使われるかな。WebサーバのレスポンスタイムとかJavaScriptの実行時間とかが計測できるよ」
ことり「それ聞いたことある!パフォーマンス測る以外にいろいろできるよね」
花陽「あと、商用だけどCompuwareのDynatrace AJAX Editionなんていうのもあって、これはクロスブラウザで動くよ。HTMLやCSSのレンダリング時間まで測れて便利かも」
穂乃果「お金かかるの?」
花陽「登録だけすれば無料で使えるはずだよ。結構便利だったな」
花陽「純粋にサーバの性能を測るのであればjMeterが有名かな。商用だとBorlandのSilk Performerなんかも使いやすいよ。高いけど」


花陽「というわけで、パフォーマンステストはとても大事です。どんなに素晴らしい機能があっても、性能が悪いと誰も使ってくれなくなっちゃうよ」
穂乃果「サービスイン直後に長期メンテ入るゲーム、多いよね」
花陽「あれは、広義には性能だけど、どっちかというと負荷テスト不足かな・・・」


LINEで送る
Pocket


返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です