﻿<?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/4498.html</link><description>·√·  本ITblog站点记录相关的软件技术文档、网络技术杂志、测试技术杂谈等技术文档的管理站点.联系方式：MSN：dowling@sunlike.cn   QQ:94595885</description><language>zh-cn</language><lastBuildDate>Mon, 03 Oct 2011 09:17:53 GMT</lastBuildDate><pubDate>Mon, 03 Oct 2011 09:17:53 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 Suite Enterprise2002---系统测试解决方案</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 21 May 2007 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27370.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27370.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27370.html</trackback:ping><description><![CDATA[Rational Suite Enterprise2002<br>系统测试解决方案V 1.0<br><br>Rational 系统测试解决方案 目录<br>- I -<br>目录<br>第一章 整体解决方案.................................................................................................................................. 1<br>第二章 产品线简介...................................................................................................................................... 3<br>2.1 测试管理........................................................................................................................................ 3<br>2.2 调用和功能测试............................................................................................................................. 3<br>2.3 运行时分析.................................................................................................................................... 3<br>2.4 功能测试........................................................................................................................................ 3<br>2.5 微软开发环境的功能测试............................................................................................................. 3<br>2.6 针对X-Windows和终端应用的衰减和调用测试......................................................................... 3<br>2.7 变更影响跟踪................................................................................................................................ 3<br>第三章 具体产品简介.................................................................................................................................. 4<br>3.1 TestManager.................................................................................................................................. 4<br>3.1.1 获得需求变更对于测试的影响........................................................................................... 4<br>3.1.2 让整个团队获得信息共享访问......................................................................................... 4<br>3.1.3 独立性和集成性................................................................................................................. 4<br>3.2 TeamTest........................................................................................................................................ 4<br>3.2.1 提高应用程序质量............................................................................................................. 4<br>3.2.2 重复功能性测试................................................................................................................. 4<br>3.2.3 量化的性能测试................................................................................................................. 4<br>3.2.4 集成测试管理..................................................................................................................... 4<br>3.3 PurifyPlus.................................................................................................................................... 5<br>3.3.1 Features and Benefits................................................................................................... 5<br>3.3.2 已支持环境......................................................................................................................... 5<br>3.3.3 注册.................................................................................................................................... 5<br>3.4 Robot.............................................................................................................................................. 5<br>3.4.1 降低测试用时提高效率..................................................................................................... 5<br>3.4.2 Rational Robot的性能.................................................................................................... 5<br>3.5 Visual Test.................................................................................................................................. 6<br>3.6 prevue............................................................................................................................................ 6<br>3.6.1 自动化脚本生成................................................................................................................. 6<br>3.6.2 非插入性测试..................................................................................................................... 6<br>3.6.3 全面的测试结果................................................................................................................. 6<br>3.7 ClearQuest.................................................................................................................................... 6<br>3.7.1 缺陷和变更跟踪工具-- Rational ClearQuest ............................................................. 6<br>3.7.2 配合你的工作方式............................................................................................................. 6<br>3.7.3 针对整个生命周期的变更跟踪......................................................................................... 6<br>3.7.4 设计一次就可以到处使用................................................................................................. 7<br>3.7.5 将分散的团队整合起来..................................................................................................... 7<br>Rational 系统测试解决方案 整体解决方案<br>- 1 -<br>第一章 整体解决方案<br>TestStudio 是Rational Suite Enterprise的系统测试工具组, 提供了针对可靠性测试, 功能<br>测试, 分布式功能测试, 衰减测试, 单元测试和CS的调用测试, 网页应用测试和ERP应用测试的自<br>动化解决方案. 它提供了一个同开发无缝集成的测试过程, 软件配置管理和测试管理三方面的支<br>持，提高了测试质量和最终的产品质量.<br>针对嵌入式-实时-基于网络的应用产品, Rational提供了实时测试套件. 它提供了针对目标主<br>机的测试, 代码覆盖措施, 内存泄漏检测和性能记录等方面的自动化功能.<br>在开发下一代应用程序软件的激烈竞赛中，企业所面临的压力越来越大，需要在更短时间内开<br>发出更高质量的产品，即我们称之为&#8220;软件开发矛盾&#8221;的两难境地。过去，企业通常以质量为代价<br>或推迟开发某些新功能，来满足产品的面市期限。如今，这些企业认识到：要想生存，就必须在第<br>一时间内既快又好地开发出应用程序。也就是说，开发团队中的每位成员都必须以保证产品质量为<br>己任。Rational Suite TestStudio v2002 可以使企业在Internet 时代，通过交付高质量的应用<br>程序，帮助他们解决软件开发的矛盾。<br>Rational Suite TestStudio 提供了一种集成测试解决方案，使测试人员就产品的功能、可靠<br>性和性能，进行全方位的质量测试。它包括一整套自动化测试和缺陷跟踪工具，以及Rational 团<br>队统一平台(Rational Team Unifying Platform)。该平台通过提供对项目需求、变更请求、测试资<br>料及其他数据的共享，提高了团队的工作效率。通过Rational 软件开发服务机构提供的支持，<br>Rational Suite TestStudio 可以帮助开发团队加速应用程序的开发和实施。<br>功能测试，可以确保应用程序满足产品规格说明和测试计划的每一条业务需求。Rational Suite<br>TestStudio 的目标，是使功能测试变得更简单、有效并可重复执行。为便于这种基于需求的测试，<br>它还提供了Rational RequisitePro.（获奖的需求管理工具）和Rational Robot（创建和维护功能<br>测试脚本的业界领先工具）。<br>Rational Robot 可以对在各种独立开发环境(IDE) 中开发的应用程序，创建、修改并执行功能<br>测试、分布式功能测试、回归测试以及整合测试。它还可以记录并回放能识别业务应用程序对象的<br>测试脚本。除此之外，使用Rational Robot 还可以快速有效地跟踪、报告与质量保证测试相关的<br>所有信息，并将这些信息绘制成图表。使用Rational Suite TestStudio 集成工具包， 可以在一<br>个测试周期中，将Rational Robot 的回归测试与Rational Purify. 结合使用完成可靠性测试，与<br>Rational PureCoverage. 结合使用完成代码覆盖计算，与Rational Quantify. 结合使用完成应用<br>程序性能测试。通过将优化的回归测试脚本与该工具化的测试方式相结合， Rational Suite<br>TestStudio 使可靠性及功能回归测试达到了前所未有的水平。<br>Rational Suite TestStudio 通过Rational TestFactory. 使可靠性测试自动化，该工具可以<br>自动找出应用程序中的缺陷。Rational TestFactory 将在自动认知用户界面的基础上， 创建测试<br>流程对应用程序进行严格的测试。基于这一点，它首先为要测试的应用程序构建元素图，然后自动<br>测试其中的每个元素。它可以找出所有的程序缺陷，例如，运行时错误（如挂起和异常）或设计缺<br>陷（如对话框按钮缺少快捷键）。对于每一个缺陷，TestFactory 都会创建相应的脚本将其重现。随<br>后，测试人员在Rational ClearQuest.（全面集成的变更与缺陷管理系统）中报告缺陷，确保将这<br>些缺陷被正确地跟踪并修正。<br>通过确定哪些功能测试脚本会受到代码变更的影响，Rational TestFactory 可以加速并简化回<br>归测试。这样，测试人员可以快速找到所做的修改，并且运行最少的脚本，即可对开发人员所做的<br>任何修改进行全面测试。<br>Rational Suite TestStudio 提供三种级别的诊断信息，开发人员可以对导致性能不佳的业务<br>事务处理、底层客户端调用和系统资源进行分析， 来找出产生性能瓶颈的原因。例如，Rational<br>Suite TestStudio 性能测试可以帮助测试人员确定，何时可通过增加系统内存或提高CPU 速度来<br>Rational 系统测试解决方案 整体解决方案<br>- 2 -<br>优化后端服务器，还可以找出，导致性能问题的客户端、中间层或服务器端代码所在的特定区域。<br>性能测试的准确性取决于测试工具根据实际用户负载情况调节测试负载，以及通过模拟实际工<br>作负载时间进度情况创建负载的能力。使用Rational Suite TestStudio，不必编程就可以迅速制<br>定综合的使用方案来模拟用户组活动，并创建工作负载计划。在给定时间内，通过指定虚拟用户群<br>提交事务处理的数量和类型， Rational Suite TestStudio 可以准确控制事务处理的速度。而且，<br>Rational Suite TestStudio 可以将功能测试与负载测试集于一身，便于测试人员设置后端服务器<br>的负载规模，同时使用同一个计划对客户端进行功能测试。<br>Rational 系统测试解决方案 产品线简介<br>- 3 -<br>第二章 产品线简介<br>2.1 测试管理<br>Rational TestManager 从一个独立的,全局的角度对于各种测试活动进行管理和控制. 它让测<br>试者可以随时了解需求变更对于测试用例的影响, 通过针对一致目标而进行的测试与报告提高了团<br>队生产力.<br>2.2 调用和功能测试<br>Rational TeamTest 提供了功能, 分布式功能, 衰减, 客户-服务器应用调用, 网页和ERP应用<br>的自动化测试解决方案. 通过跟踪和测试管理可以降低团队开发和配置的风险.<br>2.3 运行时分析<br>Rational PurifyPlus 工具集对于开发期间的单元测试实现了自动化, 确保了可靠性, 高性能<br>和高质量. 包括三个独立工具:<br>l Rational Purify<br>定位内存泄漏和运行时错误<br>l Rational Quantify<br>寻找性能瓶颈<br>l Rational PureCoverage<br>表示了未测试代码和提供代码覆盖分析<br>2.4 功能测试<br>Rational Robot 是一个针对WEB, ERP 和C/S 进行功能自动化测试的工具. 它可以降低功能测<br>试上的人力和物力的投入和风险包括了可见和非可见对象.<br>2.5 微软开发环境的功能测试<br>Rational Visual Test则是针对Windows应用程序的功能测试的自动化工具. 它可以直接针对<br>微软的可视化开发环境使用可复用, 可维护和可扩展的测试脚本, 降低了开发高质量软件的花费.<br>2.6 针对X-Windows和终端应用的衰减和调用测试<br>Rational preVue 是一个针对企业级别的基于X-Windows 和终端应用的自动化测试工具. 它们<br>降低了发布风险, 投入并且提高了用户的满意程度.<br>2.7 变更影响跟踪<br>Rational ClearQuest 是一个可以使用于任意平台上各种类型的项目的需求跟踪和变更调整工<br>具.<br>Rational 系统测试解决方案 具体产品简介<br>- 4 -<br>第三章 具体产品简介<br>3.1 TestManager<br>Rational TestManager用来从各个方面进行测试管理:<br>* 测试计划<br>* 测试设计<br>* 测试实现<br>* 测试执行<br>* 结果分析<br>Rational TestManager 可以处理针对测试的计划, 执行和结果数据收集-甚至包括使用第三方<br>的测试工具.使用Rational TestManager, 测试者可以通过创建, 维护或引用测试用例来组织自己<br>的测试计划, 包括来自外部稳定, 模块, 需求变更请求和Excel 电子表格的数据.<br>3.1.1 获得需求变更对于测试的影响<br>Rational TestManager 一个主要功能就是通过自动跟踪整个项目的质量和需求状态来分析所<br>造成的针对测试用例的影响, 由此成为整个软件团队的项目状态的数据集散中心.<br>3.1.2 让整个团队获得信息共享访问<br>QA 或者QE 经理, 商业分析师, 开发者和测试者使用Rational TestManager 都恶意获得基于<br>他们自己特定角度的测试结构数据, 并且利用这些数据对于他们的工作进行决策. Rational<br>TestManager 在整个项目生命周期内为团队提供了持续地面向测试计划目标的状态和进度跟踪.<br>3.1.3 独立性和集成性<br>Rational TestManager 在Rational Suite TestStudio 中作为一个独立组件存在. 我们也可以<br>配合Rational TeamTest 和Rational Robot 使用.作为一个集成的解决方案套件, Rational<br>TestManager 可以和Rational 的其他产品很好的连接各种产品的输入的即时跟踪, 诸如: Rational<br>RequisitePro 需求组件, Rational Rose系统分析模型, 和Rational ClearQuest 需求变更. 它的<br>开发式API可以让测试者为不同输入类型制作接口配件.<br>3.2 TeamTest<br>3.2.1 提高应用程序质量<br>Rational(r) TeamTest为开发中的项目提供了功能和性能的自动化, 高效率以及可重复的测试,<br>测试管理和跟踪能力. 测试者不仅可以降低配置应用的风险, 还减少了测试用时使得整个团队的生<br>产力得到提高.<br>3.2.2 重复功能性测试<br>Rational TeamTest 让测试者可以长剑和维护强壮的, 可重复的测试脚本进行功能-分布式功能<br>-衰减-冒烟测试, 可以集成在大多数开发环境当中, 和Rational Robot 一样, 它使用了<br>Object-Testing(r)技术.<br>3.2.3 量化的性能测试<br>测试者可以设计并执行高度量化的性能测试来模拟现实世界当中的真是情景. Rational<br>TeamTest使得不用编程就可以建立复杂的用例场景; 并且产生很有条理的报告显示性能问题的根源<br>所在.<br>3.2.4 集成测试管理<br>Rational TestManager 是一个Rational TeamTest集成组件, 是测试者的工作平台, 是一个有<br>力的, 开放式的可扩展环境来管理相关测试工作. 测试者使用Rational TestManager进行计划, 设<br>计和实现, 执行并且升级功能测试和性能测试; 并且Rational ClearQuest 负责根据相应的变更进<br>行跟踪.<br>Rational 系统测试解决方案 具体产品简介<br>- 5 -<br>3.3 PurifyPlus<br>Rational PurifyPlus是一个完整的自动化运行时分析工具, 用来提高应用程序的性能和质量.<br>它为哪些需要进行创建和配置可靠的应用程序的开发者设计, 支持Unix平台的C/C++, 和Java, 以<br>及Windows平台上的VC/C++, C#, VB.NET, VB .PurifyPlus for Windows 对于Java 的服务器端和<br>客户端提供一样的支持. 安装在你的WEB服务器上面以后, 你可以针对在服务器诸如IBM WebSphere,<br>BEA WebLogic 和Apache Jakarta Tomcat 上的Java Server Pages (JSPs)和Java servlets 使用<br>PurifyPlus.Rational PurifyPlus 由Rational Purify, Quantify 和 PureCoverage 组<br>成.PurifyPlus为Windows/UNIX开发者提高了生产力, 因为它完全集成在进程当中. 它不要求重新<br>编译目标应用程序, 不会降低你的进度. PurifyPlus 帮助你可视化的执行代码, 提供便于理解和可<br>重复信息, 可以结合或者独立于源代码-包括各种第三方组件.<br>3.3.1 Features and Benefits<br>* Rational Purify用来探测内存泄漏和代码错误.<br>* Rational Quantify 用来发现性能瓶颈.<br>* Rational PureCoverage 用来标识未测试代码.<br>3.3.2 已支持环境<br>* Rational PurifyPlus for Windows<br>Windows 2000 or NT 4.0 or above (including Japanese Windows NT 4.0)<br>Visual Studio 6.0<br>Rational PurifyPlus for UNIX<br>Sun Solaris 2.5.1, 2.6, 7, 8<br>Forte 6, Update 2, and GCC 2.95.2<br>HP-UX 10.20, 11.0, 11.11<br>HP cc/aCC, GCC 2.95.3 and GNUPro 98r2<br>Compaq Tru64 UNIX V4.0F patch 4, 4.0G patch 1, V5.0A, V5.1<br>Compaq C, CompaqCH (for Tru64 UNIX V4.0F, C or C++ prior to V6.2 supported with patch<br>CxxREDIST 621<br>3.3.3 注册<br>* Windows版本适用于nodelocked 或者floating注册方式<br>* UNIX 版本适用于named user或者floating注册方式<br>* 注册使用Globetrotter Software's FLEXlm license manager<br>3.4 Robot<br>3.4.1 降低测试用时提高效率<br>Rational Robot 是一个面向对象的工具让你可以创建, 修改和实现自动化进行功能, 衰减, 冒<br>烟测试. Rational TestManager 和Rational SiteCheck包含于Rational Robot, 让你实现测试的<br>各方面数据的团队共享, 给你一个面向站点的强壮性工具: 实现网站链接管理, 站点监视等功能.<br>3.4.2 Rational Robot的性能<br>仅仅通过鼠标就可以实现GUI 和各个属性的测试.<br>* 可以识别和记录以及重复测试各种应用程序中的对象.<br>* 跟踪, 报告和图形化你的测试进程的信息<br>* 检测以及修改你的网站的各个元素的问题<br>* 在记录的时候检查和修改测试脚本<br>* 对于多重平台使用同样测试脚本<br>Rational Robot 支持各种环境和语言, 包括HTML和DHMTL, Java, Microsoft Visual Basic and<br>Visual C++, Oracle Developer/2000, Delphi, SAP, PeopleSoft, 和Sybase PowerBuilder.<br>Rational 系统测试解决方案 具体产品简介<br>- 6 -<br>3.5 Visual Test<br>Rational Visual Test(r) 6.5 是专门为微软的视窗应用程序的开发者和测试者开发的自动化<br>功能测试工具, 并且可以和Microsoft Visual C++很好地集成. Rational Visual Test 让开发者和<br>测试者便利地组织程序.<br>特性和收益<br>* 支持Microsoft J++ WFC Controls<br>* 更好的Winfo工具<br>* 更好的套件管理者<br>* 将一个项目的所有文件批处理进入p-code<br>* 支持多监视器<br>* 新的activeX过程<br>* 新的ActiveX/Web过程<br>* 新的RUNEX 函数<br>* 新的MSI-based 安装器<br>3.6 prevue<br>Rational(r) preVue是针对X&amp;终端应用的测试解决方案, 让使用者降低测试投入和提高客户满<br>意程度. Rational preVue利用软件脚本模拟用户或者相关硬件行为, 实现自动化功能和衰减测试,<br>并以量化和图形化形式提交测试数据报告.<br>3.6.1 自动化脚本生成<br>Rational preVue 利用测试脚本记录或者"偷拍"用户和应用程序之间的交互合执行, 便于你可<br>以验证你的应用程序在各种调用方式下的性能及可靠性.<br>3.6.2 非插入性测试<br>使用Rational preVue 不需要额外负担. 针对目标应用程序不需要定制函数库或者修改. 该"<br>黑盒"方式允许你可以实现平台无关的X&amp;终端程序的测试.<br>3.6.3 全面的测试结果<br>Rational preVue 使用专业的报告, 图片和日志保存测试结果. 图片帮助你及早发现微小的质<br>量和性能问题, 使得它们没有机会暴露给最终用户.<br>* Rational preVue-X<br>X Window测试工具, 可以在任何X Window 环境中使用.<br>* Rational preVue-ASCII<br>远程终端模拟器, 模拟用户操作应用程序进行多用户自动化测试. Rational preVue-ASCII 支持<br>UNIX, MS Windows NT, MVS, 或者VMS 等系统的终端应用程序测试.<br>3.7 ClearQuest<br>3.7.1 缺陷和变更跟踪工具-- Rational ClearQuest<br>Rational(r) ClearQuest(r)缺陷跟踪工具是目前最具扩展性的系统. 不管你的开发团队的大<br>小和地理分布, 不管他们使用的平台--Windows, Unix或者Web--Rational ClearQuest都能实现高<br>效率地捕获, 跟踪和管理任意类型的变更. 你可以选择配置或者选择一个合适的模板配合你的过程.<br>配合企业数据库, ClearQuest 可以针对各种尺寸的项目. 同其他开发解决方案的集成确保所有团队<br>成员同缺陷/变更跟踪过程绑定.<br>3.7.2 配合你的工作方式<br>不同的组织使用不同的过程处理软件缺陷, 需求变更何其他修改结果. Rational ClearQuest<br>提供针对大多数组织的过程和允许你定制自己的过程.<br>3.7.3 针对整个生命周期的变更跟踪<br>开发当中的每一个人都不仅需要了解变更在特定层面上造成的影响, 也需要理解对于整个项目<br>Rational 系统测试解决方案 具体产品简介<br>- 7 -<br>的影响. 使用Rational ClearQuest 你可以在整个项目的生命周期中跟踪缺陷和需求变更, 分配工<br>作活动和访问项目的真实状态.<br>3.7.4 设计一次就可以到处使用<br>不管你的开发团队大小和他们的地理分布, 不管他们使用的平台, Rational ClearQuest 都可<br>以实现变更的捕获, 跟踪和管理. 用户化仅仅需要一次, 然后即可以发布到Windows, UNIX, Web 的<br>客户层面. ClearQuest 支持好几种企业数据库. 当你的组织成长的时候, ClearQuest 将和你一起成<br>长.<br>3.7.5 将分散的团队整合起来<br>基于被验证的Rational ClearCase MultiSite 技术, ClearQuest MultiSite 是一个针对<br>Rational ClearQuest 的选项, 支持针对地理上分布的站点的同步发展.
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27370.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:10 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设定时间让脚本自动运行</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21583.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 05 Jan 2007 13:40:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21583.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/21583.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/21583.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/21583.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#000066">
						<font size="2">主要功能：实现每天都对数据库</font>
						<font size="2">进行备份</font>
				</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2">由于WR没有定时自动运行脚本</font>
						<font size="2">的功能，但与TD结合便可以实现。使用的WR版本为7.0，具体实现如下：</font>
				</font>
		</p>
		<p>
				<font color="#000066" size="2">1、设置WR与TD连接。</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2"> 1.1启动WR，在settings--&gt;general options菜单下的environment中勾选"Allow TestDirector to run tests remotely"，之后保存。</font>
						<a href="http://blog.51testing.com/batch.download.php?aid=774" target="_blank">
								<font size="2">
										<img title="点击图片可在新窗口打开" style="CURSOR: pointer" src="http://www.51testing.com/ddimg/uploadimg/20061230/1117060.jpg" border="0" />
								</font>
						</a>
				</font>
		</p>
		<p>
				<font size="2">
				</font> </p>
		<p>
				<font color="#000066">
						<font size="2"> 1.2选择菜单功能tools--&gt;TestDirector Connection,进行设置，指定TD服务器，连接指定的project。具体设置如图</font>
						<a href="http://blog.51testing.com/batch.download.php?aid=775" target="_blank">
								<font size="2">
										<img title="点击图片可在新窗口打开" style="CURSOR: pointer" src="http://www.51testing.com/ddimg/uploadimg/20061230/1117061.jpg" border="0" />
								</font>
						</a>
				</font>
		</p>
		<p>
				<font color="#000066" size="2">2、TD相关操作</font>
		</p>
		<p>
				<font color="#000066" size="2"> 2.1下载XRunnerTestDirector.exe插件。</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2"> 2.2登陆TD，在test plan页面中新加一个测试</font>
						<font size="2">用例，修改type为WR-AUTOMATED.之后点到test scrīpt页签，点击copy from，选择脚本，导入。脚本就成功的导入了。其中脚本调用了其它两个子脚本，WR会跟据所指路径自动去读取，并且在脚本中已添加了加载map的语句。</font>
				</font>
		</p>
		<p>
				<font color="#000066" size="2"> 2.3切到test lab页面，新建test,然后执行"Add Tests to Test Set"功能如图wrltd6.jpg</font>
		</p>
		<p>
				<font color="#000066" size="2">
						<a href="http://blog.51testing.com/batch.download.php?aid=776" target="_blank">
								<img src="http://www.51testing.com/ddimg/uploadimg/20061230/1117062.jpg" border="0" />
						</a>
				</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2">添加刚才test plan中指定的test.添加成功后如图wrltd7.jpg<br /></font>
						<a href="http://blog.51testing.com/batch.download.php?aid=779" target="_blank">
								<font size="2">
										<img title="点击图片可在新窗口打开" style="WIDTH: 400px; CURSOR: pointer" src="http://www.51testing.com/ddimg/uploadimg/20061230/1117063.jpg" border="0" />
								</font>
						</a>
				</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2"> 2.4设置执行时间。见图wrltd7.jpg切到Execution Flow页签，设置时间。如图wrltd5.jpg.</font>
						<a href="http://blog.51testing.com/batch.download.php?aid=777" target="_blank">
								<font size="2">
										<img title="点击图片可在新窗口打开" style="WIDTH: 400px; CURSOR: pointer" src="http://www.51testing.com/ddimg/uploadimg/20061230/1117064.jpg" border="0" />
								</font>
						</a>
				</font>
		</p>
		<p>
				<font color="#000066">
						<font size="2"> 2.5点击wrltd5.JPg中的RUN按钮，弹出窗口"Execution of...窗口",点击run按钮,所有操作到这儿就完成了.如图wrltd6.jpg所示状态，脚本处于等待状态，等到设定的时间，TD会自动打开WR程序，并开始执行脚本。<br /></font>
						<a href="http://blog.51testing.com/batch.download.php?aid=778" target="_blank">
								<font size="2">
										<img title="点击图片可在新窗口打开" style="WIDTH: 400px; CURSOR: pointer" src="http://www.51testing.com/ddimg/uploadimg/20061230/1117065.jpg" border="0" />
								</font>
						</a>
						<br />
						<br />
				</font>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/21583.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-01-05 21:40 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QTP中设置共享对象库</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21582.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 05 Jan 2007 13:38:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21582.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/21582.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/21582.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/21582.html</trackback:ping><description><![CDATA[
		<font size="2">很多时候我们总是觉得管理QTP的脚本比较烦.因为除了要对代码的管理之外，还要保证QTP对象库的完整．每一个用例脚本的生成，同时又都会生成一个对象库．那么是不是可以做一个公共的对象库来给各个用例脚本调用呢？接下来，我们就来实现共享对象库的应用．</font>
		<p>
		</p>
		<p>
				<font size="2">　　<strong>第一步：把需要加到共享对象库中的各个用例脚本的对象库，分别导出成．tsr文件．</strong></font>
		</p>
		<p>
				<font size="2">　　操作方法:先用QTP打开已经录制完毕的脚本后，选择Resources－－＞ Object Repository ．</font>
		</p>
		<p>
				<font size="2">　　然后file--&gt;export....取名导出文件．如下图：</font>
		</p>
		<p>
				<font size="2">　　　　　　　　　　　</font>
				<a href="http://blog.51testing.com/batch.download.php?aid=784" target="_blank">
						<font size="2">
								<img src="http://www.51testing.com/ddimg/uploadimg/20061231/1143410.jpg" border="0" />
						</font>
				</a>
		</p>
		<p>
				<font size="2">　　<strong>第二步：把需要加入到共享对象库中的各个用例脚本的对象库，合并对象及对象属性，形成一个大的共享对象库．</strong></font>
		</p>
		<p>
				<font size="2">　　操作方法:打开Resources－－＞Object Repository Manager．找到Tools菜单，然后选择打开Object Repository merge tool.选择两个要合并的对象库文件，进行对象合并．一次只能合并两个．所以如果这里你要合并多个对象库文件的话，先合并两个后，保存成一个新的．tsr文件．然后再重复上面的操作，选择这个新的．tsr文件和另一个准备好的对象库合并．如下图：</font>
		</p>
		<p>
				<font size="2">　　　　　　　　　</font>
				<a href="http://blog.51testing.com/batch.download.php?aid=785" target="_blank">
						<font size="2">
								<img src="http://www.51testing.com/ddimg/uploadimg/20061231/1143411.jpg" border="0" />
						</font>
				</a>
		</p>
		<p>
				<font size="2">　　合并的时候，你会发现，在两个对象库文件中，相同的对象合并成一个，不同的对象，全部被完整增加进去．然后形成一个大的对象库．现在只要保存这个共享对象库．如果以后有新增的对象，可以重复上述操作．</font>
		</p>
		<p>
				<font size="2">　　<strong>第三步：调用上面保存好的共享对象库．给新的脚本使用．</strong></font>
		</p>
		<p>
				<font size="2">
						<strong>　　</strong>操作步骤：Resources－－＞Associate Repository．选择上面保存好的共享对象库的．tsr文件．加入到Associate Repository中．如下图：</font>
		</p>
		<p>
				<font size="2">　　</font>
				<a href="http://blog.51testing.com/batch.download.php?aid=787" target="_blank">
						<font size="2">
								<img src="http://www.51testing.com/ddimg/uploadimg/20061231/1143412.jpg" border="0" />
						</font>
				</a>
		</p>
		<p>
				<font size="2">　　完成这一步后，其实整个共享对象库的操作已经完成．你在对象库中可以看到以后的对象．在录制新脚本的时候，如果对象已经存在，就不会再被记录，只有在这个对象库中没有的对象才会被记录进去．回放脚本，对象识别成功．</font>
		</p>
		<p>
				<strong>
						<font size="2">（注：此操作只适合与装有QTP9.0的版本．对于8.2版本不适合）</font>
				</strong>
		</p>
		<p>
				<strong>
						<font size="2">附：8.2版本中的共享对象库操作</font>
				</strong>
		</p>
		<div style="FONT-SIZE: 12px">
				<font size="2">QTP8.2的共享方法<br />1. 选择“测试”&gt;“设置”&gt;“资源”选项卡。<br />2. 在“对象库类型”区域，“共享”。<br />请指定要用作对象库文件的共享对象库文件。要指定文件，请输入对象库文件名，或单击浏览按钮并从“打开”对话框中选择资源文件。要新建共享对象库文件，请在“共享”框中输入新文件名。<br />对象库文件的默认文件扩展名是 .tsr，但是文件可能使用任何扩展名。在“打开”对话框中浏览现有对象库文件时，在“文件类型”框中选择“所有文件”。 <br />3. 注：请在新测试开始录制前进行设置，已有测试的对象库模式不能进行修改。</font>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/21582.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-01-05 21:38 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/01/05/21582.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>Mercury Quality Center</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 02:07:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20897.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20897.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20897.html</trackback:ping><description><![CDATA[Mercury Quality Center<br /><p>Mercury Quality Center™ 提供了<a href="http://www.mercury.com/cn/products/quality-center/testdirector/">基于 Web 的系统</a>，可在广泛的应用环境下自动执行软件质量测试和管理。<a href="http://www.mercury.com/cn/products/quality-center/dashboard/">仪表盘技术使您可以了解</a>验证功能和将业务流程自动化，并确定生产中阻碍业务成果的瓶颈。Mercury Quality Center 使 IT 团队能够在开发流程完成前就参与应用程序测试。这样将缩短发布时间表，同时确保最高水平的质量。 </p><!-- Begin Plain Bulleted List --><h3>利用 Mercury Quality Center，您可以：</h3><div><ul><li><span>制定可靠的部署决策。</span></li><li><span>管理整个质量流程并使其标准化。</span></li><li><span>降低应用程序部署风险。</span></li><li><span>提高应用程序质量和可用性。</span></li><li><span>通过手动和自动化功能测试管理应用程序变更影响。</span></li><li><span>确保战略采购方案中的质量。</span></li><li><span>存储重要应用程序质量项目数据。</span></li><li><span>针对功能和性能测试面向服务的基础架构服务。</span></li><li><span>确保支持所有环境，包括 J2EE、.NET、Oracle 和 <a href="http://www.mercury.com/cn/solutions/erp-crm/sap/">SAP</a>。</span></li></ul></div><span><h3>Mercury Quality Center 产品</h3><p>Mercury Quality Center 包括自动化软件测试产品，例如 <a href="http://www.mercury.com/cn/products/quality-center/testdirector/">Mercury TestDirector®</a>、<a href="http://www.mercury.com/cn/products/quality-center/functional-testing/quicktest-professional/">Mercury QuickTest Professional™</a>、<a href="http://www.mercury.com/cn/products/quality-center/functional-testing/winrunner/">Mercury WinRunner™</a>、<a href="http://www.mercury.com/cn/products/quality-center/business-process-testing/">Mercury Business Process Testing™</a> 和 <a href="http://www.mercury.com/cn/products/quality-center/functional-testing/service-test/">Mercury Service Test™</a>。Mercury Quality Center 还提供了基于最佳实践的服务，用于内部部署或通过我们的 Mercury Managed Services 进行部署。 </p><p><br /><img height="345" alt="Quality Center" src="http://www.mercury.com/cn/images/products/quality_center/quality-center-diagram.gif" width="539" usemap="#QualityCenter" border="0" /><br /><br />===========================================================</p><table class="sr" id="sr" cellspacing="0" cellpadding="0"><tbody><tr><td class="sr-sub-header" nowrap=""><b>Software Trial</b></td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">  Download  </td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">||</td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">    </td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=276#d276"><b>Mercury QuickTest Professional Web Services Add-in</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download1','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download1','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=276#d276"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download1" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info1','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info1','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email1','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '276');" onmouseout="changeImages('email1','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=264#d264"><b>Mercury Diagnostics Profiler for .NET</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download2','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download2','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=264#d264"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download2" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info2','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info2','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/diagnostics/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email2','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '264');" onmouseout="changeImages('email2','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=257#d257"><b>Mercury TestDirector for Quality Center Starter Edition</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download3','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download3','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=257#d257"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download3" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info3','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info3','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/testdirector/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email3','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '257');" onmouseout="changeImages('email3','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=223#d223"><b>Mercury QuickTest Professional for VisualAge Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download4','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download4','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=223#d223"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download4" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info4','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info4','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email4','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '223');" onmouseout="changeImages('email4','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=224#d224"><b>Mercury QuickTest Professional for Stingray Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download5','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download5','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=224#d224"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download5" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info5','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info5','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email5','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '224');" onmouseout="changeImages('email5','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=222#d222"><b>Mercury QuickTest Professional for Peoplesoft Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download6','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download6','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=222#d222"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download6" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info6','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info6','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email6','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '222');" onmouseout="changeImages('email6','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td> <a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=212#d212"><b>Mercury QuickTest Professional for Java Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download7','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download7','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=212#d212"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download7" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info7','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info7','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email7','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '212');" onmouseout="changeImages('email7','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=213#d213"><b>Mercury QuickTest Professional for Oracle Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download8','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download8','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=213#d213"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download8" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info8','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info8','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email8','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '213');" onmouseout="changeImages('email8','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=208#d208"><b>Mercury QuickTest Professional for .Net Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download9','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download9','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=208#d208"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download9" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info9','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info9','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email9','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '208');" onmouseout="changeImages('email9','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=209#d209"><b>Mercury QuickTest Professional for SAP Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download10','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download10','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=209#d209"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download10" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info10','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info10','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email10','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '209');" onmouseout="changeImages('email10','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=210#d210"><b>Mercury QuickTest Professional Terminal Emulator Add-in Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download11','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download11','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=210#d210"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download11" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info11','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info11','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email11','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '210');" onmouseout="changeImages('email11','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=211#d211"><b>Mercury QuickTest Professional for Siebel Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download12','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download12','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=211#d211"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download12" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info12','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info12','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email12','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '211');" onmouseout="changeImages('email12','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=189#d189"><b>Introduction to Quality Center 8.0 - Using TestDirector: Computer-Based Training (CBT) Course</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download13','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download13','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=189#d189"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download13" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info13','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info13','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/testdirector/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email13','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '189');" onmouseout="changeImages('email13','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=183#d183"><b>Introduction to QuickTest Professional 8.0 Computer-Based Training (CBT) Course</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download14','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download14','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=183#d183"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download14" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info14','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info14','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email14','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '183');" onmouseout="changeImages('email14','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td> <a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=51#d51"><b>Mercury QuickTest Professional Free 14-Day Trial</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download15','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download15','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=51#d51"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download15" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info15','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info15','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email15','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '51');" onmouseout="changeImages('email15','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr></tbody></table></span><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20897.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 10:07 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高级测试管理的工具和技术</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 01:51:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20896.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20896.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20896.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 高级测试管理的工具和技术业务优化科技概述近年来，在应用测试领域有了突飞猛进的发展。随着当今应用复杂性的不断提升、竞争压力的不断加大，以及在应用失败和宕机方面的成本激增，使得对测试的需求不断攀升。 实施高质量应用的压力持续加大，其挑战在于日益紧缩的开发和部署进度、分散的机构组织、外包、技术熟练员工的高调动率，这些都造成了应用测试难度的提升。 为了实现以较少资源完成更多任务的目标、同时展开多个项目、管...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20896.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 09:51 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Rational的测试理念</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 20 Dec 2006 08:10:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20859.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20859.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20859.html</trackback:ping><description><![CDATA[
		<div class="style7" align="center">
				<span style="FONT-SIZE: 12pt">
						<b>使用Rational的测试理念<br /><div class="daxiao14" align="left"><h2><b>1.</b><b>传统软件测试过程中的问题</b><b></b></h2><div>    测试在所有的软件开发过程中都是最重要的部分。在软件开发过程中，一方面要求我们通过测试活动验证所开发的软件在功能上满足软件需求中描述的每一条特性，性能上满足客户要求的负载压力和相应的响应时间、吞吐量要求；另一方面，面向市场和客户，开发团队还要满足在预算范围内尽快发布软件的要求。 <br />    传统的软件测试流程一般是先在软件开发过程中进行少量的单元测试，然后在整个软件开发结束阶段，集中进行大量的测试，包括功能和性能的集成测试和系统测试。随着开发的软件项目越来越复杂，传统的软件测试流程不可避免地给我们的工作带来以下问题： <br /><b>    问题一：</b>项目进度难于控制，项目管理难度加大<br />    如图一所示，大量的软件错误往往只有到了项目后期系统测试时才能够被发现，解决问题所花的时间很难预料，经常导致项目进度无法控制，同时在整个软件开发过程中，项目管理人员缺乏对软件质量状况的了解和控制，加大了项目管理难度。</div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114060.JPG" /><br /><b>图一、传统测试流程中存在的问题</b><b></b></div><div><b>    问题二</b>：对于项目风险的控制能力较弱<br />项目风险在项目开发较晚的时候才能够真正降低。往往是经过系统测试之后，才真正确定该设计是否能够满足系统功能、性能和可靠性方面的需求。 <br /><b>    问题三</b>：软件项目开发费用超出预算<br />在整个软件开发周期中，错误发现的越晚，单位错误修复成本越高，如图二所示，错误的延迟解决必然导致整个项目成本的急剧增加。 </div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114061.JPG" />  </div><div align="center"><b>图二、传统测试流程中存在的问题</b><b></b></div><h2><b>2. </b><b>采用IBM Rational软件自动化测试最佳成功经验解决传统测试问题</b></h2><div>    IBM Rational软件自动化测试技术核心的三个最佳成功经验是：尽早测试、连续测试、自动化测试，并在此基础上提供了完整的软件测试流程和一整套的软件自动化测试工具，使我们最终能够做到：一个测试团队，基于一套完整的软件测试流程，使用一套完整的自动化软件测试工具，完成全方位的软件质量验证。</div><h3>2.1 成功经验一：尽早测试</h3><div>    所谓尽早测试是指在整个软件开发生命周期中通过各种软件工程技术尽量早的完成各种软件测试任务的一种思想。IBM Rational主要在以下三个方面为我们提供的尽早测试的软件工程技术： </div><div>首先，软件的整个测试生命周期是与软件的开发生命周期基本平齐的过程，如图三所示，即当需求分析基本明确后我们就应该基于需求分析的结果和整个项目计划来进行软件的测试计划；伴随着分析设计过程同时应该完成测试用例的设计；当软件的第一个发布出来后，测试人员要马上基于它进行测试脚本的实现，并基于测试计划中的测试目的执行测试用例，对测试结果进行评估报告。这样，我们可以通过各种测试指标实时监控项目质量状况，提高对整个项目的控制和管理能力。<b></b></div><div align="center">  <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114062.JPG" /></div><div align="center"><b>图三、软件测试生命周期</b></div><div>    其次，通过迭代是软件开发把原来的整个软件开发生命周期分成多个迭代周期，在每个迭代周期都进行测试，这样在很大程度上提前了软件系统测试发生的时间，这可以在很大程度上降低项目风险和项目开发成本。 </div><div>    最后，IBM Rational的尽早测试成功经验还体现在它扩展了传统软件测试阶段从单元测试、集成测试到系统测试、验收测试的划分，将整个软件的测试按阶段划分成开发员测试和系统测试两个阶段，如图四所示，它把软件的测试责无旁贷地扩展到整个开发人员的工作过程。通过提前测试发生的时间来尽早地提高软件质量、降低软件测试成本。</div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114063.JPG" /></div><div align="center"> <b>图四、IBM Rational测试方法对测试阶段的划分</b></div><h3>2.2 成功经验二：连续测试</h3><div>    测试成功经验连续测试是从迭代式软件开发模式得来。在迭代化的方法中，我们将整个项目的开发目标划分成为一些更易于完成和达到的阶段性小目标，这些小目标都有一个定义明确的阶段性评估标准。迭代就是为了完成一定的阶段性目标而从事的一系列开发活动，在每个迭代开始前都要根据项目当前的状态和所要达到的阶段性目标制定迭代计划，而且每个迭代中都包括需求、设计、编码、集成、测试等一系列的开发活动，都会增量式集成一些新的系统功能。通过每次迭代，我们都产生一个可运行的系统，通过对于这个可运行系统的测试来评估该次迭代有没有达到预定的迭代目标，并以此为依据来制定下一次迭代的目标。由此可见，在迭代式软件开发的每个迭代周期我们都会进行软件测试活动，整个软件测试的完成是通过每个迭代周期不断增量测试和回归测试实现的。 </div><div>    如图五所示，采用连续测试的软件成功测试经验，不但能够持续的提高软件质量、监控质量状态，同时也使系统测试的尽早实现成为可能。从而有效的控制开发风险、减低测试成本和保证项目进度。</div><div align="center"> <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114064.JPG" /></div><div align="center"> <b>图五、IBM Rational测试成功经验：连续测试</b></div><h3>2.3 成功经验三：自动化测试</h3><div>    在整个软件的测试过程中要想实现尽早测试、连续测试，可以说完善的测试流程是前提，自动化测试工具是保证。IBM Rational的自动化测试成功经验主要是指利用软件测试工具提供完整的软件测试流程的支持和各种测试的自动化实现。 </div><div>    为了使各种软件测试团队更好地进行测试，IBM Rational在提供了测试成功经验之外，还为我们提供了一整套的软件测试流程和自动化测试工具，使软件测试团队能够从容不迫地完成整个测试任务。 </div><h2><b>3. IBM Rational</b><b>软件自动化测试工具</b></h2><div>    在IBM Rational的软件自动化测试解决方案中，我们一直致力追求的一点就是测试工具和测试成功经验、测试流程的统一，上面阐述的每个测试成功经验和测试流程环节，我们都可以通过Rational的测试工具以及工具间的完美集成辅助完成。 </div><div>    IBM Rational的软件自动化测试工具如图七所示，其最大特点是通过一套完整的软件测试工具在实现测试管理流程的基础上，同时涵盖了功能测试、性能测试和可靠性测试的自动化测试需求，通过工具之间的集成完成测试资源的整合，帮助测试团队实现IBM Rational的测试成功经验。</div><div align="center"> <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114065.JPG" /></div><div align="center"> <b>图七、IBM Rational自动化测试工具</b></div><h2><b>4. IBM Rational</b><b>软件测试流程</b></h2><div>    IBM Rational的软件测试流程，不仅仅包含完整的软件测试流程框架，同时还提供了内嵌软件测试流程的测试管理工具的支持。 </div><h3>4.1 IBM Rational软件测试流程框架</h3><div>    IBM Rational Unified Process(以下简称RUP)提供了一套完整的测试流程框架，软件测试团队可以以它为基础，根据业务发展的实际要求，定制符合团队使用的软件测试流程。RUP中的软件测试流程如图八所示：</div><div align="center"> <img height="404" alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114066.JPG" width="345" /></div><div align="center"> <b> </b><b>图八、IBM Rational 软件测试流程</b></div><div>    每个测试环节的具体阐述如下： </div><div>    制定测试计划的目的是确定和描述要实施和执行的测试。这是通过生成包含测试需求和测试策略的测试计划来完成的。可以制定一个单独的测试计划，用于描述所有要实施和执行的不同测试类型，也可以为每种测试类型制定一个测试计划。 </div><div>    设计测试的目的是确定、描述和生成测试过程和测试用例。 </div><div>    实施测试的目的是实施（记录、生成或编写）设计测试中定义的测试过程。输出工件是测试过程的计算机可读版本，称为测试脚本。 </div><div>    执行测试的目的是确保整个系统按既定意图运行。系统集成员在各迭代中编译并链接系统。每一迭代都需要测试增加的功能，并重复执行以前版本测试过的所有测试用例（回归测试）。 </div><div>    评估测试的目的是生成并交付测试评估摘要。这是通过复审并评估测试结果、确定并记录变更请求，以及计算主要测试评测方法来完成的。测试评估摘要以组织有序的格式提供测试结果和主要测试评测方法，用于评估测试对象和测试流程的质量。 </div><h3>4.2 利用IBM Rational软件测试管理平台实现软件自动化测试流程</h3><div>    IBM Rational在RUP测试方法论的基础上构建了软件自动化测试管理平台工具TestManager，通过和测试需求管理工具RequisitePro、缺陷追踪工具ClearQuest的完美集成，实现了对整个软件测试生命周期的管理，可以帮助软件测试团队快速建立软件测试平台和测试管理流程，使软件测试团队快速拥有以下能力：</div><div><b>    TestManager</b>提供测试管理的核心平台，整合了从测试需求、测试计划、测试设计、测试实施、测试执行到测试结果分析、测试报告的自动生成等整个测试生命周期的管理活动。同时，统一组织各种Test Suite,Test Case,Test Script，方便地进行回归测试 </div><div><b>    TestManager</b>遵循RUP标准测试流程，使测试人员能够在统一的测试管理平台上、遵循统一的测试管理流程，完成对包括产品的功能性、可靠性和性能等全方位的质量测试。 </div><div>    作为一种集成解决方案，Rational TestManager与Rational 其他工具一起，提供从测试需求、到整个软件测试流程管理、缺陷追踪、测试结果评测的可追踪性，方便测试管理人员进行软件测试过程监控和有关软件质量的各种量化指标的采集、分析。 </div><h3>4.3 利用Rational软件测试工具实现软件自动化的功能和性能测试</h3><div>    IBM Rational的自动化软件测试工具的另一个特点就是：通过TestManager + Robot，在实现测试管理流程的同时，能够完成功能测试和性能测试，这会大大缩短测试团队对工具的学习过程，提高工具的易用性。 </div><h4>4.3.1 软件的自动化功能测试</h4><div>    功能测试主要围绕Windows图形界面、字符终端和Browser界面进行测试。客户端可以是VC、VB、PB、Delphi等编制的软件、各种字符终端软件或者运行浏览器Microsoft Explorer和Netscape，通过自动录制形成测试脚本实现自动化的功能/回归测试。 </div><div>    IBM Rational的功能测试解决方案的目标，是使功能性测试变得更简单、有效并可重复执行，从而快速提升软件测试团队的功能测试能力。它主要具有以下特点： </div><div>      能够方便的对各种环境(IDE)中开发的应用程序、字符终端软件，完成包括测试计划、测试设计、测试实施、测试执行和测试结果分析等全部测试流程。 </div><div>      能够方便的录制或编写各种功能测试脚本，实现自动化的功能/回归测试。 </div><div>      利用数据池方便地解决大批量数据驱动的功能测试； </div><div>      能够方便地完成分布式功能测试，可以一次测试多种测试平台； </div><div>      能够自动完成功能测试需求覆盖，确保应用程序满足产品规格说明和测试计划的每一条业务需求； </div><div>    为了提高对Java和Web开发的应用软件功能测试的支持，IBM Rational的功能测试的解决方案还提供了IBM Rational XDE Tester，它主要用于在Windows和Linux平台上基于Java和Web开发的应用软件的功能测试，尤其适用于使用IBM WebSphere Studio、Eclipse和 Rational XDE Developer等开发平台进行软件开发的团队。它的三个最重要的自动化测试的特性是： </div><div>    专业的自动化测试脚本创建环境：测试平台扩展嵌入到IBM WebSphere Studio、Eclipse和 Rational XDE Developer开发平台，统一了测试和开发环境； </div><div>    测试脚本在回归测试方面具有很强的灵活性和可维护性：ScriptAssure是 IBM提供的针对 Java 和Web应用程序测试时的一组高级能力, 它能够帮助创建灵活、可重用的测试脚本，大大提高了脚本的可维护性。对象地图（Object mapping）提供了核心对象库，测试人员可以基于它进行被测程序中被测对象的修改和验证，并根据修改自动更新所有相关的测试脚本。可以自己设置被测程序中用来表示被测对象的对象属性集，这使得少量对象属性的变化不会影响测试脚本的正常回放。同时，可以创建针对动态数据的验证点，通过正则表达式更容易对动态的数据进行验证； </div><div>    强大的测试脚本语言：使用标准的测试脚本语言Java，可以充分利用工业标准语言的优点进行测试。 </div><h4>4.3.2 软件的自动化压力测试</h4><div>    IBM Rational压力测试工具主要目标是快速提升软件测试团队的性能测试能力，包括负载测试，压力测试等等。Rational性能测试解决方案可以方便灵活地模拟各种负载模型，完成以查找响应时间瓶颈、系统吞吐量、最大并发虚拟用户等为目地的各种要求的性能测试。包括： </div><div>利用TestStudio可以完成对压力测试的测试需求、测试计划、测试设计、测试实施、测试执行和测试结果分析等整个测试生命周期的管理； </div><div>利用TestStudio中的Test Suite，能够方便的完成压力测试对负载模型的各种要求，包括： </div><div>      建立复杂的Scenario模型； 准确模拟复杂负载的时序控制； </div><div>      基于Transaction的负载分析； </div><div>      建立面向目标的事务负载模型，例如：100事务/秒 </div><div>      响应时间精确到1/100秒； </div><div>      支持不同虚拟用户的不同IP地址模拟； </div><div>      准确的波特率模拟； </div><div>      利用TestStudio，能够方便地完成压力测试过程中各种指标的观测； </div><div>      利用TestStudio，能够方便地完成压力测试结果分析和各种结果报告的生成； </div><h3>4.4 利用IBM Rational软件测试工具实现软件自动化的可靠性测试和单元测试</h3><div>    IBM Rational软件测试工具PurifyPlus主要用于帮助软件测试团队在短期内快速提升单元测试能力和可靠性测试能力的团队，其主要特点是：见效快、使用方便、门槛低、培训时间短，开发人员2小时内即可完全掌握该软件进行测试。PurifyPlus包含Rational Purify、Quantify和PureCoverage三个产品，主要功能如下： </div><div><b>    Rational Purify</b>主要针对软件开发过程中难于发现的内存错误、运行时错误。在软件开发过程中： </div><div>      自动地发现错误； </div><div>      准确地定位错误； </div><div>      提供完备的错误信息； </div><div>    从而减少了调试时间， 帮助开发团队找出缺陷并最终形成高质量的产品，使您能真正做到更快地发布更好的软件。 </div><div><b>    Rational Quantify</b>主要解决软件开发过程中的性能问题。在软件开发过程中： </div><div>方便地查明并显示应用程序的性能瓶颈，从而确保整个应用程序的质量和性能。</div><div><b>    Rational Quantify</b> 给开发团队提供了一个性能数据的全局图形化视图，使您从开发流程的开头起就注重性能问题，真正做到更快地发布更好的软件。 </div><div><b>    Rational PureCoverage</b>提供应用程序的测试覆盖率信息。在软件开发过程中： </div><div>    能自动找出代码中未经测试的代码，保证代码测试覆盖率； </div><div>    帮助开发人员确保开发质量，并使质量保证人员能够评价测试工作的效果。 </div><div>    可针对每次测试生成全面的覆盖率报告，可以归并程序多次运行所生成的覆盖数据，并自动比较测试结果，以评估测试进度。 </div><h3>4.5 利用Rational软件测试工具实现实时系统软件的自动化测试</h3><div>    IBM Rational Test Realtime主要适合于开发实时系统和具有较高要求的非实时系统的软件开发，可以帮助测试团队快速建立起单元测试、集成测试、系统测试等测试能力。它提供的自动测试（包括单元测试、集成测试、系统测试）、代码覆盖、内存泄漏检查、性能分析以及UML跟踪等重要特性，帮助软件测试团队在系统崩溃前发现并修复软件缺陷。其主要功能特性如下： </div><div>    自动生成测试脚本模板和测试程序（包括驱动模块和桩模块）：通过源代码分析，自动生成在目标上运行所需的测试脚本和测试程序。除了利用测试脚本指定测试数据外，不需要手工编码。而且在测试报告中，测试结果和源代码相联，简化代码修改； </div><div>    通过代码自动插针进行代码覆盖率、内存泄漏以及性能瓶颈进行分析，并和测试用例建立关联； </div><div>通过把测试结果和观察结果和被测代码关联，把测试作为开发的一个重要部分，真正实现边开发边测试，边测试边观察，边观察边评估这一集成的开发测试过程； </div><div>    通用的、低开销而且易于移植的目标适配技术（Target Deployment Port，TDP）：利用TDP技术，使得测试与编译器、连接器、调试器以及目标结构无关，实现了跨多开发环境、多目标结构； </div><div>模型观察和代码覆盖相集成：利用UML Trace功能观察应用运行状态，并通过状态机模型覆盖实现测试用例和模型的关联，充分利用了模型和代码级测试的长处； </div><div>    与ClearCase、ClearQuest和RUP集成：在同一集成环境中完成对测试文件进行版本控制，提交和修改变更请求；</div><h2><b>5. </b><b>小结</b></h2><div align="center"> </div><div align="center"><b>图九、IBM Rational的软件自动化测试解决方案</b></div><div>    IBM Rational主要为软件测试团队提供测试成功经验、自动化测试工具和全方位的咨询服务三方面的支持，如图八所示，最终实现：一个测试团队，基于一套完整的软件测试流程，使用一套完整的自动化软件测试工具，完成全方位的软件质量验证，这正是IBM Rational测试解决方案的精髓和终极目标。 </div><div> </div><div><b>    作者简介:</b></div><div>    Golden Ning，现为IBM中国有限公司软件部 Rational 高级技术专员。在软件工程技术方面，有着多年的实践经验，对于 Rational 的软件工程技术有着深刻的理解。目前主要专注于软件测试技术、面向对象的可视化建模和软件配置管理等技术的研究。在此之前，主要从事电信交换机、电子商务软件分析设计和开发工作。</div></div></b>
				</span>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20859.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 16:10 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickTest使用正则表达式 </title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20848.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 20 Dec 2006 06:41:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20848.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20848.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20848.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20848.html</trackback:ping><description><![CDATA[QuickTest使用正则表达式 <br /><blockquote class="indent"><a name="wp799340"></a><h2 class="pn2Heading">正则表达式语法 </h2><a name="wp799346"></a><p class="pRegtext">通过正则表达式，QuickTest 可以使用不同的值来标识对象和文本字符串。可以在下列三种情况下使用正则表达式：一是定义对象属性和参数方法时；二是对某步骤进行参数化时；三是使用不同值创建检查点时。 </p><a name="wp799356"></a><p class="pRegtext">正则表达式是指定复杂搜索短语的字符串。使用特殊字符，如句点 (.)、星号 (*)、插字号 (^) 和方括号 ([ ])，可以定义搜索条件。有关正则表达式语法的详细信息，请参阅《QuickTest Professional 用户指南》。 </p></blockquote><br /><blockquote class="indent"><a name="wp799360"></a><h2 class="pn2Heading">使用正则表达式 </h2><a name="wp799362"></a><p class="pRegtext">在本教程中，将针对一个日期文本字符串创建文本检查点，该字符串随选定的航班日期而变化。可以将该日期定义为正则表达式，这样，检查点将检查捕获的文本字符串是否与期望的格式匹配，而不是检查准确的文本。 </p><a name="wp799364"></a><p class="pRegtext">为此，您将使用一个正则表达式创建文本检查点，该表达式将与已定义范围内的某一单个字符相匹配。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp799371"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">启动 QuickTest </b><span style="FONT-WEIGHT: normal"><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" /></span><b style="FONT-WEIGHT: bold">并打开“Recording”测试。</b></li></div><a name="wp799393"></a><p class="pIndent">如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </p><div class="pSmartBullet2"><ul class="pSmartBullet2"><a name="wp799395"></a><div class="pSmartBullet2"><li>如果“欢迎使用”窗口打开，请单击“打开现有测试”。 </li></div><a name="wp799402"></a><div class="pSmartBullet2"><li>如果 QuickTest 打开时未显示“欢迎使用”窗口，请选择<br />“文件”&gt;“打开”，或单击“打开”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_open_button.gif" border="0" /> 。 </li></div><a name="wp799404"></a><p class="pIndent">在“打开测试”对话框中，找到并选择“Recording”测试，然后单击“打开”。 </p></ul></div><a name="wp799406"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将该测试另存为“RegExpression”。</b></li></div><a name="wp799408"></a><p class="pIndent">选择“文件”&gt;“另存为”。将该测试另存为“<span class="cExample">RegExpression</span>”。 </p><a name="wp799410"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">确认是否已启用“Active Screen”选项。</b></li></div><a name="wp799417"></a><p class="pIndent">如果在 QuickTest 窗口底部看不到 Active Screen，请单击“Active Screen”按钮<span style="FONT-WEIGHT: bold"><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_display_views.gif" border="0" /></span>或选择“查看”&gt;“Active Screen”。 </p><a name="wp799419"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">选择要为其创建检查点的文本。</b></li></div><a name="wp799421"></a><p class="pIndent">在关键字视图中，单击 (+) 展开“Welcome:Mercury:Tours”，然后单击“Select a Flight:Mercury”页。该页将显示在 Active Screen 中。 </p><a name="wp799423"></a><p class="pIndent">在 Active Screen 中向上滚动，然后突出显示出发航班 New York to San Francisco (<span class="cExample">12/29/2004</span>)。右键单击突出显示的字符串，然后选择“插入文本检查点”。将打开“文本检查点属性”对话框。 </p><a name="wp799425"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">对于要检查的文本，输入正则表达式。</b></li></div><a name="wp799429"></a><p class="pIndent">在“已检查的文本”区域中，单击“常量值选项”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_const_val_options.gif" border="0" /> 。将打开“常量值选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/constant_value_options.gif" border="0" /><br /><br /></p><a name="wp799435"></a><p class="pIndent_after">在“值”框中，用 <span class="cExample">[0-1][0-9]/[0-3][0-9]/200[0-9]</span> 替换当前日期。这将指示 QuickTest 检查选定文本中的每个字符与正则表达式定义的数字范围格式是否匹配。该表达式检查以下格式：MM/DD/200Y。 </p><a name="wp799437"></a><p class="pIndent">选择“正则表达式”复选框。将出现一个消息框，提示您在每个特殊字符之前插入反斜杠字符。单击“否”。 </p><a name="wp799445"></a><p class="pNote">注意： 单击“是”会使 QuickTest 将特殊字符 (<span class="cExample">[</span>)、(<span class="cExample">-</span>) 和 (<span class="cExample">]</span>) 作为文本字符而不是正则表达式处理。 </p><a name="wp799448"></a><p class="pIndent">单击“确定”接受其他默认设置，然后关闭“常量值选项”对话框。将打开“文本检查点属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/regular%20expression.gif" border="0" /><br /><br /></p><a name="wp799450"></a><p class="pIndent_after">单击“确定”关闭“文本检查点属性”对话框。 </p><a name="wp799456"></a><p class="pIndent">QuickTest 将向您的测试中添加文本检查点。该检查点在关键字视图中的“Select a Flight:Mercury”页显示为检查操作。 </p><a name="wp799458"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">保存测试。</b></li></div><a name="wp799461"></a><p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp799469"></a><h2 class="pn2Heading">使用正则表达式运行并分析测试 </h2><a name="wp799471"></a><p class="pRegtext">在本练习中，您将运行测试并对检查点结果进行检查。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp799473"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">运行“RegExpression”测试。</b></li></div><a name="wp799476"></a><p class="pIndent">单击“运行”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> ，或选择“测试”&gt;“运行”。将打开“运行”对话框。 </p><a name="wp799478"></a><p class="pIndent">选择“新建运行结果文件夹”并接受默认的结果文件夹名。 </p><a name="wp799480"></a><p class="pIndent">单击“确定”。当完成测试运行时，将打开“测试结果”窗口。 </p><a name="wp799482"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">对检查点结果进行检查。</b></li></div><a name="wp799484"></a><p class="pIndent">在结果树中，单击 (+) 展开“Test RegExpression Summary”&gt;“RegExpression Iteration 1 (Row 1)”&gt;“Action1 Summary”&gt;“Welcome: Mercury Tours”&gt;“Select a Flight:Mercury” </p><a name="wp799487"></a><p class="pIndent">选择“检查点`[0-1][0-9]/[0-3][0-9]/200[0-9]'”。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/resreg_exp.gif" border="0" /><br /><br /></p><a name="wp799489"></a><p class="pIndent">由于文本以正则表达式指定的格式显示，因此该检查点通过。 </p><a name="wp799491"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">退出“测试结果”窗口。</b></li></div><a name="wp799495"></a><p class="pIndent">选择“文件”&gt;“退出”关闭“测试结果”窗口。 </p></ol></div></blockquote><br /><font face="Arial" size="1"><font style="BACKGROUND-COLOR: #e0dfe3" size="3">QuickTest</font>将测试拆分为多操作 <br /><blockquote class="indent"><a name="wp77723"></a><h2 class="pn2Heading">使用多操作 </h2><a name="wp77725"></a><p class="pRegtext">如果检查一下在以前课程中创建的某个测试，您将发现该测试可拆分为几个不同的过程： </p><div class="pSmartBullet1"><ul class="pSmartBullet1"><div class="pSmartBullet2"><ul class="pSmartBullet2"><a name="wp77727"></a><div class="pSmartBullet2"><li>登录到 Mercury Tours 站点。</li></div><a name="wp77729"></a><div class="pSmartBullet2"><li>提交航班订单。</li></div><a name="wp77731"></a><div class="pSmartBullet2"><li>注销。</li></div></ul></div></ul></div><a name="wp77741"></a><p class="pRegtext">假设您要为五个不同的航班订单运行测试。正如我们在<a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/parameterizing_tests.htm">参数化测试</a>中所见的，您可以对测试进行参数化，使其可以使用五组不同的数据运行五次测试。还可以组织测试，仅使第二个过程运行五次测试，模拟一个用户登录、预定五个航班以及注销的过程。可通过将测试拆分为对不同操作的调用，实现此目的。 </p><a name="wp77743"></a><p class="pRegtext">要将测试拆分成对不同操作的调用，您可以插入对新操作的调用、将现有操作拆分为对两个操作的调用、插入一个对现有操作副本的调用或插入一个对现有操作的调用。 </p><a name="wp77745"></a><p class="pRegtext">可以在录制会话期间或之后将对操作的调用插入测试中。使用下列菜单选项或工具栏按钮之一，向测试添加操作： </p><div class="pSmartBullet1"><ul class="pSmartBullet1"><a name="wp77748"></a><div class="pSmartBullet1"><li>“插入”&gt;“调用新建操作”，或使用“插入对新建操作的调用”按钮。 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_new_action.gif" border="0" /></li></div><a name="wp77751"></a><div class="pSmartBullet1"><li>“步骤”&gt;“拆分操作”，或使用“拆分操作”按钮。 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_split_action.gif" border="0" /></li></div><a name="wp77753"></a><div class="pSmartBullet1"><li>“插入”&gt;“调用操作副本”，或右键单击某项操作并选择“插入对操作副本的调用”。</li></div><a name="wp77755"></a><div class="pSmartBullet1"><li>“插入”&gt;“调用现有操作”，或右键单击某项操作并选择“插入对现有操作的调用”。</li></div></ul></div></blockquote><br />新建操作 <br /><blockquote class="indent"><a name="wp77793"></a><h4 class="pn3Heading">录制测试 </h4><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp77800"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">启动 QuickTest</b><span style="FONT-WEIGHT: normal"><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" /></span><b style="FONT-WEIGHT: bold">并打开新测试。</b></li></div><a name="wp77814"></a><p class="pIndent">有关详细信息，请参阅<a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/recording_tests.htm"></a><a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-03-3.htm">录制测试</a>中的步骤 <a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-03-3.htm#wp214451">1</a>。 </p><a name="wp77816"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">开始录制 Mercury Tours 网站。</b></li></div><a name="wp77822"></a><p class="pIndent">在后面的步骤中，您需要录制一个与<a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/recording_tests.htm">录制测试</a>课程中所录制的测试相似的测试。但是，该测试为了优化多操作测试的测试，而设计得有些不同。 </p><a name="wp77824"></a><p class="pIndent">请确认已关闭所有的 Web 浏览器。 </p><a name="wp77828"></a><p class="pIndent">选择“测试”&gt;“录制”，或单击“录制”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_record.gif" border="0" /> 。将打开“录制和运行设置”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/record_run_set_web.gif" border="0" /><br /><br /></p><div class="pSmartBullet2"><ul class="pSmartBullet2"><a name="wp77830"></a><div class="pSmartBullet2"><li>在“Web”选项卡中，选择“录制或运行会话开始时打开以下浏览器”。</li></div><a name="wp77836"></a><p class="pIndent_wide">从“类型”列表中选择浏览器，并确认“地址”框中的 URL 为 <span class="cURL_example"><a href="http://newtours.mercuryinteractive.com&quot;%20target=&quot;_blank/" target="_blank"></a><a href="http://newtours.mercuryinteractive.com/" target="_blank">http://newtours.mercuryinteractive.com</a></span>。 </p><a name="wp77838"></a><p class="pIndent_wide">请确认已选中“不在已经打开的浏览器上录制和运行”和“当测试关闭时关闭浏览器”选项。 </p><a name="wp77840"></a><div class="pSmartBullet2"><li>在“Windows 应用程序”选项卡中，确认已选中“在以下应用程序(会话开始时打开的)上录制并运行”，而且没有列出任何应用程序。 </li></div><a name="wp77842"></a><p class="pIndent_after">单击“确定”。 </p><a name="wp77844"></a><p class="pIndent">QuickTest 开始进行录制，浏览器将打开 Mercury Tours 网站。 </p></ul></div><a name="wp77846"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">签入 Mercury Tours 网站。 </b></li></div><a name="wp77848"></a><p class="pIndent">在“User Name”和“Password”框中，键入在 Mercury Tours 中注册过的名称和密码。 </p><a name="wp77850"></a><p class="pIndent">单击“Sign-In”。 </p><a name="wp77852"></a><p class="pIndent">将打开“Flight Finder”页。 </p><a name="wp77854"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">输入航班详细信息。</b></li></div><a name="wp77856"></a><p class="pIndent">更改下列选项： </p><div class="pSmartBullet2"><ul class="pSmartBullet2"><a name="wp77858"></a><div class="pSmartBullet2"><li>Departing From:<b style="FONT-WEIGHT: bold">New York</b></li></div><a name="wp77860"></a><div class="pSmartBullet2"><li>On:<b style="FONT-WEIGHT: bold">Dec 29</b></li></div><a name="wp77862"></a><div class="pSmartBullet2"><li>Arriving In:<b style="FONT-WEIGHT: bold">San Francisco</b></li></div><a name="wp77864"></a><div class="pSmartBullet2"><li>Returning:<b style="FONT-WEIGHT: bold">Dec 31</b></li></div><a name="wp77866"></a><p class="pIndent">单击“CONTINUE”接受其他默认选项。将打开“Select Flight”页。 </p></ul></div><a name="wp77868"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">选择一个航班。</b></li></div><a name="wp77870"></a><p class="pIndent">单击“CONTINUE”接受其他默认航班选项。将打开“Book a Flight”页。 </p><a name="wp77872"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">输入必需的乘客信息和购买信息。</b></li></div><a name="wp77874"></a><p class="pIndent">在“Passengers”和“Credit Card”部分输入必需的信息（带有红色文本标签的字段）。 </p><a name="wp77876"></a><p class="pIndent">在该页的底部，单击“SECURE PURCHASE”。将打开“Flight Confirmation”页。 </p><a name="wp77878"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将浏览器返回至“Flight Finder”页。</b></li></div><a name="wp77880"></a><p class="pIndent">在“Flight Confirmation”页的底部，单击“BACK TO FLIGHTS”按钮。将打开“Flight Finder”页。 </p><a name="wp77882"></a><p class="pIndent">通过结束在“Flight Finder”页上的录制，可以在同一页面上创建开始和结束操作，以便您可以根据需要多次调用操作。 </p><a name="wp77884"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">停止录制。</b></li></div><a name="wp77891"></a><p class="pIndent">在 QuickTest 中，单击“停止” <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_stop.gif" border="0" /> 停止录制过程。 </p><a name="wp77893"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将测试另存为 ActionA。</b></li></div><a name="wp77895"></a><p class="pIndent">选择“文件”&gt;“另存为”。将测试另存为 <span class="cExample">ActionA</span>。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp77903"></a><h4 class="pn3Heading">将测试拆分为两项操作 </h4><a name="wp77905"></a><p class="pRegtext">您的测试当前包含两个主要进程：签入和购买机票，因此将测试拆分为不同的操作非常有意义。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp77907"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">选择您希望第二个操作开始时所在的页面。 </b></li></div><a name="wp77909"></a><p class="pIndent">在关键字视图中，单击 (+) 展开“Action1”&gt;“Welcome:Mercury Tours”。 </p><a name="wp77911"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将测试拆分为两个操作。</b></li></div><a name="wp77915"></a><p class="pIndent">选择第一个“Find a Flight:Mercury”页并选择“步骤”&gt;“拆分操作”，或单击“拆分操作”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_split_action.gif" border="0" /> 。将打开“Split Action”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Split_Action.gif" border="0" /><br /><br /></p><a name="wp77917"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">输入这两项操作的名称和描述。</b></li></div><a name="wp77919"></a><p class="pIndent">在“第一个操作”中的“名称”框中键入：<span class="cExample">Sign_in</span>。 </p><a name="wp77921"></a><p class="pIndent">在“第一个操作”中的“描述”框中键入：<span class="cExample">Enters user name and password to sign in</span>。 </p><a name="wp77923"></a><p class="pIndent">在“第二个操作”中的“名称”框中键入：<span class="cExample">FlightOrder</span>。 </p><a name="wp77925"></a><p class="pIndent">在“第二个操作”中的“描述”框中键入：<span class="cExample">Chooses and purchases a flight</span>。 </p><a name="wp77927"></a><p class="pIndent">单击“确定”关闭“拆分操作”对话框，并接受其他默认选项。这两项操作将显示在关键字视图中。 </p><a name="wp77929"></a><p class="pIndent">选择“视图”&gt;“全部展开”检查每项操作的内容。注意，“FlightOrder”操作是在“Find a Flight:Mercury”页中开始和结束的操作。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp77933"></a><h4 class="pn3Heading">插入对新建操作的调用 </h4><a name="wp77935"></a><p class="pRegtext">现在您将插入一个对新操作的调用，并将录制返回 Mercury Tours 主页的步骤，以便整个测试在同一页面中开始和结束。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp77937"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">插入 ReturnHome 操作。</b></li></div><a name="wp77941"></a><p class="pIndent">选择“插入&gt;“调用新建操作”或单击“插入对新建操作的调用”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_new_action.gif" border="0" /> 。将打开“插入对新建操作的调用”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Insert_New_Action.gif" border="0" /><br /><br /></p><a name="wp77943"></a><p class="pIndent_after">在“名称”框中输入 <span class="cExample">ReturnHome</span>，确认选择了“测试结尾处”，并单击“确定”。将关闭对话框，并将 ReturnHome 操作添加到测试的末尾。 </p><a name="wp77945"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">为录制准备应用程序。</b></li></div><a name="wp77947"></a><p class="pIndent">确认 Web 浏览器已打开“Flight Finder”页。 </p><a name="wp77953"></a><p class="pIndent">如果未打开浏览器，请在 Mercury Tours 站点 (<span class="cURL_example"><a href="http://newtours.mercuryinteractive.com&quot;%20target=&quot;_blank/" target="_blank"></a><a href="http://newtours.mercuryinteractive.com/" target="_blank">http://newtours.mercuryinteractive.com</a></span>) 中打开并签入。将打开“Flight Finder”页。 </p><a name="wp77959"></a><p class="pIndent">将应用程序放置在桌面上，以便可以同时看到 QuickTest 和 Web 浏览器。 </p><a name="wp77961"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">更改录制和运行设置。</b></li></div><a name="wp77963"></a><p class="pIndent">当前已设置了录制和运行设置，因此，每次开始录制测试时，即打开一个新的浏览器。但是，由于您想要在已打开并准备好的浏览器中录制步骤，因此您需要在开始录制之前更改录制和运行设置。 </p><a name="wp77970"></a><p class="pIndent">在 QuickTest 中，选择“测试”&gt;“录制和运行设置”。将打开“录制和运行设置”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/record_run_set_web.gif" border="0" /><br /><br /></p><a name="wp77972"></a><p class="pIndent_after">在“Web”选项卡中，选择“在任何打开的 Web 浏览器上录制和运行测试”并单击“确定”。 </p><a name="wp77974"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">录制 ReturnHome 操作。</b></li></div><a name="wp77976"></a><p class="pIndent">在关键字视图中，选择新的 ReturnHome 操作图标。 </p><a name="wp77979"></a><p class="pIndent">选择“测试”&gt;“录制”，或单击“录制”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_record.gif" border="0" /> 。 </p><a name="wp77981"></a><p class="pIndent">单击“Flight Finder”页左侧的“Home”导航链接。将打开 Mercury Tours 主页。 </p><a name="wp77988"></a><p class="pIndent">在 QuickTest 中，单击“停止” <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_stop.gif" border="0" /> 停止录制过程。 </p><a name="wp77990"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将“录制和运行设置”还原为原始设置。</b></li></div><a name="wp78000"></a><p class="pIndent">您为了录制 ReturnHome 操作而更改了录制和运行设置，但此更改也将影响 QuickTest 运行测试的方式。如果您希望在运行测试时 QuickTest 新打开一个浏览器访问 Mercury Tours 主页，则需要重新应用原始设置。 </p><a name="wp78002"></a><p class="pIndent">选择“测试”&gt;“运行和录制设置”。将打开“录制和运行设置”对话框。 </p><a name="wp78008"></a><p class="pIndent">在“Web”选项卡中，选择“录制或运行会话开始时打开以下浏览器”。确认 <span class="cURL_example"><a href="http://newtours.mercuryinteractive.com&quot;%20target=&quot;_blank/" target="_blank"></a><a href="http://newtours.mercuryinteractive.com/" target="_blank">http://newtours.mercuryinteractive.com</a></span> 显示在“地址”框中并单击“确定”。 </p><a name="wp78010"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">保存测试。</b></li></div><a name="wp78013"></a><p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp78017"></a><h4 class="pn3Heading">将操作设置为可重用操作 </h4><a name="wp78019"></a><p class="pRegtext">可重用操作类似于编程中的函数。如果您需要将一个过程包含在几个测试中，请录制、修改并增强此过程的步骤并将它们保存在可重用操作中。然后即可从其他测试中调用该操作，而不必每次都进行录制、修改和增强这些同样的步骤。 </p><a name="wp78021"></a><p class="pRegtext">要从另一个测试中调用某项操作，必须在存储该操作所用的测试中将其设置为可重用操作。您在本课中创建的“Sign_in”和“ReturnHome”操作几乎可以应于在 Mercury Tours 站点上创建的所有测试，因此将其设为可重用操作非常有意义。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp78025"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将 Sign_in 变为可重用操作。</b></li></div><a name="wp78028"></a><p class="pIndent">在关键字视图中，右键单击“Sign_in”操作并选择“操作属性”。将打开“操作属性”对话框。选择“可重用操作”复选框并单击“确定”。如果显示消息框，请阅读消息，然后单击“不再显示该对话框”，<b style="FONT-WEIGHT: bold"></b>再单击“确定”。操作图标更改为可重用操作图标 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_action_reusable.gif" border="0" /> 。 </p><a name="wp78032"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">查看 Sign_in 操作的详细信息。</b></li></div><a name="wp78034"></a><p class="pIndent">注意，您将不再能够在关键字视图中展开“Sign_in”操作。 </p><a name="wp78037"></a><p class="pIndent">如果此前关键字视图中并未显示操作列表，则操作列表将在您将操作转换为可重用操作之后进行显示。操作列表将显示测试中所有可重用操作和外部操作的列表。 <br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/ActionList.gif" border="0" /><br /><br /></p><a name="wp78039"></a><p class="pIndent_after">通过从操作列表中选择“Sign_in”，查看“Sign_in”操作的详细信息。将显示“Sign_in”操作的详细信息。 </p><a name="wp78041"></a><p class="pIndent">在操作列表中，选择“测试流程”，将关键字视图中的测试返回到主流程。 </p><a name="wp78043"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将 ReturnHome 变为可重用操作。</b></li></div><a name="wp78053"></a><p class="pIndent">为 ReturnHome 操作重复步骤 <a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-09-07.htm#wp78025">1</a> 和 <a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-09-07.htm#wp78032">2</a>。 </p><a name="wp78055"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">保存测试。</b></li></div><a name="wp78058"></a><p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp78066"></a><h2 class="pn2Heading">插入现有操作 </h2><a name="wp78068"></a><p class="pRegtext">在设计一组测试时，您可能会发现每个测试都要求一个或多个同样的活动，例如签入。一旦创建了操作并使用一个测试将其保存，您即可将对现有操作副本的调用或对现有操作的调用插入到其他测试中。 </p><a name="wp78070"></a><p class="pRegtext">在插入对现有操作副本的调用时，可以对复制的操作进行更改，您所做的更改不会影响其他测试，也不会受到其他测试的影响。但是，对现有操作的调用在调用测试中具有只读属性。只能在存储它们所使用的测试中对其进行修改。通过对现有操作的调用，您可以从多个测试中调用同一个操作，这使得维护测试变得很容易，因为当您的应用程序发生更改时，只需更新使用原始测试存储的现有操作。 </p><a name="wp78072"></a><p class="pRegtext">在后面的练习中，您将新建一个类似于“ActionA”测试的测试，所不同的是，“Sign_in”和“ReturnHome”操作是外部操作（对使用其他测试存储的现有操作的调用），而且对“FlightOrder”操作进行了一点修改。 </p></blockquote><br /><blockquote class="indent"><a name="wp78215"></a><h2 class="pn2Heading">参数化操作 </h2><a name="wp78221"></a><p class="pRegtext">看一下 QuickTest 窗口底部的数据表，在 ActionB 测试中您将发现四个选项卡：“Global”“Copy of FlightOrder”、“Sign_in [ActionA]”以及“ReturnHome [ActionA]”。 </p><a name="wp78223"></a><p class="pNote">注意： 如果没有显示数据表，请选择“查看”&gt;“数据表”以显示数据表。 </p><a name="wp78225"></a><p class="pRegtext">“Global”选项卡是一个数据表，其中的数据用于整个测试。如果“Global”表中显示有五行数据，则测试将运行五次。此外，可以使用相关操作表为每个操作创建数据集。如果使用操作参数对步骤进行参数化，并在相应的工作表中输入五行数据，则此操作将在每个测试循环中运行五次。 </p><a name="wp78227"></a><p class="pNote">注意： “Sign_in [ActionA]”和“ReturnHome [ActionA]”数据表显示为灰色，无法进行编辑，因为每一个数据表都属于相应调用的操作，因此仅可以从所调用操作的原始测试进行编辑。 </p><a name="wp78229"></a><p class="pRegtext">在本部分中，您将为“FlightOrder”操作创建一个数据集，以检查应用程序如何在单个用户会话中处理多个订单。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp78231"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">打开 </b><b style="FONT-WEIGHT: bold">ActionB</b><b style="FONT-WEIGHT: bold"> 测试。</b></li></div><a name="wp78233"></a><p class="pIndent">如果尚未打开“ActionB”测试，请选择“文件”&gt;“打开”，浏览至“ActionB”。单击“打开”。 </p><a name="wp78237"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">选择要参数化的步骤。</b></li></div><a name="wp78239"></a><p class="pIndent">单击 (+) 展开“Copy of FlightOrder”&gt;“Welcome:Mercury Tours”&gt;“Find a Flight:Mercury”。 </p><a name="wp78243"></a><p class="pIndent">在关键字视图的“toPort”行中，单击“值”单元格，再单击参数化图标 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_param.gif" border="0" /> 。将打开“值配置选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/value_config2.gif" border="0" /><br /><br /></p><a name="wp78247"></a><p class="pIndent"><b style="FONT-WEIGHT: bold">输入参数信息。</b></p><a name="wp78249"></a><p class="pIndent">选择“参数”，并确认选择了“DataTable”选项。 </p><a name="wp78251"></a><p class="pIndent">在“名称”框中，键入 <span class="cExample">ArrivalCity</span>。 </p><a name="wp78253"></a><p class="pIndent">您正在专门为“Copy of FlightOrder”操作创建数据集。因此，选择“当前操作表（本地）”。单击“确定”关闭“值配置选项”对话框。 </p><a name="wp78259"></a><p class="pIndent">QuickTest 自动将“ArrivalCity”列添加到“Copy of FlightOrder”数据表并将“San Francisco”添加到“ArrivalCity”列的第一个单元格中。 </p><a name="wp78261"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">参数化其他步骤。</b></li></div><a name="wp78263"></a><p class="pIndent">一个客户在同一天飞到两个不同的地点，这不太符合逻辑，因此对出发和到达时间进行参数化非常有意义。 </p><a name="wp78269"></a><p class="pIndent">在关键字视图中，选择“fromMonth”。使用步骤 <a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-09-11.htm#wp78237">2</a> 中的过程来参数化出发日期。确保选择“值配置选项”对话框中的“当前操作表（本地）”。 </p><a name="wp78275"></a><p class="pIndent">在关键字视图中，选择<b style="FONT-WEIGHT: bold">“toMonth”。</b>使用步骤 <a href="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-09-11.htm#wp78237">2</a> 中的解释来参数化抵达日期。确保选择“值配置选项”对话框中的“当前操作表（本地）”。 </p><a name="wp78277"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">在数据表中输入参数化数据。</b></li></div><a name="wp78279"></a><p class="pIndent">在数据表中，单击“Copy of FlightOrder”选项卡。 </p><a name="wp78281"></a><p class="pIndent">在“ArrivalCity”列的第二行键入 <span class="cExample">Portland</span>。按 Enter 键。 </p><a name="wp78283"></a><p class="pIndent">在出发日期和抵达日期列的第二行键入 <span class="cExample">Oct </span>。 </p><a name="wp78285"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">将操作设置为在本地数据表中运行所有数据。</b></li></div><a name="wp78295"></a><p class="pIndent">默认情况下，QuickTest 仅运行测试中的每个操作的一个循环。您想要 QuickTest 使用“Copy of FlightOrder”选项卡中的所有数据。 </p><a name="wp78300"></a><p class="pIndent">右键单击关键字视图中的“Copy of FlightOrder”操作并选择“操作调用属性”。将打开“操作调用属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Action%20Properties_run_tab.gif" border="0" /><br /><br /></p><a name="wp78302"></a><p class="pIndent_after">选择“运行”选项卡上的“在所有行上运行”。如果打开消息框，请阅读消息，然后单击“确定”将其关闭。单击“确定”关闭“操作调用属性”对话框。 </p></ol></div><div class="pSmartList1"><ol class="pSmartList1" type="1"><a name="wp78304"></a><div class="pSmartList1"><li><b style="FONT-WEIGHT: bold">保存测试。</b></li></div><a name="wp78307"></a><p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p><a name="wp78309"></a><p class="pIndent_after">现在您已创建了一个测试，该测试可完成下列操作：签入到 Mercury Tours 站点；提交以下两个航班订单：12 月 29 日到 12 月 31 日 从 London 飞往 San Francisco 的航班和 10 月 29 日到 12 月 31 日从 London 飞往 Portland 的航班；以及通过单击“Home”链接，从系统注销。 </p></ol></div></blockquote><br /><blockquote class="indent"><a name="wp78317"></a><h2 class="pn2Heading">运行和分析多操作测试 </h2><a name="wp78319"></a><p class="pRegtext">您将运行“ActionB”测试。整个测试只运行一次，而“FlightOrder”操作将运行两次，为“Copy of FlightOrder”数据表中的每组数据运行一次。 </p><div class="pSmartListBold1"><ol class="pSmartListBold1" type="1"><a name="wp78321"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">运行 </b>ActionB<b style="FONT-WEIGHT: bold"> 测试。</b></li></div><a name="wp78323"></a><p class="pIndent">请确认已关闭所有的 Web 浏览器。 </p><a name="wp78326"></a><p class="pIndent">单击“运行” <img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> 或选择“测试”&gt; “运行”。将打开“运行”对话框。 </p><a name="wp78328"></a><p class="pIndent">选择“新建运行结果文件夹”并接受默认的结果文件夹名。 </p><a name="wp78330"></a><p class="pIndent">单击“确定”。当完成测试运行时，将打开“测试结果”窗口。 </p><a name="wp78332"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">检查测试结果。</b></li></div><a name="wp78334"></a><p class="pIndent">检查结果概要。该测试标记为“完成”。这表明测试运行中未发生任何故障（没有要“通过”的检查点）。 </p><a name="wp78337"></a><p class="pIndent">展开“测试结果”窗口中的“Test ActionB Summary”&gt;“ActionB Iteration 1 (Row 1)”。选择结果树中的“Copy of FlightOrder Summary”操作。注意，概要将显示所有两项循环的结果。<br /><br /><img hspace="0" src="mk:@MSITStore:E:\基本常用工具\quicktest\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/results%20lesson8B.gif" border="0" /><br /><br /></p><a name="wp78339"></a><div class="pSmartListBold1"><li><b style="FONT-WEIGHT: bold">关闭“测试结果”窗口。</b></li></div><a name="wp78343"></a><p class="pIndent">选择“文件”&gt;“退出”关闭“测试结果”窗口。 </p></ol></div></blockquote><br /></font><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20848.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 14:41 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20848.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>测试工具的选择和使用</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20832.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 20 Dec 2006 03:03:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20832.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20832.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20832.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20832.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">
																				<center>
																						<h4>Parasoft白盒测试工具集</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="20%">工具名</td>
																										<td width="24%">支持语言环境</td>
																										<td>简介</td>
																								</tr>
																								<tr>
																										<td>Jtest</td>
																										<td>Java</td>
																										<td>代码分析和动态类、组件测试</td>
																								</tr>
																								<tr>
																										<td>Jcontract</td>
																										<td>Java</td>
																										<td>实时性能监控以及分析优化</td>
																								</tr>
																								<tr>
																										<td>C++ Test</td>
																										<td>C,C++</td>
																										<td>代码分析和动态测试</td>
																								</tr>
																								<tr>
																										<td>CodeWizard</td>
																										<td>C,C++</td>
																										<td>代码静态分析</td>
																								</tr>
																								<tr>
																										<td>Insure++</td>
																										<td>C,C++</td>
																										<td>实时性能监控以及分析优化</td>
																								</tr>
																								<tr>
																										<td>.test</td>
																										<td>.Net</td>
																										<td>代码分析和动态测试</td>
																								</tr>
																						</tbody>
																				</table>
																				<br />
																				<center>
																						<h4>Compuware白盒测试工具集</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="20%">工具名</td>
																										<td width="24%">支持语言环境</td>
																										<td>简介</td>
																								</tr>
																								<tr>
																										<td>BoundsChecker</td>
																										<td>C++,Delphi</td>
																										<td>API和OLE错误检查、指针和泄露错误检查、内存错误检查</td>
																								</tr>
																								<tr>
																										<td>TrueTime</td>
																										<td>C++,Java,Visual Basic</td>
																										<td>代码运行效率检查、组件性能的分析</td>
																								</tr>
																								<tr>
																										<td>FailSafe</td>
																										<td>Visual Basic</td>
																										<td>自动错误处理和恢复系统</td>
																								</tr>
																								<tr>
																										<td>Jcheck</td>
																										<td>M$ Visual J++</td>
																										<td>图形化的纯种和事件分析工具</td>
																								</tr>
																								<tr>
																										<td>TrueCoverage</td>
																										<td>C++,Java,Visual Basic</td>
																										<td>函数调用次数、所占比率统计以及稳定性跟踪</td>
																								</tr>
																								<tr>
																										<td>SmartCheck</td>
																										<td>Visual Basic</td>
																										<td>函数调用次数、所占比率统计以及稳定性跟踪</td>
																								</tr>
																								<tr>
																										<td>CodeReview</td>
																										<td>Visual Basic</td>
																										<td>自动源代码分析工具</td>
																								</tr>
																						</tbody>
																				</table>
																				<br />
																				<center>
																						<h4>Xunit白盒测试工具集</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="20%">工具名</td>
																										<td width="24%">支持语言环境</td>
																										<td>官方站点</td>
																								</tr>
																								<tr>
																										<td>Aunit</td>
																										<td>Ada</td>
																										<td>http://www.libre.act-europe.fr</td>
																								</tr>
																								<tr>
																										<td>CppUnit</td>
																										<td>C++</td>
																										<td>http://cppunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>ComUnit</td>
																										<td>VB,COM</td>
																										<td>http://comunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>Dunit</td>
																										<td>Delphi</td>
																										<td>http://dunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>DotUnit</td>
																										<td>.Net</td>
																										<td>http://dotunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>HttpUnit</td>
																										<td>Web</td>
																										<td>http://c2.com/cgi/wiki?HttpUnit</td>
																								</tr>
																								<tr>
																										<td>HtmlUnit</td>
																										<td>Web</td>
																										<td>http://htmlunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>Jtest</td>
																										<td>Java</td>
																										<td>http://www.junit.org</td>
																								</tr>
																								<tr>
																										<td>JsUnit(Hieatt)</td>
																										<td>Java<i>script</i> 1.4以上</td>
																										<td>http://www.jsunit.net</td>
																								</tr>
																								<tr>
																										<td>PhpUnit</td>
																										<td>Php</td>
																										<td>http://phpunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>PerlUnit</td>
																										<td>Perl</td>
																										<td>http://perlunit.sourceforge.net</td>
																								</tr>
																								<tr>
																										<td>XmlUnit</td>
																										<td>Xml</td>
																										<td>http://xmlunit.sourceforge.net</td>
																								</tr>
																						</tbody>
																				</table>
																				<center>
																						<h4>主流黑盒功能测试工具集</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="20%">工具名</td>
																										<td width="24%">公司名</td>
																										<td>官方站点</td>
																								</tr>
																								<tr>
																										<td>WinRunner</td>
																										<td>Mercury</td>
																										<td>http://www.mercuryinteractive.com</td>
																								</tr>
																								<tr>
																										<td>Astra Quicktest</td>
																										<td>Mercury</td>
																										<td>http://www.mercuryinteractive.com</td>
																								</tr>
																								<tr>
																										<td>Robot</td>
																										<td>IBM Rational</td>
																										<td>http://www.rational.com</td>
																								</tr>
																								<tr>
																										<td>QARun</td>
																										<td>Compuware</td>
																										<td>http://www.compuware.com</td>
																								</tr>
																								<tr>
																										<td>SilkTest</td>
																										<td>Segue</td>
																										<td>http://www.segue.com</td>
																								</tr>
																								<tr>
																										<td>e-Test</td>
																										<td>Empirix</td>
																										<td>http://www.empirix.com</td>
																								</tr>
																						</tbody>
																				</table>
																				<center>
																						<h4>主流黑盒性能测试工具集</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" align="center" border="1">
																						<tbody>
																								<tr>
																										<td width="20%">工具名</td>
																										<td width="24%">公司名</td>
																										<td>官方站点</td>
																								</tr>
																								<tr>
																										<td>WAS</td>
																										<td>M$</td>
																										<td>http://www.micro$oft.com</td>
																								</tr>
																								<tr>
																										<td>LoadRunner</td>
																										<td>Mercury</td>
																										<td>http://www.mercuryinteractive.com</td>
																								</tr>
																								<tr>
																										<td>Astra Quicktest</td>
																										<td>Mercury</td>
																										<td>http://www.mercuryinteractive.com</td>
																								</tr>
																								<tr>
																										<td>Qaload</td>
																										<td>Compuware</td>
																										<td>http://www.empirix.com</td>
																								</tr>
																								<tr>
																										<td>TeamTest:SiteLoad</td>
																										<td>IBM Rational</td>
																										<td>http://www.rational.com</td>
																								</tr>
																								<tr>
																										<td>Webload</td>
																										<td>Radview</td>
																										<td>http://www.radview.com</td>
																								</tr>
																								<tr>
																										<td>Silkperformer</td>
																										<td>Segue</td>
																										<td>http://www.segue.com</td>
																								</tr>
																								<tr>
																										<td>e-Load</td>
																										<td>Empirix</td>
																										<td>http://www.empirix.com</td>
																								</tr>
																								<tr>
																										<td>OpenSTA</td>
																										<td>OpenSTA</td>
																										<td>http://www.opensta.com</td>
																								</tr>
																						</tbody>
																				</table>
																				<center>
																						<h4>测试管理工具典型产品的比较</h4>
																				</center>
																				<p>
																				</p>
																				<table class="hui" border="1">
																						<tbody>
																								<tr>
																										<td width="18%">工具名称</td>
																										<td width="25%">Testdirector</td>
																										<td width="21%">ClearQuest</td>
																										<td width="20%">BMS</td>
																										<td>Bugzilla</td>
																								</tr>
																								<tr>
																										<td>流程定制</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>N</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>查询功能定制</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>功能域定制</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>用户权限分级管理</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>Email通知</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>构架模式</td>
																										<td>B/S</td>
																										<td>C/S,B/S</td>
																										<td>B/S</td>
																										<td>B/S</td>
																								</tr>
																								<tr>
																										<td>报表定制功能</td>
																										<td>Y</td>
																										<td>强,集成Crystal Report</td>
																										<td>有标准报表和高级报表,定制功能不够</td>
																										<td>Y</td>
																								</tr>
																								<tr>
																										<td>支持平台</td>
																										<td>Windows</td>
																										<td>Windows, Unix</td>
																										<td>Windows</td>
																										<td>Linux, FreeBSD</td>
																								</tr>
																								<tr>
																										<td>支持数据库</td>
																										<td>Oracle, M$ Access, SQL Server等</td>
																										<td>Oracle, M$ Access, SQL Server</td>
																										<td>SQL Server等MSDE</td>
																										<td>MySQL</td>
																								</tr>
																								<tr>
																										<td>安装配置的复杂度</td>
																										<td>简单</td>
																										<td>有些复杂</td>
																										<td>容易</td>
																										<td>不复杂</td>
																								</tr>
																								<tr>
																										<td>许可证费用</td>
																										<td>昂贵</td>
																										<td>昂贵</td>
																										<td>适中</td>
																										<td>免费</td>
																								</tr>
																								<tr>
																										<td>售后服务</td>
																										<td>国内有多家代理公司提供相关服务</td>
																										<td>在国内有分公司提供技术支持</td>
																										<td>技术支持和服务体系完备</td>
																										<td>可自行修改源代码</td>
																								</tr>
																								<tr>
																										<td>与其他工具集成</td>
																										<td>本身又是测试需求、测试案例管理工具, 与winRunner, LoadRunner集成，并且具有多种主流Case工具接口Add-In</td>
																										<td>与rational公司的其它产品无缝集成，特别与Clear Case配合以可实现UCM的配置管理体系</td>
																										<td>M$ VSS, Project</td>
																										<td>开源配置管理工具CVS</td>
																								</tr>
																								<tr>
																										<td>公司背景</td>
																										<td>世界主流测试软件提供商</td>
																										<td>已被IBM合并,世界著名软件公司</td>
																										<td>微软与上海市政府新成立的软件企业　</td>
																										<td>世界著名开源项目</td>
																								</tr>
																						</tbody>
																				</table>
																				<div align="left">
																						<strong>商业化自动功能测试工具特性比较</strong>
																						<br />
																						<table class="hui" width="100%" border="1">
																								<tbody>
																										<tr>
																												<td>特性</td>
																												<td>WinRunner</td>
																												<td>SilkTest</td>
																												<td>Etester</td>
																										</tr>
																										<tr>
																												<td>易于安装</td>
																												<td>是</td>
																												<td>是</td>
																												<td>是，不支持设置代理服务等设置</td>
																										</tr>
																										<tr>
																												<td>GUI对象和脚本分离</td>
																												<td>是</td>
																												<td>对象声明在单独的include文件中，但是case脚本中还有包含</td>
																												<td>两者都在VB脚本的case中</td>
																										</tr>
																										<tr>
																												<td>toolbar/field定制</td>
																												<td>可以</td>
																												<td>无法定制toolbar,可以定制GUI的fields内容</td>
																												<td>无法定制</td>
																										</tr>
																										<tr>
																												<td>操作系统</td>
																												<td>Windows</td>
																												<td>Unix,Windows</td>
																												<td>Unix, Windows</td>
																										</tr>
																										<tr>
																												<td>浏览器</td>
																												<td>NetScape,IE</td>
																												<td>NetScape,IE</td>
																												<td>NetScape,IE</td>
																										</tr>
																										<tr>
																												<td>支持测试对象</td>
																												<td>HTML,DHTML,JavaScript,VBScript,XML,JAVA applets, ActiveX,VB, PowerBuilder,Delphi,Terminal Emulator,,Oracle,SAP,PeopleSoft, Siebel</td>
																												<td>HTML, DHTML, JavaScript, XML, Java apps and applets, MFC, VB, Oracle, PowerBuilder, Delphi, SAP</td>
																												<td>Java apps and applets in M$JVM/SunJVM, HTML, DHTML, JavaScript, XML, MFC, VB, Oracle, SAP, Delphi, Terminal Emulator, PowerBuilder, Oracle, Peoplesoft</td>
																										</tr>
																										<tr>
																												<td>脚本语言</td>
																												<td>TSL</td>
																												<td>第四代面向对象的脚本语言4Test,类似C++</td>
																												<td>提供可编程接口，用户可使用标准语言扩展可视脚本，如VB,C++,Java</td>
																										</tr>
																										<tr>
																												<td>脚本调试功能</td>
																												<td>强大</td>
																												<td>类似C＋＋Debugger</td>
																												<td>VBA Debugger结合Visual Script Debugger</td>
																										</tr>
																										<tr>
																												<td>允许数据驱动的测试</td>
																												<td>是</td>
																												<td>是</td>
																												<td>是</td>
																										</tr>
																										<tr>
																												<td>自动数据生成</td>
																												<td>支持</td>
																												<td>支持</td>
																												<td>不支持</td>
																										</tr>
																										<tr>
																												<td>允许通过数据库验证数据</td>
																												<td>通过ODBC及本地数据库连接</td>
																												<td>自带Database Tester</td>
																												<td>通过ODBC</td>
																										</tr>
																										<tr>
																												<td>应用程序改变后的脚本维护</td>
																												<td>直接修改GUImap</td>
																												<td>更新include 文件。</td>
																												<td>自动更新无需录制</td>
																										</tr>
																										<tr>
																												<td>数据库支持</td>
																												<td>市场流行的数据库</td>
																												<td>市场流行的数据库</td>
																												<td>市场流行的数据库</td>
																										</tr>
																										<tr>
																												<td>无人看管下的自动执行测试</td>
																												<td>通过Testdirector</td>
																												<td>允许</td>
																												<td>允许，通???&gt;????&#x7;??&#x8;师?&#x7;过eTestSuite</td>
																										</tr>
																										<tr>
																												<td>分布式测试控制/同步/执行</td>
																												<td>Testdirector支持</td>
																												<td>支持</td>
																												<td>支持</td>
																										</tr>
																										<tr>
																												<td>自动创建测试结果日志</td>
																												<td>是</td>
																												<td>是</td>
																												<td>是</td>
																										</tr>
																										<tr>
																												<td>非预期错误的恢复</td>
																												<td>允许</td>
																												<td>允许</td>
																												<td>允许</td>
																										</tr>
																										<tr>
																												<td>与测试管理工具接口</td>
																												<td>Testdirector</td>
																												<td>自带Case管理功能。</td>
																												<td>e-test suite</td>
																										</tr>
																										<tr>
																												<td>图形化设计脚本执行集合</td>
																												<td>通过Testdirector设计</td>
																												<td>不支持</td>
																												<td>通过e-test suite设计</td>
																										</tr>
																										<tr>
																												<td>培训</td>
																												<td>有，Onsite及public training</td>
																												<td>有，提供kickoff training</td>
																												<td>有，onsite及public training</td>
																										</tr>
																										<tr>
																												<td>技术支持</td>
																												<td>曾获SSPA STAR荣誉</td>
																												<td>很好</td>
																												<td>客户对其评价</td>
																										</tr>
																										<tr>
																												<td>License</td>
																												<td>灵活的记费方式，既可以按使用次数计费也可以按协议算永久使用费</td>
																												<td>提供floating以及node-locked两种方式</td>
																												<td>提供Floating以及Node-locked两种方式</td>
																										</tr>
																										<tr>
																												<td>价格</td>
																												<td>昂贵</td>
																												<td>较贵</td>
																												<td>一般</td>
																										</tr>
																										<tr>
																												<td>Add-in收费</td>
																												<td>部分收费</td>
																												<td>不收费</td>
																												<td>不收费</td>
																										</tr>
																										<tr>
																												<td>
																														<strong>总论</strong>
																												</td>
																												<td>在全球的市场占有率较高，功能全面，价格昂贵</td>
																												<td>在国内的推广还处于起步阶段</td>
																												<td>价格较低，只支持web的测试，在金融、证券、电子商务等领域有广泛应用。</td>
																										</tr>
																								</tbody>
																						</table>
																				</div>
																		</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">
																		<a href="http://www.51testing.com/html/31/1320.html">
																				<font color="#000000">◎Purify检测的代码错误类型</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/771.html">
																				<font color="#000000">◎实时嵌入式软件测试工具的研究</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/770.html">
																				<font color="#000000">◎CODETEST——嵌入式软件实时测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/733.html">
																				<font color="#000000">◎基于GUI的自动化测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/641.html">
																				<font color="#000000">◎QALoad优秀的性能测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/632.html">
																				<font color="#000000">◎测试覆盖率工具--clover.net</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/631.html">
																				<font color="#000000">◎开发自动化测试脚本的技巧和心得</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/566.html">
																				<font color="#000000">◎GHOST V8.0 使用详解</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/486.html">
																				<font color="#000000">◎水滴石穿C语言之代码检查工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/483.html">
																				<font color="#000000">◎三款Java分析器点评</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/482.html">
																				<font color="#000000">◎嵌入式软件工业化测试工具LOGISCOPE</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/481.html">
																				<font color="#000000">◎WAS服务器负载测试软件导读</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/480.html">
																				<font color="#000000">◎Radview公司的web性能测试和分析系列工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/479.html">
																				<font color="#000000">◎Running Optimizeit from the command line</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/477.html">
																				<font color="#000000">◎Optimizeit Code Coverage概览</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/476.html">
																				<font color="#000000">◎Optimizeit Profiler概览</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/475.html">
																				<font color="#000000">◎JProbe Suite 4.0使用说明</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/474.html">
																				<font color="#000000">◎JProbe Profiler-优秀的剖析工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/473.html">
																				<font color="#000000">◎JProbe使用说明</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/472.html">
																				<font color="#000000">◎JProfiler跟踪和检查系统性能的好工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/459.html">
																				<font color="#000000">◎Running Optimizeit from the command line</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/362.html">
																				<font color="#000000">◎JProbe Profiler-优秀的剖析工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/78.html">
																				<font color="#000000">◎Compuware DevPartner Studio简介</font>
																		</a>
																		<br />
																</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/31/566.html">
																				<font color="#000000">◎GHOST V8.0 使用详解</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/641.html">
																				<font color="#000000">◎QALoad优秀的性能测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/486.html">
																				<font color="#000000">◎水滴石穿C语言之代码检查工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/631.html">
																				<font color="#000000">◎开发自动化测试脚本的技巧和心得</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/733.html">
																				<font color="#000000">◎基于GUI的自动化测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/481.html">
																				<font color="#000000">◎WAS服务器负载测试软件导读</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/476.html">
																				<font color="#000000">◎Optimizeit Profiler概览</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/78.html">
																				<font color="#000000">◎Compuware DevPartner Studio简介</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/472.html">
																				<font color="#000000">◎JProfiler跟踪和检查系统性能的好工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/473.html">
																				<font color="#000000">◎JProbe使用说明</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/482.html">
																				<font color="#000000">◎嵌入式软件工业化测试工具LOGISCOPE</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/632.html">
																				<font color="#000000">◎测试覆盖率工具--clover.net</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/1362.html">
																				<font color="#000000">◎testview测试工具详介</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/771.html">
																				<font color="#000000">◎实时嵌入式软件测试工具的研究</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/483.html">
																				<font color="#000000">◎三款Java分析器点评</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/770.html">
																				<font color="#000000">◎CODETEST——嵌入式软件实时测试工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/1357.html">
																				<font color="#000000">◎抛砖引玉，GUI自动化测试的设计</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/1329.html">
																				<font color="#000000">◎性能测试软件介绍：SilkPerformer</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/362.html">
																				<font color="#000000">◎JProbe Profiler-优秀的剖析工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/1416.html">
																				<font color="#000000">◎选择正确的GUI测试自动化工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/475.html">
																				<font color="#000000">◎JProbe Suite 4.0使用说明</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/480.html">
																				<font color="#000000">◎Radview公司的web性能测试和分析系列工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/477.html">
																				<font color="#000000">◎Optimizeit Code Coverage概览</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/474.html">
																				<font color="#000000">◎JProbe Profiler-优秀的剖析工具</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/1320.html">
																				<font color="#000000">◎Purify检测的代码错误类型</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/479.html">
																				<font color="#000000">◎Running Optimizeit from the command line</font>
																		</a>
																		<br />
																		<a href="http://www.51testing.com/html/31/459.html">
																				<font color="#000000">◎Running Optimizeit from the command line</font>
																		</a>
																		<br />
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20832.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:03 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20832.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>QTP的登陆脚本设计</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20758.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 01:38:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20758.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20758.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20758.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20758.html</trackback:ping><description><![CDATA[
		<font size="2">由于一直以来事情都比较多，最近上课还有其它的事情，所以本来答应一个朋友把脚本帮他写一些，但是耽误了3-4天了，实在不好意思。这里把脚本简单说一下，我们分析一下。<br />    当时问题是这样的，“我的错误的用户名就没办法登陆”，其实含义就是脚本最好能处理成功的用户名错误的用户名，那么这里涉及到脚本的设计。 <br />目标如下：<br />1.    脚本需要处理成功和失败的用户的登陆 <br />2.   数据驱动</font>
		<p>
				<font size="2">设计开发脚本如下：</font>
		</p>
		<p>
				<br />
				<font size="2">第一步录制脚本如下<br />Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebEdit("txtLoginName").Set "吕巍" <br />Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebButton("登 录").set "" <br />Browser("智能变电巡检仪系统 4.0").Page("Page").Syn <br />Browser("智能变电巡检仪系统 4.0").Close</font>
		</p>
		<p>
				<font size="2">以上为录制的正确的用户名,下边录制错误的用户名<br />Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebEdit("txtLoginName").Set "xx" <br />Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebButton("登 录").set "" <br />出现错误提示“该用户不存在”</font>
		</p>
		<p>
				<font size="2">第二步 增强脚本</font>
		</p>
		<p>
				<font size="2">现在需要设计的是一套脚本驱动所有的测试数据，这样可以驱动所有的用例数据，qtp中提供了datatable。<br />但是有数据驱动也要做一个事情就是如何处理错误的用户名和正确的用户名，如何结合起来呢？<br />这里我把datatable看作存放测试用例的地方，里面放入测试数据，还放入测试的预期结果。这样我的设计已经出现雏形了。<br />我把datatable设计为三列</font>
		</p>
		<p>
				<font size="2">username  password status<br />吕x                <br />xxx       xxxx     该用户不存在</font>
		</p>
		<p>
				<font size="2">第三列放入最后执行的结果,我设计的是空为成功登陆,如果有信息就用实际运行的结果和这一列对比.好了万事俱备只欠东风了</font>
		</p>
		<p>
				<font size="2">修改脚本如下：<br />Dim iStatus</font>
		</p>
		<p>
				<font size="2">Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebEdit("txtLoginName").Set DataTable("username", dtLocalSheet)<br />Browser("智能变电巡检仪系统 4.0").Page("智能变电巡检仪系统 4.0").WebButton("登 录").set DataTable("password", dtLocalSheet)<br />iStatus = DataTable("status", dtLocalSheet)</font>
		</p>
		<p>
				<font size="2">If   iStatus=""  Then<br />  Browser("智能变电巡检仪系统 4.0").Close<br />End If</font>
		</p>
		<p>
				<br />
				<font size="2">If   iStatus="该用户不存在"    Then<br />     Reporter.ReportEvent micFail, "登陆", "登陆失败." <br />End If</font>
		</p>
		<p>
				<font size="2">Browser("智能变电巡检仪系统 4.0").Close</font>
		</p>
		<p>
				<font size="2">第三步，设置脚本运行过程</font>
		</p>
		<p>
				<font size="2">打开 tests-〉settings<br />设置RUN TAB页面下 Datatable iterations中 Run On all rows</font>
		</p>
		<p>
				<font size="2">这样就完成了整个脚本的设计工作，以上通过一个简单例子吧脚本的设计和软件的功能结合起来，达成脚本的设计效果。</font>
		</p>
		<p>
				<font size="2">本文来自51testing博客，转载请注明出处<br />原始链接：http://blog.51testing.com/?85168/action_viewspace_itemid_1139.html<br /> </font>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20758.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 09:38 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20758.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/20721.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 02:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20721.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20721.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20721.html</trackback:ping><description><![CDATA[
		<font size="2">企业各岗位都制定了明确的职责，测试员的职责任何IT企业都有。这里只是从观念的角度谈一谈测试员的职责，供制定或修订具体的职责时参考。<br /><br />　　很高兴地看到测试员在企业中的地位日见增长，这一方面得力于软件工程规范化的落实，另一方面也是测试员的工作成绩提高了这一岗位的重要性。但还应该看到，对于大多数企业而言，测试员仍处在从企业的边缘人向主体群落融入的过程中。在这一漫长的过程中，有许多困惑和许多误解。建立一个企业的测试文化，是澄清这些困惑和误解的重要途径。</font>
		<p class="main">
				<font size="2">　　一个基本的也是最有分歧的问题就是：测试文化应是服务型还是控制型？我认为较好的测试文化应是服务型的。有的企业将测试文化定位为控制型，即测试员对最终产品的质量负责，对质量过程负责，甚至批准或拒绝产品的发布。事实上，测试员不应有也不应期望拥有这些控制权利，应将不合理地赋予的这些权利分离出去：1）质量的过程控制应由QA负责，因为，最终产品的质量是设计与开发出来的，而不是测试出来的；2）批准或拒绝产品的发布更有应是企业高层的职责，不应是测试部门更不是测试员的职责。测试部门或测试员应明确自已的角色定位，努力培养服务型测试文化，在服务意识的指导下，努力做了自已的本职工作。</font>
		</p>
		<p class="main">
				<font size="2">　　既然测试文化定位为服务型，那么，对测试员的职责就可以从如下方面来描述：</font>
		</p>
		<p class="main">
				<font size="2">　　为高层提供服务：即测试部门将产品的测试报告提供给高层，由高层作出有关决策。测试报告应包含高层希望了解的产品情况：错误发现率、错误改正率、问题收敛趋势，等等。</font>
		</p>
		<p class="main">
				<font size="2">　　为项目经理提供服务：向项目经理提供的测试报告应满足项目经理关注的需求，这些需求包括：产品的功能有哪些未满足、性能方面有哪些问题、哪些问题已与程序员沟通，但未达成一致意见，需要提交高层仲裁，等等。</font>
		</p>
		<p class="main">
				<font size="2">　　为QA提供服务：测试人员参与质量管理活动应该是服务性质的，即他不是去主导质量管理活动，而是为质量管理活动提供服务支持。测试人员通过测试报告，利用事实和数据来反映产品目前的质量情况，为QA的工作提供依据。</font>
		</p>
		<p class="main">
				<font size="2">　　为程序员提供服务：测试员要同程序员交朋友，向程序员及时反馈具体的程序问题，并与程序员共同探讨。一方面，测试员通常比程序员更了解业务领域，因此，他能从业务员的视角来检测产品的功能；另一方面，测试员通过测试用例能发现程序员不易想到的问题；再一方面，测试员从用户（操作员）的角度所进行的随机测试，也是检查产品的可用性。这些方面的测试情况，应及时反馈给程序员，以便进行及时修改。同时，测试员也要从程序员角度考虑问题，并获取相关程序的文档资料，使得测试员编制的测试用例更切合测试的重点、难点以及关注点。必要时，测试员也应了解程序员所使用的开发语言，这对于进行程序的白盒测试尤为重要。</font>
		</p>
		<p class="main">
				<font size="2">　　为市场推广人员提供服务：产品最终是要投放市场的，在产品的投产前，市场推广人员必须了解产品的优缺点和与同类产品对比的特色，从而有利于组织产品的广告宣传，以及应对媒体的挑剔与非难。总之，在市场推介活动中，市场推广人员应充分了解产品的相关信息，这些信息的主要来源就是测试报告。</font>
		</p>
		<p class="main">
				<font size="2">　　综上所述，测试人员的职责就是通过测试报告向项目的主要涉众传达产品的信息，即他是作为一个重要的信息源，为质量体系的运作提供到位的服务。</font>
		</p>
		<p class="main">
				<font size="2">　　从形式来看，测试报告是测试人员的工作成果，因此，测试人员的职责可以围绕着“测试报告”来描述——这里的“测试报告”是广义的，包括测试员的所有的报告（含非正式的口头报告）。例如：</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的前期工作：包括测试计划、测试案例、测试过程、信息收集。<br />描述“测试报告”的信息管理：通常使用测试管理工具，它对测试中的问题进行收集、流转和跟进或督办，并提供分析与统计功能。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的撰写：要注意不同的涉众需要不同的信息，即需要不同的测试报告。如，高层可能只需要一些统计信息或问题的收敛情况，而程序员可能需要一些非正式的、直接的、及时的反馈意见。因此，对不同类型的“测试报告”可能有不同的模板或样例，测试报告的编写能力应是测试员的基本功之一。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的报告流程，测试报告（正式的或非正式的）的报告流程应清楚明白，特别是问题报告应形成闭环。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的管理：测试报告应作为企业的重要信息加以保存、管理，并作为历史数据供以后参考和比较。<br /><br />　　测试员的职责的描述形式可以是多种多样，如何描述并不重要，重要的是应通过职责的描述，体现企业的测试文化，努力营造一个好的测试文化是我们所关心的。</font>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20721.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 10:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.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/18/20709.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 01:04:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20709.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20709.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20709.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20709.html</trackback:ping><description><![CDATA[用LoadRunner进行负载测试的流程通常由五个阶段组成：<br />计划、脚本创建、场景定义、场景执行和结果分析。<br />(1)计划负载测试：定义性能测试要求，例如并发用户的数量、典型业务流程和所需<br />响应时间。<br />(2)创建 Vuser 脚本：将最终用户活动捕获到自动脚本中。<br />(3)定义场景：使用 LoadRunner Controller 设置负载测试环境。<br />(4)运行场景：通过 LoadRunner Controller 驱动、管理和监控负载测试。<br />(5)分析结果：使用 LoadRunner Analysis 创建图和报告并评估性能。 <img src ="http://www.cnitblog.com/szdlinxie/aggbug/20709.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:04 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Web application的压力测试（MS Web Application Stress Tool (was)）</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20659.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 17:08:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20659.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20659.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20659.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20659.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<b>
						<span lang="EN-US" style="FONT-SIZE: 15pt">Web application</span>
				</b>
				<b>
						<span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的压力测试</span>
				</b>
				<b>
						<span lang="EN-US" style="FONT-SIZE: 15pt">
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<b>
						<span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				</b>
				<span lang="EN-US">MS Web Application Stress Tool (was)</span>
				<b>
						<span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				</b>
				<b>
						<span lang="EN-US" style="FONT-SIZE: 15pt">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">MS</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的网站上发现了一个挺不错的小东西：</span>
				<span lang="EN-US">MS Web Application Stress Tool (was)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。这是一个</span>
				<span lang="EN-US">web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用压力测试工具。它是免费的，这一点很重要，否则</span>
				<span lang="EN-US">MS</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的版权大棒又要来了。</span>
				<span lang="EN-US">
						<br />
						<br />    </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如今</span>
				<span lang="EN-US">B/S</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">结构横行，基于浏览器的应用多如恒河沙数。我们也投入了太多的时间在</span>
				<span lang="EN-US">web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">技术上，我们努力提高开发效率，花大量时间研究各种脚本，轻量级框架，</span>
				<span lang="EN-US">mvc</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架，也许我们可以多投入一些时间关注一下系统执行效率，做做压力测试。</span>
				<span lang="EN-US">
						<br />
						<br />    Was</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的使用非常简单，只需要配置好测试脚本，它就可以开始运行，然后给你一个非常详细的报告。脚本的配置有多种方式：</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">◇</span>
				<span lang="EN-US">    </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自行编写测试脚本</span>
				<span lang="EN-US">
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">◇</span>
				<span lang="EN-US">    </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">让</span>
				<span lang="EN-US">was</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">记录你在</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的操作</span>
				<span lang="EN-US">
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">◇</span>
				<span lang="EN-US">    </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">让</span>
				<span lang="EN-US">was</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读取</span>
				<span lang="EN-US">server</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">log</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，生成脚本</span>
				<span lang="EN-US">
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体">◇</span>
				<span lang="EN-US">    </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指定</span>
				<span lang="EN-US">url</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">地址，生成脚本</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我的原则是速战速决，对于这样一个小工具，没有必要花太多时间去研究细节，让它自己记录我的</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">操作吧，下面列出操作过程。</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择菜单：</span>
				<span lang="EN-US">scripts_create_record</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在出现的窗口中选择记录哪里信息，全选也无所谓，</span>
				<span lang="EN-US">next__finish</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，系统会弹出一个</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">窗口，该窗口中的所有</span>
				<span lang="EN-US">request-response</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">都会被记录到测试脚本中。需要注意的是该窗口需要比较高的权限，所以请暂时关闭上网助手之类、广告拦截之类的东西。</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在该窗口中你可以随意操作你的</span>
				<span lang="EN-US">web</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序，把要测试的模块都跑到。完成之后直接关闭</span>
				<span lang="EN-US">IE</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，然后点击</span>
				<span lang="EN-US">”stop recording”</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，一个测试脚本就完成了，实在够傻瓜，不愧是</span>
				<span lang="EN-US">MS</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的东西啊，体贴我这类懒人。</span>
				<span lang="EN-US">
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">展开刚建好的测试，选择</span>
				<span lang="EN-US">”setting”</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，指定</span>
				<span lang="EN-US">Stress level(threads)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的值，同时连接</span>
				<span lang="EN-US">server</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的并发数。</span>
				<span lang="EN-US">Ok</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，选择菜单：</span>
				<span lang="EN-US">scripts_run</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，开始折磨你的机器吧。</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">测试完成之后，选择菜单：</span>
				<span lang="EN-US">view_reports</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，可以看到测试结果报告。相当详细，多少次操作，多少数据量，每个页面花多少时间都看得一清二楚，爽啊。</span>
				<span lang="EN-US">
						<br />
						<br />
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">测试报告中，有两个术语很重要，在</span>
				<span lang="EN-US">”page summary”</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，有两个指标：</span>
				<span lang="EN-US">TTFB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">TTLB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
				<span lang="EN-US">
						<br />
						<br />TTFB Avg</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是指：从第一个请求发出到测试工具接收到服务器应答数据的第一个字节之间的平均时间。</span>
				<span lang="EN-US">
						<br />
						<br />TTLB Avg</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是指：从第一个请求发出到测试工具接收到服务器应答数据的最后一个字节之间的平均时间。</span>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20659.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-17 01:08 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Web Application Stress Tool(WAS)做性能测试</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20657.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 17:04:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20657.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20657.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20657.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20657.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：这篇文章讨论了性能测试对于成功发布一个网络应用的重要性，集中讨论了微软的				Web Application Stress (WAS)				这个用于测试				Duwamish Online				的性能的工具。																																								内容														...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20657.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20657.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-17 01:04 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20657.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/17/20654.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 17:01:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20654.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20654.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20654.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20654.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WAS														服务器负载测试软件使用说明																						（				Microsoft Web Application Stress Tool				）																								一、建立新脚本										    				方法一、启动				WAS...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20654.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20654.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-17 01:01 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20654.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/17/20652.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 16:48:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20652.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20652.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20652.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20652.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在做负载或者压力测试时，很多人选择使用了		Loadrunner		测试工具。该工具的基本流程是先将用户的实际操作录制成脚本，然后产生数千个虚拟用户运行脚本（虚拟用户可以分布在局域网中不同的		PC		机上），最后生成相关的报告以及分析图。但是在录制脚本的过程中会遇到很多实际的问题，比如不同的用户有不同的使用数据，这就牵涉到参数的设置问题。本文就		Loadrunner		...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20652.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20652.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-17 00:48 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20652.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/17/20651.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 16:44:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20651.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20651.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20651.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20651.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Loadrunner				性能测试一个实例								随着测试越来越重要，其中的性能测试也受到越来越多的关注。比较普遍的性能测试工具是				Loadrunner7.51				，但是很多人对此性能工具不是很熟悉。本人也是总结心得体会，将做过的性能测试实例以饷大家，希望对各位做测试的朋友有所帮助。																		该方案是针对某公司试...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20651.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20651.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-17 00:44 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/17/20651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用QuickTest Pro用于LoadRunner性能测试时注意事项!</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20606.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 03:43:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20606.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20606.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20606.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20606.html</trackback:ping><description><![CDATA[使用QuickTest Pro用于LoadRunner性能测试时注意事项!<br /><br />1. 使用 QuickTest 为 LoadRunner 创建 GUI Vuser 脚本 <br />在 QuickTest 中创建要用作 LoadRunner 测试场景中的 GUI Vuser 脚本的测试脚本时，需要遵循特定的准则以确保能够平稳集成脚本<br />2. 限制 <br />QuickTest 具备数项专为与 LoadRunner 集成而设计的功能。但某些 QuickTest 功能可能在与 LoadRunner 集成时不可用<br />3. 包括事务 <br />要度量服务器的性能，需要定义<strong style="FONT-WEIGHT: bold">事务</strong>。事务代表您要度量的一个操作或一组操作。在 Vuser 脚本中，可以通过嵌入适当的 <strong style="FONT-WEIGHT: bold">start</strong> 和 <strong style="FONT-WEIGHT: bold">end</strong> 事务语句脚本段来定义事务。 LoadRunner 仅提供事务中数据的性能信息。因此，QuickTest 测试必须包括 LoadRunner 要使用的事务。<br /> 4. 将集成数据与测试一起保存 <br />为了能与 LoadRunner 虚拟用户技术集成，QuickTest 必须生成特殊的集成文件。默认情况下，生成这些数据的选项处于启用状态。但是您或进行 QuickTest 测试的其他人员可能会为了保留磁盘空间而禁用该选项<br />在 QuickTest 中，在“常规”选项卡中，请确定已选中“保存要与 Mercury 性能测试和应用程序管理产品集成的数据”。<br />5.添加语句<br />可以使用 <strong style="FONT-WEIGHT: bold">Services</strong> 对象及其相关方法来插入与性能测试明确相关的语句，包括：<strong style="FONT-WEIGHT: bold">Abort</strong>、<strong style="FONT-WEIGHT: bold">GetEnvironmentAttribute</strong>、<strong style="FONT-WEIGHT: bold">LogMessage</strong>、<strong style="FONT-WEIGHT: bold">SetTransactionStatus</strong>、<strong style="FONT-WEIGHT: bold">ThinkTime</strong>、<strong style="FONT-WEIGHT: bold">UserDataPoint</strong>、<strong style="FONT-WEIGHT: bold">StartTransaction</strong> 及 <strong>EndTransaction。<br />6. </strong>. 设计供 LoadRunner 使用的测试时,应注意：<br />（1）LoadRunner 中使用的 QuickTest 测试应该简单，并专门针对特定的操作<br />（2）LoadRunner 不能运行嵌套操作循环。<br />（3）不应包含对外部操作或其他外部资源（如外部数据表文件、环境变量文件、共享对象库等）的引用。<br />2. 设计供业务流程监视器使用的测试时，应注意：<br />（1）对应的 <strong style="FONT-WEIGHT: bold">StartTransaction</strong> 和 <strong style="FONT-WEIGHT: bold">EndTransaction</strong> 语句必须包含在同一操作内<br />（2）业务流程监视器不使用 QuickTest“选项”对话框的“运行”选项卡中的循环设置，而是使用数据表文件中的行数。<br />3. ...................... <br /><br /><br /><br />转贴请注明出处： 
<table class="TableEdit" id="TableEdit" width="100%"><tbody><tr><td><a id="Editor_Edit_hlEntryLink" title="view: [原创]使用QuickTest Pro用于LoadRunner性能测试时注意事项!" href="http://www.cnblogs.com/mayingbao/archive/2006/10/22/536239.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/mayingbao/archive/2006/10/22/536239.html</font></a></td></tr></tbody></table><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20606.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-16 11:43 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickTest创建输出值 </title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20584.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 14:05:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20584.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20584.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20584.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20584.html</trackback:ping><description><![CDATA[
		<blockquote class="indent">
				<a name="wp703312">
				</a>
				<h2 class="pn2Heading">创建输出值 </h2>
				<a name="wp703318">
				</a>
				<p class="pRegtext">在<a href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/parameterizing_tests.htm">参数化测试</a>中，测试的第二次和第三次循环失败，这是因为出发城市更改时票价也发生了更改。在 <b style="FONT-WEIGHT: bold">Book a Flight:Mercury</b> 页中检查出发航班票价的检查点在票价更改时未更新其预期值。 </p>
				<a name="wp703320">
				</a>
				<p class="pRegtext">在本课中，将创建在每次测试循环中从 <b style="FONT-WEIGHT: bold">Select a Flight:Mercury</b> 页检索出航票价的输出值。然后修改创建的表检查点，以便该表检查点检查在 <b style="FONT-WEIGHT: bold">Book a Flight:Mercury </b>页中显示的票价与在 <b style="FONT-WEIGHT: bold">Select a Flight:Mercury</b> 页中获得的票价是否匹配。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp703327">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">启动 QuickTest </b>
												<span style="FONT-WEIGHT: normal">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" />
												</span>
												<b style="FONT-WEIGHT: bold">并打开 Parameter 测试。</b>
										</li>
								</div>
								<a name="wp703349">
								</a>
								<p class="pIndent">如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp703351">
												</a>
												<div class="pSmartBullet2">
														<li>如果“欢迎使用”窗口打开，请单击“打开现有测试”。 </li>
												</div>
												<a name="wp703358">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 打开时未显示“欢迎使用”窗口，请选择<br />“文件”&gt;“打开”，或单击“打开”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_open_button.gif" border="0" /> 。 </li>
												</div>
												<a name="wp703360">
												</a>
												<p class="pIndent">在“打开测试”对话框中，找到并选择“Parameter”测试，然后单击“打开”。 </p>
										</ul>
								</div>
								<a name="wp703362">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">将测试另存为 Output。</b>
										</li>
								</div>
								<a name="wp703364">
								</a>
								<p class="pIndent">选择“文件”&gt;“另存为”。将测试另存为 <span class="cExample">Output</span>。 </p>
								<a name="wp703366">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">确认是否已启用“Active Screen”选项。</b>
										</li>
								</div>
								<a name="wp703373">
								</a>
								<p class="pIndent">如果在 QuickTest 窗口底部看不到 Active Screen，请单击“Active Screen”按钮<span style="FONT-WEIGHT: bold"><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_display_views.gif" border="0" /></span>或选择“查看”&gt;“Active Screen”。 </p>
								<a name="wp703375">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">选择要用作输出值的文本。</b>
										</li>
								</div>
								<a name="wp703377">
								</a>
								<p class="pIndent">在关键字视图中，单击 (+) 展开“Welcome:Mercury Tours”，然后单击“Select a Flight:Mercury”页。该页将显示在 Active Screen 中。 </p>
								<a name="wp703382">
								</a>
								<p class="pIndent">在 Active Screen 中，突出显示票价（不带 <b style="FONT-WEIGHT: bold">$</b> 符号），例如，对于出发航班 (New York to San Francisco)，则突出显示 <b style="FONT-WEIGHT: bold">270</b>。右键单击突出显示的文本并选择“插入文本输出”。将打开“文本输出值属性”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/text_output_prop.gif" border="0" /><br /><br /></p>
								<a name="wp703384">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">设置输出值设置。</b>
										</li>
								</div>
								<a name="wp703387">
								</a>
								<p class="pIndent">单击“修改”按钮，打开“输出选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/output_options.gif" border="0" /><br /><br /></p>
								<a name="wp703389">
								</a>
								<p class="pIndent">“名称”框中显示“Select_a_Flight_MercuryOutput_Text_out”。将该值更改为<span class="cExample">“depart_flight_price”</span>。 </p>
								<a name="wp703395">
								</a>
								<p class="pIndent">单击“确定”，接受其他默认设置并关闭“输出选项”对话框。再次单击“确定”，关闭“文本输出值属性”对话框。QuickTest 将向数据表中添加 <b style="FONT-WEIGHT: bold">depart_flight_price</b> 列。 </p>
								<a name="wp703401">
								</a>
								<p class="pIndent">QuickTest 将在关键字视图中向“Select a Flight:Mercury”页添加该输出值操作。 </p>
								<a name="wp703403">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">修改用于检查航班概要表中显示的票价的表检查点。</b>
										</li>
								</div>
								<a name="wp703405">
								</a>
								<p class="pIndent">在关键字视图中，单击 (+) 展开“Welcome:Mercury Tours”&gt;“Book a Flight: Mercury”。 </p>
								<a name="wp703407">
								</a>
								<p class="pIndent">右键单击“检查点`New York to San Francisco'”，并选择“检查点属性”。将打开“表检查点属性”对话框。 </p>
								<a name="wp703411">
								</a>
								<p class="pIndent_after">单击第 3 行和第 3 列相交的单元格（所检查的单元格）。在“配置值”区域中，选择“参数”，然后单击“参数选项”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_param_props.gif" border="0" /> 。将打开“参数选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/paramoptions2.gif" border="0" /><br /><br /></p>
								<a name="wp703413">
								</a>
								<p class="pIndent">在“名称”框中，选择“depart_flight_price”。 </p>
								<a name="wp703415">
								</a>
								<p class="pIndent">单击“确定”关闭“参数选项”对话框。将再次显示“表检查点属性”对话框，且在参数化的表值旁出现一个参数化图标。 </p>
								<a name="wp703419">
								</a>
								<p class="pIndent">
										<br />
										<br />
										<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/table_check_propafter_ww.gif" border="0" />
										<br />
										<br />
								</p>
								<a name="wp703421">
								</a>
								<p class="pIndent">单击“确定”关闭“表检查点属性”对话框。现已将该检查点参数化。 </p>
								<a name="wp703423">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">保存测试。</b>
										</li>
								</div>
								<a name="wp703426">
								</a>
								<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp703434">
				</a>
				<h2 class="pn2Heading">使用输出值运行并分析测试 </h2>
				<a name="wp703436">
				</a>
				<p class="pRegtext">现在将运行测试并检查结果。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp703438">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">运行输出测试。</b>
										</li>
								</div>
								<a name="wp703441">
								</a>
								<p class="pIndent">单击“运行”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> ，或者选择“测试”&gt;“运行”。将打开“运行”对话框。 </p>
								<a name="wp703443">
								</a>
								<p class="pIndent">选择“新建运行结果文件夹”并接受默认的结果文件夹名。 </p>
								<a name="wp703445">
								</a>
								<p class="pIndent">单击“确定”。当测试运行完成时，将打开“测试结果”窗口。 </p>
								<a name="wp703447">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">检查运行时数据结果。</b>
										</li>
								</div>
								<a name="wp703450">
								</a>
								<p class="pIndent">在“测试结果”窗口中，从结果树中选择“运行时数据”。测试运行期间使用的输出值将显示在网格中。注意，对于每次循环，“depart_flight_price”列中显示的票价会有所不同。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/results_data.gif" border="0" /><br /><br /></p>
								<a name="wp703452">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">检查检查点结果。</b>
										</li>
								</div>
								<a name="wp703454">
								</a>
								<p class="pIndent">选择“视图”&gt;“全部展开”。 </p>
								<a name="wp703456">
								</a>
								<p class="pIndent">在“Output Iteration 1 (Row 1)”中的“Book a Flight:Mercury”页下，单击“检查点`New York to San Francisco'”。 </p>
								<a name="wp703458">
								</a>
								<p class="pIndent">注意，在“详细信息”窗格中，检查点用绿色标记为通过，这是因为检查到概要表中第一次航班的票价与从“Select a Flight”页中获得预期值匹配。 </p>
								<a name="wp703460">
								</a>
								<p class="pIndent">用同样的方法检查循环 2 和循环 3 的检查点。在“详细信息”窗格中，这些检查点也用绿色标记为“通过”，原因同上。 </p>
								<a name="wp703462">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">关闭“测试结果”窗口。</b>
										</li>
								</div>
								<a name="wp703466">
								</a>
								<p class="pIndent">选择“文件”&gt;“退出”关闭“测试结果”窗口。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20584.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-15 22:05 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickTest 参数化测试 </title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20583.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 14:04:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20583.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20583.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20583.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20583.html</trackback:ping><description><![CDATA[
		<blockquote class="indent">
				<a name="wp380824">
				</a>
				<h2 class="pn2Heading">定义数据表参数 </h2>
				<a name="wp380826">
				</a>
				<p class="pRegtext">在前面的课程中，您预定了从 New York 飞往 San Francisco 的航班。New York 是常量值，这意味着每次运行测试时出发城市都是 New York。在该练习中，您将出发城市作为参数，以便可以为每个测试运行使用不同的出发城市。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp380833">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">启动 QuickTest </b>
												<span style="FONT-WEIGHT: normal">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" />
												</span>
												<b style="FONT-WEIGHT: bold">并打开 Checkpoint 测试。</b>
										</li>
								</div>
								<a name="wp380855">
								</a>
								<p class="pIndent">如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp380857">
												</a>
												<div class="pSmartBullet2">
														<li>如果“欢迎使用”窗口打开，请单击“打开现有测试”。 </li>
												</div>
												<a name="wp380864">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 打开时未显示“欢迎使用”窗口，请选择“文件”&gt;“打开”，或单击“打开”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_open_button.gif" border="0" /> 。 </li>
												</div>
												<a name="wp380866">
												</a>
												<p class="pIndent">在“打开测试”对话框中，找到并选择“Checkpoint”测试，然后单击“打开”。 </p>
										</ul>
								</div>
								<a name="wp380868">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">将测试另存为 Parameter。</b>
										</li>
								</div>
								<a name="wp380870">
								</a>
								<p class="pIndent">选择“文件”&gt;“另存为”。将测试另存为 <span class="cExample">Parameter</span>。 </p>
								<a name="wp380872">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">确认是否已启用“Active Screen”选项。</b>
										</li>
								</div>
								<a name="wp380879">
								</a>
								<p class="pIndent">如果在 QuickTest 窗口的底部看不到 Active Screen，请单击“Active Screen”按钮<span style="FONT-WEIGHT: bold"><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_display_views.gif" border="0" /></span>或选择“查看”&gt;“Active Screen”。 </p>
								<a name="wp380881">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">确认是否已启用“数据表”选项。</b>
										</li>
								</div>
								<a name="wp380888">
								</a>
								<p class="pIndent">如果在 QuickTest 窗口的底部看不到数据表，请单击“数据表”按钮<span style="FONT-WEIGHT: bold"><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_data_views.gif" border="0" /></span>或选择“查看”&gt;“数据表”。 </p>
								<a name="wp380890">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">选择要参数化的文本。</b>
										</li>
								</div>
								<a name="wp380892">
								</a>
								<p class="pIndent">在关键字视图中，单击 (+) 展开“Action1”&gt;“Welcome: Mercury Tours”&gt;“Find a Flight:Mercury”。 </p>
								<a name="wp380896">
								</a>
								<p class="pIndent">在关键字视图的“fromPort”行中，单击“值”单元格，然后单击参数化图标 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_param.gif" border="0" /> 。将打开“值配置选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/param_func_arg.gif" border="0" /><br /><br /></p>
								<a name="wp380898">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">设置参数化属性。</b>
										</li>
								</div>
								<a name="wp380900">
								</a>
								<p class="pIndent">选择“参数”单选按钮。使用该按钮，可以用参数替换常量值 (<b style="FONT-WEIGHT: bold">New York</b>)。 </p>
								<a name="wp380906">
								</a>
								<p class="pIndent">确认是否已选定“DataTable”选项。这意味着将从 QuickTest 数据表中获取该参数的值。 </p>
								<a name="wp380909">
								</a>
								<p class="pIndent">“名称”框已启用，并显示“p_Item”。将其更改为 <span class="cExample">departure</span>。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/param_func_arg_a.gif" border="0" /><br /><br /></p>
								<a name="wp380921">
								</a>
								<p class="pIndent_after">单击“确定”关闭该对话框。QuickTest 将向数据表中添加“departure”参数作为新的一列，并在其下面的第一行中插入 <span class="cExample">New York</span>。New York 将排在应用程序测试运行期间 QuickTest 使用的几个出发城市的第一位。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/paramscreen2_ww.gif" border="0" /><br /><br /></p>
								<a name="wp21314">
								</a>
								<p class="pIndent_after">注意关键字视图中该步骤外观的更改。以前，该步骤显示为 <span class="cExample">fromPort Select New York</span>。现在，该步骤显示为 <span class="cExample">fromPort Select DataTable(</span><span class="cExample">“departure”</span><span class="cExample">, DTGlobalSheet)</span>。当单击“值”单元格时，将显示以下信息，指明该值已使用名为 <span class="cExample">departure</span> 的数据表参数进行了参数化：<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/param.gif" border="0" /><br /><br /></p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp380932">
				</a>
				<h2 class="pn2Heading">向数据表中添加参数值 </h2>
				<a name="wp380942">
				</a>
				<p class="pRegtext">正如您所见，QuickTest 在数据表中显示参数值。在本部分中，将向数据表中添加另外两个出发城市，以便 QuickTest 可以使用该数据测试应用程序。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp380944">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">在“departure”列中输入另外的两个城市。</b>
										</li>
								</div>
								<a name="wp380946">
								</a>
								<p class="pIndent">单击 <span class="cExample">departure</span> 列中的第 2 行，然后键入 <span class="cExample">Portland</span>。 </p>
								<a name="wp380948">
								</a>
								<p class="pIndent">单击第 3 行，然后键入 <span class="cExample">Seattle</span>。 </p>
								<a name="wp380950">
								</a>
								<p class="pIndent">按 Enter 键。 </p>
								<a name="wp380952">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">保存测试。</b>
										</li>
								</div>
								<a name="wp380955">
								</a>
								<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp380963">
				</a>
				<h2 class="pn2Heading">修改受参数化影响的步骤 </h2>
				<a name="wp380969">
				</a>
				<p class="pRegtext">参数化测试中的某一步骤后，在更改参数化的步骤的值时其他测试对象可能会受到影响。如果发生这种情况，您必须修改这些对象的预期值以匹配从参数化步骤中生成的值。在本部分中，将修改文本检查点，以便在运行测试时，QuickTest 检查与当前出发城市相匹配的文本。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp380971">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">定位要修改的文本检查点。</b>
										</li>
								</div>
								<a name="wp380973">
								</a>
								<p class="pIndent">在关键字视图中，单击 (+) 展开“Welcome:Mercury Tours”。 </p>
								<a name="wp380976">
								</a>
								<p class="pIndent">右键单击“Flight Confirmation:Mercury”，然后选择“检查点属性”。将打开“文本检查点属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/checkpointmodify.gif" border="0" /><br /><br /></p>
								<a name="wp380978">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">参数化文本检查点。</b>
										</li>
								</div>
								<a name="wp380980">
								</a>
								<p class="pIndent">在“已检查的文本”区域，“New York”显示在“常量”框中。“New York”是每一次循环时检查点的预期值。 </p>
								<a name="wp380984">
								</a>
								<p class="pIndent">选择“参数”，然后单击“参数选项”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_param_props.gif" border="0" /> 。将打开“参数选项”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/param_options.gif" border="0" /><br /><br /></p>
								<a name="wp380986">
								</a>
								<p class="pIndent">在“名称”框中，选择“departure”。这将指示检查点使用数据表中的 departure 参数值作为预期结果。 </p>
								<a name="wp380988">
								</a>
								<p class="pIndent">单击“确定”关闭“参数选项”对话框，然后再次单击“确定”关闭“文本检查点属性”对话框。现已将该检查点参数化。 </p>
								<a name="wp380990">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">保存测试。</b>
										</li>
								</div>
								<a name="wp380993">
								</a>
								<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp381001">
				</a>
				<h2 class="pn2Heading">运行并分析参数化的测试 </h2>
				<a name="wp381007">
				</a>
				<p class="pRegtext">您现在将运行修改的 <b style="FONT-WEIGHT: bold">Parameter</b> 测试。QuickTest 将运行该测试三次，对于数据表中的每一出发城市各运行一次。每次测试运行称为一次循环。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp381009">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">运行 Parameter 测试。</b>
										</li>
								</div>
								<a name="wp381012">
								</a>
								<p class="pIndent">单击“测试”工具栏上的“运行” <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> ，或选择“测试”&gt;“运行”。将打开“运行”对话框。 </p>
								<a name="wp381014">
								</a>
								<p class="pIndent">选择“新建运行结果文件夹”并接受默认的结果文件夹名。 </p>
								<a name="wp381016">
								</a>
								<p class="pIndent">单击“确定”。当测试运行完成时，将打开“测试结果”窗口。 </p>
								<a name="wp381020">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">检查结果概要。</b>
										</li>
								</div>
								<a name="wp381022">
								</a>
								<p class="pIndent">即使文本检查点在三次循环中都通过，“测试结果”窗口也会显示测试的第二次和第三次循环失败。有关循环失败原因的详细信息，请参阅以下内容。 </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp381024">
												</a>
												<div class="pSmartBullet2">
														<li>循环 2：</li>
												</div>
												<a name="wp381026">
												</a>
												<p class="pIndent_wide">在结果树中，单击 (+) 展开“Parameter Iteration 2”&gt;“Action1 Summary”&gt;“Welcome Mercury Tours”&gt;“Flight Confirmation:Mercury”。 </p>
												<a name="wp381029">
												</a>
												<p class="pIndent_wide">突出显示“检查点`New York'”。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/resultstextch1.gif" border="0" /><br /><br /></p>
												<a name="wp381031">
												</a>
												<p class="pIndent_wide_after">“详细信息”窗格中的检查点结果说明预期结果和实际结果同为 Portland。因此，检查点通过。您还可以在“应用程序”窗格中看到反映来自 Portland 的航班的信息。 </p>
												<a name="wp381033">
												</a>
												<div class="pSmartBullet2">
														<li>循环 3：</li>
												</div>
												<a name="wp381035">
												</a>
												<p class="pIndent_wide">在结果树中，单击 (+) 展开“Parameter Iteration 3”&gt;“Action1 Summary”&gt;“Welcome Mercury Tours”&gt;“Flight Confirmation:Mercury”。 </p>
												<a name="wp381037">
												</a>
												<p class="pIndent_wide">突出显示“检查点`New York'”。 </p>
												<a name="wp381039">
												</a>
												<p class="pIndent_wide">“详细信息”窗格中的检查点结果说明预期结果和实际结果同为 Seattle。因此，检查点通过。“应用程序”窗格显示来自 Seattle 的航班的航班信息。 </p>
												<a name="wp381042">
												</a>
												<p class="pIndent_wide">下表汇总了每次循环中文本检查点的结果：<br /><br /></p>
												<table cellspacing="0" cellpadding="5" align="wwp:inherit" border="1">
														<caption>
														</caption>
														<tbody>
																<tr align="middle" bgcolor="#cccccc">
																		<th>
																				<a name="wp378633">
																				</a>
																				<p class="pCellHeading">循环 </p>
																		</th>
																		<th>
																				<a name="wp378635">
																				</a>
																				<p class="pCellHeading">预期文本 </p>
																		</th>
																		<th>
																				<a name="wp378637">
																				</a>
																				<p class="pCellHeading">实际文本 </p>
																		</th>
																		<th>
																				<a name="wp378639">
																				</a>
																				<p class="pCellHeading">结果 </p>
																		</th>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp378649">
																				</a>
																				<div class="pCellBody">#1 </div>
																		</td>
																		<td>
																				<a name="wp378651">
																				</a>
																				<div class="pCellBody">New York </div>
																		</td>
																		<td>
																				<a name="wp378653">
																				</a>
																				<div class="pCellBody">New York </div>
																		</td>
																		<td>
																				<a name="wp378655">
																				</a>
																				<div class="pCellBody">检查点通过 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp378665">
																				</a>
																				<div class="pCellBody">#2 </div>
																		</td>
																		<td>
																				<a name="wp378667">
																				</a>
																				<div class="pCellBody">Portland </div>
																		</td>
																		<td>
																				<a name="wp378669">
																				</a>
																				<div class="pCellBody">Portland </div>
																		</td>
																		<td>
																				<a name="wp378671">
																				</a>
																				<div class="pCellBody">检查点通过 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp378681">
																				</a>
																				<div class="pCellBody">#3 </div>
																		</td>
																		<td>
																				<a name="wp378683">
																				</a>
																				<div class="pCellBody">Seattle </div>
																		</td>
																		<td>
																				<a name="wp378685">
																				</a>
																				<div class="pCellBody">Seattle </div>
																		</td>
																		<td>
																				<a name="wp378687">
																				</a>
																				<div class="pCellBody">检查点通过 </div>
																		</td>
																</tr>
														</tbody>
												</table>
												<a name="wp381052">
												</a>
												<p class="pNote">注意： 尽管这些文本检查点在三次循环中都通过了，但是测试的第二次和第三次循环仍然失败，原因是在这些循环中表检查点失败，即出发城市更改时票价会随之更改。在<a href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/creating_output_values.htm">创建输出值</a>中，将修改表检查点，以便在运行测试时，QuickTest 会使用当前出发城市的正确票价更新检查点的预期票价。 </p>
										</ul>
								</div>
								<a name="wp381054">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">关闭“测试结果”窗口。</b>
										</li>
								</div>
								<a name="wp381058">
								</a>
								<p class="pIndent">选择“文件”&gt;“退出”关闭“测试结果”窗口。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20583.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-15 22:04 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickTest自动测试----创建检查点 </title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20582.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 14:02:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20582.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20582.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20582.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20582.html</trackback:ping><description><![CDATA[
		<blockquote class="indent">
				<a name="wp853637">
				</a>
				<h2 class="pn2Heading">了解检查点类型 </h2>
				<a name="wp853648">
				</a>
				<p class="pRegtext">QuickTest Professional 提供了下列类型的检查点：<br /><br /></p>
				<table cellspacing="0" cellpadding="5" align="wwp:inherit" border="1">
						<caption>
						</caption>
						<tbody>
								<tr align="middle" bgcolor="#cccccc">
										<th>
												<a name="wp853199">
												</a>
												<p class="pCellHeading">检查点类型 </p>
										</th>
										<th>
												<a name="wp853201">
												</a>
												<p class="pCellHeading">描述 </p>
										</th>
										<th>
												<a name="wp853203">
												</a>
												<p class="pCellHeading">用法示例 </p>
										</th>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853211">
												</a>
												<div class="pCellBody">标准检查点 </div>
										</td>
										<td>
												<a name="wp853213">
												</a>
												<div class="pCellBody">检查对象的属性值。 </div>
										</td>
										<td>
												<a name="wp853215">
												</a>
												<div class="pCellBody">检查是否选中某单选按钮。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853223">
												</a>
												<div class="pCellBody">图像检查点 </div>
										</td>
										<td>
												<a name="wp853225">
												</a>
												<div class="pCellBody">检查图像的属性值。 </div>
										</td>
										<td>
												<a name="wp853227">
												</a>
												<div class="pCellBody">检查图像源文件是否正确。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853235">
												</a>
												<div class="pCellBody">表检查点 </div>
										</td>
										<td>
												<a name="wp853237">
												</a>
												<div class="pCellBody">检查表中的信息。 </div>
										</td>
										<td>
												<a name="wp853239">
												</a>
												<div class="pCellBody">检查表单元格中的值是否正确。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853247">
												</a>
												<div class="pCellBody">页面检查点 </div>
										</td>
										<td>
												<a name="wp853249">
												</a>
												<div class="pCellBody">检查网页的特性。 </div>
										</td>
										<td>
												<a name="wp853251">
												</a>
												<div class="pCellBody">检查加载网页所需的时间，或者检查网页是否包含中断链接。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853259">
												</a>
												<div class="pCellBody">文本/<br />文本区域检查点 </div>
										</td>
										<td>
												<a name="wp853261">
												</a>
												<div class="pCellBody">检查文本字符串是否显示在网页或应用程序窗口中的适当位置。 </div>
										</td>
										<td>
												<a name="wp853263">
												</a>
												<div class="pCellBody">检查预期的文本字符串是否显示在网页或对话框上的预期位置。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853271">
												</a>
												<div class="pCellBody">位图检查点 </div>
										</td>
										<td>
												<a name="wp853273">
												</a>
												<div class="pCellBody">将网页或应用程序的某个区域捕获为位图后对其进行检查。 </div>
										</td>
										<td>
												<a name="wp853275">
												</a>
												<div class="pCellBody">检查网页或网页的任何部分是否能按预期显示。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853283">
												</a>
												<div class="pCellBody">数据库检查点 </div>
										</td>
										<td>
												<a name="wp853285">
												</a>
												<div class="pCellBody">检查应用程序或网站所访问的数据库内容 </div>
										</td>
										<td>
												<a name="wp853287">
												</a>
												<div class="pCellBody">检查数据库查询中的值是否正确。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853295">
												</a>
												<div class="pCellBody">可访问性检查点 </div>
										</td>
										<td>
												<a name="wp853297">
												</a>
												<div class="pCellBody">对网站区域进行识别，以检查是否符合 508 部分。 </div>
										</td>
										<td>
												<a name="wp853299">
												</a>
												<div class="pCellBody">检查网页上的图像是否包含 ALT 属性（该属性是 W3C Web 内容可访问性规则所要求的）。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp853307">
												</a>
												<div class="pCellBody">XML 检查点 </div>
										</td>
										<td>
												<a name="wp853309">
												</a>
												<div class="pCellBody">检查 XML 文档的数据内容。 </div>
										</td>
										<td>
												<a name="wp853311">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">注意：</b>XML 文件检查点用于检查特定的 XML 文件；XML 应用程序检查点用于检查网页中的 XML 文档。 </div>
										</td>
								</tr>
						</tbody>
				</table>
				<a name="wp853654">
				</a>
				<p class="pRegtext_after">大多数检查点都可以在录制过程中或在录制之后添加到测试中。下列部分解释了如何在<a href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/recording_tests.htm">录制测试</a>中创建的测试中创建上述某些检查点。 </p>
				<a name="wp853666">
				</a>
				<p class="pNote">注意： 当 QuickTest 创建检查点时，它会基于检查点内的信息（例如，已检查的值）分配名称。即使您随后修改了其所基于的信息，检查点名称也不会改变。在关键字视图中查找显示的检查点时，请记住这一点。但要注意，QuickTest 可能会截短关键字视图中所显示的名称。 </p>
				<a name="wp853676">
				</a>
				<p class="pRegtext">有关如何创建检查点的详细信息，请参阅《QuickTest Professional 用户指南》。 </p>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp853684">
				</a>
				<h2 class="pn2Heading">检查对象 </h2>
				<a name="wp853686">
				</a>
				<p class="pRegtext">在本部分中，您将在“Book a Flight”页中添加标准检查点。该检查点将验证包含乘客名字的框中的值。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp853693">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">启动QuickTest </b>
												<span style="FONT-WEIGHT: normal">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" />
												</span>
												<b style="FONT-WEIGHT: bold">并打开“Recording”测试。</b>
										</li>
								</div>
								<a name="wp853715">
								</a>
								<p class="pIndent">如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp853717">
												</a>
												<div class="pSmartBullet2">
														<li>如果“欢迎使用”窗口打开，请单击“打开现有测试”。 </li>
												</div>
												<a name="wp853724">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 打开时未显示“欢迎使用”窗口，请选择“文件”&gt;“打开”，或单击“打开”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_open_button.gif" border="0" /> 。 </li>
												</div>
												<a name="wp853726">
												</a>
												<p class="pIndent">在“打开测试”<b style="FONT-WEIGHT: bold"></b>对话框中，找到并选择“Recording”测试，然后单击“打开”。 </p>
										</ul>
								</div>
								<a name="wp853728">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">将测试另存为“Checkpoint”。</b>
										</li>
								</div>
								<a name="wp853730">
								</a>
								<p class="pIndent">选择“文件”&gt;“另存为”。将测试另存为“<span class="cExample">Checkpoint</span>”。 </p>
								<a name="wp853732">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">确认是否已启用“Active Screen”选项。</b>
										</li>
								</div>
								<a name="wp853735">
								</a>
								<p class="pIndent">如果在 QuickTest 窗口底部看不到 Active Screen，请单击“Active Screen”按钮<span style="FONT-WEIGHT: bold"><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_display_views.gif" border="0" /></span>或选择“查看”&gt;“Active Screen”。 </p>
								<a name="wp853737">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">找到要向其添加标准检查点的页面。</b>
										</li>
								</div>
								<a name="wp853739">
								</a>
								<p class="pIndent">您想添加检查点，以便在乘客的名字输入到“First Name”编辑框后，对该框中的属性值进行检查。 </p>
								<a name="wp853741">
								</a>
								<p class="pIndent">在关键字视图的“项”列中，单击 (+) 展开“Action1”&gt;“Welcome:Mercury Tours”&gt;“Book a Flight: Mercury”。 </p>
								<a name="wp853743">
								</a>
								<p class="pIndent">“Book a Flight”页将显示在 Active Screen 中，并突出显示与选定步骤相对应的对象。您可以看到乘客的名字显示在“First Name”框中。 </p>
								<a name="wp853745">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">创建标准检查点。</b>
										</li>
								</div>
								<a name="wp853750">
								</a>
								<p class="pIndent">在 Active Screen 中，右键单击“First Name”框，然后选择“插入标准检查点”。将打开“对象选择 - 检查点属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/object%20selection%20-%20checkpoint%20properties.gif" border="0" /><br /><br /></p>
								<a name="wp853752">
								</a>
								<p class="pIndent_after">确认已突出显示“WebEdit: passFirst0”，然后单击“确定”。 </p>
								<a name="wp853757">
								</a>
								<p class="pIndent_after">将打开“检查点属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/objectcheckdb.gif" border="0" /><br /><br /></p>
								<a name="wp853759">
								</a>
								<p class="pIndent_after">该对话框将显示对象的下列属性： </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp853761">
												</a>
												<div class="pSmartBullet2">
														<li>
																<b style="FONT-WEIGHT: bold">名称</b>：在网页的 HTML 代码中定义的对象名。</li>
												</div>
												<a name="wp853763">
												</a>
												<div class="pSmartBullet2">
														<li>
																<b style="FONT-WEIGHT: bold">类</b>：对象的类型。<b style="FONT-WEIGHT: bold">WebEdit</b>：表示对象是一个编辑框。</li>
												</div>
												<a name="wp853765">
												</a>
												<div class="pSmartBullet2">
														<li>类型列中的“ABC”图标表示该属性的值是一个常量。</li>
												</div>
												<a name="wp853772">
												</a>
												<p class="pIndent">对于每个对象类，QuickTest 都会建议默认的属性检查。下表描述了默认的检查。<br /><br /></p>
												<table cellspacing="0" cellpadding="5" align="wwp:inherit" border="1">
														<caption>
														</caption>
														<tbody>
																<tr align="middle" bgcolor="#cccccc">
																		<th>
																				<a name="wp851248">
																				</a>
																				<p class="pCellHeading">
																						<span style="FONT-WEIGHT: bold; VERTICAL-ALIGN: baseline; FONT-STYLE: normal; TEXT-DECORATION: none">属性</span>
																				</p>
																		</th>
																		<th>
																				<a name="wp851250">
																				</a>
																				<p class="pCellHeading">值 </p>
																		</th>
																		<th>
																				<a name="wp851252">
																				</a>
																				<p class="pCellHeading">解释 </p>
																		</th>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp851260">
																				</a>
																				<div class="pCellBody">html tag </div>
																		</td>
																		<td>
																				<a name="wp851262">
																				</a>
																				<div class="pCellBody">INPUT </div>
																		</td>
																		<td>
																				<a name="wp851264">
																				</a>
																				<div class="pCellBody">“INPUT”是 HTML 源代码中定义的 HTML 标记。 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp851272">
																				</a>
																				<div class="pCellBody">innertext </div>
																		</td>
																		<td> </td>
																		<td>
																				<a name="wp851276">
																				</a>
																				<div class="pCellBody">在这种情况下，innertext 的值为空。检查点将检查到该值为空。 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp851284">
																				</a>
																				<div class="pCellBody">name </div>
																		</td>
																		<td>
																				<a name="wp851286">
																				</a>
																				<div class="pCellBody">passFirst0 </div>
																		</td>
																		<td>
																				<a name="wp851288">
																				</a>
																				<div class="pCellBody">“passFirst0”是编辑框的名称。 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp851296">
																				</a>
																				<div class="pCellBody">type </div>
																		</td>
																		<td>
																				<a name="wp851298">
																				</a>
																				<div class="pCellBody">text </div>
																		</td>
																		<td>
																				<a name="wp851300">
																				</a>
																				<div class="pCellBody">“text”是 HTML 源代码中定义的对象类型。 </div>
																		</td>
																</tr>
																<tr align="left">
																		<td>
																				<a name="wp851308">
																				</a>
																				<div class="pCellBody">value </div>
																		</td>
																		<td>
																				<a name="wp851310">
																				</a>
																				<div class="pCellBody">&lt;FirstName&gt; </div>
																				<a name="wp851312">
																				</a>
																				<div class="pCellBody">（在录制时输入的名字） </div>
																		</td>
																		<td>
																				<a name="wp851314">
																				</a>
																				<div class="pCellBody">在编辑框中输入的值。 </div>
																		</td>
																</tr>
														</tbody>
												</table>
												<a name="wp853774">
												</a>
												<p class="pIndent">名字是在执行“passFirst0 Set...”步骤时输入到“First Name”框中的。因此，在“检查点属性”对话框的“插入语句”区域中，选择“当前步骤之后”。这将在“passFirst0 Set...”步骤（在该步骤中输入名字）之后插入检查点。 </p>
												<a name="wp853781">
												</a>
												<p class="pIndent_after">接受其他默认的设置并单击“确定”。QuickTest 将标准检查点步骤添加到测试的选定步骤之后。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-stdd_chkpt_in_test_tree.gif" border="0" /><br /><br /></p>
										</ul>
								</div>
								<a name="wp853783">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">保存测试。</b>
										</li>
								</div>
								<a name="wp853786">
								</a>
								<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
								<a name="wp853788">
								</a>
								<p class="pIndent_after">大多数检查点都可以通过上述方法插入。下列部分将解释几种特殊类型的检查点。 <br /><br /><br /></p>
								<blockquote class="indent">
										<a name="wp853796">
										</a>
										<h2 class="pn2Heading">检查页面 </h2>
										<a name="wp853798">
										</a>
										<p class="pRegtext">在本部分中，您将向测试中添加页面检查点。页面检查点检查运行测试时在页面中所找到的链接和图像的数量是否与录制测试时所找到的数量相同。 </p>
										<div class="pSmartListBold1">
												<ol class="pSmartListBold1" type="1">
														<a name="wp853800">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">找到要向其添加页面检查点的页面。</b>
																</li>
														</div>
														<a name="wp853802">
														</a>
														<p class="pIndent">在关键字视图中，单击 (+) 展开“Action1”&gt;“Welcome:Mercury Tours”。 </p>
														<a name="wp853805">
														</a>
														<p class="pIndent">在关键字视图中突出显示“Book a Flight:Mercury”行 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_web_page.gif" border="0" /> 。该页将显示在 Active Screen 中。 </p>
														<a name="wp853807">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">创建页面检查点。</b>
																</li>
														</div>
														<a name="wp853811">
														</a>
														<p class="pIndent">在 Active Screen 中右键单击任何位置，然后选择“插入标准检查点”。将打开“对象选择 - 检查点属性”对话框。注意，该对话框可能包含不同的元素，这取决于您在 Active Screen 中所单击的位置。 </p>
														<a name="wp853814">
														</a>
														<p class="pIndent">突出显示“Page: Book a Flight: Mercury”（顶级）并单击“确定”。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/object%20selection%20-%20insert%20checkpoint1.gif" border="0" /><br /><br /></p>
														<a name="wp853819">
														</a>
														<p class="pIndent">将打开“页面检查点属性”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Page_Checkpoint_Properties.gif" border="0" /><br /><br /></p>
														<a name="wp853825">
														</a>
														<p class="pIndent_after">运行测试时，QuickTest 将检查页面中链接和图像的数量以及加载时间（如对话框顶部窗格中所述）。 </p>
														<a name="wp853831">
														</a>
														<p class="pIndent">QuickTest 还检查每个链接的实际目标 URL 和每个图像的实际来源。 </p>
														<a name="wp853833">
														</a>
														<p class="pIndent">请接受默认设置并单击“确定”。 </p>
														<a name="wp853840">
														</a>
														<p class="pIndent">QuickTest 将向您的测试中添加页面检查点。该操作在关键字视图中显示为“Book a Flight: Mercury”页上的检查点操作。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-page_chkpt_in_test_tree.gif" border="0" /><br /><br /></p>
														<a name="wp853842">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">保存测试。</b>
																</li>
														</div>
														<a name="wp853845">
														</a>
														<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
												</ol>
										</div>
								</blockquote>
								<p class="pIndent_after">
										<br />
								</p>
								<blockquote class="indent">
										<a name="wp853853">
										</a>
										<h2 class="pn2Heading">检查文本 </h2>
										<a name="wp853855">
										</a>
										<p class="pRegtext">在本部分中，您将向测试中添加文本检查点，以检查“New York”是否显示在“Flight Confirmation”页中。 </p>
										<div class="pSmartListBold1">
												<ol class="pSmartListBold1" type="1">
														<a name="wp853857">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">找到要向其添加文本检查点的页面。</b>
																</li>
														</div>
														<a name="wp853859">
														</a>
														<p class="pIndent">在关键字视图中，单击 (+) 展开“Action1”&gt;“Welcome:Mercury Tours”。 </p>
														<a name="wp853861">
														</a>
														<p class="pIndent">在关键字视图中突出显示“Flight Confirmation: Mercury”页。该页将显示在 Active Screen 中。 </p>
														<a name="wp853863">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">创建文本检查点。</b>
																</li>
														</div>
														<a name="wp853865">
														</a>
														<p class="pIndent">在 Active Screen 中的“Departing”的下面，突出显示文本“New York”。 </p>
														<a name="wp853870">
														</a>
														<p class="pIndent">右键单击突出显示的文本并选择“插入文本检查点”。将打开“文本检查点属性”对话框。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/text_check_AQT.gif" border="0" /><br /><br /></p>
														<a name="wp853876">
														</a>
														<p class="pIndent_after">当“已检查的文本”显示在列表框中时，“常量”字段将显示您突出显示的文本字符串。这是在运行该测试时 QuickTest 所要查找的文本。 </p>
														<a name="wp853878">
														</a>
														<p class="pIndent">单击“确定”接受该对话框中的默认设置。 </p>
														<a name="wp853885">
														</a>
														<p class="pIndent">QuickTest 将向您的测试中添加文本检查点。该操作在关键字视图中显示为“Flight Confirmation: Mercury”页上的检查点操作。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-text_chkpt_in_test_tree.gif" border="0" /><br /><br /></p>
														<a name="wp853887">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">保存测试。</b>
																</li>
														</div>
														<a name="wp853890">
														</a>
														<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
												</ol>
										</div>
								</blockquote>
								<p class="pIndent_after">
										<br />
								</p>
								<blockquote class="indent">
										<a name="wp853898">
										</a>
										<h2 class="pn2Heading">检查表 </h2>
										<a name="wp853900">
										</a>
										<p class="pRegtext">在本部分中，您将添加表检查点，检查出发航班的成本（如“Book a Flight: Mercury”页所示）。 </p>
										<div class="pSmartListBold1">
												<ol class="pSmartListBold1" type="1">
														<a name="wp853902">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">找到要向其添加表检查点的页面。</b>
																</li>
														</div>
														<a name="wp853904">
														</a>
														<p class="pIndent">在关键字视图中，单击 (+) 展开“Welcome:Mercury Tours”&gt;“Book a Flight: Mercury”。 </p>
														<a name="wp853906">
														</a>
														<p class="pIndent">在关键字视图中突出显示“passFirst0”步骤。该页将显示在 Active Screen 中。 </p>
														<a name="wp853908">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">创建表检查点。</b>
																</li>
														</div>
														<a name="wp853910">
														</a>
														<p class="pIndent">在 Active Screen 中，右键单击第一班航班 (New York to San Francisco) 所显示的价格，即“270”，然后选择“插入标准检查点”。 </p>
														<a name="wp853914">
														</a>
														<p class="pIndent">将打开“对象选择 - 检查点属性”对话框。 </p>
														<a name="wp853917">
														</a>
														<p class="pIndent">选择“WebTable: New York to San Fransisco”。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/object_selection_checkpoint_properties-table.gif" border="0" /><br /><br /></p>
														<a name="wp853919">
														</a>
														<p class="pIndent_after">注意，选定的表将在 Active Screen 中突出显示。单击“确定”。 </p>
														<a name="wp853924">
														</a>
														<p class="pIndent">将打开“表检查点属性”对话框，并显示该表的行和列。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/table_check1.gif" border="0" /><br /><br /></p>
														<a name="wp853926">
														</a>
														<p class="pIndent_after">注意，默认情况下，所有单元格中都会显示复选标记。您可以双击单元格切换单元格选择，或者双击行标题或列标题切换选定行或列中的所有单元格的选择。 </p>
														<a name="wp853933">
														</a>
														<p class="pIndent">双击每个列标题清除复选标记。双击第 3 列、第 3 行交叉的单元格，选定该单元格的值。（QuickTest 只检查包含复选标记的单元格。） <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/table_check_partial.gif" border="0" /><br /><br /></p>
														<a name="wp853935">
														</a>
														<p class="pTip">提示： 可通过拖动列标题或行标题的边界来更改列宽和行高。 </p>
														<a name="wp853939">
														</a>
														<p class="pIndent">单击“确定”关闭该对话框。 </p>
														<a name="wp853946">
														</a>
														<p class="pIndent">QuickTest 将向您的测试中添加表检查点。该操作在关键字视图中显示为“Book a Flight: Mercury”页下的新步骤。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-table_chkpt_in_test%20tree.gif" border="0" /><br /><br /></p>
														<a name="wp853948">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">保存测试。</b>
																</li>
														</div>
														<a name="wp853951">
														</a>
														<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。 </p>
												</ol>
										</div>
								</blockquote>
								<p class="pIndent_after">
										<br />
								</p>
								<table id="SummaryNotReq2" cellspacing="0" cellpadding="0" align="right" border="0">
										<tbody>
												<tr>
														<td align="right">
																<a accesskey="4" href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-05-5.htm">
																		<img id="LongDescNotReq3" alt="上一个" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/prev.gif" border="0" />
																</a>
																<a accesskey="5" href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/Book-05-7.htm">
																		<img id="LongDescNotReq4" alt="下一个" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/next.gif" border="0" />
																</a>
														</td>
												</tr>
										</tbody>
								</table>
								<br />
								<blockquote class="indent">
										<a name="wp853959">
										</a>
										<h2 class="pn2Heading">使用检查点运行并分析测试 </h2>
										<a name="wp853961">
										</a>
										<p class="pRegtext">在本部分中，您将使用检查点查看测试，运行测试，并分析检查点结果。 </p>
										<div class="pSmartListBold1">
												<ol class="pSmartListBold1" type="1">
														<a name="wp853963">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">展开并查看测试。</b>
																</li>
														</div>
														<a name="wp853967">
														</a>
														<p class="pIndent">选择“视图”&gt;“全部展开”或使用数字键盘上的“*”快捷键。所显示的关键字视图与下图相似：<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-test%20tree_ww.gif" border="0" /><br /><br /></p>
														<a name="wp853969">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">开始运行测试。</b>
																</li>
														</div>
														<a name="wp853972">
														</a>
														<p class="pIndent">单击“运行” <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> 或选择“测试”&gt;“运行”。将打开“运行”对话框。请确保已选定“新建运行结果文件夹”。接受默认的结果文件夹名。 </p>
														<a name="wp853974">
														</a>
														<p class="pIndent">单击“确定”。当完成测试运行时，将打开“测试结果”窗口。 </p>
														<a name="wp853976">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">查看测试结果。</b>
																</li>
														</div>
														<a name="wp853982">
														</a>
														<p class="pIndent">当 QuickTest 完成运行测试时，将打开“测试结果”窗口。测试结果应该为“通过”，表示所有检查点已通过测试。如果一个或多个检查点失败，则测试结果将为“失败”。 </p>
														<a name="wp853986">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">查看页面检查点的结果。</b>
																</li>
														</div>
														<a name="wp853988">
														</a>
														<p class="pIndent">在结果树中，单击 (+) 展开“Checkpoint Iteration 1 (Row 1)”&gt;“Action1 Summary”&gt;“Welcome: Mercury Tours”&gt;“Book a Flight: Mercury”。 </p>
														<a name="wp853990">
														</a>
														<p class="pIndent">突出显示“检查点`Book a Flight: Mercury'”。 </p>
														<a name="wp853992">
														</a>
														<p class="pIndent">在“详细信息”窗格中列出了已检查的项目，可以查看页面检查点的详细信息。 </p>
														<a name="wp853994">
														</a>
														<p class="pTip">提示： 您可以拖动“详细信息”窗格的底部放大该窗格，并且/或者在窗格内滚动以便查看所有检查点的详细信息。 </p>
														<a name="wp853997">
														</a>
														<p class="pIndent">检查点通过，因为已检查的实际属性值与预期值相匹配。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-page%20checkpoint%20results_new.gif" border="0" /><br /><br /></p>
														<a name="wp854001">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">查看表检查点的结果。</b>
																</li>
														</div>
														<a name="wp854004">
														</a>
														<p class="pIndent">在结果树中的“Book a Flight:”页上，单击 (+) 展开“New York to San Francisco” <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_web_table.gif" border="0" /> 。 </p>
														<a name="wp854006">
														</a>
														<p class="pIndent">突出显示“检查点`New York to San Francisco'”。 </p>
														<a name="wp854009">
														</a>
														<p class="pIndent">在“详细信息”窗格中，可以查看表检查点的详细信息。您还可以查看表单元格的值（已检查的单元格值显示为黑色；未检查的单元格值显示为灰色）。检查点通过，因为已检查的单元格的实际值与预期值相匹配。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-table-checkpoint-results.gif" border="0" /><br /><br /></p>
														<a name="wp854013">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">查看标准检查点的结果。</b>
																</li>
														</div>
														<a name="wp854015">
														</a>
														<p class="pIndent">在结果树中的“Book a Flight: Mercury”页上，单击 (+) 展开“passFirst0”。 </p>
														<a name="wp854017">
														</a>
														<p class="pIndent">突出显示“检查点`passFirst0'”。 </p>
														<a name="wp854020">
														</a>
														<p class="pIndent">在“详细信息”窗格中列出了已检查的属性及其值，可以查看标准检查点的详细信息。检查点通过 ，因为已检查的实际属性值与预期值相匹配。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-obj%20checkpoint%20results.gif" border="0" /><br /><br /></p>
														<a name="wp854024">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">查看文本检查点的结果。</b>
																</li>
														</div>
														<a name="wp854026">
														</a>
														<p class="pIndent">在结果树中，单击 (+) 展开“Checkpoint Iteration 1 (Row 1)”&gt;“Action1 Summary”&gt;“Welcome: Mercury Tours”&gt;“Flight Confirmation: Mercury”。 </p>
														<a name="wp854028">
														</a>
														<p class="pIndent">突出显示“检查点`New York'”。 </p>
														<a name="wp854031">
														</a>
														<p class="pIndent">在“详细信息”窗格中，可以查看文本检查点的详细信息。检查点通过，因为实际文本与预期文本相匹配。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Lesson4-text%20checkpoint%20results.gif" border="0" /><br /><br /></p>
														<a name="wp854033">
														</a>
														<div class="pSmartListBold1">
																<li>
																		<b style="FONT-WEIGHT: bold">关闭“测试结果”窗口。</b>
																</li>
														</div>
														<a name="wp854037">
														</a>
														<p class="pIndent">选择“文件”&gt;“退出”。 </p>
												</ol>
										</div>
								</blockquote>
								<p class="pIndent_after">
										<br />
								</p>
						</ol>
				</div>
		</blockquote>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20582.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-15 22:02 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QuickTest自动测试工具基本说明</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20581.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 13:59:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20581.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20581.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20581.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20581.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20581.html</trackback:ping><description><![CDATA[
		<blockquote class="indent">
				<a name="wp664623">
				</a>
				<h2 class="pn2Heading">自动测试的优点 </h2>
				<a name="wp664627">
				</a>
				<p class="pRegtext">如果您曾经手动测试过应用程序或网站，则会了解手动测试的缺点。手动测试既耗时又单调，需要投入大量的人力资源。最糟糕的是，由于时间限制，经常导致无法在应用程序发布前彻底地手动测试所有功能。这会使您担心是否还存在未检测到的严重错误。 </p>
				<a name="wp664633">
				</a>
				<p class="pRegtext">使用 QuickTest 进行自动测试，由于极大地加快了测试流程，从而解决了这些问题。您可以创建用于检查应用程序或网站所有方面的测试，然后在每次网站或应用程序更改时运行这些测试即可。 </p>
				<a name="wp664644">
				</a>
				<p class="pRegtext">运行测试时，QuickTest 将模拟实际用户的操作，如在网页或应用程序窗口中移动鼠标光标、单击图形用户界面 (GUI) 对象和输入键盘输入；但是，QuickTest 的操作比任何实际用户都快。<br /><br /></p>
				<table cellspacing="0" cellpadding="5" align="wwp:inherit" border="1">
						<caption>
						</caption>
						<tbody>
								<tr align="middle" bgcolor="#cccccc">
										<th colspan="2">
												<a name="wp664247">
												</a>
												<p class="pCellHeading">自动测试的优点 </p>
										</th>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664255">
												</a>
												<div class="pCellBody">快速 </div>
										</td>
										<td>
												<a name="wp664261">
												</a>
												<div class="pCellBody">QuickTest 运行测试比实际用户快得多。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664267">
												</a>
												<div class="pCellBody">可靠 </div>
										</td>
										<td>
												<a name="wp664269">
												</a>
												<div class="pCellBody">测试每次运行时都会准确执行相同的操作，因此消除了人为的错误。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664275">
												</a>
												<div class="pCellBody">可重复 </div>
										</td>
										<td>
												<a name="wp664277">
												</a>
												<div class="pCellBody">您可以通过重复执行相同的操作来测试网站或应用程序的反应。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664283">
												</a>
												<div class="pCellBody">可编程 </div>
										</td>
										<td>
												<a name="wp664285">
												</a>
												<div class="pCellBody">您可以编写复杂的测试来找出隐藏的信息。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664291">
												</a>
												<div class="pCellBody">全面 </div>
										</td>
										<td>
												<a name="wp664293">
												</a>
												<div class="pCellBody">您可以建立一套测试来测试网站或应用程序的所有功能。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp664299">
												</a>
												<div class="pCellBody">可重用 </div>
										</td>
										<td>
												<a name="wp664301">
												</a>
												<div class="pCellBody">您可以在不同版本的网站或应用程序上重复使用测试，甚至在用户界面更改的情况下也不例外。 </div>
										</td>
								</tr>
						</tbody>
				</table>
				<br />
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp664652">
				</a>
				<h2 class="pn2Heading">测试流程 </h2>
				<a name="wp664658">
				</a>
				<p class="pRegtext">QuickTest 测试流程包括 7 个主要阶段： </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp664660">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">准备录制</b>
										</li>
								</div>
								<a name="wp664666">
								</a>
								<p class="pIndent">在录制测试前，请确认应用程序和 QuickTest 已按测试要求设置。 </p>
								<a name="wp664668">
								</a>
								<p class="pIndent">请确保应用程序显示要录制的元素，例如，工具栏或特殊窗口窗格；还要确保应用程序选项已按测试目标设置。 </p>
								<a name="wp664674">
								</a>
								<p class="pIndent">为了确保 QuickTest 可以正确地录制和存储信息，您还应该查看“测试设置”对话框（“测试”&gt;“设置”）和“选项”对话框（“工具”&gt;“选项”）中的设置。例如，应该确认测试已设置为使用适当的对象库模式。 </p>
								<a name="wp664676">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">录制应用程序上的会话</b>
										</li>
								</div>
								<a name="wp664682">
								</a>
								<p class="pIndent">浏览应用程序或网站时，QuickTest 会将您执行的每个步骤图形化显示为关键字视图中的一行。步骤是任何引起应用程序发生更改的用户操作，例如单击链接或图像，或者向表单输入数据。 </p>
								<a name="wp664684">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">增强测试</b>
										</li>
								</div>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp664686">
												</a>
												<div class="pSmartBullet2">
														<li>通过在测试中插入检查点可以搜索页面、对象或文本字符串中的特定值，这有助于确定应用程序或网站是否正常运行。</li>
												</div>
												<a name="wp664688">
												</a>
												<div class="pSmartBullet2">
														<li>通过扩大测试范围（用参数替换固定值），可以检查应用程序如何使用多组数据来执行相同的操作。 </li>
												</div>
												<a name="wp664690">
												</a>
												<div class="pSmartBullet2">
														<li>通过添加逻辑和条件语句或循环语句，可以向测试添加复杂的检查。</li>
												</div>
										</ul>
								</div>
								<a name="wp664692">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">调试测试</b>
										</li>
								</div>
								<a name="wp664694">
								</a>
								<p class="pIndent">调试测试，确保测试可以流畅而无中断地运行。 </p>
								<a name="wp664696">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">运行测试</b>
										</li>
								</div>
								<a name="wp664702">
								</a>
								<p class="pIndent">运行测试，检查应用程序或网站的行为。在运行时，QuickTest 将打开应用程序，或者连接到网站，并执行测试中的每个步骤。 </p>
								<a name="wp664704">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">分析测试结果</b>
										</li>
								</div>
								<a name="wp664706">
								</a>
								<p class="pIndent">检查测试结果以便确定应用程序中的缺陷。 </p>
								<a name="wp664708">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">报告缺陷</b>
										</li>
								</div>
								<a name="wp664718">
								</a>
								<p class="pIndent">如果已安装了 Quality Center，则可以将发现的缺陷报告给数据库。Quality Center 是 Mercury Interactive 的软件测试管理工具。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp664730">
				</a>
				<h2 class="pn2Heading">QuickTest 窗口 </h2>
				<a name="wp664736">
				</a>
				<p class="pRegtext">在开始创建测试前，应首先熟悉 QuickTest 的主窗口。 </p>
				<a name="wp664744">
				</a>
				<p class="pRegtext">下图显示了录制测试后将出现的 QuickTest 窗口，其中显示了除“调试查看器”窗格以外的所有工具栏和窗格：<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/QTP_window_WW.gif" border="0" /><br /><br /></p>
				<a name="wp664750">
				</a>
				<p class="pRegtext_after">QuickTest 窗口包含下列主要元素： </p>
				<div class="pSmartBullet1">
						<ul class="pSmartBullet1">
								<a name="wp664754">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">标题栏</b> - 显示当前打开测试的名称。</li>
								</div>
								<a name="wp664762">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">菜单栏</b> - 显示 QuickTest 命令菜单。</li>
								</div>
								<a name="wp664768">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">文件工具栏</b> - 包含若干按钮，可协助您管理测试。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/file_toolbar_ww.gif" border="0" /><br /><br /></li>
								</div>
								<a name="wp664774">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">测试工具栏</b> - 包含若干按钮，可协助您完成测试流程。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/main_toolbar_ww.gif" border="0" /><br /><br /></li>
								</div>
								<a name="wp664780">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">调试工具栏</b> - 包含若干按钮，可协助您调试测试。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/debug_toolbar_ww.gif" border="0" /><br /><br /></li>
								</div>
								<a name="wp664794">
								</a>
								<p class="pNote">注意： 第一次打开 QuickTest 时，不会显示调试工具栏。通过选择“视图”&gt;“工具栏”&gt;“调试”，可以显示调试工具栏。注意，本教程不描述如何调试测试。有关详细信息，请参阅《QuickTest Professional 用户指南》。 </p>
								<a name="wp664800">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">操作工具栏</b> - 包含若干按钮和一个操作列表，用于查看单项操作或整个测试流的详细信息。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/action_toolbar_ww.gif" border="0" /><br /><br /></li>
								</div>
								<a name="wp664814">
								</a>
								<p class="pNote">注意： 操作工具栏只在关键字视图中显示。该工具栏在第一次打开 QuickTest 时不会显示。通过选择“视图”&gt;“工具栏”&gt;“操作”，可以显示操作工具栏。如果在测试中插入可重用操作或外部操作，操作工具栏将自动显示在关键字视图中。有关详细信息，请参阅《QuickTest Professional 用户指南》。 </p>
								<a name="wp664816">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">测试窗格</b> - 包含“关键字视图”和“专家视图”选项卡。</li>
								</div>
								<a name="wp664818">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">Active Screen</b> - 当您在录制会话过程中执行某个特定步骤时，提供出现的应用程序的快照。</li>
								</div>
								<a name="wp664824">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">数据表</b> - 协助您对测试进行参数化。</li>
								</div>
								<a name="wp664830">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">“调试查看器”窗格</b> - 协助您对测试进行调试。“调试查看器”窗格包含“监视表达式”、“变量”和“命令”选项卡。（第一次打开 QuickTest 时，不会显示“调试查看器”窗格。通过选择“视图”&gt;“调试查看器”，可以显示“调试查看器”。）</li>
								</div>
								<a name="wp664838">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">状态栏</b> - 显示 QuickTest 应用程序的状态。</li>
								</div>
						</ul>
				</div>
				<a name="wp664856">
				</a>
				<p class="pRegtext_after">文件工具栏和测试工具栏中所用的按钮在后续课程中进行了详细描述。调试工具栏中所用的按钮在《QuickTest Professional 用户指南》的“调试测试”一章中进行了详细描述。操作工具栏在<a href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/dividing_tests_multiple_actions.htm">将测试拆分为多操作.</a>中进行了描述。 </p>
				<a name="wp664870">
				</a>
				<p class="pRegtext">注意，还可以使用快捷键执行许多菜单命令。有关详细信息，请参阅《QuickTest Professional 用户指南》的“QuickTest 概述”一章。 </p>
				<a name="wp664876">
				</a>
				<p class="pRegtext">既然已经熟悉了 QuickTest 主窗口，请再花些时间浏览它的组件。 </p>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp214440">
				</a>
				<h2 class="pn2Heading">录制测试 </h2>
				<a name="wp214442">
				</a>
				<p class="pRegtext">在本部分中，将录制在 Mercury Tours 网站上预定从 New York 到 San Francisco 航班的进程。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp214451">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">启动 QuickTest</b>
												<span style="FONT-WEIGHT: normal">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" />
												</span>
												<b style="FONT-WEIGHT: bold">并打开新测试。</b>
										</li>
								</div>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp214473">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </li>
												</div>
												<a name="wp214479">
												</a>
												<p class="pIndent_wide">在“加载项管理器”中，确认 Web 加载项处于选定状态，并清除所有其他加载项。单击“确定”，关闭“加载项管理器”，并打开 QuickTest。 </p>
												<a name="wp214489">
												</a>
												<p class="pNote">注意： QuickTest 加载选定的加载项时，将显示 QuickTest 初始屏幕。这可能需要几秒钟的时间。 </p>
												<a name="wp214491">
												</a>
												<p class="pIndent_wide">如果“欢迎使用”窗口打开，请单击“空白测试”。 </p>
												<a name="wp214494">
												</a>
												<p class="pIndent_wide">否则，选择“文件”&gt;“新建”，或单击“新建”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_new_button.gif" border="0" /> 。 </p>
												<a name="wp214496">
												</a>
												<p class="pIndent_wide">将打开空白测试。 </p>
												<a name="wp214506">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 已打开，请选择“帮助”&gt;“关于 QuickTest Professional”检查加载的加载项。如果未加载 Web 加载项，则必须退出并重新启动 QuickTest。当“加载项管理器”打开时，选择 Web 加载项，并清除所有其他加载项。</li>
												</div>
												<a name="wp214509">
												</a>
												<p class="pIndent_wide">选择“文件”&gt;“新建”，或单击“新建”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_new_button.gif" border="0" /> 。 </p>
												<a name="wp214511">
												</a>
												<p class="pIndent_wide">将打开空白测试。 </p>
												<a name="wp214517">
												</a>
												<p class="pNote">注意： 如果启动 QuickTest 时未打开“加载项管理器”，请选择“工具”&gt;“选项”。在“常规”选项卡中，选择“启动时显示加载项管理器”。退出并重新启动 QuickTest 后，将打开“加载项管理器”。 </p>
										</ul>
								</div>
								<a name="wp214521">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">开始在 Mercury Tours 网站上进行录制。</b>
										</li>
								</div>
								<a name="wp214525">
								</a>
								<p class="pIndent">选择“测试”&gt;“录制”，或单击“录制”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_record.gif" border="0" /> 。将打开“录制和运行设置”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/record_run_set_web.gif" border="0" /><br /><br /></p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp214527">
												</a>
												<div class="pSmartBullet2">
														<li>在“Web”选项卡中，选择“录制或运行会话开始时打开以下浏览器”。 </li>
												</div>
												<a name="wp214529">
												</a>
												<p class="pIndent_wide">从“类型”列表中选择一种浏览器，并确认“地址”框中的 URL 为 <b style="FONT-WEIGHT: bold">http://newtours.mercuryinteractive.com</b>。 </p>
												<a name="wp214531">
												</a>
												<p class="pIndent_wide">确认“当测试关闭时关闭浏览器”和“不在已经打开的浏览器上录制和运行”处于选定状态。 </p>
												<a name="wp214534">
												</a>
												<div class="pSmartBullet2">
														<li>在“Windows 应用程序”选项卡中，确认“在以下应用程序（会话开始时打开的）上录制并运行”处于选定状态，且未列出任何应用程序。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/record_run_set_win.gif" border="0" /><br /><br /></li>
												</div>
												<a name="wp214536">
												</a>
												<p class="pIndent_wide_after">该设置可防止录制会话期间无意中录制在各种 Windows 应用程序（例如电子邮件）上执行的操作。 </p>
												<a name="wp214538">
												</a>
												<p class="pIndent_after">单击“确定”。 </p>
												<a name="wp214540">
												</a>
												<p class="pIndent">QuickTest 开始录制，且浏览器将打开 Mercury Tours 网站。 </p>
										</ul>
								</div>
								<a name="wp214542">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">登录到 Mercury Tours 网站。 </b>
										</li>
								</div>
								<a name="wp214544">
								</a>
								<p class="pIndent">在“User Name”和“Password”框中，键入在 Mercury Tours 中注册的用户名和密码。 </p>
								<a name="wp214546">
								</a>
								<p class="pIndent">单击“Sign-In”。 </p>
								<a name="wp214548">
								</a>
								<p class="pIndent">将打开“Flight Finder”页。 </p>
								<a name="wp214550">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">输入航班详细信息。</b>
										</li>
								</div>
								<a name="wp214552">
								</a>
								<p class="pIndent">更改下列选项： </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp214554">
												</a>
												<div class="pSmartBullet2">
														<li>Departing From：<b style="FONT-WEIGHT: bold">New York</b></li>
												</div>
												<a name="wp214556">
												</a>
												<div class="pSmartBullet2">
														<li>On：<b style="FONT-WEIGHT: bold">Dec 29</b></li>
												</div>
												<a name="wp214558">
												</a>
												<div class="pSmartBullet2">
														<li>Arriving In：<b style="FONT-WEIGHT: bold">San Francisco</b></li>
												</div>
												<a name="wp214560">
												</a>
												<div class="pSmartBullet2">
														<li>Returning：<b style="FONT-WEIGHT: bold">Dec 31</b></li>
												</div>
												<a name="wp214562">
												</a>
												<div class="pSmartBullet2">
														<li>Service Class：<b style="FONT-WEIGHT: bold">Business class</b></li>
												</div>
												<a name="wp214564">
												</a>
												<p class="pIndent">单击“CONTINUE”，接受其他默认选项。将打开“Select Flight”页。 </p>
												<a name="wp214566">
												</a>
												<p class="pNote_cust_top">
														<b style="FONT-WEIGHT: bold">注意：</b>
												</p>
												<a name="wp214572">
												</a>
												<p class="pNote_middle">选择日期时，必须单击下拉列表，滚动到任意未显示的项，然后进行选择。这是因为仅当列表中的值发生变化时，QuickTest 才会录制步骤。如果接受当前显示的日期，本教程将无法正确完成。 </p>
												<a name="wp214574">
												</a>
												<p class="pNote_middle">如果在录制该测试时输入日期，请勿单击“View Calendar”按钮（该按钮会打开一个基于 Java 的日历）。测试不会录制使用该日历选择的日期，因为本教程中未加载 Java 加载项（Java 加载项是一种可单独购买的外部加载项）。 </p>
												<a name="wp214592">
												</a>
												<p class="pNote_bottom">要检查加载了哪些加载项，请单击“帮助”&gt;“关于 QuickTest Professional”。要更改可用于您测试的加载项，必须关闭并重新打开 QuickTest Professional。 </p>
										</ul>
								</div>
								<a name="wp214594">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">选择航班。</b>
										</li>
								</div>
								<a name="wp214596">
								</a>
								<p class="pIndent">单击“CONTINUE”，接受默认的航班选项。将打开“Book a Flight”页。 </p>
								<a name="wp214598">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">输入所需的乘客信息和购票信息。</b>
										</li>
								</div>
								<a name="wp214600">
								</a>
								<p class="pIndent">在“Passengers”和“Credit Card”部分，输入所需信息（带有红色文本标签的字段）。（可以输入虚构的信息。） </p>
								<a name="wp214602">
								</a>
								<p class="pIndent">在“Billing Address”部分，选择“Ticketless Travel”。 </p>
								<a name="wp214604">
								</a>
								<p class="pIndent">在该页底部，单击“SECURE PURCHASE”。将打开“Flight Confirmation”页。 </p>
								<a name="wp214606">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">复查并完成预定。</b>
										</li>
								</div>
								<a name="wp214608">
								</a>
								<p class="pIndent">单击“BACK TO HOME”。将打开 Mercury Tours 主页。 </p>
								<a name="wp214610">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">停止录制。</b>
										</li>
								</div>
								<a name="wp214617">
								</a>
								<p class="pIndent">在 QuickTest 中，单击“测试”工具栏上的“停止” <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_stop.gif" border="0" /> ，停止录制进程。 </p>
								<a name="wp214623">
								</a>
								<p class="pIndent">现在您已预定了一张虚构的从 New York 飞往 San Francisco 航班的商务舱机票。QuickTest 录制了从点击“录制”按钮直到点击“停止”按钮期间的 Web 浏览器的操作。 </p>
								<a name="wp214625">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">保存测试。</b>
										</li>
								</div>
								<a name="wp214628">
								</a>
								<p class="pIndent">选择“文件”&gt;“保存”，或单击“保存”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_save_button.gif" border="0" /> 。将打开“保存”对话框，且显示为“Tests”文件夹。 </p>
								<a name="wp214630">
								</a>
								<p class="pIndent">创建名为 <span class="cExample">Tutorial</span> 的文件夹，将其选中，然后单击“打开”。 </p>
								<a name="wp214632">
								</a>
								<p class="pIndent">在“文件名”字段中键入 <span class="cExample">Recording</span>。 </p>
								<a name="wp214634">
								</a>
								<p class="pIndent">确认“保存 Active Screen 文件”处于选定状态。 </p>
								<a name="wp214640">
								</a>
								<p class="pIndent">单击“保存”。测试名 (<span class="cExample">Recording</span>) 将显示在主 QuickTest 窗口中的标题栏中。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp214648">
				</a>
				<h2 class="pn2Heading">在关键字视图中分析测试 </h2>
				<a name="wp214654">
				</a>
				<p class="pRegtext">录制测试时，QuickTest 在关键字视图中生成了表示在 Web 浏览器中执行的每个操作的步骤。 </p>
				<a name="wp214656">
				</a>
				<p class="pRegtext">关键字视图中的各列显示各个步骤的不同信息，如下所示： </p>
				<div class="pSmartBullet1">
						<ul class="pSmartBullet1">
								<a name="wp214658">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">项</b> - 以基于图标的层次树形式显示每个步骤（测试对象、实用程序对象、函数调用或语句）的项。</li>
								</div>
								<a name="wp214660">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">操作</b> - 要在项上执行的操作，例如，<b style="FONT-WEIGHT: bold">Click</b> 或 <b style="FONT-WEIGHT: bold">Select</b>。</li>
								</div>
								<a name="wp214662">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">值</b> - 选定操作的参数值，例如，单击图像时要使用的鼠标按钮。</li>
								</div>
								<a name="wp214664">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">分配</b> - 将值分配给变量，或从变量分配值，以便稍后可以在测试中使用该值。</li>
								</div>
								<a name="wp214666">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">注释</b> - 要添加的关于步骤的任何文本信息，例如，<span class="cExample">返回测试第一步中使用的页面</span>。</li>
								</div>
								<a name="wp214668">
								</a>
								<div class="pSmartBullet1">
										<li>
												<b style="FONT-WEIGHT: bold">文档</b> - 描述步骤所执行操作的自动文档，用易于理解的句子编写，例如，<span class="cExample">单击“findFlights”图像</span>。</li>
								</div>
								<a name="wp214670">
								</a>
								<p class="pNote">注意： 您可以根据需要隐藏或显示单个列，方法是右键单击关键字视图中的列标题，然后从列表中选择列名。 </p>
						</ul>
				</div>
				<a name="wp214672">
				</a>
				<p class="pRegtext">在关键字视图的“项”列中，可以单击分支箭头展开或折叠每个网页下的步骤。可以选择“视图”&gt;“全部展开”展开整个测试。 </p>
				<a name="wp214675">
				</a>
				<p class="pRegtext">展开测试后，看上去应类似于下图：<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/recorded.gif" border="0" /><br /><br /></p>
				<a name="wp214686">
				</a>
				<p class="pRegtext_after">对于在某个对象上执行的每一步骤，QuickTest 都会在关键字视图中显示一行，包括图标和该步骤的详细信息。例如，以下步骤指示 QuickTest 在 Mercury Tours 网站的“Select a Flight:Mercury”页上的特定位置单击“reserveFlights”图像。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/step.gif" border="0" /><br /><br /></p>
				<a name="wp214689">
				</a>
				<p class="pRegtext_after">下表提供了以上关键字视图的测试中显示的前几个步骤的解释。<br /><br /></p>
				<table cellspacing="0" cellpadding="5" align="wwp:inherit" border="1">
						<caption>
						</caption>
						<tbody>
								<tr align="middle" bgcolor="#cccccc">
										<th>
												<a name="wp212176">
												</a>
												<p class="pCellHeading">
														<b style="FONT-WEIGHT: bold; VERTICAL-ALIGN: baseline; FONT-STYLE: normal; TEXT-DECORATION: none">步骤</b>
												</p>
										</th>
										<th>
												<a name="wp212178">
												</a>
												<p class="pCellHeading">
														<b style="FONT-WEIGHT: bold">描述</b>
												</p>
										</th>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212185">
												</a>
												<div class="pCellBody">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_example_step1.gif" align="left" border="0" />
												</div>
										</td>
										<td>
												<a name="wp212187">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">Action1 </b>是操作名。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212194">
												</a>
												<p class="pBodyRelative">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_sample_step2_AQT.gif" align="left" border="0" />
												</p>
										</td>
										<td>
												<a name="wp212196">
												</a>
												<div class="pCellBody">浏览器调用 <b style="FONT-WEIGHT: bold">Welcome:Mercury Tours </b>网站。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212203">
												</a>
												<p class="pBodyRelative">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_sample_step3_AQT.gif" align="left" border="0" />
												</p>
										</td>
										<td>
												<a name="wp212205">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">Welcome:Mercury Tours </b>是网页的名称。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212221">
												</a>
												<p class="pBodyRelative">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_sample_step5_AQT.gif" align="left" border="0" />
												</p>
										</td>
										<td>
												<a name="wp212223">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">userName</b> 是编辑框的名称。<b style="FONT-WEIGHT: bold">Set</b> 是在编辑框上执行的方法。<b style="FONT-WEIGHT: bold">mercury</b> 是编辑框的值。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212230">
												</a>
												<p class="pBodyRelative">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_sample_step6_AQT.gif" align="left" border="0" />
												</p>
										</td>
										<td>
												<a name="wp212232">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">password</b> 是编辑框的名称。<b style="FONT-WEIGHT: bold">SetSecure</b> 是在编辑框上执行的加密方法。<b style="FONT-WEIGHT: bold">4082820183afe512e8bc91c1f7222dbd</b></div>
												<a name="wp212234">
												</a>
												<div class="pCellBody">是 password 的加密值。 </div>
										</td>
								</tr>
								<tr align="left">
										<td>
												<a name="wp212241">
												</a>
												<p class="pBodyRelative">
														<img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_sample_step7_AQT.gif" align="left" border="0" />
												</p>
										</td>
										<td>
												<a name="wp212243">
												</a>
												<div class="pCellBody">
														<b style="FONT-WEIGHT: bold">Sign-In</b> 是图像链接的名称。<b style="FONT-WEIGHT: bold">Click</b> 是在图像上执行的方法。<b style="FONT-WEIGHT: bold">2, 2</b> 是图像单击位置的 x 坐标和 y 坐标。 </div>
										</td>
								</tr>
						</tbody>
				</table>
				<a name="wp214691">
				</a>
				<p class="pRegtext_after">用几分钟的时间详细检查关键字视图，跟踪录制测试时执行的步骤。 </p>
				<a name="wp214699">
				</a>
				<p class="pRegtext">
				</p>
		</blockquote>
		<blockquote class="indent">
				<a name="wp117591">
				</a>
				<h2 class="pn2Heading">运行测试 </h2>
				<a name="wp117597">
				</a>
				<p class="pRegtext">在本课中，将运行在<a href="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/recording_tests.htm">录制测试</a>中录制的测试。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp117604">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">启动 QuickTest <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_AQT_icon.gif" border="0" /> 并打开 Recording 测试。</b>
										</li>
								</div>
								<a name="wp117626">
								</a>
								<p class="pIndent">如果 QuickTest 尚未打开，请选择“开始”&gt;“程序”&gt;“QuickTest Professional”&gt;“QuickTest Professional”。 </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp117628">
												</a>
												<div class="pSmartBullet2">
														<li>如果“欢迎使用”窗口打开，请单击“打开现有测试”。 </li>
												</div>
												<a name="wp117635">
												</a>
												<div class="pSmartBullet2">
														<li>如果 QuickTest 打开时未显示“欢迎使用”窗口，请选择“文件”&gt;“打开”，或单击“打开”按钮 <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_open_button.gif" border="0" /> 。 </li>
												</div>
												<a name="wp117637">
												</a>
												<p class="pIndent">在“打开测试”对话框中，找到并选择 <b style="FONT-WEIGHT: bold">Recording</b> 测试，然后单击“打开”。 </p>
										</ul>
								</div>
								<a name="wp117639">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">确认已将所有图像都保存到测试结果中。</b>
										</li>
								</div>
								<a name="wp117645">
								</a>
								<p class="pIndent">通过 QuickTest 可以确定何时将图像保存到测试结果中。在本课中，所有图像均应保存到测试结果中。 </p>
								<a name="wp117647">
								</a>
								<p class="pIndent">选择“工具”&gt;“选项”，然后选择“运行”选项卡。在“将步骤屏幕捕获内容保存到测试结果中”选项中，请选择“总是”。 </p>
								<a name="wp117649">
								</a>
								<p class="pIndent">单击“确定”关闭“选项”对话框。 </p>
								<a name="wp117653">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">开始运行测试。</b>
										</li>
								</div>
								<a name="wp117658">
								</a>
								<p class="pIndent">单击“运行” <img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/sl_run.gif" border="0" /> ，或选择“测试”&gt;“运行”。将打开“运行”对话框。 </p>
								<a name="wp117660">
								</a>
								<p class="pIndent">选择“新建运行结果文件夹”。接受默认的结果文件夹名。 </p>
								<a name="wp117663">
								</a>
								<p class="pIndent">单击“确定”关闭“运行”对话框。 <br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/Run%20Test.gif" border="0" /><br /><br /></p>
								<a name="wp117677">
								</a>
								<p class="pIndent_after">当 QuickTest 打开浏览器并开始运行测试时，请仔细观察。在浏览器中，可以看到 QuickTest 执行您录制的每个步骤，关键字视图左边距中的黄色箭头指示 QuickTest 正在运行的步骤。 </p>
						</ol>
				</div>
		</blockquote>
		<br />
		<blockquote class="indent">
				<a name="wp117689">
				</a>
				<h2 class="pn2Heading">分析测试结果 </h2>
				<a name="wp117697">
				</a>
				<p class="pRegtext">当 QuickTest 完成运行测试时，将打开“测试结果”窗口。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/test_results_main_WW.gif" border="0" /><br /><br /></p>
				<a name="wp117699">
				</a>
				<p class="pIndent_after">最初，“测试结果”窗口包含两个窗格，用于显示测试运行的主要元素。 </p>
				<div class="pSmartBullet2">
						<ul class="pSmartBullet2">
								<a name="wp117705">
								</a>
								<div class="pSmartBullet2">
										<li>左侧窗格显示结果树，即一种描述测试运行时所执行步骤的基于图标的视图。结果树是根据测试运行期间所访问的网页进行组织的，可以展开 (+) 以查看每个步骤。测试运行期间执行的步骤由树中的图标表示。可以指示 QuickTest 多次运行测试或操作，在每次运行时使用不同的数据集。每次测试运行称为一次循环，且对每次循环都进行编号。（您运行的测试仅有一次循环。）</li>
								</div>
								<a name="wp117707">
								</a>
								<div class="pSmartBullet2">
										<li>右侧窗格显示测试结果详细信息。循环概要表显示通过的和失败的循环。状态概要表显示在测试期间通过的和失败的检查点数或报告数以及出现的警告数。</li>
								</div>
						</ul>
				</div>
				<a name="wp117717">
				</a>
				<p class="pRegtext">您的测试运行成功了，这是因为 QuickTest 能够像最初录制测试那样浏览 Mercury Tours 站点。在本部分中，将检查运行测试时 QuickTest 执行的步骤，以及执行某个步骤后应用程序窗口的显示方式。 </p>
				<div class="pSmartListBold1">
						<ol class="pSmartListBold1" type="1">
								<a name="wp117719">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">查看特定步骤的测试结果。</b>
										</li>
								</div>
								<a name="wp117721">
								</a>
								<p class="pIndent">在结果树中，单击 (+) 展开“Test Recording Summary”&gt; <br />“Recording Iteration 1 (Row 1)”&gt;“Action1 Summary”&gt;“Welcome Mercury Tours”&gt;“Find a Flight”。 </p>
								<a name="wp117725">
								</a>
								<p class="pIndent">突出显示结果树中的“"fromPort":Select "New York"”。<br /><br /><img hspace="0" src="mk:@MSITStore:H:\QTP8.2\QTP8.2_Tutorial使用手册\QTP8.2中文版Tutorial.chm::/images/results%20lesson2-1WW.gif" border="0" /><br /><br /></p>
								<a name="wp117727">
								</a>
								<p class="pIndent_after">“测试结果”窗口现在包含三个窗格，分别显示： </p>
								<div class="pSmartBullet2">
										<ul class="pSmartBullet2">
												<a name="wp117729">
												</a>
												<div class="pSmartBullet2">
														<li>突出显示了一个步骤的结果树</li>
												</div>
												<a name="wp117731">
												</a>
												<div class="pSmartBullet2">
														<li>突出显示的步骤的测试结果详细信息</li>
												</div>
												<a name="wp117733">
												</a>
												<div class="pSmartBullet2">
														<li>Active Screen，用于显示在其上执行该步骤的网页的屏幕捕获内容。 </li>
												</div>
												<a name="wp117739">
												</a>
												<p class="pIndent_wide">当在结果树中单击某页时，QuickTest 将在应用程序视图中显示相应页。当在结果树中单击某个步骤（在对象上执行的操作）时，将在应用程序视图中突出显示相应的对象。在该示例中，突出显示“Departing From”文本框。 </p>
										</ul>
								</div>
								<a name="wp117741">
								</a>
								<div class="pSmartListBold1">
										<li>
												<b style="FONT-WEIGHT: bold">关闭“测试结果”窗口。</b>
										</li>
								</div>
								<a name="wp117743">
								</a>
								<p class="pIndent">选择“文件”&gt;“退出”。 </p>
						</ol>
				</div>
				<a name="wp117749">
				</a>
				<p class="pRegtext">现在，您已成功创建并运行了在 Mercury Tours 网站上预定从 New York 飞往 San Francisco 航班的测试。 </p>
		</blockquote>
		<br />
		<br />
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20581.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-15 21:59 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>