<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客网-我的ITblog我作主　　关注→　『伊波拉』→　测试　SzDlinXie- ITblog　　  　　   -随笔分类-性能测试技术资料</title><link>http://www.cnitblog.com/szdlinxie/category/4495.html</link><description>·√·  本ITblog站点记录相关的软件技术文档、网络技术杂志、测试技术杂谈等技术文档的管理站点.联系方式：MSN：dowling@sunlike.cn   QQ:94595885</description><language>zh-cn</language><lastBuildDate>Tue, 06 May 2008 20:35:15 GMT</lastBuildDate><pubDate>Tue, 06 May 2008 20:35:15 GMT</pubDate><ttl>60</ttl><item><title>Linux服务器性能数据收集-Sysstat介绍</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/05/06/43396.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 06 May 2008 03:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/05/06/43396.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/43396.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/05/06/43396.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/43396.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/43396.html</trackback:ping><description><![CDATA[&nbsp;
<p align=center><strong><span>Linux</span></strong><strong><span>服务器性能数据收集</span></strong></p>
<p align=center><strong><span>Sysstat</span></strong><strong><span>介绍</span></strong></p>
<p align=left><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp; <strong><u><span>Linux</span></u></strong></span><span>中的<span>top,free</span>等命令不能完全满足我们性能数据收集的要求，我们需要一个更加强大的工具来收集性能数据。经过考察和对比，发现<span>Sysstat</span>是一个非常强大的工具，因此下载了试了下，效果不错。<span>Sysstat</span>是一个工具集，包括<span>sar</span>、<span>pidstat</span>、<span>iostat</span>、<span>mpstat</span>、<span>sadf</span>、<span>sadc</span>。其中<span>sar</span>是其中最强大，也是最能符合我们<strong><u><span>测试</span></u></strong>要求的工具，同时<span>pidstat</span>也是非常有用的东东，因此本文结合<strong><u><span>性能测试</span></u></strong>重点介绍这两个工具。<span> </span></span></p>
<p align=left><strong><span>Sysstat</span></strong><strong><span>的安装</span></strong></p>
<p align=left><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>从<span>http://pagesperso-orange.fr/sebastien.godard/download.html</span>下载最新版本，解压，安装<span> </span></span></p>
<ul type=disc>
    <li><span>&nbsp;wget&nbsp;http://pagesperso-orange.fr/sebastien.godard/sysstat-<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899">8.1.2</st1:chsdate>.tar.gz<br>&nbsp;tar&nbsp;zxvf&nbsp;sysstat-8.1.2.tar.gz<br>&nbsp;cd&nbsp;sysstat-8.1.2<br>&nbsp;./configure<br>&nbsp;make<br>&nbsp;su<br>&nbsp;&lt;enter&nbsp;root&nbsp;password&gt;<br>&nbsp;make&nbsp;install</span></li>
</ul>
<p align=left><strong><span>监视某个进程</span></strong></p>
<p align=left><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>通过<span>ps</span>命令找到相应进程的<span>PID</span>：<span> </span></span></p>
<p align=left><span><img src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1040"><span>ps&nbsp;-e</span></span></p>
<p align=left><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>使用<span>pidstat</span>命令监视进程，详细用法见：<u><span>http://pagesperso-orange.fr/sebastien.godard/man_pidstat.html</span></u><span> </span></span></p>
<p align=left><span>pidstat&nbsp;</span><span>2</span>&nbsp;<span>5</span><span>&nbsp;<br></span><span>//</span><span>每隔<span>2</span>秒，显示<span>5</span>次，所有活动进程的<span>CPU</span>使用情况<span><br></span></span><span>pidstat&nbsp;-p&nbsp;</span><span>3132</span>&nbsp;<span>2</span>&nbsp;<span>5</span><span>&nbsp;<br></span><span>//</span><span>每隔<span>2</span>秒，显示<span>5</span>次，<span>PID</span>为<span>1643</span>的进程的<span>CPU</span>使用情况显示<span><br></span></span><span>pidstat&nbsp;-p&nbsp;</span><span>3132</span>&nbsp;<span>2</span>&nbsp;<span>5</span><span>&nbsp;-r<br></span><span>//</span><span>每隔<span>2</span>秒，显示<span>5</span>次，<span>PID</span>为<span>1643</span>的进程的内存使用情况显示</span></p>
<p align=left><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>很可惜的是，<span>pidstat</span>命令没有保存性能数据的功能。<span> </span></span></p>
<p align=left><strong><span>查看性能数据</span></strong></p>
<p align=left><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>在<span>sysstat</span>工具包中，<span>sar</span>是最强大的了，通过<span>sar</span>几乎可以监视所有的性能数据，同时，<span>sar</span>还支持将性能数据保存起来。<span><br>sar</span>详细用法请见：<span><a href="http://pagesperso-orange.fr/sebastien.godard/man_sar.html">http://pagesperso-orange.fr/sebastien.godard/man_sar.html</a> </span></span></p>
<p align=left><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>查看<span>CPU</span>使用情况<span> </span></span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1041"><span>sar&nbsp;</span><span>2</span>&nbsp;<span>5</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1042"></span><span>//</span></span><span>每隔<span>2</span>秒，显示<span>5</span>次，<span>CPU</span>使用的情况</span></p>
<p align=left><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>查看内存使用情况<span> </span></span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1043"><span>sar&nbsp;-r&nbsp;</span><span>2</span>&nbsp;<span>5</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1044"></span><span>//</span></span><span>每隔<span>2</span>秒，显示<span>5</span>次，内存使用的情况</span></p>
<p align=left><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>查看网络吞吐量<span> </span></span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1045"><span>sar&nbsp;-n&nbsp;DEV&nbsp;</span><span>2</span>&nbsp;<span>5</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1046"></span><span>//</span></span><span>每隔<span>2</span>秒，显示<span>5</span>次，网络吞吐量情况</span></p>
<p align=left><strong><span>保存性能数据</span></strong></p>
<p align=left><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sar</span><span>支持保存成两种格式的文件，一种是文本文件，一种是二进制文件（只有通过<span>sar</span>自己的命令才能查看）。<span> </span></span></p>
<p align=left><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><strong><span>保存为文本文件</span></strong><span><br><br></span><span>结合上面的查看命令，加入<span> &gt; filename </span>参数即可保存文本文件，下面列出几个有用的命令：<span> </span></span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1047"><span>sar&nbsp;</span><span>1</span>&nbsp;<span>10</span><span>&nbsp;&gt;&nbsp;data.txt<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1048"></span><span>//</span></span><span>每隔<span>1</span>秒，写入<span>10</span>次，把<span>CPU</span>使用数据保存到<span>data.txt</span>文件中。<span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1049"></span></span><span>sar&nbsp;</span><span>1</span>&nbsp;<span>0</span><span>&nbsp;-e&nbsp;</span><span>15</span><span>:</span><span>00</span><span>:</span><span>00</span><span>&nbsp;&gt;&nbsp;data.txt<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1050"></span><span>//</span><span>每隔<span>1</span>秒记录<span>CPU</span>的使用情况，直到<span>15</span>点，数据将保存到<span>data.txt</span>文件中。<span>(-e&nbsp;</span>参数表示结束时间，注意时间格式：必须为<span>hh:mm:ss</span>格式<span>)<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1051"></span></span><span>sar&nbsp;</span><span>1</span>&nbsp;<span>0</span><span>&nbsp;-r&nbsp;-e&nbsp;</span><span>15</span><span>:</span><span>00</span><span>:</span><span>00</span><span>&nbsp;&gt;&nbsp;data.txt<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1052"></span><span>//</span><span>每隔<span>1</span>秒记录内存使用情况，直到<span>15</span>点，数据将保存到<span>data.txt</span>文件中。<span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1053"></span></span><span>sar&nbsp;</span><span>1</span>&nbsp;<span>0</span><span>&nbsp;-n&nbsp;DEV&nbsp;-e&nbsp;</span><span>15</span><span>:</span><span>00</span><span>:</span><span>00</span><span>&nbsp;&gt;&nbsp;data.txt<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1054"></span><span>//</span><span>每隔<span>1</span>秒记录网络使用情况，直到<span>15</span>点，数据将保存到<span>data.txt</span>文件中。</span></p>
<p align=left><span>用<span>WinSCP</span>工具从<span>Linux</span>服务器上取下<span>data.txt</span>文件，内容如下：</span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1055"><span>Linux&nbsp;</span><st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899"><span>2.6</span><span>.</span><span>18</span></st1:chsdate><span>-</span><span>53</span><span>.el5&nbsp;(Performancesvr5)&nbsp;&nbsp;<st1:chsdate w:st="on" IsROCDate="False" IsLunarDate="False" Day="05" Month="05" Year="2008">2008<span><span>年05</span></span><span><span>月05</span></span><span><span>日</span></span></st1:chsdate>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_x86_64_<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1056"><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1057">&nbsp;11</span></span><span>时<span>04</span>分<span>05</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%nice&nbsp;&nbsp;&nbsp;%system&nbsp;&nbsp;&nbsp;%iowait&nbsp;&nbsp;&nbsp;&nbsp;%steal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%idle<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1058">&nbsp;11</span>时<span>04</span>分<span>06</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.75</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1030">&nbsp;11</span><span>时<span>04</span>分<span>07</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.75</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1031">&nbsp;11</span><span>时<span>04</span>分<span>08</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>1.50</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>98.00</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1032">&nbsp;11</span><span>时<span>04</span>分<span>09</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.50</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.25</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1033">&nbsp;11</span><span>时<span>04</span>分<span>10</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>100.00</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1034">&nbsp;11</span><span>时<span>04</span>分<span>11</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.50</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1035">&nbsp;11</span><span>时<span>04</span>分<span>12</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.75</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1036">&nbsp;11</span><span>时<span>04</span>分<span>13</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.50</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.50</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.99</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>98.01</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1037">&nbsp;11</span><span>时<span>04</span>分<span>14</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>1.25</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>98.75</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1038">&nbsp;11</span><span>时<span>04</span>分<span>15</span>秒<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.50</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.50</span><span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1039">&nbsp;</span><span>平均时间<span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span>0.20</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.15</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.42</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>0.00</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>99.23</span></p>
<p align=left><span>有了这份数据，就可以轻松的使用<span>WPS</span>表格来统计<span>CPU</span>的使用情况了。<span> </span></span></p>
<p align=center><span><img border=0 alt=111 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image002.jpg" width=529 height=278 v:shapes="_x0000_i1025"></span></p>
<p align=left><strong><span>保存为二进制文件</span></strong><span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>由于保存的二进制文件只有<span>sar</span>通过<span>-f</span>参数才能打开，不利于我们分析和统计数据，因此不推荐使用这个方法。保存二进制文件的参数是<span>-o</span>，如：<span> </span></span></p>
<p align=left><span><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1026"><span>sar&nbsp;</span><span>1</span>&nbsp;<span>5</span><span>&nbsp;-r&nbsp;-o&nbsp;data<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1027"></span><span>//</span></span><span>每隔<span>1</span>秒，写入<span>5</span>次，将内存使用的数据写入二进制文件<span>data</span>中。<span><br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1028"></span></span><span>sar&nbsp;-f&nbsp;data<br><img border=0 src="file:///D:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/04/clip_image001.gif" width=11 height=16 v:shapes="_x0000_i1029"></span><span>//</span><span>查看<span>data</span>文件</span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/43396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-05-06 11:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/05/06/43396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Robot 基础使用手册</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 21 May 2007 06:17:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27372.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27372.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27372.html</trackback:ping><description><![CDATA[<p>Rational Robot 基础使用手册<br>目录..................................................................................................................................................................................... 1<br>第一章 绪论....................................................................................................................................................................... 3<br>一、概述......................................................................................................................................................................... 3<br>二、基本概念................................................................................................................................................................. 4<br>第二章 使用....................................................................................................................................................................... 5<br>一、GUI 脚本................................................................................................................................................................. 5<br>（一）、设置以及预定义........................................................................................................................................... 5<br>（二）、记录GUI 脚本............................................................................................................................................ 10<br>（三）、在GUI Script 中加入特写........................................................................................................................... 17<br>（四）、使用查证点................................................................................................................................................. 22<br>（五）、使用Datapools............................................................................................................................................ 23<br>（六）、编辑GUI 脚本............................................................................................................................................ 25<br>（七）、编译GUI 脚本............................................................................................................................................ 26<br>（八）、调试GUI 脚本............................................................................................................................................ 27<br>（九）、回放GUI 脚本............................................................................................................................................ 29<br>（十）、工具条操作................................................................................................................................................. 30<br>二、VU 脚本................................................................................................................................................................ 32<br>（一）、设置以及预定义......................................................................................................................................... 32<br>（二）、记录VU 脚本.............................................................................................................................................. 32<br>（三）、回放VU 脚本.............................................................................................................................................. 33<br>（四）、重录VU 脚本.............................................................................................................................................. 33<br>（五）、复制VU 脚本.............................................................................................................................................. 34<br>（六）、删除VU 脚本.............................................................................................................................................. 34<br>（七）、编译VU 脚本.............................................................................................................................................. 34<br>（八）、查询会话中的脚本列表.............................................................................................................................. 34<br>（九）、用会话生成脚本......................................................................................................................................... 35<br>（十）、将VU 脚本融入会话.................................................................................................................................. 35<br>（十一）、手工VU 脚本编码.................................................................................................................................. 35<br>三、VB 脚本................................................................................................................................................................. 36<br>四、SQA BASIC............................................................................................................................................................. 37<br>（一）、定制SQA Basic 脚本.................................................................................................................................. 37<br>五、测试应用程序....................................................................................................................................................... 42<br>（一）、测试Delphi 应用程序................................................................................................................................. 42<br>51Testing 软件测试网<br>（二）、测试Visual Basic 应用程序......................................................................................................................... 43<br>第三章 参考................................................................................................................................................................... 44<br>（一）查证点............................................................................................................................................................... 44<br>（二）查证方法........................................................................................................................................................... 45<br>（三）鉴别方法........................................................................................................................................................... 45<br>（四）标准数据类型................................................................................................................................................... 45<br>（五）RATIONAL ROBOT 命令行选项....................................................................................................................... 45<br>（六）RATIONAL ROBOT 窗口.................................................................................................................................. 45<br>（七）菜单................................................................................................................................................................... 45<br></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-21 14:17 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Robot 创建测试脚本</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20902.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 03:16:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20902.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20902.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20902.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20902.html</trackback:ping><description><![CDATA[
		<strong>
				<font color="#000066">Rational Robot 创建测试脚本<br /><h3><font size="3">目的</font></h3><p>        本工具向导说明了如何使用 Rational Robot<sup><sup>TM</sup></sup> 来记录测试脚本以及在记录脚本之后如何通过编辑脚本对其进行扩展。</p><p>相关的 Rational Unified Process 活动： 
</p><ul><li>活动：实施测试中的“记录或通过编程创建测试脚本”部分 </li></ul><h3><font size="3">概述</font></h3><p>本工具向导适用于 Microsoft Windows 95/98/NT 4.0。</p><p>要使用 Robot 来记录和扩展脚本，请执行以下步骤： 
</p><ol><li>在 Robot 中记录脚本。 
</li><li>插入核实点。 
</li><li>必要时编辑测试脚本。 
</li><li>回放脚本。 
</li><li>在 LogViewer 中查看结果。 
</li><li>用比较器分析核实点结果。 </li></ol><h3><font size="3">1. 在 Robot 中记录脚本 <img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></font></h3><p>当您记录脚本时，Robot 会记录以下内容： 
</p><ul><li>您与所测试的应用程序进行交互时执行的操作。这些用户操作包括帮助您在应用程序中浏览的击键和鼠标点击操作。 
</li><li>您创建用来获取和保存有关特定对象信息的核实点。核实点是您在脚本中创建的一个点，用来确定跨多个工作版本的对象的状态和行为。在记录过程中，核实点获取对象的信息并将其存储为基线。而在回放过程中，核实点将再次获取对象信息，并将该信息与基线进行比较。 </li></ul><p>记录的脚本为所测试的应用程序建立预期行为的基线。得到应用程序的修订工作版本之后，您便可以回放脚本，根据已建立的基线对应用程序的新工作版本进行测试，这样做占用的时间只是手工测试所需时间的一小部分。</p><p>在记录和回放过程中，Robot 面向对象的记录技术在 Windows 层检查所测试应用程序中的对象。因此，脚本的回放通常并不依赖于屏幕的绝对坐标。面向对象的记录技术使脚本不受用户界面微小变化的影响，从而简化了脚本的维护。</p><p>要记录新脚本，请执行以下步骤：</p><center><table cellpadding="5" width="85%" border="0"><tbody><tr><td valign="top" align="right" width="33">1.</td><td width="558">在 TestManager 中输入测试脚本属性，准备记录测试脚本。请参见“工具向导：使用 Rational TestManager™ 获取确定和结构化测试过程的结果“。</td></tr><tr><td valign="top" align="right" width="33">2.</td><td width="558">通过设置记录选项来准备测试环境。请参见“工具向导：在 Rational Robot 中设置测试环境“。</td></tr><tr><td valign="top" align="right" width="33"></td><td width="558">启动所测试的应用程序。（或者，您也可以在开始记录之后，单击 Robot 中的 <b>Insert &gt; Start Application</b> 来启动所测试的应用程序。）</td></tr><tr><td valign="top" align="right" width="33">3.</td><td width="558">单击 Robot 工具栏上的 <strong>Record GUI Script</strong> 按钮。</td></tr><tr><td valign="top" align="right" width="33">4.</td><td width="558">键入一个名称（最长为 40 个字符）或从列表中进行选择。</td></tr><tr><td valign="top" align="right" width="33">5.</td><td width="558">列出的脚本在 TestManager 中已有定义或已在 Robot 中记录。</td></tr><tr><td valign="top" align="right" width="33">6.</td><td width="558">要改变记录选项，请单击 <b>Options</b>。完成后，单击 <b>OK</b>。</td></tr><tr><td valign="top" align="right" width="33">7.</td><td width="558">如果您选择了一个以前已定义或已记录的脚本，可以通过单击 <b>Properties</b> 来改变其属性。完成后，单击 <b>OK</b>。</td></tr><tr><td valign="top" align="right" width="33">8.</td><td width="558">单击 <b>OK</b> 开始记录。将出现以下事件：</td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>如果您选择了一个已记录的脚本，Robot 会询问您是否要覆盖它。单击 Yes。（如果在现有的 GUI 脚本上进行记录，该脚本文件会被覆盖，但所有现有的属性将适用于新脚本。） </li></ul></td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>Robot 最小化（默认行为）。 </li></ul></td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>出现浮动的 GUI Record 工具栏。使用此工具栏，您可以暂停或停止记录、重新显示 Robot 或向脚本中添加功能部件。 </li></ul></td></tr><tr><td valign="top" align="right" width="33">9.</td><td width="558">通过执行过程中确定的操作来执行测试过程，同时插入必要的功能部件（例如核实点、注释和定时器）。有关详细信息，请参见 Robot 联机帮助。</td></tr><tr><td valign="top" align="right" width="33">10.</td><td width="558">如果必要，可以从“面向对象的记录”切换到低层记录。</td></tr><tr><td valign="top" align="right" width="33">11.</td><td width="558">“面向对象的记录”检查所测试应用程序中的 Windows GUI 对象和其他对象，不依赖于精确的计时或屏幕坐标。而低层记录则利用屏幕坐标和精确的计时来跟踪每次鼠标的移动和键盘操作。</td></tr><tr><td valign="top" align="right" width="33">12.</td><td width="558">完成后，单击 GUI Record 工具栏上的 <strong>Stop Recording</strong> 按钮。将出现以下事件：</td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>所记录的脚本出现在 Robot 主窗口中一个 Script 窗口内。 </li></ul></td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>此脚本中的核实点（如果有的话）显示在左侧的 Asset 窗格中。 </li></ul></td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>此脚本的文本显示在右侧的 Script 窗格中。 </li></ul></td></tr><tr><td valign="top" align="right" width="33"></td><td width="558"><ul><li>当编译或回放脚本时，编译结果将显示在 Output 窗口的 Build 选项卡中。 </li></ul></td></tr><tr><td valign="top" align="right" width="33">13.</td><td width="558">单击 <strong>File &gt; Properties</strong> 是另一种设置脚本属性的方法。</td></tr></tbody></table></center><center><br /></center><center><h3 align="left">2. <a name="heading of tool step two"><u>插入核实点</u></a><a href="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/toolment/robot/tm_imtst.htm#Top"><img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></a></h3></center><p align="left">要在记录或编辑脚本时插入核实点，请执行以下步骤： 
</p><center><ol><li><div align="left">进行以下操作之一： </div></li></ol></center><blockquote><ul><li><div align="left">如果要进行记录，单击 GUI Record 工具栏上的 Display GUI Insert Toolbar 按钮。 </div></li><li><div align="left">如果要进行编辑，在脚本中定位指针并单击 Standard 工具栏上的 Display GUI Insert Toolbar 按钮。 </div></li></ul></blockquote><div align="center"><ol start="2"><li><div align="left">单击 GUI Insert 工具栏上的核实点按钮。 </div><p align="left">核实点依照其类型命名（如果脚本中有多个同一类型的核实点，名称中还应该有一个数字）。</p></li><li><div align="left">对名称进行适当的编辑。 </div></li><li><div align="left">设置等待状态选项（此操作可选）。 </div></li><li><div align="left">设置预期结果选项（此操作可选）。 </div></li><li><div align="left">单击 OK。<br /></div></li><li><div align="left">如果提示您选择一个对象，请将对象定位工具拖动到所需的对象上，然后松开鼠标左键，这样便可以选中该对象。或者，还可以通过单击 Browse 按钮从对象列表中选择对象。选择了所需的对象之后，单击 OK。 </div></li></ol></div><p align="left">有关详细信息，请参见 Robot 联机帮助和 Using Rational Robot 手册中的 Creating Verification Points in GUI Scripts 一章。</p><h3 align="left">3. <a name="step three"><u>必要时编辑测试脚本</u></a><a href="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/toolment/robot/tm_imtst.htm#Top"><img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></a></h3><p align="left">可以手工更改脚本的文本或添加新的功能部件来编辑现有的脚本。例如，您可以： 
</p><ul><li><div align="left">编辑脚本的文本（删除行、移动文本等） </div></li><li><div align="left">向现有的脚本添加新的用户操作（选择菜单命令、单击按钮等） </div></li><li><div align="left">向现有的脚本添加新的功能部件（添加核实点、注释等） </div></li><li><div align="left">转至带有编译器错误的行（转至特定的行号、查找下一个错误等） </div></li></ul><p align="left">有关详细信息，请参见 Robot 联机帮助和 Using Rational Robot 手册中的 Editing, Compiling, and Debugging Scripts 一章。</p><h3 align="left">4. <a name="step four"><u>回放脚本</u></a><a href="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/toolment/robot/tm_imtst.htm#Top"><img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></a></h3><p align="left">回放脚本时，Robot 会重复您所记录的操作并自动进行软件测试。与手工测试相比，自动测试可以使您对应用程序的每一个新的工作版本进行更快、更完全的测试。这不但可以缩短测试时间，而且可以扩大测试覆盖面并保持整体的一致性。</p><p align="left">脚本回放一般有两个阶段： 
</p><ul><li><div align="left">测试实施 - 使用所测试的应用程序的同一个工作版本（与您用来记录的工作版本相同），回放脚本来检查它们是否按预期的方式工作。这样即可为所测试的应用程序核实其预期行为的基线。 </div></li><li><div align="left">测试执行和回归 - 回放脚本，将所测试的应用程序的最新工作版本和在测试实施过程中建立的基线进行比较。测试过程中对所有测试脚本的回放可以说明从上一个工作版本之后该应用程序中出现的所有不同之处。通过对这些不同之处进行评估，可以确定它们是实际缺陷还是有意变更。 </div></li></ul><p align="left">在进行回放之前，如果一个脚本在上一次运行之后已经发生变化，Robot 将对其进行自动编译。</p><p align="left">有关为脚本回放准备测试环境的详细信息，请参见“工具向导：在 Rational Robot 中设置测试环境“。</p><p align="left">要回放脚本，请执行以下步骤： 
</p><ol><li><div align="left">单击工具栏上的 Playback Script 按钮。将出现 Playback 对话框。 </div></li><li><div align="left">键入一个脚本名或从列表中选择一个脚本。 </div><p align="left">查询将决定列表中出现哪些名称和字段。如果要改变列表，可以从 Query 下拉列表中选择查询。通过这种方法可以在 TestManager 中创建新查询。</p></li><li><div align="left">如果要改变 Playback 选项，请单击 Options。完成后，单击 OK。有关 Playback 选项的详细信息，请参见“工具向导：在 Rational Robot 中设置测试环境“。</div></li></ol><ol start="4"><li><div align="left">单击 OK 继续下一步。 </div></li><li><div align="left">如果出现 Specify Log Information 对话框，则进行以下操作： </div></li></ol><blockquote><ul><li><div align="left">从列表中选择一个工作版本。如果要创建新的工作版本，请单击右侧的“Build”按钮。也可以使用 TestManager 来创建工作版本。 </div></li><li><div align="left">从列表中选择一个日志文件夹。要创建新的日志文件夹，请单击右侧的 Log Folder 按钮。也可以使用 TestManager 来创建日志文件夹。 </div></li><li><div align="left">接受默认的日志名（同于脚本的名称），或者键入新名称。 </div></li><li><div align="left">单击 OK。 </div></li></ul></blockquote><ol start="6"><li><div align="left">如果出现提示信息，询问您是否要覆盖该日志，请单击 Yes。 </div></li></ol><p align="left">注：如果要停止回放脚本，请按 F11 键。只有当回放面向对象的命令时，才可以在 Robot 中使用 F11 键。在低层操作中，F11 键不能停止回放。<br /><br /></p><h3 align="left">5. <a name="step five"><u>在 LogViewer 中查看结果</u></a><a href="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/toolment/robot/tm_imtst.htm#Top"><img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></a></h3><p align="left">回放结束后，使用 Rational LogViewer 来查看回放结果，包括核实点故障、过程故障、异常中止和任何其他回放信息。</p><p align="left">要控制日志信息和 LogViewer 的显示，您可以在 UI Playback Options 对话框的 Log 选项卡中设置选项。 
</p><ul><li><div align="left">要用回放结果来更新储存库，请选择 <b>Output playback results to log</b>。单击要输出到日志的细节量。 </div></li><li><div align="left">要在回放之后自动显示 LogViewer，请选择 <b>View log after playback</b>。 </div></li></ul><p align="left">如果未选择该选项，您可以在回放结束后通过单击 <b>Tools &gt; Rational Test &gt; LogViewer</b> 来显示 LogViewer。</p><p align="left">如果测试脚本的回放导致了任何错误，必须找出形成这一错误的具体原因。</p><p align="left">包含错误的脚本在 LogViewer 的 <strong>Results</strong> 列中用 <strong>Fail</strong>（在红色框中）或 <strong>Warning</strong>（在黄色框中）进行标识。需要处理以下几类错误：致命错误、脚本错误和核实点故障。致命错误通常要求对测试环境进行调查并解决故障。而脚本错误通常要求维护测试脚本。核实点故障（在测试实施过程中）通常要求改变核实点参数，或指出所测试应用程序的理想状态在记录脚本和回放脚本时有什么不同。有关分析核实点的内容，请参见下一部分。</p><p align="left">可以在 <strong>Log Event Properties</strong> 窗口中查看有关错误状态的其他信息。单击<b> View &gt; Log Event Properties</b>，打开此窗口。选择<strong> Results </strong>选项卡将显示错误的说明和有关所遇到错误类型的其他信息。</p><p align="left">对于每个出现故障（或警告）的脚本，复审有关该故障的信息，并在必要的情况下编辑测试脚本（请参见前面的第 3 部分：必要时编辑测试脚本）。在 LogViewer 中单击<b> View &gt; Script</b> 可以打开测试脚本（和 Robot）。</p><p align="left">完成脚本编辑之后，应将环境重设为适当的初始值（请参见“工具向导：在 Rational Robot 中设置测试环境“）并重新执行测试（<font size="3">回放脚本）。</font></p><h3 align="left">6. <a name="step six"><u>用比较器分析核实点结果</u></a><img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></h3><p align="left">使用比较器来分析核实点结果。要从 LogViewer 打开比较器，请执行以下步骤: 
</p><ol><li><div align="left">在 Log Event 列中，双击一个核实点。出现相应的 Comparator 对话框窗口。也可以从 Robot 打开比较器，方法是双击 Asset 窗格中的核实点。但是，如果使用这种方法打开比较器，您只能查看基线文件。<br /></div></li><li><div align="left">基线和实际结果之间的差别会突出显示出来。 </div></li><li><div align="left">复审这些差别并确定适当的操作过程，包括：<br />（注：根据核实点类型的不同，可执行的操作也有所不同） </div></li></ol><blockquote><ul><li><div align="left">将属性复制到基线 - 复制当前的单个实际属性并覆盖基线属性。 </div></li><li><div align="left">将所有属性复制到基线 - 复制所有实际属性值并覆盖所有基线属性。 </div></li><li><div align="left">通过双击属性（菜单、值等）再输入一个不同的值，对单个属性（菜单、值等）进行编辑。 </div></li><li><div align="left">编辑属性列表（以此来确定核实点应当使用的属性）。 </div></li><li><div align="left">创建/修改掩码。 </div></li></ul></blockquote><ol start="4"><li><div align="left">进行了适当的更改之后，单击 <strong>Exit</strong> 按钮来关闭比较器并保存所做的更改。 </div></li></ol><p align="left">编辑完脚本和/或核实点之后，应该将环境重设为适当的初始值（请参见工具向导：在 Rational Robot 中设置测试环境）并重新执行测试（<font size="3">回放脚本）。</font></p></font>
		</strong>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 11:16 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Robot中设置测试环境</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20901.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 03:14:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20901.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20901.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20901.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20901.html</trackback:ping><description><![CDATA[
		<font color="#000066">
				<strong>Rational Robot中设置测试环境<br /></strong>
				<h3>
						<font size="3">目的</font>
				</h3>
				<p>
						<strong>本工具向导说明了如何在 Rational Robot<sup><sup>TM</sup></sup> 中设置测试环境。</strong>
				</p>
				<p>
						<strong>相关的 Rational Unified Process 活动： </strong>
				</p>
				<ul>
						<li>
								<strong>活动：实施测试中的“记录或通过编程创建测试脚本”部分 </strong>
						</li>
						<li>
								<strong>活动：执行测试中的“执行测试过程和/或测试脚本”部分 </strong>
						</li>
				</ul>
				<h3>
						<font size="3">概述</font>
				</h3>
				<p>
						<strong>本工具向导适用于 Microsoft Windows 95/98/NT 4.0。</strong>
				</p>
				<p>
						<strong>要使用 Robot 来设置测试环境，请执行以下步骤： </strong>
				</p>
				<ol>
						<ol>
								<li>
										<strong>设置测试环境以进行记录、编辑或测试脚本回放。 </strong>
								</li>
								<li>
										<strong>设置 GUI 脚本记录选项。 </strong>
								</li>
								<li>
										<strong>设置 GUI 脚本回放选项。 </strong>
								</li>
						</ol>
				</ol>
				<h3>
						<font size="3">1. 设置测试环境以进行记录、编辑或测试脚本回放 <img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></font>
				</h3>
				<p>
						<strong>Windows 环境和您所测试的应用程序的状态会影响脚本的回放。如果所记录的环境和回放环境之间存在差异，回放就会出现问题。</strong>
				</p>
				<p>
						<strong>在记录或编辑测试脚本之前，确保您所测试的应用程序和所有其他软件（在测试环境中）都处于适当的初始状态。另外，在执行测试（回放测试脚本）之前，请保证所测试的应用程序和所有其他软件都处于记录/编辑该测试脚本时所处的初始状态。当您开始回放脚本时，记录脚本时处于打开、激活或显示状态的所有应用程序和窗口应该仍处于打开、激活或显示状态。此外，确保所有相关的网络设置、现用数据库和系统内存处于同记录脚本时相同的状态。</strong>
				</p>
				<p>
						<strong>回放测试脚本时，确保您设置了适当的回放选项，其中包括 Robot 应该如何处理意外活动窗口以及如何从脚本命令错误中恢复（请参见下一部分）。</strong>
				</p>
				<h3>
						<font size="3">2. 设置 GUI 脚本记录选项 <img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></font>
				</h3>
				<p>
						<strong>GUI 脚本记录选项指示 Robot 在记录测试脚本时，应如何处理某些对象、鼠标拖动、窗口设置、对象内容和 Robot 窗口。</strong>
				</p>
				<p>
						<strong>要设置 GUI 脚本记录选项，请执行以下步骤： </strong>
				</p>
				<ol>
						<li>
								<strong>执行以下操作之一来显示 GUI Record Options 对话框： </strong>
						</li>
				</ol>
				<blockquote>
						<ul>
								<li>
										<strong>开始记录之前，请单击 Tools &gt; GUI Record Options。 </strong>
								</li>
								<li>
										<strong>单击工具栏上的 Record Script 按钮，开始记录。在 Record 对话框中，单击 Options。 </strong>
								</li>
						</ul>
				</blockquote>
				<ol start="2">
						<li>
								<strong>设置每个选项卡上的选项。有关各选项卡的详细信息，请参见 Using Rational Robot 手册中的 Setting GUI Record Options 一章或参见 Robot 联机帮助。 </strong>
						</li>
				</ol>
				<blockquote>
						<p>
								<strong>General - 指定 Robot 如何确定/识别列表和菜单内容，以及不支持的鼠标拖动。另外，在此选项卡中，您还可以指定：用于脚本自动命名的前缀、是否让 Robot 来保存和恢复活动窗口的大小和位置、是否记录思考时间、是否记录按下回车键后的延迟。Robot Window</strong> - 指定记录测试脚本时 Robot 窗口的显示方式。该选项卡还使用户可以指定热键，用来隐藏/重新显示 Robot 窗口，以及在面向对象的记录模式和低层记录模式之间进行切换。<strong>Object Recognition Order</strong> - 用于在记录之前或记录过程中，改变个别对象类型的对象识别方法优先级。</p>
				</blockquote>
				<p>
						<strong>有关如何记录脚本的详细信息，请参见工具向导：使用 Rational Robot™<sup><sup></sup></sup> 创建测试脚本。</strong>
				</p>
				<h3>
						<font size="3">3. 设置 GUI 脚本回放选项 <img height="20" alt="返回页首" src="http://reference.sdlgame.com/RationalUnifiedProcess.zh_cn/images/top.gif" width="26" border="0" /></font>
				</h3>
				<p>
						<strong>GUI 脚本回放选项指示 Robot 如何回放 GUI 脚本。您既可以在回放之前，也可以在回放过程开始时设置这些选项。</strong>
				</p>
				<p>
						<strong>要设置 GUI 回放选项，请执行以下步骤： </strong>
				</p>
				<ol>
						<li>
								<strong>执行以下操作之一来显示 GUI Playback Options 对话框： </strong>
						</li>
				</ol>
				<blockquote>
						<ul>
								<li>
										<strong>开始回放之前，请单击 Tools &gt; GUI Playback Options。 </strong>
								</li>
								<li>
										<strong>单击工具栏上的 Playback Script 按钮，开始回放。在 Playback 对话框中，单击 Options。 </strong>
								</li>
						</ul>
				</blockquote>
				<ol start="2">
						<li>
								<strong>设置每个选项卡上的选项。有关各选项卡的详细信息，请参见 Using Rational Robot 手册中的 Setting GUI Playback Options 一章或参见 Robot 联机帮助。 </strong>
								<p>
										<strong>Playback</strong> - 指定命令和击键之间的延迟、是否使用记录的思考时间和键入延迟、是否跳过核实点、是否显示确认结果对话框，以及回放过程中 Robot 窗口中出现的内容。有关详细信息，请单击对话框中的 Help 按钮。<strong>Log</strong> - 指定日志中保存的结果、回放后是否显示日志、是否要在覆盖日志之前得到提示、以及是使用默认日志信息还是使用您提供的信息。<strong></strong></p>
								<p>Caption Matching - 指定 Robot 如何匹配记录过程中所记录的窗口标题和回放过程中发现的标题。有关详细信息，请单击对话框中的 Help 按钮。</p>
								<b>
										<p>Wait State</p>
								</b> - 指定回放时的默认重试和超时值。<b><p>Unexpected Active Windows</p></b> - 指定 Robot 应该如何响应意外的活动窗口。<b><p>Error Recovery</p></b> - 指定在脚本回放时，Robot 如何从脚本命令错误和核实点故障中恢复。<b><p>Trap</p></b> - 指定 Trap 实用程序应该记录的有关回放过程中常见保护故障的信息和恢复方法。</li>
						<li>单击 <b>OK</b>。 
<ol></ol><p>有关如何回放脚本的详细信息，请参见工具向导：使用 Rational Robot™<sup><sup></sup></sup> 执行测试。</p></li>
				</ol>
		</font>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 11:14 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Loadrunner中参数设置详细分析</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20900.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 03:00:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20900.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20900.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20900.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20900.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Loadrunner中参数设置详细分析						做负载或者压力测试时，很多人选择使用了Loadrunner测试工具。该工具的基本流程是先将用户的实际操作录制成脚本，然后产生数千个虚拟用户运行脚本（虚拟用户可以分布在局域网中不同的PC机上），最后生成相关的报告以及分析图。但是在录制脚本的过程中会遇到很多实际的问题，比如不同的用户有不同的使用数据，这就牵涉到参数的设置问题。本文就Loadrunn...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20900.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 11:00 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WAS服务器负载测试软件导读</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20833.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 20 Dec 2006 03:08:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20833.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20833.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20833.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20833.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20833.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WAS服务器负载测试软件导读你的Web服务器和应用到底能够支持多少并发用户访问？在出现大量并发请求的情况下，软件会出现问题吗？这些问题靠通常的测试手段是无法解答的。本文介绍了Microsoft为这个目的而提供的免费工具WAS及其用法。另外，本文介绍了一种Web应用的性能优化方法，并利用WAS测试了它的性能改善程度。　　编译如下：　　随着服务器端处理任务的日益复杂以及网站访问量的迅速增长，服务器性能...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20833.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-20 11:08 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Robot连接SQL的例子</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20811.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 09:31:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20811.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20811.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20811.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20811.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="558" border="0">
				<tbody>
						<tr>
								<td valign="center" align="right" colspan="2" height="32">
										<div class="style7" align="center">
												<span style="FONT-SIZE: 12pt">
														<b>使用Robot连接SQL的例子</b>
												</span>
										</div>
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" colspan="2" height="20">
										<div align="center"> </div>
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" colspan="2" height="10">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" width="2%" height="10">
										<div align="left">
										</div>
								</td>
								<td valign="top" align="right" width="98%" bgcolor="#ffffff">
										<div class="daxiao14" align="left">
												<p>
														<font size="2">    这是使用Robot连接TestDirector数据库的一个例子。 <br />    首先在控制面板的ODBC中新建一个DSN，选择SQL Server连接，名字是td_test（这个可以自己随便取），连接服务器选择你TD库保存的DB服务器名称。连接你想要查询的库名，我这里是gpt_gogs_db，登录名是td，密码tdtdtd（在TD中新建一个project时，数据库默认所有者为td，密码为tdtdtd），这里仅两不要使用权限过大的用户，因为在脚本中是要明文写入密码的。最后测试一下数据源。<br /></font>
														<br />
														<font size="2">开始编写脚本了：<br /></font>
														<font size="2">======================================================================<br /></font>
														<font size="2">Sub Main<br />    Dim Result As Integer<br />    Dim connect as long<br />    Dim outputstr,query as string<br />    Dim out(1 to 2,1 to 16) as variant       <br />    '这里定义一个二维数组，第一维表示数据库中查询结果中的列，第二维表示查询结果中的行，可以看到这里可以一次查询并存储两行两列<br />    dim retcode as variant<br />    dim i as integer<br />    'Initially Recorded: 2005-7-18  22:16:12<br />    'scrīpt Name: sqltest<br />    connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd",outputstr)<br />    '注意这里各个参数和等号及等号后面赋值是紧跟着的，没有空格，因为如果有空格的话连接的时候连空格也算上<br />    '这样的话连接的时候就会提示选择DSN或是输入用户名，密码<br />    <br />    query = "select bg_bug_id,bg_status from bug where bg_subject='113'"<br />    '最好在查询分析器中执行一下这条语句<br />    <br />    call SQLExecquery(connect,query)<br />    <br />    call SQLRetrieve(connect,out()) <br />    <br />    msgbox out(1,1)<br />    msgbox out(2,1)<br />    msgbox out(1,2)<br />    msgbox out(2,2)<br />    '显示保存的结果<br />'    next<br />    <br />    call sqlclose(connect)<br />    </font>
												</p>
												<p>
														<font size="2">End Sub<br /></font>
														<font size="2">=================================================================================</font>
														<br />
														<font size="2">这里尤其注意那个设置二维数组的地方，这个二维数组可以一次存储多个查询结果，其结构就类似SQL Server中查询分析器查询后的结果。</font>
												</p>
												<p>
														<font size="2">如果我生明了两个二维数组即可保存不同的查询结果。</font>
												</p>
												<p>
														<font size="2">其读取查询内容的函数也应该重点看看。</font>
												</p>
												<p>
														<font size="2">如果想要返回不同的查询语句结果，应该这样写：</font>
														<br />
														<font size="2">=================================================================================<br /></font>
														<font size="2">Sub Main</font>
												</p>
												<p>
														<font size="2">    Dim Result As Integer</font>
												</p>
												<p>
														<font size="2">    Dim connect as long</font>
												</p>
												<p>
														<font size="2">    Dim outputstr,query1,query2 as string</font>
												</p>
												<p>
														<font size="2">    Dim out1(1 to 2,1 to 1) as variant </font>
												</p>
												<p>
														<font size="2">    Dim out2(1 to 2,1 to 1) as variant      </font>
												</p>
												<p>
														<font size="2">    '这里定义一个二维数组，第一维表示数据库中查询结果中的列，第二维表示查询结果中的行，可以看到这里可以一次查询并存储两行两列</font>
												</p>
												<p>
														<font size="2">    dim retcode as variant</font>
												</p>
												<p>
														<font size="2">    dim i as integer</font>
												</p>
												<p>
														<font size="2">    'Initially Recorded: 2005-7-18  22:16:12</font>
												</p>
												<p>
														<font size="2">    'scrīpt Name: sqltest</font>
												</p>
												<p>
														<font size="2">    connect = SQLOpen("DSN=td_test;UID=td;PWD=tdtdtd")</font>
												</p>
												<p>
														<font size="2">    '注意这里各个参数和等号及等号后面赋值是紧跟着的，没有空格，因为如果有空格的话连接的时候连空格也算上</font>
												</p>
												<p>
														<font size="2">    '这样的话连接的时候就会提示选择DSN或是输入用户名，密码</font>
												</p>
												<p>
														<font size="2">    query1 = "select bg_bug_id,bg_status from bug where bg_subject='113'"</font>
												</p>
												<p>
														<font size="2">    '最好在查询分析器中执行一下这条语句</font>
												</p>
												<p>
														<font size="2">query2 = "select bg_bug_id,bg_severity from bug where bg_subject='113'"</font>
												</p>
												<p>
														<font size="2">'不同的查询语句</font>
												</p>
												<p>
														<font size="2">    call SQLExecquery(connect,query1)</font>
														<font size="2">   </font>
												</p>
												<p>
														<font size="2">call SQLRetrieve(connect,out1())</font>
												</p>
												<p>
														<font size="2">'执行完查询语句后赋值给一个二维数组，切记！</font>
												</p>
												<p>
														<font size="2">    call SQLExecquery(connect,query2)</font>
												</p>
												<p>
														<font size="2">    call sqlretrieve(connect,out2())</font>
														<font size="2"> </font>
												</p>
												<p>
														<font size="2">    msgbox out1(1,1)</font>
												</p>
												<p>
														<font size="2">    msgbox out1(2,1)</font>
												</p>
												<p>
														<font size="2">    msgbox out2(1,1)</font>
												</p>
												<p>
														<font size="2">    msgbox out2(2,1)</font>
												</p>
												<p>
														<font size="2">    '显示保存的结果</font>
												</p>
												<p>
														<font size="2">'    next</font>
												</p>
												<p>
														<font size="2">    call sqlclose(connect)</font>
												</p>
												<p>
														<font size="2">End Sub</font>
												</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 17:31 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Robot进行数据库的并发测试</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20777.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 06:34:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20777.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20777.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20777.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20777.html</trackback:ping><description><![CDATA[
		<div class="style7" align="center">
				<span style="FONT-SIZE: 12pt">
						<b>Robot进行数据库的并发测试<br /><div class="daxiao14" align="left"><p><font size="2">第一步：创建演示程序：打开SQL SERVER查询分析器，在SQL SERVER测试数据库中执行下列脚本（脚本执行操作：创建表testtable，并插入一条记录；创建存储过程test）：</font></p><p><font size="2">if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Test]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)</font></p><p><font size="2">drop procedure [dbo].[Test]</font></p><p><font size="2">GO</font></p><p><font size="2">if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[testtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)</font></p><p><font size="2">drop table [dbo].[testtable]</font></p><p><font size="2">GO</font></p><p><font size="2">CREATE TABLE [dbo].[testtable] (</font></p><p><font size="2">       [testid] [int] NULL ,</font></p><p><font size="2">       [counts] [int] NULL </font></p><p><font size="2">) ON [PRIMARY]</font></p><p><font size="2">GO</font><font size="2"> </font></p><p><font size="2">insert into testtable (testid,counts) values (1,0)</font></p><p><font size="2">GO</font></p><p><font size="2">SET QUOTED_IDENTIFIER ON </font></p><p><font size="2">GO</font></p><p><font size="2">SET ANSI_NULLS ON </font></p><p><font size="2">GO</font><font size="2"> </font></p><p><font size="2">CREATE Procedure dbo.Test</font></p><p><font size="2">as</font></p><p><font size="2">  declare @count int</font></p><p><font size="2">  begin tran TEST    </font></p><p><font size="2">    select @count=counts  from testtable where testid=1    </font></p><p><font size="2">    update testtable set </font><a href="mailto:counts=@count+1"><font color="#000000" size="2">counts=@count+1</font></a><font size="2"> </font><font size="2">    </font></p><p><font size="2">  if (@@error &gt;0) begin</font></p><p><font size="2">       rollback tran TEST</font></p><p><font size="2">  end else begin</font></p><p><font size="2">       commit tran TEST</font></p><p><font size="2">  end</font></p><p><font size="2">GO</font></p><p><font size="2">SET QUOTED_IDENTIFIER OFF </font></p><p><font size="2">GO</font></p><p><font size="2">SET ANSI_NULLS ON </font></p><p><font size="2">GO</font></p><p><font size="2">第二步：创建测试脚本：在Robot中新建VU脚本，输入以下内容：</font></p><p><font size="2">#include &lt;VU.h&gt;</font></p><p><font size="2">{</font></p><p><font size="2">push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */</font></p><p><font size="2">push Think_def = "LR";</font></p><p><font size="2">Min_tmout = 120000;       /* Set minimum Timeout_val to 2 minutes          */</font></p><p><font size="2">push Timeout_val = Min_tmout;</font></p><p><font size="2">ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver");</font></p><p><font size="2">set Server_connection = ser;</font></p><p><font size="2">push Think_avg = 0;</font></p><p><font size="2">sync_point "logon";</font></p><p><font size="2">sqlexec ["sql_1000"] "testdb..test";</font></p><p><font size="2">sqldisconnect (ser);</font></p><p><font size="2">}</font></p><p><font size="2">说明：</font></p><p><font size="2">ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver") </font></p><p><font size="2">  sa为数据库用户名，888为sa密码，192.168.0.99数据库IP地址</font></p><p><font size="2">  以上三项按实际的测试数据库设置更改，其他两项不用修改</font></p><p><font size="2">sqlexec ["sql_1000"] "testdb..test"</font></p><p><font size="2">  testdb为新建存储过程test所在的数据库，按实际的数据库修改</font></p><p><font size="2">第三步：执行测试：运行上一步创建的脚本（运行时自动创建Suite），在Run Suite窗口中的“Number of users”上输入20。运行完脚本，打开数据库查看counts的数值。把counts值改为零多次运行脚本，观察每次运行后counts的结果。</font></p><p><font size="2">测试说明</font></p><p><font size="2">（1）、测试示例程序的目的是，存储过程test每执行一次，表testtable中的counts字段增加一；</font></p><p><font size="2">（2）、第三步的测试可以发现每次执行后counts结果并不相同，而且不等于20，这说明这个程序是在并发时是问题的。</font></p><p><font size="2">（3）、将存储过程中的select @count=counts  from testtable where testid=1修改为select @count=counts  from test </font></p><p><font size="2">此文除此51testing博客，转载请注明出处<br />原始链接：</font><a href="http://blog.51testing.com/html/26/84226_itemid_1180.html"><font color="#000000" size="2">http://blog.51testing.com/html/26/84226_itemid_1180.html</font></a></p></div></b>
				</span>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 14:34 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Robot压力测试实例</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20767.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 03:02:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20767.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20767.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20767.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20767.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="558" border="0">
				<tbody>
						<tr>
								<td valign="center" align="right" colspan="2" height="32">
										<div class="style7" align="center">
												<span style="FONT-SIZE: 12pt">
														<b>Robot压力测试实例</b>
												</span>
										</div>
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" colspan="2" height="20">
										<div align="center"> </div>
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" colspan="2" height="10">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" width="2%" height="10">
										<div align="left">
										</div>
								</td>
								<td valign="top" align="right" width="98%" bgcolor="#ffffff">
										<div class="daxiao14" align="left">
												<p>看到很多人在要这个,找到一篇,转过来给大家看看</p>
												<p>文章的出处没有看到作者的名字,非常抱歉</p>
												<p>脚本与被测程序有关,直接运行这个脚本是不能回放成功的(因为你没有脚本运行的环境)</p>
												<p>文章如下</p>
												<p> </p>
												<p>第一步：设置Robot</p>
												<p>    Robot――Tools――Session Record options，Method选择API Recorder，Generater Filtering中Filtering选择Auto filtering，Select protocols只选择Socket；</p>
												<p>第二步：录制VU脚本</p>
												<p>    在启动的Start Application窗口中，Executable输入被测程序的客户端程序的路径和文件名，Working Directory中输入被测程序的工作路径，Program Arguments如果没有就空着。被测程序程序启动后，执行需要的操作然后关闭程序，停止录制脚本，Robot会自动生成脚本。</p>
												<p>脚本示例：</p>
												<p>#include &lt;VU.h&gt;</p>
												<p>{</p>
												<p> </p>
												<p>push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */</p>
												<p>push Think_def = "LR";</p>
												<p>Min_tmout = 120000;       /* Set minimum Timeout_val to 2 minutes          */</p>
												<p>push Timeout_val = Min_tmout;</p>
												<p> </p>
												<p>SERVER = sock_connect("123001", "SERVER:2000");</p>
												<p> </p>
												<p>{ INFO SERVER "SERVER"="192.168.1.12"; } /*1*/</p>
												<p> </p>
												<p>set Server_connection = SERVER;</p>
												<p> </p>
												<p>push Think_avg = 0;</p>
												<p> </p>
												<p>sock_send</p>
												<p>    "`45645651300000000001cc00f701000002000000c3330100000000000000000001000000"    "00000000000sdgsdfgfhjghjjdfhjhkjgfhjgfjjk000000000000hh0000000000000000000000"    "000000000000000000000000000000000000000000000100`g2222`0012313546545465431"    "`45641313000000000000000000000000000000000000`";</p>
												<p> </p>
												<p>sock_nrecv ["123002"] 200;</p>
												<p> </p>
												<p>sock_send    "`1321321656548745215599154654456546122132112313210000000000000001000000"    "00000000021321215665654548879654654655562000000000000000000000000000000"    "00000000000000000000000000000000000000000000012131132321213212111323213"    "`123110000000`Z2";</p>
												<p> </p>
												<p>sock_recv ["123003"] "$"; /* 50 bytes */</p>
												<p> </p>
												<p>sock_disconnect(SERVER);</p>
												<p> </p>
												<p>pop [Think_def, Think_avg, Timeout_val, Timeout_scale];</p>
												<p> </p>
												<p>}</p>
												<p> </p>
												<p>这个脚本如果不能正确回放，可以将将sock_recv ["123003"] "$"; /* 50 bytes */改为</p>
												<p>sock_nrecv ["123003"] 50; /* 50 bytes */</p>
												<p> </p>
												<p>第三步：设置Suite，回放脚本</p>
												<p>回放录制的脚本，Testmanager会自动创建Suite，如下所示：</p>
												<p> </p>
												<p>
														<br />    默认脚本运行一次，为了长时间运行，修改增加脚本的运行次数（最大32767），在Run properties中Iterations中设置。然后运行Suite，在Run Suite窗口中的“Number of users”上输入虚拟用户数，如200。</p>
												<p>    第四步：观察被测服务程序的运行情况，查看有无异常。压力测试需要连续、高负载运行不少于72小时，运行完成服务程序需要无资源泄漏、无报错、无异常退出以及其他不正常情况。</p>
												<p>数据库并发测试</p>
												<p>数据库并发测试的必要性：</p>
												<p>1、  与数据库连接的服务程序采用多线程同时开启多个数据库连接；</p>
												<p>2、  与数据库连接的服务程序单线程，但是同时开启多套服务程序；</p>
												<p>    以上两种情况均会产生对数据库的并发访问操作。数据库并发访问会导致数据库数据错误、数据库死锁等故障，需要在测试阶段进行充分测试。</p>
												<p> </p>
												<p>数据库并发测试测试方法：</p>
												<p>1、  利用测试工具模拟多个最终用户进行并发测试；</p>
												<p>    这种测试方法的缺点：最终用户往往并不是直接连接到数据库上，而是要经过一个和多个中间服务程序，所以并不能保证访问数据库时还是并发。其次，这种测试方法需要等到客户端程序、服务端程序全部完成才能进行；</p>
												<p>2、  利用测试工具编写脚本，直接连接数据库进行并发测试；</p>
												<p>    这种方法可以有效的保证并发操作，而且在数据库访问程序完成即可测试，可以大大缩短测试时间，而且测试效果更好。</p>
												<p> </p>
												<p>下面通过一个演示程序，演示使用Robot使用第二种测试方法进行数据库的并发测试：</p>
												<p>第一步：创建演示程序：打开SQL SERVER查询分析器，在SQL SERVER测试数据库中执行下列脚本（脚本执行操作：创建表testtable，并插入一条记录；创建存储过程test）：</p>
												<p>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Test]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)</p>
												<p>drop procedure [dbo].[Test]</p>
												<p>GO</p>
												<p> </p>
												<p>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[testtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)</p>
												<p>drop table [dbo].[testtable]</p>
												<p>GO</p>
												<p> </p>
												<p>CREATE TABLE [dbo].[testtable] (</p>
												<p>       [testid] [int] NULL ,</p>
												<p>       [counts] [int] NULL </p>
												<p>) ON [PRIMARY]</p>
												<p>GO</p>
												<p> </p>
												<p>insert into testtable (testid,counts) values (1,0)</p>
												<p>GO</p>
												<p> </p>
												<p>SET QUOTED_IDENTIFIER ON </p>
												<p>GO</p>
												<p>SET ANSI_NULLS ON </p>
												<p>GO</p>
												<p> </p>
												<p>CREATE Procedure dbo.Test</p>
												<p>as</p>
												<p>  declare @count int</p>
												<p>  begin tran TEST    </p>
												<p>    select @count=counts  from testtable where testid=1    </p>
												<p>    update testtable set <a href="mailto:counts=@count+1"><font color="#000000" size="2">counts=@count+1</font></a></p>
												<p>    </p>
												<p>  if (@@error &gt;0) begin</p>
												<p>       rollback tran TEST</p>
												<p>  end else begin</p>
												<p>       commit tran TEST</p>
												<p>  end</p>
												<p>GO</p>
												<p>SET QUOTED_IDENTIFIER OFF </p>
												<p>GO</p>
												<p>SET ANSI_NULLS ON </p>
												<p>GO</p>
												<p> </p>
												<p>第二步：创建测试脚本：在Robot中新建VU脚本，输入以下内容：</p>
												<p>#include &lt;VU.h&gt;</p>
												<p>{</p>
												<p>push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */</p>
												<p>push Think_def = "LR";</p>
												<p>Min_tmout = 120000;       /* Set minimum Timeout_val to 2 minutes          */</p>
												<p>push Timeout_val = Min_tmout;</p>
												<p> </p>
												<p>ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver");</p>
												<p>set Server_connection = ser;</p>
												<p>push Think_avg = 0;</p>
												<p>sync_point "logon";</p>
												<p>sqlexec ["sql_1000"] "testdb..test";</p>
												<p>sqldisconnect (ser);</p>
												<p>}</p>
												<p>说明：</p>
												<p>ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver") </p>
												<p>  sa为数据库用户名，888为sa密码，192.168.0.99数据库IP地址</p>
												<p>  以上三项按实际的测试数据库设置更改，其他两项不用修改</p>
												<p>sqlexec ["sql_1000"] "testdb..test"</p>
												<p>  testdb为新建存储过程test所在的数据库，按实际的数据库修改</p>
												<p> </p>
												<p>第三步：执行测试：运行上一步创建的脚本（运行时自动创建Suite），在Run Suite窗口中的“Number of users”上输入20。运行完脚本，打开数据库查看counts的数值。把counts值改为零多次运行脚本，观察每次运行后counts的结果。</p>
												<p> </p>
												<p>测试说明</p>
												<p>（1）、测试示例程序的目的是，存储过程test每执行一次，表testtable中的counts字段增加一；</p>
												<p>（2）、第三步的测试可以发现每次执行后counts结果并不相同，而且不等于20，这说明这个程序是在并发时是问题的。</p>
												<p>（3）、将存储过程中的select @count=counts  from testtable where testid=1修改为select @count=counts  from testtable with (UPDLOCK) where testid=1。再次进行并发测试，每次的结果应该都是20。</p>
												<p> </p>
												<p>    以上演示程序，仅仅演示了测试的方法。在实际的数据库并发测试中，首先要确定存在哪些并发情况、哪些数据受到并发影响，然后编写脚本，设置suite进行并发测试。</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 11:02 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试指标介绍</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20719.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 01:33:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20719.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20719.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20719.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20719.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="778" align="center" border="0">
				<tbody>
						<tr>
								<td valign="top">
										<table cellspacing="0" cellpadding="0" width="558" border="0">
												<tbody>
														<tr>
																<td valign="top" align="right" width="98%" bgcolor="#ffffff">
																		<div class="daxiao14" align="left">
																				<p>TPC-C</p>
																				<p>作为一家非盈利性机构，事务处理性能委员会（TPC）负责定义诸如TPC-C、TPC-H和TPC-W基准测试之类的事务处理与数据库性能基准测试，并依据这些基准测试项目发布客观性能数据。TPC基准测试采用极为严格的运行环境，并且必须在独立审计机构监督下进行。委员会成员包括大多数主要数据库产品厂商以及服务器硬件系统供应商。 </p>
																				<p>相关企业参与TPC基准测试以期在规定运行环境中获得客观性能验证，并通过应用测试过程中所使用的技术开发出更加强健且更具伸缩性的软件产品及硬件设备。 </p>
																				<p>TPC-C是一种旨在衡量联机事务处理（OLTP）系统性能与可伸缩性的行业标准基准测试项目。这种基准测试项目将对包括查询、更新及队列式小批量事务在内的广泛数据库功能进行测试。许多IT专业人员将TPC-C视为衡量“真实”OLTP系统性能的有效指示器。 </p>
																				<p>TPC-C基准测试针对一种模拟订单录入与销售环境测量每分钟商业事务（tpmC）吞吐量。特别值得一提的是，它将专门测量系统在同时执行其它四种事务类型（如支付、订单状态更新、交付及证券级变更）时每分钟所生成的新增订单事务数量。独立审计机构将负责对基准测试结果进行公证，同时，TPC将出据一份全面彻底的测试报告。这份测试报告可以从TPC Web站点(http://www.tpc.org)上获得。</p>
																				<p>tpmC定义: TPC-C的吞吐量，按有效TPC-C配置期间每分钟处理的平均交易次数测量，至少要运行12分钟。</p>
																				<p>1．TPC-C规范概要 </p>
																				<p>TPC-C是专门针对联机交易处理系统（OLTP系统）的，一般情况下我们也把这类系统称为业务处理系统。 </p>
																				<p>TPC-C测试规范中模拟了一个比较复杂并具有代表意义的OLTP应用环境:假设有一个大型商品批发商，它拥有若干个分布在不同区域的商品库；每个仓库负责为10个销售点供货；每个销售点为3000个客户提供服务；每个客户平均一个订单有10项产品;所有订单中约1%的产品在其直接所属的仓库中没有存货，需要由其他区域的仓库来供货。 </p>
																				<p>该系统需要处理的交易为以下几种： </p>
																				<ul>
																						<li>
																								<p>New-Order：客户输入一笔新的订货交易； </p>
																						</li>
																						<li>
																								<p>Payment:更新客户账户余额以反映其支付状况; </p>
																						</li>
																						<li>
																								<p>Delivery:发货(模拟批处理交易); </p>
																						</li>
																						<li>
																								<p>Order-Status:查询客户最近交易的状态； </p>
																						</li>
																						<li>
																								<p>Stock-Level:查询仓库库存状况，以便能够及时补货。 </p>
																						</li>
																				</ul>
																				<p>对于前四种类型的交易，要求响应时间在5秒以内；对于库存状况查询交易，要求响应时间在20秒以内。 </p>
																				<p>逻辑结构图：</p>
																				<p>
																						<img height="239" alt="逻辑结构图：" src="http://www.51testing.com/tech/lib/20050128_1/image002.gif" width="426" />
																				</p>
																				<p>流程图：</p>
																				<p>
																						<img height="205" alt="流程图：" src="http://www.51testing.com/tech/lib/20050128_1/image004.gif" width="371" />
																				</p>
																				<p>2．评测指标 </p>
																				<p>TPC-C测试规范经过两年的研制，于1992年7月发布。几乎所有在OLTP市场提供软硬件平台的厂商都发布了相应的TPC-C测试结果，随着计算机技术的不断发展，这些测试结果也在不断刷新。 </p>
																				<p>TPC-C的测试结果主要有两个指标： </p>
																				<p>● 流量指标(Throughput，简称tpmC) </p>
																				<p>按照TPC的定义，流量指标描述了系统在执行Payment、Order-status、Delivery、Stock-Level这四种交易的同时，每分钟可以处理多少个New-Order交易。所有交易的响应时间必须满足TPC-C测试规范的要求。 </p>
																				<p>流量指标值越大越好！ </p>
																				<p>● 性价比(Price/Performance，简称Price/tpmC) </p>
																				<p>即测试系统价格（指在美国的报价）与流量指标的比值。 </p>
																				<p>性价比越小越好！ <br /></p>
																				<p>3．结果发布 </p>
																				<p>各厂商的TPC-C测试结果都按TPC组织规定的两种形式发布：测试结果概要(Executive Summary)和详细测试报告(Full Disclosure Report)。测试结果概要中描述了主要的测试指标、测试环境示意图以及完整的系统配置与报价，而详细测试报告中除了包含上述内容外，还详细说明了整个测试环境的设置与测试过程。 </p>
																				<p>P690 tpmC测试值：76,389,839.00</p>
																				<p>$/tpmC：831.00</p>
																				<p>美国美金报价：6,349,223.0</p>
																				<p>CPU数：32</p>
																				<p>数据库：IBM DB2 UDB 8.1</p>
																				<p>操作系统：AIX 5L V5.2</p>
																				<p>中间件：TUXEDO 8.0</p>
																				<p>测试日期：2003.6.30</p>
																				<p>P690 TPC-C测试的配置：</p>
																				<p>1．  后台：1 x eServer pSeries 690 with 32 x 1.7GHz POWER4+ processors with 128MB L3 cache per MCM (total of four MCMs), 512GB memory</p>
																				<p>2．  前端：30 x eServer pSeries 630 Model 6E4 each with 4 x 1.0GHz POWER4 CPUs with 32MB L3 cache, 16GB memory</p>
																				<p>SPECweb:</p>
																				<p>SPECweb96: 在SPECweb96基准测试程序上实现的每秒钟超文本传输协议（HTTP）操作最多次数，响应时间无明显退化。</p>
																				<p>SPECweb99: 接入数，网络服务器可用预先确定的工作量支持的同时接入数。SPECweb99检测设备模拟客户通过慢Internet联接，向网络服务器发送HTTP工作量请求。</p>
																				<p>SPECweb99 测试Web服务器运行状况</p>
																				<p>SPECweb99 是由标准性能评估组织（SPEC）开发的Web服务器基准测试。它测量满足特定吞吐量和客户请求响应速率要求的WEB服务器的最大并发连接数量。并发连接的合计波特率在320 Kbps到400Kbps范围内，则满足相应规范。</p>
																				<p>SPECweb99 在一台称为主客户端的机器上运行，这台机器上包含有允许用户加载特定负载请求的配置文件。主客户端也要处理在客户端和服务器或测试中的系统（SUT）之间的传输协调问题。客户端通过许多子进程／线程生成独立HTTP请求流，仿真足够的负载发送给SUT。图二表示客户端／服务器的层次关系。</p>
																				<p>
																						<img height="383" alt="图2. 典型 SPECweb99 实验设置 " src="http://www.51testing.com/tech/lib/20050128_1/image006.gif" width="443" />
																				</p>
																				<p>图：典型的SPECweb99实验环境</p>
																				<p>在这个测试中，客户端向测试中的服务器发送请求数据。测试规范要求客户端和服务器之间的连接不能使用片段大小大于1460比特的TCP协议。因此，每一个客户端读取1460比特或更少数据块的响应。</p>
																				<p>测试中使用两种类型的负载量：</p>
																				<p>静态负载. 静态负载具有四种类型的文件。最小的文件的增幅为0.1KB，第二种文件类型的增幅为1KB，最后两种类型的文件的增幅为10KB和100KB。每一个目录包含每种类型9个文件共36个文件。</p>
																				<p>目标请求的文件类型在各类型中分散使用。在每一类中的9个文件中又进行二次分布。最终目标文件混合为：</p>
																				<p>35％的请求文件小于1 KB</p>
																				<p>50％的请求文件小于10 KB</p>
																				<p>14％的请求文件小于100 KB，但是大于或等于10 KB</p>
																				<p>1％的请求文件小于1000 KB，但是大于或等于100 KB</p>
																				<p>动态负载.动态负载是基于广告和用户注册。共有四种在SPECweb99中使用的请求内容类型，分别是标准动态取操作、动态随机取操作、动态发送操作和客户图形接口动态取操作。标准动态取操作和客户图形接口动态取操作表现web服务器的简单广告轮转特性。带有广告轮转的动态取操作追踪用户和用户选择，所以广告可以由不同的方式来定制。最终，动态发布实施一个用户注册在相应的网站上。</p>
																				<p>P690 SPECweb99测试值：21,000</p>
																				<p>Web服务器：Zeus 4.0</p>
																				<p>操作系统：AIX 5L V5.1 (64-bit)</p>
																				<p>CPU数：16</p>
																				<p>测试日期：2001-10-1</p>
																				<p>测试配置：16 x 1.3GHz POWER-4 Processors w/1440KB unified on chip L2 cache, 192GB memory, 32 x 32 IBM Gigabit Ethernet-SX PCI controllers, 32 x Gigabit Ethernet network (1 Gigabit/sec  ), 96 x Clients (4 x 375MHz POWER3-II, RS/6000 44P-270), Requested Connections = 21000, Max Fileset Size = 67319.6MB</p>
																				<p>P650 SPECweb99测试值：12,400</p>
																				<p>Web服务器：Zeus 4.1r3</p>
																				<p>操作系统：AIX 5L V5.2 (64-bit)</p>
																				<p>CPU数：8</p>
																				<p>测试日期：2002-10-1</p>
																				<p>测试配置：8 x 1.45GHz POWER4+ processors w/1.5MB(I+D) unified on chip L2 cache, 32MB unified off chip/SCM L3 cache, 64GB memory, 8 x Gigabit Ethernet-SX PCI-X controllers, 8 x Gigabit Ethernet network (1 Gigabit/sec ), 48 x Clients (6 x 668MHz RS64-IV, pSeries 620 Model 6F1), Requested Connections = 12400, Max Fileset Size = 39801.28MB</p>
																				<p>p630 SPECweb99测试值：6,895</p>
																				<p>Web服务器：Zeus 4.2r1</p>
																				<p>操作系统：AIX 5L V5.2(64-bit)</p>
																				<p>CPU数：4</p>
																				<p>测试日期：2003-2-1</p>
																				<p>测试配置：4 x 1450MHz POWER4+ Processors w/1536KB(I+D) unified on chip L2 cache, 8MB unified (off chip)/SCM L3 cache, 32GB memory, 4 x Gigabit Ethernet-SX PCI-X controllers, 4 x Gigabit Ethernet networks (1 Gigabit/sec ), 24 x Clients (4 x 375MHz POWER3-II, pSeries 640 Model B80), Requested Connections = 6900, Max Fileset Size = 22199.12MB</p>
																				<p>NotesBench:</p>
																				<p>NotesBench是测试各种不同Lotus Notes方面的驱动程序。目的是执行自定义工作量教本中的命令，模拟客户机的操作。NotesBench测试“仅测试邮件”和“测试邮件和数据库”。所有已经公布的IBM结果均为“仅测试邮件工作量”。</p>
																				<p>p680 NotesBench测试值：150,197</p>
																				<p>用户数：108,000</p>
																				<p>平均反应时间：0.584秒</p>
																				<p>Domino服务器版本：5.06a</p>
																				<p>操作系统：AIX 4.3.3</p>
																				<p>CPU数：4</p>
																				<p>测试日期：2001.11.20</p>
																				<p>测试配置：IBM eServer pSeries 680 (24*RS64 IV/600MHz; 96GB RAM, 30 Partitions) </p>
																		</div>
																</td>
														</tr>
														<tr>
																<td valign="top" align="right" colspan="2" height="12">
																		<div align="right"> </div>
																</td>
														</tr>
														<tr bordercolor="#f0f7ff" bgcolor="#f0f7ff">
																<td valign="top" align="right" colspan="2" height="3">
																		<div align="left">
																		</div>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
								<td valign="top" height="296">
										<table style="BORDER-RIGHT: #ffffff 1px solid; BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid; BORDER-BOTTOM: #ffffff 1px solid" cellspacing="0" cellpadding="0" width="100%" border="0">
												<tbody>
														<tr>
																<td valign="top" bgcolor="#ffffff">
																		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
																				<form name="searchform" action="/php/search.php">
																						<tbody>
																								<tr>
																										<td width="89%">
																												<img height="12" src="http://www.51testing.com/php/modpage/img/image_01.gif" width="12" /> 站内搜索</td>
																										<td width="11%" height="9">
																												<div align="center">
																												</div>
																										</td>
																								</tr>
																								<tr>
																										<td>
																												<input id="keyword" size="22" name="keyword" />
																										</td>
																										<td>
																												<a href="javascript:document.searchform.submit();">
																														<img height="19" src="http://www.51testing.com/php/modpage/img/GO.gif" width="25" border="0" />
																												</a>
																										</td>
																								</tr>
																						</tbody>
																				</form>
																		</table>
																</td>
														</tr>
												</tbody>
										</table>
										<table cellspacing="0" cellpadding="0" width="80%" align="center" border="0">
												<tbody>
														<tr>
																<td height="9">
																</td>
														</tr>
												</tbody>
										</table>
										<table style="BORDER-RIGHT: #bea3e0 1px solid; BORDER-TOP: #bea3e0 1px solid; BORDER-LEFT: #bea3e0 1px solid; BORDER-BOTTOM: #bea3e0 1px solid" cellspacing="0" cellpadding="2" width="100%" align="center" bgcolor="#bea3e0" border="1">
												<tbody>
														<tr>
																<td style="BORDER-RIGHT: #bea3e0 1px solid; BORDER-TOP: #bea3e0 1px solid; BORDER-LEFT: #bea3e0 1px solid; BORDER-BOTTOM: #bea3e0 1px solid" bgcolor="#bea3e0">
																		<div class="style38" align="center">相关文章</div>
																</td>
														</tr>
														<tr>
																<td class="space" style="BORDER-RIGHT: #f0f7ff 1px solid; BORDER-TOP: #f0f7ff 1px solid; BORDER-LEFT: #f0f7ff 1px solid; BORDER-BOTTOM: #f0f7ff 1px solid" valign="top" align="left" bgcolor="#f0f7ff" height="45">
																</td>
														</tr>
												</tbody>
										</table>
										<table cellspacing="0" cellpadding="0" width="80%" align="center" border="0">
												<tbody>
														<tr>
																<td height="9">
																</td>
														</tr>
												</tbody>
										</table>
										<table style="BORDER-RIGHT: #bea3e0 1px solid; BORDER-TOP: #bea3e0 1px solid; BORDER-LEFT: #bea3e0 1px solid; BORDER-BOTTOM: #bea3e0 1px solid" cellspacing="0" cellpadding="2" width="100%" align="center" bgcolor="#bea3e0" border="1">
												<tbody>
														<tr>
																<td style="BORDER-RIGHT: #bea3e0 1px solid; BORDER-TOP: #bea3e0 1px solid; BORDER-LEFT: #bea3e0 1px solid; BORDER-BOTTOM: #bea3e0 1px solid" bgcolor="#bea3e0">
																		<div class="style38" align="center">热门文章</div>
																</td>
														</tr>
														<tr>
																<td class="space" style="BORDER-RIGHT: #f0f7ff 1px solid; BORDER-TOP: #f0f7ff 1px solid; BORDER-LEFT: #f0f7ff 1px solid; BORDER-BOTTOM: #f0f7ff 1px solid" valign="top" align="left" bgcolor="#f0f7ff" height="45">
																		<a href="http://www.51testing.com/html/8/653.html">
																				<font color="#000000">◎性能测试方法</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/645.html">
																				<font color="#000000">◎压力测试计划实例</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/967.html">
																				<font color="#000000">◎系统性能测试方案</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/664.html">
																				<font color="#000000">◎带宽大小我心知 专业带宽评测工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/640.html">
																				<font color="#000000">◎性能测试及性能调整概述</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1039.html">
																				<font color="#000000">◎性能测试基础知识－性能的规划与实现</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/713.html">
																				<font color="#000000">◎一个大型集中项目的性能测试实例</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/647.html">
																				<font color="#000000">◎关注性能：压力负载</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1387.html">
																				<font color="#000000">◎性能测试的准备</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/42.html">
																				<font color="#000000">◎性能：软件测试的重中之重</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1189.html">
																				<font color="#000000">◎怎样提高性能测试的效率和质量</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/305.html">
																				<font color="#000000">◎性能测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1410.html">
																				<font color="#000000">◎Oracle SQL 性能优化技巧</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/957.html">
																				<font color="#000000">◎性能计数器解释</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1044.html">
																				<font color="#000000">◎AIX 性能调优－内存、CPU篇</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1070.html">
																				<font color="#000000">◎性能测试基础知识－处理器调度程序性能</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1094.html">
																				<font color="#000000">◎性能测试之协议分析</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1013.html">
																				<font color="#000000">◎WebLogic Server 性能调优（一）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1071.html">
																				<font color="#000000">◎性能和容量规划（1）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1219.html">
																				<font color="#000000">◎Java性能</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1399.html">
																				<font color="#000000">◎性能测试的容量评估</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/43.html">
																				<font color="#000000">◎有效的用例编写规则</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/259.html">
																				<font color="#000000">◎调整压力测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1047.html">
																				<font color="#000000">◎实际项目中可使用的性能需求</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1015.html">
																				<font color="#000000">◎WebLogic Server 性能调优（三）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1292.html">
																				<font color="#000000">◎测试您的DB2数据库:用JMeter测量性能</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1116.html">
																				<font color="#000000">◎关注10大E-mail邮箱性能</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1202.html">
																				<font color="#000000">◎WTC性能测试报告</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1388.html">
																				<font color="#000000">◎跟踪数据库性能变化</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/753.html">
																				<font color="#000000">◎对你的ASP程序作负载测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1523.html">
																				<font color="#000000">◎什么是可伸缩性测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1502.html">
																				<font color="#000000">◎如何调整压力测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/260.html">
																				<font color="#000000">◎对 Linux 内核进行压力测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1014.html">
																				<font color="#000000">◎WebLogic Server 性能调优（二）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/252.html">
																				<font color="#000000">◎路由器性能指标详解</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1209.html">
																				<font color="#000000">◎刨根问底 微软Vista操作系统详尽测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/336.html">
																				<font color="#000000">◎Ad Hoc网络性能测试关键技术研究</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/465.html">
																				<font color="#000000">◎Java性能</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/306.html">
																				<font color="#000000">◎NET Framework部署的性能调整</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1072.html">
																				<font color="#000000">◎性能和容量规划（2）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1010.html">
																				<font color="#000000">◎文件系统性能调优</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1073.html">
																				<font color="#000000">◎性能和容量规划（3）</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1556.html">
																				<font color="#000000">◎LoadRunner的Apache的监控</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1115.html">
																				<font color="#000000">◎性能比较：事务处理控件</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/655.html">
																				<font color="#000000">◎Redhat AS3下Oracle9204异步I/O的实现</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/685.html">
																				<font color="#000000">◎迈向测试自动化成功的七个步骤</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/911.html">
																				<font color="#000000">◎cdma2000 1xEVDO网络性能测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/1409.html">
																				<font color="#000000">◎优化ERP应用</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/307.html">
																				<font color="#000000">◎对 Windows DNA 应用程序中的数据访问组件进行压力测试</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/8/681.html">
																				<font color="#000000">◎选择测试自动化框架</font>
																		</a>
																		<br />
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 09:33 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试之场景设计思想</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20716.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 01:29:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20716.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20716.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20716.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20716.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20716.html</trackback:ping><description><![CDATA[
		<font size="2">前段时间有幸收到珠海X公司性能题目，呵呵，以下是对公司产品性能测试的总结。个人认为有关性能测试场景问题，其实更佳着重于对性能测试目的考究。</font>
		<p class="main">
				<font size="2">　　验证测试是用于验证在特定的场景、时间、压力、环境和操作方式下系统能够正常的运行，服务器、应用系统和网络环境等软硬件设施还能否良好的支撑这些情况下用户的使用。验证性测试主要针对有明确的压力目标和预期结果，验证系统在这种压力下的各方面反映能够达到预期结果。</font>
		</p>
		<p class="main">
				<font size="2">　　主要分以下几种：</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>压力测试：</strong>已知系统高峰期使用人数，验证各事务在最大并发数（通过高峰期人数换算）下事务响应时间能够达到客户要求。系统各性能指标在这种压力下是否还在正常数值之内。系统是否会因这样的压力导致不良反应（如：宕机、应用异常中止等）。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>Ramp Up 增量设计：</strong>如并发用户为75人，系统注册用户为1500人，以5％－7％作为并发用户参考值。一般以每15s加载5人的方式进行增压设计，该数值主要参考测试加压机性能，建议Run几次。以事务通过率与错误率衡量实际加载方式。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>Ramp Up增量设计目标：</strong> 寻找已增量方式加压系统性能瓶颈位置，抓住出现的性能拐点时机，一般常用参考Hits点击率与吞吐量、CPU、内存使用情况综合判断。模拟高峰期使用人数，如早晨的登录，下班后的退出，工资发送时的消息系统等。</font>
		</p>
		<p class="main">
				<font size="2">　　另一种极限模拟方式，可视为在峰值压力情况下同时点击事务操作的系统极限操作指标。加压方式不变，在各脚本事务点中设置同集合点名称（如：lr_rendzvous("same");）在场景设计中，使用事务点集合策略。以同时达到集合点百分率为标准，同时释放所有正在Run的Vuser。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>稳定性测试：</strong>已知系统高峰期使用人数、各事务操作频率等。设计综合测试场景，测试时将每个场景按照一定人数比率一起运行，模拟用户使用数年的情况。并监控在测试中，系统各性能指标在这种压力下是否能保持正常数值。事务响应时间是否会出现波动或随测试时间增涨而增加。系统是否会在测试期间内发生如宕机、应用中止等异常情况。</font>
		</p>
		<p class="main">
				<font size="2">　　根据上述测试中，各事务条件下出现性能拐点的位置，已确定稳定性测试并发用户人数。仍然根据实际测试服务器（加压机、应用服务器、数据服务器三方性能），估算最终并发用户人数。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>场景设计思想</strong>：从稳定性测试场景的设计意义，应分多种情况考虑：</font>
		</p>
		<p class="main">
				<font size="2">　　针对同一个场景为例，以下以公文附件上传为例简要分析场景设计思想：</font>
		</p>
		<p class="main">
				<font size="2">　　1）场景一：已压力测试环境下性能拐点的并发用户为设计测试场景，目的验证极限压力情况下测试服务器各性能指标。</font>
		</p>
		<p class="main">
				<font size="2">　　2）场景二：根据压力测试环境中CPU、内存等指标选取服务器所能承受最大压力的50%来确定并发用户数。</font>
		</p>
		<p class="main">
				<font size="2">　　测试方法：采用1)Ramp Up-Load all Vusers simultaneously</font>
		</p>
		<p class="main">
				<font size="2">　　2)Duration-Run Indefinitely</font>
		</p>
		<p class="main">
				<font size="2">　　3)在Sechedule-勾选Initalize all Vusers before Run </font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>容错性测试：</strong>通过模拟一些非正常情况（如：服务器突然断电、网络时断时续、服务器硬盘空间不足等），验证系统在发生这些情况时是否能够有自动处理机制以保障系统的正常运行或恢复运行措施。如有HA（自动容灾系统），还可以专门针对这些自动保护系统进行另外的测试。验证其能否有效触发保护措施。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>问题排除性测试：</strong>通过原有案例或经验判断，针对系统中曾经发生问题或怀疑存在隐患的模块进行验证测试。验证这些模块是否还会发生同样的性能问题。如：上传附件模块的内存泄露问题、地址本模块优化、开启Tivoli性能监控对OA系统性能的影响等等。</font>
		</p>
		<p class="main">
				<font size="2">　　测评测试是用于获取系统的关键性能指标点，而进行的相关测试。主要是针对预先没有明确的预期测试结果，而是要通过测试获取在特定压力场景下的性能指标（如：事务响应时间、最大并发用户数等）。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>评测事务交易时间：</strong>为获取某事务在特定压力下的响应时间而进行的测试活动。通过模拟已知客户高峰期的各压力值或预期所能承受的压力值，获取事务在这种压力下的响应时间。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>评测事务最大并发用户数：</strong>为获取某事务在特定系统环境下所能承受的最大并发用户数而进行的测试活动。通过模拟真实环境或直接采用真实环境，评测在这种环境下事务所能承受的最大并发用户数。判定标准阈值需预先定义（如响应时间，CPU占用率，内存占用率，已出现点击率峰值，已出现吞吐量峰值等）。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>评测系统最大并发用户数：</strong>为获取整个系统所能够承受的最大并发用户数而进行的的测试活动。通过预先分析项目各主要模块的使用比率和频率，定义各事务在综合场景中所占的比率，以比率方式分配各事务并发用户数。模拟真实环境或直接采用真实环境，评测在这种环境下系统所能承受的最大并发用户数。判定标准阀值预先定义（如响应时间，CPU占用率，内存占用率，已出现点击率峰值，已出现吞吐量峰值等）。取值标准以木桶法则为准（并发数最小的事务为整个系统的并发数）。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>评测不同数据库数据量对性能的影响：</strong>针对不同数据库数据量的测试，将测试结果进行对比，分析发现数据库中各表的数据量对事务性能的影响。得以预先判断系统长时间运行后，或某些模块客户要求数据量较大时可能存在的隐患。</font>
		</p>
		<p class="main">
				<font size="2">　　问题定位测试在通过以上测试或用户实际操作已经发现系统中的性能问题或怀疑已存在性能问题。需通过响应的测试场景重现问题或定义问题。如有可能，可以直接找出引起性能问题所在的代码或模块。</font>
		</p>
		<p class="main">
				<font size="2">　　该类测试主要还是通过测试出问题的脚本场景，并可以增加发现和检测的工具，如开启Tivoli性能监控、开启HeapDump输出、Linux资源监控命令等。并在场景运行过程中辅以手工测试。 </font>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20716.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 09:29 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20716.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>性能测试之场景设计思想</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20717.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 01:29:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20717.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20717.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20717.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20717.html</trackback:ping><description><![CDATA[
		<font size="2">前段时间有幸收到珠海X公司性能题目，呵呵，以下是对公司产品性能测试的总结。个人认为有关性能测试场景问题，其实更佳着重于对性能测试目的考究。</font>
		<p class="main">
				<font size="2">　　验证测试是用于验证在特定的场景、时间、压力、环境和操作方式下系统能够正常的运行，服务器、应用系统和网络环境等软硬件设施还能否良好的支撑这些情况下用户的使用。验证性测试主要针对有明确的压力目标和预期结果，验证系统在这种压力下的各方面反映能够达到预期结果。</font>
		</p>
		<p class="main">
				<font size="2">　　主要分以下几种：</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>压力测试：</strong>已知系统高峰期使用人数，验证各事务在最大并发数（通过高峰期人数换算）下事务响应时间能够达到客户要求。系统各性能指标在这种压力下是否还在正常数值之内。系统是否会因这样的压力导致不良反应（如：宕机、应用异常中止等）。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>Ramp Up 增量设计：</strong>如并发用户为75人，系统注册用户为1500人，以5％－7％作为并发用户参考值。一般以每15s加载5人的方式进行增压设计，该数值主要参考测试加压机性能，建议Run几次。以事务通过率与错误率衡量实际加载方式。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>Ramp Up增量设计目标：</strong> 寻找已增量方式加压系统性能瓶颈位置，抓住出现的性能拐点时机，一般常用参考Hits点击率与吞吐量、CPU、内存使用情况综合判断。模拟高峰期使用人数，如早晨的登录，下班后的退出，工资发送时的消息系统等。</font>
		</p>
		<p class="main">
				<font size="2">　　另一种极限模拟方式，可视为在峰值压力情况下同时点击事务操作的系统极限操作指标。加压方式不变，在各脚本事务点中设置同集合点名称（如：lr_rendzvous("same");）在场景设计中，使用事务点集合策略。以同时达到集合点百分率为标准，同时释放所有正在Run的Vuser。</font>
		</p>
		<p class="main">
				<font size="2"> 　　<strong>稳定性测试：</strong>已知系统高峰期使用人数、各事务操作频率等。设计综合测试场景，测试时将每个场景按照一定人数比率一起运行，模拟用户使用数年的情况。并监控在测试中，系统各性能指标在这种压力下是否能保持正常数值。事务响应时间是否会出现波动或随测试时间增涨而增加。系统是否会在测试期间内发生如宕机、应用中止等异常情况。</font>
		</p>
		<p class="main">
				<font size="2">　　根据上述测试中，各事务条件下出现性能拐点的位置，已确定稳定性测试并发用户人数。仍然根据实际测试服务器（加压机、应用服务器、数据服务器三方性能），估算最终并发用户人数。</font>
		</p>
		<p class="main">
				<font size="2">　　<strong>场景设计思想</strong>：从稳定性测试场景的设计意义，应分多种情况考虑：</font>
		</p>
		<p class="main">
				<font size="2">　　针对同一个场景为例，以下以公文附件上传为例简要分析场景设计思想：</font>
		</p>
		<p class="main">
				<font size="2">　　1）场景一：已压力测试环境下性能拐点的并发用户为设计测试场景，目的验证极限压力情况下测试服务器各性能指标。</font>
		</p>
		<p class="main">
				<font size="2">　　2）场景二：根据压力测试环境中CPU、内存等指标选取服务器所能承受最大压力的50%来确定