C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 本番と同等の環境を用意できない場合のテスト方法についての相談


(過去ログ 74 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■43002 / inTopicNo.1)  本番と同等の環境を用意できない場合のテスト方法についての相談
  
□投稿者/ ジェット (39回)-(2009/10/26(Mon) 17:06:46)

分類:[設計/仕様] 

いつもお世話になっております。

今困っている訳ではないのですが、
今後のためにご意見を伺いたくて質問させて頂きました。

ユーザーから「xx処理」は5秒以内に完了するようにしてほしいと
要望されることがあると思います。
その場合に、本番環境と全く同じテスト環境を用意できない
というケースはあると思います。
(本番と同じスペックの端末をレンタルする費用がなく、
 本番環境をテストには使わせられないようなことはあると思います。)

その場合に、どのようにして対応すれば良いのだろうかと
疑問に思いました。

今回のケースではテストサーバーが本番環境よりスペックが悪いとします。
CPU、メモリともに本番環境の7割の性能しかないとします。

このときに「xx処理」の結果は6秒でした。

調査するとタスクマネージャでCPUが100%になっているという理由で
CPUがボトルネックになっているという点まで突き止めたとします。

ここでCPUの性能が本番環境では1.5倍になるため、
処理結果も5秒以内になるだろう、とは判断できませんよね?

どのようにして、現在のプログラムがユーザーの要望を満足しているか
していないかを判断したら良いのでしょうか?

今までもユーザーから処理時間の改善を求められることはありましたが、
要求が厳しくなかったので、テスト環境のスペックが多少悪くても、
テスト環境で求められた処理時間以内になっていたため、
問題になることはありませんでした。

このようなケースの場合に、どのように対応するのがベターなのだろうかと
考えたのですが、私の頭では解決策が思い浮かびませんでしたので、
質問させて頂きました。

もしよろしければ、アドバイス頂けませんか?
ぜひよろしくお願いいたします。

引用返信 編集キー/
■43007 / inTopicNo.2)  Re[1]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ Mr.T (325回)-(2009/10/26(Mon) 17:57:05)
Mr.Tです。

個人的には、そういうケースでは低いスペックでも期待される内容をクリア
すれば問題ないんじゃないかなと思いますが。


引用返信 編集キー/
■43008 / inTopicNo.3)  Re[1]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ とっちゃん (427回)-(2009/10/26(Mon) 18:00:29)
とっちゃん さんの Web サイト
No43002 (ジェット さん) に返信

1に計測、2に計測、3も4も5も計測。
ではないでしょうか?

引用返信 編集キー/
■43011 / inTopicNo.4)  Re[1]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ Jitta on the way (472回)-(2009/10/26(Mon) 18:27:52)
No43002 (ジェット さん) に返信
> いつもお世話になっております。
>
> 今困っている訳ではないのですが、
> 今後のためにご意見を伺いたくて質問させて頂きました。
>
> ユーザーから「xx処理」は5秒以内に完了するようにしてほしいと
> 要望されることがあると思います。
> その場合に、本番環境と全く同じテスト環境を用意できない
> というケースはあると思います。
> (本番と同じスペックの端末をレンタルする費用がなく、
>  本番環境をテストには使わせられないようなことはあると思います。)
>
> その場合に、どのようにして対応すれば良いのだろうかと
> 疑問に思いました。
>
> 今回のケースではテストサーバーが本番環境よりスペックが悪いとします。
> CPU、メモリともに本番環境の7割の性能しかないとします。
>
> このときに「xx処理」の結果は6秒でした。
>
> 調査するとタスクマネージャでCPUが100%になっているという理由で
> CPUがボトルネックになっているという点まで突き止めたとします。

本当に?
例えば、こんなコード。
while(TRUE);

これ、CPU使用率が100%になります。次のように修正します。
while(TRUE) sleep(0);

使用率が下がります。

最近のアンチ ウィルス ソフトをバックグラウンドで動かすと、簡単に CPU 使用率が100%になります。でも、他のソフトはちゃきちゃき動きます。AV の優先度が低いからです。


まずは、何処で、どれだけの時間がかかっているか、計測。範囲を狭めて、アルゴリズムの検証。
今の状態では、CPU のせいだとは言えません。



なお、数年前の情報処理技術者試験(プロジェクト マネージャー)に、「本番と同じ環境を用意できないとき、どうやってパフォーマンスを計測しましたか。」という問題が出ました。
引用返信 編集キー/
■43022 / inTopicNo.5)  Re[2]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ ジェット (40回)-(2009/10/27(Tue) 09:20:28)
Mr.Tさん

ご回答ありがとうございました。

> 個人的には、そういうケースでは低いスペックでも期待される内容をクリア
> すれば問題ないんじゃないかなと思いますが。

確かに低いスペックでも、期待される内容をクリアすれば、
問題ないですね。
改善できる要素が多くあるようであれば、
これが1番簡単かもしれませんね。

低いスペックだと期待される内容をクリアできない場合は、
どうしたら良いのだろうか?という疑問は残ったままですが、
参考になりました。

ありがとうございました。


引用返信 編集キー/
■43023 / inTopicNo.6)  Re[2]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ ジェット (41回)-(2009/10/27(Tue) 09:22:00)
とっちゃんさん

ご回答ありがとうございました。

> 1に計測、2に計測、3も4も5も計測。
> ではないでしょうか?

トレースログに時刻を出力するなどして、
ボトルネックとなっている処理を計測することが大切ということですよね。

それによって低いスペックであっても、
要求を満たせるようにすべきということでしょうか?

参考になりました。
ありがとうございます。
引用返信 編集キー/
■43026 / inTopicNo.7)  Re[2]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ ジェット (42回)-(2009/10/27(Tue) 09:53:51)
Jitta on the way さん

ご回答ありがとうございます。

> 本当に?
> 例えば、こんなコード。
> while(TRUE);
現在問題があるわけではないので、
仮の例を挙げたつもりでした。
例が適切でありませんでしたね、申し訳ございません。

> まずは、何処で、どれだけの時間がかかっているか、計測。範囲を狭めて、アルゴリズムの検証。
> 今の状態では、CPU のせいだとは言えません。
確かにそうですね。
私の考えが未熟でした。

検証して、ボトルネックを見つけないといけないのですね。

> なお、数年前の情報処理技術者試験(プロジェクト マネージャー)に、「本番と同じ環境を用意できないとき、どうやってパフォーマンスを計測しましたか。」という問題が出ました。
それと同じようなことが、今回の質問の経緯となります。
アプリケーションエンジニアの過去問で、
「本番と同じ環境を用意できないときに、どうやってシステムテストをするか」
という問題があり、どうしたら良いのだろうかと、
私の中で答えが思い浮かばなかったため、質問させて頂いたのです。


この場合、妥当解としては、
本番よりスペックが劣るテスト環境であっても、
その環境で要求を満たせるようにする、
というのが良いのでしょうか?

ご意見いただければと思います。
よろしくお願いいたします。





引用返信 編集キー/
■43146 / inTopicNo.8)  Re[3]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ Jitta (611回)-(2009/10/29(Thu) 22:46:37)
No43026 (ジェット さん) に返信
 私も、例が悪かったですね。「バブルソートで CPU フルの状態でも、クイックソートにすると時間は短くなる」の方が適切だったような気がします。

 まず、「何が違うか」を、明らかにします。今回の場合、「CPU の性能が違う」だけで、本当に良いですか?実行しているサービス、ハードディスクなどの性能も、関係してきませんか?
 その中で、無視してもよいと思える性能差と、その理由を明らかにします。ハードディスクの「容量」が違っても、性能に大差はないでしょう。しかし、本番は Giga bit LAN なのに、試験では 100Mega bit LAN しか用意できなければ、測定に有意な差が出ることが予想されます。もっとも、どれくらいのデータを転送するかによっては、無視しても良いかもしれません。
 差があることがわかれば、その差を埋める方法を検討します。そして、その方法でよいか、検証します。先の LAN の例では、転送速度が100倍になるとは、期待できないでしょう。また、実際にどの様な装置が繋がっているかによっても変わります。そういったことが考慮されているか、検証します。

引用返信 編集キー/
■43162 / inTopicNo.9)  Re[4]: 本番と同等の環境を用意できない場合のテスト方法についての相談
□投稿者/ ジェット (43回)-(2009/10/30(Fri) 11:36:53)
Jittaさん

ご回答ありがとうございます。

関係するすべての要因を考え、
無視できるものと、無視できないものを区別するのですね。
納得いたしました。

無視できない差がある場合は、なかなか難しいですね。
例に挙げて頂いたLANの例でも、ネットワークの知識がないので、
どの程度影響があるかを考えるだけでも、非常に苦労しそうです。

とても参考になりました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -