<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1788769222070257547</id><updated>2012-01-21T23:47:00.121+08:00</updated><category term='数据库'/><category term='软件测试'/><category term='推荐软件'/><category term='质量保证'/><category term='宝贝儿子'/><category term='建站经过'/><category term='脚本语言'/><category term='原创系列'/><category term='转载系列'/><category term='测试工具'/><category term='最爱金曲'/><category term='测试人生'/><category term='生活感悟'/><category term='今日名言'/><title type='text'>天行健,君子当自强不息</title><subtitle type='html'>关于我的儿子 &amp;&amp; My Cute Son &amp;&amp; 
关于生活感悟 &amp;&amp; Enjoy The Life &amp;&amp; 
关于测试自动化,性能测试, 工具和技术 &amp;&amp; Test Automation, Technology and Methodology &amp;&amp;
关于软件质量保证 &amp;&amp; Software Quality Assurance &amp;&amp;
关于数据库 &amp;&amp; Oracle Database &amp;&amp; 
关于脚本语言 TCL,KSH,Perl,sed,awk和VI &amp;&amp; Script Language &amp;&amp; 
其他一切值得记录的事情 &amp;&amp; Anything Worth Blogging</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default?start-index=101&amp;max-results=100'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>113</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-8716084106268204033</id><published>2011-04-20T18:52:00.001+08:00</published><updated>2011-04-20T18:52:45.754+08:00</updated><title type='text'>You have been recommended to join P1</title><content type='html'>&lt;!-- ImageReady Slices (2008-12-17_174158.png) --&gt; &lt;img src="http://www.p1.cn/action/tra/?u=ricky.zhu.engineer@blogger.com&amp;mail=recommendation_open_20110420&amp;version=c" width="1" height="1"&gt; &lt;table width="100%" bgcolor="#f2f2f2" border="0" cellpadding="0" cellspacing="0" align="center" style="margin:0 auto;"&gt; 	&lt;tr&gt;&lt;td&gt; 	&lt;table width="708" border="0" cellpadding="0" cellspacing="0" align="center" height="114" style="margin:0 auto; background:#f9f9f9; margin-top:10px;"&gt; 		&lt;tr&gt; 			&lt;td valign="top" width="54" align="left" style="margin:0;padding:0;"&gt;&lt;img src="http://www.p1.cn/img/invitation/shadow2_t_l_101027.gif" width="54" style="height:123px; *height:127px;" alt=""&gt;&lt;/td&gt; 			&lt;td valign="top" width="600" align="left" style="margin:0;padding:0;"&gt; 				&lt;img src="http://www.p1.cn/img/invitation/shadow2_t_m.gif" width="600" height="35" alt=""&gt; 				&lt;img src="http://www.p1.cn/img/invitation/nsc_banner_101027.jpg" style="display:block; border:0px;"  width="600" height="88" alt=""&gt; 			&lt;/td&gt; 			&lt;td valign="top" width="54" align="left" style="margin:0;padding:0;"&gt;&lt;img src="http://www.p1.cn/img/invitation/shadow2_t_r_101027.gif" width="54" style="height:123px; *height:127px;"  alt=""&gt;&lt;/td&gt; 		&lt;/tr&gt; 	&lt;/table&gt; 	&lt;table width="708" border="0" cellpadding="0" cellspacing="0" align="center" style="margin:0 auto; background:#f9f9f9; color:#626262;"&gt; 		&lt;tr&gt; 			&lt;td valign="top" width="20" align="left" style="margin:0;padding:0; background:#f2f2f2;"&gt;&lt;/td&gt; 			&lt;td valign="top" width="668" align="left" style="margin:0;padding:0; background:#f9f9f9;"&gt; 				&lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&gt;                   &lt;tr&gt;                     &lt;td&gt;&lt;table width="100%" border="0" cellspacing="0" cellpadding="0"&gt;                       &lt;tr&gt;                         &lt;td width="10%"&gt;&amp;nbsp;&lt;/td&gt;                         &lt;td&gt;&lt;table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin-top:20px; font-family:Trebuchet MS, Arial, Helvetica, sans-serif;text-align:center;"&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;&lt;p style="color:#3D3D3D;font-size:18px; font-weight:700; line-height:40px;"&gt; "Ricky" 推荐您申请P1会籍。&lt;/p&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;&lt;div&gt;&lt;span style="color:#3D3D3D;padding:0;margin:0;font-size:12px;padding-top:13px;line-height:22px;"&gt;P1是一个专为中国精英人士打造的社交网络平台。 &lt;/span&gt;&lt;/div&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;&lt;div&gt;&lt;span style="color:#3D3D3D;padding:0;margin:0;font-size:12px;padding-top:13px;line-height:22px;"&gt;由于我们每天只接受数量极为有限的一批申请人加入， &lt;/span&gt;&lt;/div&gt;                           &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;&lt;span style="color:#3D3D3D;font-size:12px;line-height:30px;"&gt;&lt;span style="color:#3D3D3D;text-align:center;font-size:12px;line-height:30px;"&gt;您需要在P1上认识至少 5 名会员方可加入。 &lt;/span&gt;&lt;/span&gt;                                                    &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;                                                   &lt;/tr&gt;                           &lt;tr&gt;                             &lt;td valign="top"&gt;&lt;p style="color:#3D3D3D;font-size:12px;line-height:30px;"&gt;该推荐信仅供私人使用，自发送之日起一个月内有效。&lt;/p&gt;                           &lt;/tr&gt;                         &lt;/table&gt;                           &lt;table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin-top:20px; font-family:Trebuchet MS, Arial, Helvetica, sans-serif;text-align:center;"&gt;                             &lt;tr&gt;                               &lt;td valign="top"&gt;&lt;p style="color:#3D3D3D;font-size:14px; font-weight:700;"&gt;"Ricky" recommends you to apply for a P1 membership.&lt;/p&gt;&lt;/td&gt;                             &lt;/tr&gt;                             &lt;tr&gt;                               &lt;td valign="top"&gt;&lt;p style="color:#3D3D3D;padding:0;margin:0;font-size:10px; padding-top:10px;line-height:18px;"&gt;P1 is a private social network for exceptional members of society. &lt;/p&gt;&lt;/td&gt;                             &lt;/tr&gt;                             &lt;tr&gt;                               &lt;td height="44" valign="middle"&gt;&lt;span style="color:#3D3D3D;font-size:10px;line-height:22px;"&gt;&lt;span style="color:#3D3D3D;padding:0;margin:0;font-size:10px; padding-top:17px;line-height:22px;"&gt;However, membership is not for everyone, it is very scarce and we only accept a handful people a day.                                 Only if you can show that you have  5  existing connections with our members you will be able to join..&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;                             &lt;/tr&gt;                             &lt;tr&gt;                               &lt;td height="34" valign="middle"&gt;&lt;p style="color:#3D3D3D;font-size:10px;"&gt;This referral is personal and valid for one month only. &lt;/p&gt;&lt;/td&gt;                             &lt;/tr&gt;                             &lt;tr&gt;                               &lt;td align="center" height="24"&gt;&amp;nbsp;&lt;/td&gt;                             &lt;/tr&gt;                           &lt;/table&gt;&lt;/td&gt;                         &lt;td width="10%"&gt;&amp;nbsp;&lt;/td&gt;                       &lt;/tr&gt;                     &lt;/table&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/table&gt;     &lt;table width="600" border="0" align="center" cellpadding="0" cellspacing="0" style="font-family:Trebuchet MS, Arial, Helvetica, sans-serif"&gt;                    &lt;tr&gt;                     &lt;td align="center" height="50"&gt;&lt;p align="center" style="color:#3D3D3D;font-size:12px;line-height:22px;"&gt;&lt;a href="http://www.p1.cn/reg/membership.php?ac=recommend&amp;inviter=998228&amp;u=ricky.zhu.engineer@blogger.com&amp;mail=recommendation_click_20110420&amp;version=c" target="_blank" onFocus="this.blur()" style="color:#000; text-decoration:none;"&gt;&lt;img src="http://ato.p1.cn/img/invitation/button_recommend2_zh_en.gif" style="display:block; border:0px;"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;                   &lt;/tr&gt;                   &lt;tr&gt;                     &lt;td align="center" height="50"&gt;&lt;table width="88%" border="0" cellspacing="0" cellpadding="0" style="margin-top:10px;border:1px solid #a6a7a7;background:#eaeaea;"&gt;                       &lt;tr&gt;                         &lt;td style="color:#3D3D3D;padding:0;margin:0;font-size:10px;padding:5px 10px;"&gt;如果以上按钮无法显示，请点击以下链接：If the above button doesn't display, please use link below: &lt;/td&gt;                       &lt;/tr&gt;                       &lt;tr&gt;                         &lt;td style="color:#3D3D3D;padding:0;margin:0;font-size:10px;padding:0 10px 5px 10px;"&gt;&lt;a href="http://www.p1.cn/reg/membership.php?ac=recommend&amp;inviter=998228&amp;u=ricky.zhu.engineer@blogger.com&amp;mail=recommendation_click_20110420&amp;version=c" target="_blank"&gt;http://www.p1.cn/reg/membership.php?ac=recommend&amp;inviter=998228&lt;/a&gt;&lt;/td&gt;                       &lt;/tr&gt;                     &lt;/table&gt;                                           &lt;/td&gt;                   &lt;/tr&gt;                 &lt;/table&gt; 		      &lt;/td&gt; 			&lt;td valign="top" width="20" align="left" style="margin:0;padding:0; background:#f2f2f2;"&gt;&lt;/td&gt; 		&lt;/tr&gt; 	&lt;/table&gt; 	&lt;table width="708" border="0" cellpadding="0" cellspacing="0" align="center" style="margin:0 auto;;"&gt; 		&lt;tr&gt; 			&lt;td valign="top" align="left" style="margin:0;padding:0;"&gt;&lt;img src="http://www.p1.cn/img/invitation/shadow2_b.gif" style="display:block; border:0px;"&gt;&lt;/td&gt; 		&lt;/tr&gt; 	&lt;/table&gt; 	&lt;table width="610" border="0" cellpadding="0" cellspacing="0" align="center" style="margin:0 auto; font-family:Trebuchet MS, Arial, Helvetica, sans-serif""&gt;      &lt;tr&gt;         &lt;td  align="left" valign="top" style="color:#3D3D3D;font-size:12px;color:#87898c; "&gt;&lt;div align="center"&gt;这封推荐信是由"Ricky"寄出，如果您不想再收到此类邮件，请点击&lt;a target="_blank" href="http://www.p1.cn/reg/email_stop.php?code=e511734224d09c75168ff0ad7448662e&amp;email=ricky.zhu.engineer@blogger.com" style="color:#4F4F4F;text-decoration:none;"&gt;这里&lt;/a&gt;退订。&lt;/div&gt;&lt;/td&gt;       &lt;/tr&gt;       &lt;tr&gt;         &lt;td width="600"  align="left" valign="bottom"  style="border-top:1px solid #f2f2f2;color:#87898c; "&gt;&lt;div align="center"&gt;&lt;span style="padding:0;margin:0;  font-size:9pt; font-family:Trebuchet MS, Arial, Helvetica, sans-serif"&gt;This recommendation was sent to you by "Ricky"&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;       &lt;/tr&gt;       &lt;tr&gt;         &lt;td valign="bottom"  align="left"  style="border-top:1px solid #f2f2f2;color:#87898c; "&gt;&lt;div align="center"&gt;&lt;span style="padding:0;margin:0; font-size:12px; font-family:Trebuchet MS, Arial, Helvetica, sans-serif"&gt;If you do not wish to receive this email in the future please &lt;a target="_blank" href="http://www.p1.cn/reg/email_stop.php?code=e511734224d09c75168ff0ad7448662e&amp;email=ricky.zhu.engineer@blogger.com" style="color:#4F4F4F;text-decoration:none;"&gt;click here&lt;/a&gt; to unsubscribe.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;!-- End ImageReady Slices --&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-8716084106268204033?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/8716084106268204033/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=8716084106268204033' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8716084106268204033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8716084106268204033'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2011/04/you-have-been-recommended-to-join-p1.html' title='You have been recommended to join P1'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-3616361408406658512</id><published>2007-03-01T15:46:00.000+08:00</published><updated>2007-03-01T15:49:37.118+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><category scheme='http://www.blogger.com/atom/ns#' term='测试人生'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>天行健,君子当自强不息</title><content type='html'>天行健的博客已经正式搬家, 新的博客基于WordPress2.1.1构建,空间由www.phpnet.us免费提供.&lt;br /&gt;域名是:www.rickyzhu.com&lt;br /&gt;&lt;br /&gt;新博客的目标:&lt;br /&gt;创建国内知名的个人测试博客.结交广大热爱测试,有志于从事测试的朋友.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-3616361408406658512?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/3616361408406658512/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=3616361408406658512' title='19 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/3616361408406658512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/3616361408406658512'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/03/blog-post.html' title='天行健,君子当自强不息'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-8914527645300705455</id><published>2007-02-22T16:57:00.000+08:00</published><updated>2007-02-22T17:08:16.119+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>几大国外免费主机托管</title><content type='html'>我以为可以彻底抛开和放弃Blogger了,因为之前找到了几家比较好的国外免费主机托管网站, 但是试用这几天给我的第一感受就是一个字: 免费的东西就是不稳定.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;前后试用了N多个,包括kingofhosts.com, my-php.net, prehost, awarespace, 9999mb等等,发现所有的免费托管格式几乎千篇一律,引用chinalong兄弟的一句话"不知道他们在搞什么名堂".&lt;br /&gt;&lt;br /&gt;连注册的程序几乎都一摸一样,都说中国人喜欢模仿,看来也不完全是这样啊, 另外, 对于网站的管理大都基于统一的模式,而且基本都有快速安装工具,可以快速建立基于WP或者其他主流论坛的能力.这的确可以省去建站所花费的时间,而且支持的空间也超级大,从几十G到几百G多少不一,另外,对于二级域名和顶级域名的支持也是出奇的一致. 真的是让我这样的新手不知如何取舍.&lt;br /&gt;&lt;br /&gt;可惜最致命的是对于免费用户的支持都是有限的,而且稳定性没有保证,反反复复折腾吧. 郁闷.看来要想得到稳定可靠的服务和支持还要付出真金白银呐.&lt;br /&gt;&lt;br /&gt;真要好好考虑考虑了.&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-8914527645300705455?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/8914527645300705455/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=8914527645300705455' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8914527645300705455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8914527645300705455'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_22.html' title='几大国外免费主机托管'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2749759582995997284</id><published>2007-02-21T10:33:00.000+08:00</published><updated>2007-02-21T13:49:15.337+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>搬家完毕</title><content type='html'>本博客已经搬家,请访问基于WordPress的站点&lt;a href="http://www.rickyzhu.com"&gt;http://www.rickyzhu.com&lt;/a&gt;查看最新的文章和系列.&lt;br /&gt;&lt;br /&gt;另外,感谢这个&lt;a href="http://www.webbleyou.com/2006-09-14-how-to-move-from-blogger-beta-to-wordpress"&gt;搬家插件&lt;/a&gt;,使我的所有文章都能顺利搬家到新的站点.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--以此纪念在blogspot的三个月--&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end--&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2749759582995997284?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2749759582995997284/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2749759582995997284' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2749759582995997284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2749759582995997284'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_21.html' title='搬家完毕'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5099686725461904649</id><published>2007-02-19T21:13:00.000+08:00</published><updated>2007-02-21T13:49:53.825+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>基于WP架构的个人网站已经建立</title><content type='html'>今天下午,花费了三个小时左右,基于WordPress架构的个人网站rickyzhu.com已经建立完毕.&lt;br /&gt;&lt;br /&gt;现在打算把基于Blogger的这个博客移植到www.rickyzhu.com去,发现WP提供很多其他blog站点的导入功能,其中就包括blogger,不过好像目前只支持旧版本的blogger,也就是用blogger账号,而非google帐号登陆的blogger,看来我的这个站点要搬家还要另外想想办法了....&lt;br /&gt;&lt;br /&gt;打算把目前这个站点搬过去之后,年后就开始在新的网站开始经营了,欢迎新老朋友过去捧场.个人站点的空间是kingofhosts免费提供托管,由WordPress提供技术架构的.&lt;br /&gt;&lt;br /&gt;我申请域名的时候用的是rickyzhu.com,好像rickyzhu.com已经和rickyzhu.kingofhosts.com绑定,并且由kingofhosts提供空间托管,不过www.rickyzhu.com好像指向的是另外一个网站,不知道为什么,在kingofhosts里面好像提供修改的地方,不过已经修改不过了,哪位高手指点一下? 另外,Kingofhosts是一个国外的网站,可能访问的时候时好时坏,不一定有国内付费的空间那么稳定,没办法,穷啊,暂时只能这样了,而且kingofhosts也是提供了一个很简单的页面底部的广告.&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-5099686725461904649?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/5099686725461904649/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=5099686725461904649' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5099686725461904649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5099686725461904649'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/wp.html' title='基于WP架构的个人网站已经建立'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4239459995393996832</id><published>2007-02-19T12:33:00.000+08:00</published><updated>2007-02-19T12:43:33.671+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>新域名得到启用</title><content type='html'>Google Blogger的免费域名绑定服务被封之后，我一直在寻找可以免费托管或者免费域名绑定的服务，现在最终有了结果，&lt;a href="http://www.kingofhosts.com/"&gt;kingofhosts&lt;/a&gt;提供这个功能，而且功能非常全面，最重要的是全免费，提供的服务如下：&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Features&lt;/h2&gt;   KingofHosts has industry leading features that will allow you to build a website above and beyond your competitors, take a look at some of them:   &lt;ul&gt;&lt;li&gt;&lt;s&gt;1,000mb Disk Space&lt;/s&gt;&lt;span style="color: rgb(86, 122, 173);"&gt; &lt;strong&gt;8,000mb&lt;/strong&gt;&lt;/span&gt; disk space (8gb!) &lt;/li&gt;&lt;li&gt;&lt;s&gt;10,000mb Bandwidth&lt;/s&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;  &lt;strong&gt;50,000mb&lt;/strong&gt;&lt;/span&gt; bandwidth (50gb!).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;NO ADVERTISEMENTS&lt;/span&gt;&lt;/strong&gt; on your pages!&lt;/li&gt;&lt;li&gt;FREE &lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;subdomain&lt;/strong&gt;&lt;/span&gt; (yourname.KingofHosts.com)&lt;/li&gt;&lt;li&gt;Easy to use WYSIWYG editor&lt;/li&gt;&lt;li&gt;Full&lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt; FTP&lt;/strong&gt;&lt;/span&gt; Support&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;PHP 4&lt;/strong&gt;&lt;/span&gt; Support&lt;/li&gt;&lt;li&gt;&lt;s&gt;1 mySQL database &lt;/s&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;10 mySQL&lt;/strong&gt; &lt;/span&gt;database's&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;Instant&lt;/strong&gt;&lt;/span&gt; activation&lt;/li&gt;&lt;li&gt;Domain name support&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;99.9%&lt;/strong&gt;&lt;/span&gt; Uptime&lt;/li&gt;&lt;li&gt;and &lt;span style="color: rgb(86, 122, 173);"&gt;&lt;strong&gt;MORE&lt;/strong&gt;&lt;/span&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;您不妨试试，现在我的新域名&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rickyzhu.com/"&gt;rickyzhu.com&lt;/a&gt;&lt;br /&gt;或者&lt;br /&gt;&lt;a href="http://rickyzhu.kingofhosts.com/"&gt;rickyzhu.kingofhosts.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;两者都是可以的，目前在暂时将她们重定向到目前这个Google的博客。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_fwbFyFkh91M/Rdkq4sKdPGI/AAAAAAAAAPk/yVnfUhRb1_k/s1600-h/blog.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_fwbFyFkh91M/Rdkq4sKdPGI/AAAAAAAAAPk/yVnfUhRb1_k/s320/blog.JPG" alt="" id="BLOGGER_PHOTO_ID_5033101211979299938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4239459995393996832?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4239459995393996832/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4239459995393996832' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4239459995393996832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4239459995393996832'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_2934.html' title='新域名得到启用'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_fwbFyFkh91M/Rdkq4sKdPGI/AAAAAAAAAPk/yVnfUhRb1_k/s72-c/blog.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4872617605318958267</id><published>2007-02-19T11:30:00.000+08:00</published><updated>2007-02-19T11:52:56.045+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='宝贝儿子'/><title type='text'>儿子能独自站立了</title><content type='html'>&lt;a href="http://bp1.blogger.com/_fwbFyFkh91M/RdkZ1cKdPFI/AAAAAAAAAPc/iyGRtsa72w8/s1600-h/DSCN0091.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="clear: both; float: left;" alt="" src="http://bp1.blogger.com/_fwbFyFkh91M/RdkZ1cKdPFI/AAAAAAAAAPc/iyGRtsa72w8/s320/DSCN0091.JPG" border="0" /&gt;&lt;/a&gt;&lt;div style="clear: both; text-align: left;"&gt;&lt;a href="http://picasa.google.com/blogger/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbp.gif" alt="Posted by Picasa" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4872617605318958267?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4872617605318958267/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4872617605318958267' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4872617605318958267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4872617605318958267'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_6318.html' title='儿子能独自站立了'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_fwbFyFkh91M/RdkZ1cKdPFI/AAAAAAAAAPc/iyGRtsa72w8/s72-c/DSCN0091.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-8851864616265140276</id><published>2007-02-19T11:27:00.000+08:00</published><updated>2007-02-19T12:46:57.522+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='宝贝儿子'/><title type='text'>小猪猪的成长之路</title><content type='html'>&lt;a href="http://bp0.blogger.com/_fwbFyFkh91M/RdkZQMKdPEI/AAAAAAAAAPU/I3IjE1wUf-o/s1600-h/DSCN0084.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="clear: both; float: left;" alt="" src="http://bp0.blogger.com/_fwbFyFkh91M/RdkZQMKdPEI/AAAAAAAAAPU/I3IjE1wUf-o/s320/DSCN0084.JPG" border="0" /&gt;&lt;/a&gt;    大年初二，小猪猪今天已经满九个月了，可以扶着沙发自己独立行走了，回想起小猪猪的成长经历，从第一声啼哭，第一次主动微笑，第一颗牙齿，第一声爸爸... 一幕一幕仿佛就在眼前，这里把小猪猪每个月有代表性的照片排列在这里，以示留念。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;九个月&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear: both; text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/ricky.zhu/RY1GzBNEu9I/AAAAAAAAAHQ/ZXK2-xZinCA/DSCN0067.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://lh6.google.com/image/ricky.zhu/RY1GzBNEu9I/AAAAAAAAAHQ/ZXK2-xZinCA/DSCN0067.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;七个月（脸上还有些湿疹）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.google.com/image/ricky.zhu/RZiE-hNEvZI/AAAAAAAAALo/s8K3l09y8WA/DSCN0003.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://lh3.google.com/image/ricky.zhu/RZiE-hNEvZI/AAAAAAAAALo/s8K3l09y8WA/DSCN0003.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;                                &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;六个半月（湿疹比较严重）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/ricky.zhu/RV7u7BvaABI/AAAAAAAAAJ0/Ii8N3QCOBd4/DSCN0865.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh5.google.com/image/ricky.zhu/RV7u7BvaABI/AAAAAAAAAJ0/Ii8N3QCOBd4/DSCN0865.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;六个月&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.google.com/image/ricky.zhu/RTNxpLCDABI/AAAAAAAAAA8/vzaCmtOJ7QQ/DSCN0437.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh3.google.com/image/ricky.zhu/RTNxpLCDABI/AAAAAAAAAA8/vzaCmtOJ7QQ/DSCN0437.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;四个月&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/ricky.zhu/RV74_Gd7ABI/AAAAAAAAASQ/eUHyUdGRuTo/0826-7.jpg?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh6.google.com/image/ricky.zhu/RV74_Gd7ABI/AAAAAAAAASQ/eUHyUdGRuTo/0826-7.jpg?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;百日留影&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/ricky.zhu/RWkJ8py6ABI/AAAAAAAAAbA/F_Uxn8kkRvo/DSCN0659.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh6.google.com/image/ricky.zhu/RWkJ8py6ABI/AAAAAAAAAbA/F_Uxn8kkRvo/DSCN0659.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;三个月&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/ricky.zhu/RTNz_UnUABI/AAAAAAAAAIA/tWY9KliZLww/DSCN0403.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh5.google.com/image/ricky.zhu/RTNz_UnUABI/AAAAAAAAAIA/tWY9KliZLww/DSCN0403.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一个月&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/ricky.zhu/RTNybVB4ABI/AAAAAAAAADE/3XXHHhyuU-o/DSCN0288.JPG?imgmax=512"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px;" src="http://lh5.google.com/image/ricky.zhu/RTNybVB4ABI/AAAAAAAAADE/3XXHHhyuU-o/DSCN0288.JPG?imgmax=512" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第一周&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-8851864616265140276?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/8851864616265140276/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=8851864616265140276' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8851864616265140276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8851864616265140276'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_19.html' title='小猪猪的成长之路'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fwbFyFkh91M/RdkZQMKdPEI/AAAAAAAAAPU/I3IjE1wUf-o/s72-c/DSCN0084.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1123104393291033827</id><published>2007-02-15T15:52:00.000+08:00</published><updated>2007-02-15T16:10:14.379+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>LoadRunner性能数据结果分析连载(引言)</title><content type='html'>HP Mercury LoadRunner 是一款功能相当强大的性能测试工具,由三个部分构成, VUGen, Controller以及Analysis. 其中VUGen负责进行脚本录制, Controller是一个总控中心,负责场景的配置,监控器的选取和监控,并选择合适的负载生成器进行执行, Analysis是一个分析模块,主要负责所有执行数据的分析以及报告的生成.&lt;br /&gt;    之所以说LoadRunner是强大的性能测试工具,主要是因为VUGen支持大概好几十种主流的协议. 因此支持的被测对象相当广泛,另外Analysis也有超强的功能,提供非常丰富的图表,供测试结束之后分析和定位问题. &lt;br /&gt;    我使用Mercury LoadRunner有一年左右,2006年6月通过了LoadRunner的SP考试,并于12月底参加了CPC考试,以2分之差失败. 在这一年之内对Controller和Analysis的使用有一些心得和体会,大概能看懂一些主要的分析图表,包括事务相关的一些图表,所以希望作一个总结,对希望学习和了解LoadRunner的朋友有一些帮助. 因为时间有限,所以初步打算以系列的形式发表. 下次打算介绍Analysis提供图表的概述.&lt;br /&gt;&lt;br /&gt;--to be continued&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1123104393291033827?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1123104393291033827/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1123104393291033827' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1123104393291033827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1123104393291033827'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/loadrunner_15.html' title='LoadRunner性能数据结果分析连载(引言)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-349107293720707769</id><published>2007-02-15T14:13:00.000+08:00</published><updated>2007-02-15T14:15:09.508+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='最爱金曲'/><title type='text'>Andy Mckee</title><content type='html'>好牛的吉他弹奏.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ddn4MGaS3N4"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Ddn4MGaS3N4" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-349107293720707769?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/349107293720707769/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=349107293720707769' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/349107293720707769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/349107293720707769'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/andy-mckee.html' title='Andy Mckee'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2531472592973765016</id><published>2007-02-14T17:29:00.000+08:00</published><updated>2007-02-14T17:35:04.674+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>软件测试自动化之实践</title><content type='html'>我之前写过几篇原创的关于自动化测试的思考和总结,今天整理资料的时候发现这篇文档,涉及到实施自动化测试的切入,自动化测试的适应范围,自动化测试的环境,自动化测试的开展,甚至自动化测试的风箱评估等等,这篇文档系统的阐述了这些重要内容,给自动化测试的开展提供了一些理论方面的指导,跟我的前面几篇文档有异曲同工之处,可以做为一个补充和参考.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="margin-bottom: 6pt; text-align: left;" align="left"&gt;&lt;a name="_Toc113173287"&gt;&lt;/a&gt;&lt;a name="_Toc113088542"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;一、概述&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoBodyTextIndent"&gt;&lt;span style="font-family: 宋体;"&gt;软件测试自动化，从计算机这一庞大学科发展至今，最根本的意义是解决手工劳动的复杂性，成为替代某些重复性行为模式的最佳工具。&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc113173288"&gt;&lt;/a&gt;&lt;a name="_Toc113090638"&gt;&lt;/a&gt;&lt;a name="_Toc113090357"&gt;&lt;/a&gt;&lt;a name="_Toc113090270"&gt;&lt;/a&gt;&lt;a name="_Toc113088543"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;二、实施软件测试自动化的理由&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;1.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;提高测试效率和降低测试成本&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;2.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;将重复性强的测试由手工转为可以独立开来自动实现的。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;3.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;实现快速的回归测试，提高新版本发布的速度和质量，尤其是不能适应目前流行的迭代开发，回归测试频度高、工作量大，人工的测试很难对新的迭代版本作出快速评估。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;4.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;自动测试可以避免，人工测试容易犯的错误：错误测试、漏测试、多测试和重复测试等&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;5.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;典型的应用，例如多用户并发注册、并发交易请求和并发交易应答，这种情况用人工测试几乎是办不到的，而自动测试却很容易。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;span style=""&gt;6.&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;对于很常用的功能性边界测试测试，人工测试非常耗费时间，而自动测试很快且准确。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;可以说，实施测试自动化是软件行业一个不可逆转的趋势，如果在这个领域走在了前列，无论从企业的核心竞争力还是个人的工作技能来说，都有巨大的优越性。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc113173290"&gt;&lt;/a&gt;&lt;a name="_Toc113090640"&gt;&lt;/a&gt;&lt;a name="_Toc113090359"&gt;&lt;/a&gt;&lt;a name="_Toc113090272"&gt;&lt;/a&gt;&lt;a name="_Toc113088545"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;三、软件测试自动化的引入条件&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;自动化测试能大大降低手工测试工作，但决不能完全取代手工测试。完全的自动化测试只是一个理论上的目标，实际上想要达到&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt; 100% &lt;/span&gt;&lt;span style="font-family: 宋体; color: black;"&gt;的自动化测试，不仅代价相当昂贵，而且操作上也是几乎不可能实现。一般来说，一个&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt; 40-60% &lt;/span&gt;&lt;span style="font-family: 宋体; color: black;"&gt;的利用自动化的程度已经是非常好的了，达到这个级别以上将过大的增加测试相关的维护成本。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 宋体; color: black;"&gt;测试&lt;/span&gt;&lt;span style="font-family: 宋体; color: black;"&gt;自动化&lt;/span&gt;&lt;span style="font-family: 宋体; color: black;"&gt;的引入有一定的标准，要经过综合的评估，绝对不能理解成测试工具简单的录制与回放过程。实际上，从实现成熟度来说，自动化测试分五个级别&lt;/span&gt;&lt;span style="font-family: 宋体; color: blue;"&gt;：&lt;/span&gt;&lt;span style="font-family: 宋体;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="border: medium none ; width: 419pt; margin-left: -2.25pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="559"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="border: 1pt solid black; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;级别 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;说明 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" width="136"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;优点 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 134pt;" width="179"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;缺点 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" width="132"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;用法 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;一级 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体; font-weight: normal;"&gt;录制和回放&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt; &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" valign="top" width="136"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;自动化的测试脚本能够被自动的生成，而不需要有任何的编程知识   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 134pt;" valign="top" width="179"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;拥有大量的测试脚本，当需求和应用发生变化时相应的测试脚本也必须被重新录制   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" valign="top" width="132"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;当测试的系统不会发生变化时，实现小规模的自动化   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;二级 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体; font-weight: normal;"&gt;录制、编辑和回放&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt; &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" valign="top" width="136"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;减少脚本的数量和维护的工作   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 134pt;" valign="top" width="179"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;需要一定的编程知识；频繁的变化难于维护   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" valign="top" width="132"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;回归测试时，用于被测试的应用有很小的变化   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;三级 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体; font-weight: normal;"&gt;编程和回放&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt; &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" valign="top" width="136"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;确定了测试脚本的设计，在项目的早期就可以开始自动化的测试   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 134pt;" valign="top" width="179"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;要求测试人员具有很好的软件技能，包括设计、开发   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" valign="top" width="132"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;大规模的测试套件被开发、执行和维护的专业自动化测试   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;四级 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体; font-weight: normal;"&gt;数据驱动的测试&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt; &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" valign="top" width="136"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;能够维护和使用良好的并且有效的模拟真实生活中数据的测试数据   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 134pt;" valign="top" width="179"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;软件开发的技能是基础，并且需要访问相关的测试数据   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" valign="top" width="132"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;大规模的测试套件被开发、执行和维护的专业自动化测试   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 20.4pt;" width="27"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;五级 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 63.6pt;" width="85"&gt;   &lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体; font-weight: normal;"&gt;使用动作词的测试自动化&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt; &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 101.7pt;" valign="top" width="136"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;测试用例的设计被从测试工具中分离了出来   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 134pt;" valign="top" width="179"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;需要一个具有工具技能和开发技能的测试团队   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 99.3pt;" valign="top" width="132"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;专业的测试自动化将技能的使用最优化的结合起来   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: blue;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;自动化测试能提高测试效率，快速定位测试软件各版本中的功能与性能缺陷，但不会创造性的发现测试脚本里没有设计的缺陷。测试工具不是人脑，要求测试设计者将测试中各种分支路径的校验点进行定制&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;,&lt;/span&gt;&lt;span style="font-family: 宋体; color: black;"&gt;没有定制完整，即便事实上出错的地方，测试工具也不会发觉。因此，制订全面、系统的测试设计工作是相当重要的。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;自动化测试能提高测试效率，但对于周期短、时间紧迫的项目不宜采用自动化测试。推行自动化测试的前期工作相当庞大，将企业级自动化测试框架应用到一个项目中也要评估其合适性，因此决不能盲目的的应用到任何一个测试项目中，尤其不适合周期短的项目，因为很可能需要大量的测试框架的准备和实施而会被拖跨。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 宋体; color: black;"&gt;实施测试自动化必须进行多方面的培训，包括测试流程、缺陷管理、人员安排、测试工具使用等。如果测试过程是不合理的，引入自动化测试只会给项目团队带来更大的混乱。&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 宋体; color: black;"&gt;那么应该具备什么样的条件才可以引入自动化测试呢，才可以最大可能的减少引入风险，并能够可持续性的开展下去呢？&lt;/span&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;第一，从项目规模上来说，没有严格限制。无论项目大小，都需要提高测试效率，希望测试工作标准化，测试流程正规化，测试代码重用化。所以第一要做到的，就是从公司高层开始，直到测试部门的任何一个普通工程师，都要树立实施自动化测试的坚定决心，不能抱着试试看的态度。一般来说，一个这样的软件开发团队可以优先开展自动化测试工作：测试与开发人员比例合适，比如&lt;span lang="EN-US"&gt;1&lt;/span&gt;：&lt;span lang="EN-US"&gt;3&lt;/span&gt;到&lt;span lang="EN-US"&gt;1&lt;/span&gt;：&lt;span lang="EN-US"&gt;5&lt;/span&gt;，开发团队总人数不少于&lt;span lang="EN-US"&gt;10&lt;/span&gt;个。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;第二，从公司的产品特征来说，一般开发产品的项目实施自动化测试要比纯项目开发要优越些。但决不是说做纯项目开发不能实施自动化测试，只要软件的开发流程、测试流程、缺陷管理流程规范了，自动化测试自然水到渠成。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;第三，从测试人员个人素质和角色分配来说，除了有高层重视外，还应该有个具有良好自动化测试背景和丰富自动化测试经验的测试主管，不仅在技术方面，更重要的是在今后的自动化测试管理位置起着领导的作用。还要有几个出色的开发经验良好的测试人员，当然也可以是开发工程师，负责编写测试脚本、开发测试框架&lt;span lang="EN-US"&gt;,&lt;/span&gt;还有一些测试执行者，他们要对软件产品业务逻辑相当熟练，配合测试设计者完成设计工作，并在执行自动测试时，敏锐的分析和判断软件缺陷。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体;"&gt;综合分析上述三个条件，就可以决定是否推行自动化测试；但是为了减少实施风险，还要预测到其他潜在的风险，做好事先解决问题规避风险的思路。&lt;span lang="EN-US"&gt; &lt;a name="_Toc113090360"&gt;&lt;/a&gt;&lt;a name="_Toc113090273"&gt;&lt;/a&gt;&lt;a name="_Toc113088547"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style="font-family: 宋体;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc113173291"&gt;&lt;/a&gt;&lt;a name="_Toc113090641"&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;四、对实施自动化测试的风险分析&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;资金风险，虽然有些项目具备实施自动化测试的条件，但还是要引入自动化测试后组织结构调整等方面的成本估算是很必要的。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 宋体;"&gt;自动化测试对软件功能类型的切入点的风险，开发的产品业务和功能是否需要自动化测试？包括白盒自动化测试、功能自动化测试和性能自动化测试。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;软件自动化测试切入方式的风险，一定要将自动化测试与手工测试结合起来使用，不合理的规划会造成工作事倍功半。首先，对于自动化测试率的目标开始是&lt;span lang="EN-US"&gt; 20/80 &lt;/span&gt;（&lt;span lang="EN-US"&gt;20% &lt;/span&gt;的自动化测试和&lt;span lang="EN-US"&gt; 80% &lt;/span&gt;的手工测试），当这些目标都实现了，再将自动化测试率提高。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;时间估算，在评估完前面几项指标后，需要估算实施测试自动化的时间周期，以防止浪费不必要的时间，减少在人员、资金、资源投入上的无端消耗。虽然到测试自动化步入正轨以后，会起到事半功倍的效果，但前期的投入巨大，要全面考虑各种因素，明确实施计划并按计划严格执行，才能最大限度降低风险。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21pt;"&gt;&lt;span style="font-family: 宋体; color: black;"&gt;工作流程变更风险，测试团队乃至整个开发组织实施测试自动化，或多或少会因为适应测试工具的工作流程，带来团队的测试流程、开发流程的相应变更，而且，如果变更不善，会引起团队成员的诸多抱怨情绪；所以应该尽量减少这种变更，并克服变更中可能存在的困难。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name="_Toc113173292"&gt;&lt;/a&gt;&lt;a name="_Toc113090642"&gt;&lt;/a&gt;&lt;a name="_Toc113090361"&gt;&lt;/a&gt;&lt;a name="_Toc113090274"&gt;&lt;/a&gt;&lt;a name="_Toc113088548"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;五、&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;什么条件下使用自动化测试&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 21.1pt;"&gt;&lt;b&gt;&lt;span style="font-family: 宋体; color: black;"&gt;一般在这样的条件下使用自动化测试&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: black;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;具有良好定义的测试策略和测试计划（知道要测试什么，知道什么时候测试）&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;对于自动化测试你拥有一个能够被识别的测试框架和候选者&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;能够确保多个测试运行的构建策略&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;多平台环境需要被测试&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;拥有运行测试的硬件&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;拥有关注在自动化过程上的资源&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-indent: 21.1pt;"&gt;&lt;span style="font-family: 宋体; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: 宋体; color: black;"&gt;如下条件下是宜采用手工测试：&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: black;" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;没有标准的测试过程&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;没有一个测试什么、什么时候测试的清晰的蓝图&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;在一个项目中，测试责任人是一个新人，并且还不是完全的理解方案的功能性和或者设计&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;整个项目在时间的压力下&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 42pt; text-indent: -21pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-family: Wingdings; color: black;" lang="EN-US"&gt;&lt;span style=""&gt;l&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;         &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-family: 宋体; color: black;"&gt;在团队中没有资源或者具有自动化测试技能的人&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;a name="_Toc113173289"&gt;&lt;/a&gt;&lt;a name="_Toc113090639"&gt;&lt;/a&gt;&lt;a name="_Toc113090358"&gt;&lt;/a&gt;&lt;a name="_Toc113090271"&gt;&lt;/a&gt;&lt;a name="_Toc113088544"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;a name="_Toc113173294"&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: 黑体;"&gt;六、各测试阶段的自动化测试评估&lt;/span&gt;&lt;/b&gt;&lt;/a&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="border: medium none ; width: 435pt; margin-left: -2.25pt; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0" width="580"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="border: 1pt solid black; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;测试阶段&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;描　　　　　　　述 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;备　　　　注 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;单元测试&lt;span lang="EN-US"&gt;/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;组件测试 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这个测试工作通常是开发人员的职责，很多不同的方法能够被使用，比如&lt;span lang="EN-US"&gt;"&lt;/span&gt;测试先行&lt;span lang="EN-US"&gt;"&lt;/span&gt;，它是一个测试框架，开发人员在编写代码前编写不同的单元测试，当测试通过时，代码也被完成了。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;通过使用正式的单元测试，不仅能够帮助开发人员产出更加稳定的代码，而且能够是软件的整体质量更加的好。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;集成测试 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这里的测试工作集中在验证不同的组件之间的集成上。 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这种类型的测试通常是被测试系统的更加复杂测试的基础，大量的边缘测试被合并以制造出不同的错误处理测试。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;系统测试 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这种测试是通过执行用户场景模拟真实用户使用系统，以证明系统具有被期望的功能。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这里不需要进行自动化的测试。安装测试、安全性测试通常是有手工完成的，因为系统的环境是恒定不变的。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr style="page-break-inside: avoid;"&gt;   &lt;td colspan="3" style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 435pt;" width="580"&gt;   &lt;p class="MsoHeader" style="border: medium none ;"&gt;&lt;span style=""&gt;&lt;span style="font-family: 宋体;"&gt;其它两种非常重要的测试&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;回归测试 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;回归测试实际上是重复已经存在的测试，通常如果是手工完成的化，这种测试只在项目的结尾执行执行一到两次。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;这里完全有潜力应用自动化的测试，能够在每次构建完成后执行自动化的回归测试，以验证被测试系统的改变是否影响了系统的其他功能。   &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0.75pt; width: 57pt;" width="76"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;性能测试 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 207pt;" width="276"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;性能测试包括以下不同测试形式：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;" lang="EN-US"&gt;- &lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;负载测试&lt;span lang="EN-US"&gt;&lt;br /&gt;  - &lt;/span&gt;压力测试&lt;span lang="EN-US"&gt;&lt;br /&gt;  - &lt;/span&gt;并发测试&lt;span lang="EN-US"&gt;&lt;br /&gt;  -..... &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0.75pt; width: 171pt;" width="228"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;span style="font-size: 9pt; font-family: 宋体;"&gt;使用自动化的测试工具，通过模拟用户的负载实现的高密集度的性能测试。 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;span style=""&gt;&lt;/span&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 6pt;"&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;--end&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;b&gt;&lt;span style="font-size: 12pt;" lang="EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2531472592973765016?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2531472592973765016/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2531472592973765016' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2531472592973765016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2531472592973765016'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_14.html' title='软件测试自动化之实践'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6084224038566828263</id><published>2007-02-14T15:10:00.001+08:00</published><updated>2007-02-14T15:50:58.901+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>LoadRunner的工作原理(第二部分)</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;h2&gt;LoadRunner Internal Architecture&lt;/h2&gt; &lt;ul&gt;&lt;span class="OfferText"&gt;   This &lt;a href="http://www.wilsonmar.com/1visio.htm"&gt;Visio 2002&lt;/a&gt; file is based on LR8.0&lt;/span&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.wilsonmar.com/img/fig/lrarch2.gif"&gt;  &lt;img alt="Click to enlarge" src="http://www.wilsonmar.com/img/fig/lrarch2.gif" align="left" border="0" height="549" width="671" /&gt;&lt;/a&gt;&lt;p class="intro"&gt; &lt;/p&gt;&lt;/ul&gt; &lt;/td&gt;&lt;td align="center" width="40"&gt;  &lt;a href="http://www.wilsonmar.com/1loadrun.htm#TopMenu"&gt;&lt;img src="http://www.wilsonmar.com/img/top1.gif" alt="Go to Top of this page." border="0" height="16" width="16" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#Configz"&gt;&lt;img src="http://www.wilsonmar.com/img/wcuptri.gif" alt="Previous topic this page" border="0" height="22" width="32" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#LRArch2"&gt;&lt;img src="http://www.wilsonmar.com/img/wcdntri.gif" alt="Next topic this page" border="0" height="23" width="40" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="LRArch2"&gt;&lt;/a&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#LRArch2"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; &lt;ol type="1"&gt;&lt;img title="Secret agent" src="http://www.wilsonmar.com/img/icon/agticon.gif" align="right" border="0" height="34" width="34" /&gt;&lt;li&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Protocolz"&gt;application servers&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;   under test are placed under stress by  &lt;/li&gt;&lt;li&gt; driver processes &lt;strong&gt;mdrv.exe&lt;/strong&gt; (the Multi-threaded Driver Process) and   &lt;strong&gt;r3vuser.exe&lt;/strong&gt; which emulate application clients such as Internet Explorer web brower.  It performs 3 main actions:   &lt;ol type="1"&gt;   Kli&gt; cpp (C language pre-processor)   &lt;li&gt; cci (C pre-compiling) which creaes a file with &lt;strong&gt;ci&lt;/strong&gt; file, and    &lt;/li&gt;&lt;li&gt; execute using the &lt;strong&gt;driver&lt;/strong&gt; for the &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Protocolz"&gt;protocol technology&lt;/a&gt; being tested.   &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;  Runs can be invoked to run "silently" by invoking &lt;strong&gt;Mdrv.exe &lt;/strong&gt; from a Windows batch script. &lt;/p&gt;&lt;p&gt;  Mdrv can automatically stop loading Vusers because they communicate with Vusers and  monitor CPU usage on Windows Load Generator machines. &lt;/p&gt;&lt;p&gt;  A separate JVM is instantiated by each Java-based Vuser on Windows-based machines.  &lt;a title="Merc. KB article 12761" target="_blank" href="http://svkbweb02.merc-int.com/top5/KBAview.asp?Conceptid=12761&amp;Product=LR"&gt;  &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="#" border="0" height="14" width="15" /&gt;Java Vusers are not supported on Unix platforms.&lt;/a&gt; &lt;/p&gt;&lt;p&gt; &lt;a name="groupz"&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; virtual Vusers are invoked as &lt;strong&gt;groups&lt;/strong&gt;   (logical collection of virtual users running the same script on a specific load generator machine)  &lt;/li&gt;&lt;li&gt; by &lt;strong&gt;agents&lt;/strong&gt; (3,900K magentproc.exe) &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Agentz"&gt;running as a service or as a process&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;  &lt;/li&gt;&lt;li&gt; on &lt;strong&gt;load generator&lt;/strong&gt; client machines. &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; Each machine hosting agents maintains an &lt;strong&gt;Execution Log&lt;/strong&gt; in a &lt;strong&gt;.qtp&lt;/strong&gt; file.  &lt;/li&gt;&lt;li&gt; When logging is enabled, the agent also creates within the &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Resultz"&gt;  results folder&lt;/a&gt; a sequential log file for each Vuser (segregated by Vuser &lt;a href="http://www.wilsonmar.com/1loadrun.htm#groupz"&gt;group&lt;/a&gt;).  &lt;/li&gt;&lt;li&gt; During execution, this file is displayed in the &lt;strong&gt;view &gt; Show Output&lt;/strong&gt; window  on the LoadRunner &lt;strong&gt;Controller machine&lt;/strong&gt;. &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; Upon a pre-set delay, the &lt;strong&gt;Scheduler&lt;/strong&gt; running on a &lt;strong&gt;Controller machine&lt;/strong&gt;  instructs &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Agentz"&gt;agents&lt;/a&gt; (via Windows port 54345 or dynamic Unix port) to initiate &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Scenarioz"&gt;  test session &lt;strong&gt;scenarios&lt;/strong&gt;&lt;/a&gt;.   The Controller (wlrun.exe) sends a copy of scenario files along with the request.   &lt;/li&gt;&lt;li&gt; Agents are launched by the Remote Agent &lt;strong&gt;Dispatcher&lt;/strong&gt; process  (formerly called Remote Command Launcher (RCL)) on each load generator machine.  &lt;/li&gt;&lt;li&gt; Each agent refer to &lt;strong&gt;scenario&lt;/strong&gt; (&lt;strong&gt;.lrs&lt;/strong&gt;) definition files to determine which  Vuser &lt;a href="http://www.wilsonmar.com/1loadrun.htm#groupz"&gt;groups&lt;/a&gt; and scripts to run on host machines. &lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt;  This means the Controller can be started from a DOS batch (.bat) file (preferrably with a short name on a root drive):  &lt;/p&gt;&lt;ul&gt;&lt;tt&gt;&lt;img src="http://www.wilsonmar.com/img/cmd.gif" /&gt; REM Start Controller:&lt;br /&gt;SET M_ROOT=C:\Program Files\Mercury Interactive\LoadRunner\bin&lt;br /&gt;cd %M_ROOT%&lt;br /&gt;wlrun.exe -TestPath D:\Dev\Dev1.lrs -port 8080 -Run -DontClose&lt;br /&gt;pause Press Ctrl-Z to keep this window or  &lt;/tt&gt;&lt;p&gt;   &lt;/p&gt;&lt;li&gt; Including the &lt;strong&gt;-Run&lt;/strong&gt; parameter is the same as manually pressing the "Start Scenario" automatically upon invocation. This is not a good idea because you may have to decide about collating the file from a previous run or want to change the output folder. &lt;/li&gt;&lt;li&gt; This assumes that the &lt;a href="http://www.wilsonmar.com/1envvars.htm"&gt;system's environment PATH variable&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;   was updated to include &lt;a href="http://www.wilsonmar.com/1loadrun.htm#InstallPathz"&gt;where LoadRunner is installed&lt;/a&gt;.   &lt;/li&gt;&lt;/ul&gt;   &lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;td align="center" width="40"&gt;  &lt;a href="http://www.wilsonmar.com/1loadrun.htm#TopMenu"&gt;&lt;img src="http://www.wilsonmar.com/img/top1.gif" alt="Go to Top of this page." border="0" height="16" width="16" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#LRArch"&gt;&lt;img src="http://www.wilsonmar.com/img/wcuptri.gif" alt="Previous topic this page" border="0" height="22" width="32" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#LRArch3"&gt;&lt;img src="http://www.wilsonmar.com/img/wcdntri.gif" alt="Next topic this page" border="0" height="23" width="40" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="LRArch3"&gt;&lt;/a&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#LRArch3"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; &lt;ol start="12"&gt;&lt;li&gt; The Controller is invoked using parameter values within files in the Windows OS folder (&lt;strong&gt;WINNT&lt;/strong&gt; for Windows 2000 and &lt;strong&gt;WINDOWS&lt;/strong&gt; for Windows XP). The Windows folder is used because LoadRunner is designed to have only one instance of Controller running at a time on a machine. &lt;p&gt;  &lt;/p&gt;&lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt;   To quickly switch among several applications,   save a copy of LoadRunner's ini files after working on it within the Controller,   then use Notepad to craft a &lt;a href="http://www.wilsonmar.com/1wsh.htm"&gt;batch file&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;   to copy application-specific versions of ini files before executing wlrun.   An example of file copy actions for application XXX:   &lt;ul&gt;&lt;tt&gt;   copy %WinDir%/wlrun7-XXX.ini   %WinDir%/wlrun7.ini&lt;br /&gt;copy %WinDir%/wlrun7-XXX.dft   %WinDir%/wlrun7.dft   &lt;/tt&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;  Some defaults you might want to change:   &lt;/p&gt;&lt;ul&gt;&lt;li&gt; In the &lt;nobr&gt;&lt;a href="http://www.wilsonmar.com/docs/lr78/wlrun7.ini"&gt;&lt;img src="http://www.wilsonmar.com/img/txt.gif" border="0" /&gt; wlrun7.ini&lt;/a&gt;&lt;/nobr&gt; file file [output] section, &lt;a target="_blank" href="http://kb-web.mercury.com/top5/kblinkExtern.asp?Conceptid=32265;Product=LR"&gt;  MaxNumberOfOutputMessages=&lt;/a&gt; from 10000 to 100000  for long runs.  This limits the number of output messages stored in the database.  &lt;/li&gt;&lt;li&gt;&lt;strong&gt;MaxOutputUIRowsToShow&lt;/strong&gt; limits the amount of messages/errors (lines) displayed in the Controller's Output window.  &lt;/li&gt;&lt;li&gt; In the &lt;strong&gt;QTWeb.lrp&lt;/strong&gt; file within the &lt;a href="http://www.wilsonmar.com/1loadrun.htm#InstallPathz"&gt;  LoadRunner Program Files&lt;/a&gt; &lt;strong&gt;dat\protocols&lt;/strong&gt; folder section &lt;tt&gt;[Vugen]&lt;/tt&gt;,  add entry &lt;tt&gt;&lt;strong&gt;MaxThreadPerProcess=5&lt;/strong&gt;&lt;/tt&gt; to limit the number of threads managed by each load generator &lt;strong&gt;mdrv.exe&lt;/strong&gt; process. &lt;p&gt;   &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;  Values for &lt;strong&gt;DefaultScenarioDir, DefaultScriptDir, DefaultResultDir&lt;/strong&gt;,  and [Recent File List] stored in the  &lt;nobr&gt;&lt;a href="http://www.wilsonmar.com/docs/lr78/wlrun5.ini"&gt;&lt;img src="http://www.wilsonmar.com/img/txt.gif" border="0" /&gt; wlrun5.ini&lt;/a&gt;&lt;/nobr&gt;  and &lt;nobr&gt;&lt;a href="http://www.wilsonmar.com/docs/lr78/wlrun7.dft"&gt;&lt;img src="http://www.wilsonmar.com/img/txt.gif" border="0" /&gt; wlrun7.dft&lt;/a&gt;&lt;/nobr&gt; files updated whenever values are changed within the Controller. &lt;p&gt;  &lt;img title="VuGent icon" src="http://www.wilsonmar.com/img/icon/lrvugen.gif" align="right" height="34" width="34" /&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt;The blocks of &lt;strong&gt;actions&lt;/strong&gt; taken by each Vuser are   &lt;/li&gt;&lt;li&gt; defined in &lt;a href="http://www.wilsonmar.com/1lrscript.htm"&gt;Vu scripts&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;  created using Loadrunner's &lt;strong&gt;VuGen.exe&lt;/strong&gt;. When this program is invoked, it stores in the Windows folder a  &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr78/comparamui.ini"&gt;&lt;img src="http://www.wilsonmar.com/img/txt.gif" border="0" /&gt;comparamui.INI&lt;/a&gt; file to save under "[LastTablesUsed]"  a history of files and [ParamDialogDates] specified using menu option Insert &gt; New Parameter &gt; Dates. &lt;p&gt;  VuGen stores and retrieves a &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr80/vugen.ini"&gt;&lt;img src="http://www.wilsonmar.com/img/txt.gif" border="0" /&gt;  vugen.ini&lt;/a&gt; file in the Windows folder.  &lt;a target="_blank" href="http://svkbweb02.merc-int.com/top5/KBAview.asp?Conceptid=11323&amp;Product=LR"&gt;  &lt;img alt="Mercury KnowledgeBase article" src="http://www.wilsonmar.com/img/target_orange.gif" border="0" height="16" width="16" /&gt;  When using Java, enable additional debug options&lt;/a&gt;:  &lt;/p&gt;&lt;ul&gt;&lt;tt&gt;[DynaDlg]&lt;br /&gt;JavaLevel=3  &lt;/tt&gt;&lt;/ul&gt; &lt;p&gt;  When using 8.0 scripts within VuGen 8.1, add to Vugen.ini:  &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; [Editor]&lt;br /&gt;OLDEDITOR = 1  &lt;/tt&gt;&lt;/ul&gt; &lt;p&gt;  VuGen opens in LR folder &lt;strong&gt;template/qtweb&lt;/strong&gt;  &lt;strong&gt;default.cfg&lt;/strong&gt; and script files. &lt;/p&gt;&lt;p&gt;  Vu scripts can be coded to use variable values obtained from &lt;strong&gt;parameter files&lt;/strong&gt; external to the script. &lt;/p&gt;&lt;p&gt;  I have a lot more on &lt;a href="http://www.wilsonmar.com/1lrscript.htm"&gt;VuGen&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt; here&lt;/a&gt; &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; During a run, execution results are stored to a &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Resultz"&gt;results folder&lt;/a&gt;.  &lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt; I prefer to set Results Settings to "Automatically create a results directory for each scenario execution." which means that LR will increment the name of the Results Name when I start a scenario runs. For example, a value of "Res11" will be automatically incremented to "Res12" or sometimes "Res11-1". &lt;/ul&gt; &lt;p&gt;  Errors are written to the &lt;strong&gt; output.mdb &lt;/strong&gt; MS Access database.  &lt;img src="http://www.wilsonmar.com/img/tool.gif" alt="tool" border="0" height="16" width="16" /&gt;  &lt;a href="http://www.wilsonmar.com/lrerrlist.htm"&gt;  See the ASP page I have written to access this database&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; Within each results folder, a "Log" folder is automatically created to contain a log file for each &lt;a href="http://www.wilsonmar.com/1loadrun.htm#groupz"&gt;group&lt;/a&gt;.  After a run, to view a log file from within the Controller, click &lt;img src="http://www.wilsonmar.com/img/scr/lr/lrvusers.gif" alt="Vusers button" /&gt; then right-click on a group to select "Show &lt;span style="text-decoration: underline;"&gt;V&lt;/span&gt;user Log". &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; As a scenario is run, &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Monitorz"&gt;monitors&lt;/a&gt; maintain  &lt;strong&gt;counters&lt;/strong&gt; locally on each host. &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; After a run, the "collate" process takes &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Resultz"&gt;.eve and .lrr result files&lt;/a&gt; and creates in the results folder a temporary &lt;strong&gt;.mdb&lt;/strong&gt; (&lt;a href="http://www.wilsonmar.com/1access.htm"&gt;MS-Access&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;) database. &lt;p&gt; To prevent errors when processing large result files, use &lt;a target="_blank" href="http://www.microsoft.com/sql/msde/default.asp"&gt; MSDE (Microsoft SQL Desktop Engine)&lt;/a&gt;. Don't install it &lt;a target="_blank" href="http://kb-web.mercury.com/top5/kblinkExtern.asp?Conceptid=24693;Product=LR"&gt; from the Add-in folder on the LoadRunner 7.8 CD&lt;/a&gt;, which is obsolete SQL7. &lt;a target="_blank" href="http://www.microsoft.com/sql/msde/downloads/default.asp"&gt; Download MSDE 2000&lt;/a&gt; &lt;a target="_blank" href="http://support.microsoft.com/?kbid=311762"&gt; Release A&lt;/a&gt; which includes MSDE 2000 Service Pack 3a and MDAC 2.7 SP1a for use by Analysis on any Windows machine. Extract the file and share that folder. Open a command window to run a &lt;a target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/distsql/distsql_84xl.asp"&gt; command such as&lt;/a&gt;: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;tt&gt;  setup SAPWD="&lt;em&gt;StrongPassword&lt;/em&gt;" INSTANCENAME="LR" SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0 /L*v  &lt;em&gt;path to log file&lt;/em&gt;  &lt;/tt&gt;&lt;/ul&gt; &lt;p&gt;  Using Windows Explorer, share the Data folder.&lt;br /&gt;Then in Analysis Options &gt; Database tab, use 8.3 names without spaces (indentified with DOS command DIR /X):  &lt;/p&gt;&lt;ol type="1"&gt;&lt;li&gt; Input the SAPWD password specified above.  &lt;/li&gt;&lt;li&gt; Logical Storage location: \\loadclient02\Data (the folder you shared)  &lt;/li&gt;&lt;li&gt; Physical Storage Location: C:\PROGRA~1\MICROS~1\MSSQL\Data   (not C:\Program Files\Microsoft SQL Server\MSSQL\Data)  &lt;/li&gt;&lt;li&gt; Click "Test parameters".  (This takes a few seconds)  &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Analysiz"&gt;&lt;img title="icon for Analysis module" src="http://www.wilsonmar.com/img/icon/lranal.gif" align="right" border="0" height="34" width="36" /&gt;  The &lt;strong&gt;Analysis Module&lt;/strong&gt;&lt;/a&gt; (8,320K analysisu.exe)  &lt;/li&gt;&lt;li&gt; generates &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Graphz"&gt; analysis graphs&lt;/a&gt; and reports using data from the &lt;strong&gt;.mdb&lt;/strong&gt; database.  &lt;/li&gt;&lt;li&gt; The LoadRunner Results file &lt;strong&gt;results_name.lrr&lt;/strong&gt; from each scenario run  -- also called an Analysis document file -- is read by the Analysis program to display Percentile graphs.  &lt;/li&gt;&lt;li&gt; By default, the &lt;strong&gt;LRReport&lt;/strong&gt; folder is created in the test analyst's local machine &lt;tt&gt;My Documents&lt;/tt&gt; folder  to store Analysis Session files.  &lt;/li&gt;&lt;li&gt; They can optionally be formated in HTML.  &lt;/li&gt;&lt;li&gt; Their format are controlled by a &lt;strong&gt;.tem template&lt;/strong&gt; file. &lt;p&gt;  &lt;/p&gt;&lt;/li&gt;&lt;li&gt; Optionally, Mercury's Remote Performance Monitoring (RPM) MS-IIS/ASP web server for LoadRunner 7.8 can be installed  on a Windows 2000 server (&lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt; but not on a Windows 2003 server) so that  &lt;/li&gt;&lt;li&gt; load test results to be viewed using a web browser. &lt;p&gt;  Not pictured is the LoadRunner Tuning Module (a separate $50,000 product).&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6084224038566828263?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6084224038566828263/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6084224038566828263' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6084224038566828263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6084224038566828263'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/loadrunner_14.html' title='LoadRunner的工作原理(第二部分)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1364820628312242248</id><published>2007-02-14T15:04:00.000+08:00</published><updated>2007-02-14T15:52:46.565+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>LoadRunner的工作原理(第一部分)</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;h2&gt;Architecture Overview&lt;/h2&gt; &lt;ul&gt; LoadRunner works by creating &lt;strong&gt; virtual &lt;/strong&gt; users who take the place of &lt;strong&gt; real &lt;/strong&gt; users operating &lt;strong&gt; client &lt;/strong&gt; software, such as &lt;a href="http://www.wilsonmar.com/1browser.htm"&gt;Internet Explorer&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;  sending requests using the HTTP protocol to IIS or Apache web servers. &lt;p&gt; Requests from many virtual user clients are generated by "Load Generators"  in order to create a &lt;strong&gt; load &lt;/strong&gt; on &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Protocolz"&gt;  various servers under test&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt; These load generator agents are started and stopped by Mercury's "Controller" program. &lt;/p&gt;&lt;p&gt; The Controller controls load test runs based on "Scenarios" invoking compiled "Scripts"   and associated "Run-time Settings". &lt;/p&gt;&lt;p&gt; Scripts are crafted using Mercury's "Virtual user script Generator" (named "V U Gen"), It generates C-language script code to be executed by virtual users by capturing network traffic &lt;strong&gt; between &lt;/strong&gt; Internet application clients and servers. &lt;/p&gt;&lt;p&gt; With Java clients, VuGen captures calls by hooking &lt;strong&gt; within &lt;/strong&gt; the client JVM. &lt;/p&gt;&lt;p&gt; During runs, the status of each machine is monitored by the Controller. &lt;/p&gt;&lt;p&gt; At the end of each run, the Controller combines its monitoring logs with logs obtained from load generators, and makes them available to the "Analysis" program, which can then create run result reports and graphs for Microsoft Word, Crystal Reports, or an HTML webpage browser. &lt;/p&gt;&lt;p&gt;Each HTML report page generated by Analysis includes a link to results in a text file which Microsoft Excel can open to perform additional analysis. &lt;/p&gt;&lt;p&gt; Errors during each run are stored in a &lt;a href="http://www.wilsonmar.com/lrerrlist.htm"&gt;database which can be read&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt; using &lt;a href="http://www.wilsonmar.com/1dataent.htm"&gt;Microsoft Access&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="Vuserz"&gt;&lt;/a&gt;&lt;h2&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Vuserz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Virtual Users (Vusers)&lt;/h2&gt; &lt;ul&gt;&lt;p&gt;  &lt;a target="_blank" href="http://www.wilsonmar.com/img/scr/lr/how_load_runner_works.gif" title="click for separate window"&gt;  &lt;img src="http://www.wilsonmar.com/img/scr/lr/how_load_runner_works.gif" align="right" border="0" height="385" width="512" /&gt;&lt;/a&gt;   Unlike a &lt;nobr&gt;&lt;a href="http://www.wilsonmar.com/1winrun.htm"&gt; WinRunner&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;&lt;/nobr&gt;  workstation which emulates a &lt;strong&gt;single user&lt;/strong&gt;'s use of a client,  LoadRunner can emulate &lt;strong&gt;thousands&lt;/strong&gt; of Virtual Users. &lt;/p&gt;&lt;p&gt;  Load generators are controlled by VuGen scripts which issue &lt;strong&gt;non-GUI&lt;/strong&gt; API calls using the same protocols as the client under test.  But WinRunner &lt;strong&gt;GUI Vusers&lt;/strong&gt; emulate keystrokes, mouse clicks, and other User Interface actions on the client being tested  Only one GUI user can run from a machine unless LoadRunner Terminal Services Manager  manages remote machines with Terminal Server Agent enabled and logged into a Terminal Services Client session. &lt;/p&gt;&lt;p&gt;  During run-time, &lt;strong&gt;threaded&lt;/strong&gt; vusers share a common memory pool.  So threading supports more Vusers per load generator. &lt;/p&gt;&lt;p&gt;  The Status of Vusers on all load generators start from "Running", then go to  "Ready" after going through the init section of the script.  Vusers are "Finished" in passed or failed end status.  Vusers are automatically "Stopped" when the Load Generator is overloaded. &lt;/p&gt;&lt;p&gt;  No additional license is needed to monitor standard web (HTTP) servers (Apache, IIS, and Netscape). &lt;/p&gt;&lt;p&gt;  To use &lt;img src="http://www.wilsonmar.com/img/icon/WebServices.bmp" border="0" height="16" width="16" /&gt; &lt;strong&gt;Web Services&lt;/strong&gt; Monitors for SOAP and XML,  a separate license is needed, and vUsers require the &lt;span style="text-decoration: underline;"&gt;Web Services add-in&lt;/span&gt; installed with &lt;a target="_blank" href="http://webnotes.merc-int.com/patches.nsf/01e534a29911b7cc882567ed0064cb15/7407f4fd70a4737a88256e21007fc801?OpenDocument"&gt;  &lt;img alt="Mercury" src="http://www.wilsonmar.com/img/download.gif" border="0" height="16" width="16" /&gt;  Feature Pack (FP1)&lt;/a&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/ul&gt; &lt;/td&gt;&lt;td align="center" width="40"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#Versionz"&gt;&lt;br /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="Versionz"&gt;&lt;/a&gt;&lt;h2&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Versionz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Product Versions&lt;/h2&gt; &lt;ul&gt;&lt;p&gt; Version 8.1 Feature Pack 4 patch installer LR81FP4P136.exe at 7,786,800 bytes, was signed on January 2, 2007 as file 8.1.4.0 (Build: 1735) is Recorder Version: 1290. &lt;/p&gt;&lt;p&gt; Version 8.1 Feature Pack 4 installer LR81FP4.exe, at 194,644,720 bytes, was signed on December 15, 2006 as file version 8.1.4.0 (Build: 2249) is Recorder Version: 1289. This requires an upgrade to MS.NET 2.0 clients. &lt;/p&gt;&lt;p&gt; Version 8.1 Feature Pack 3 installer LR81FP3.exe, at 116,601,240 bytes, was signed on June 18, 2006 as file version 8.1.3.0 (Build 2085). It installs (as an item on your Start &gt; Program Files) Microsoft &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=1ba1f631-c3e7-420a-bc1e-ef18bab66122&amp;displaylang=en"&gt;  WSE (Web Services Enhancements) 2.0 SP3&lt;/a&gt; to deploy security policies for sytems running .NET Framework 1.1.   &lt;/p&gt;&lt;p&gt;  Version 8.1 became available October 2005. In VuGen it adds a "Workflow View", "Workflow Wizard",  and a memory leak which is fixed with a patch downloadable since Dec. 2005.  It renames the VuGen "Execution Log" the "Replay Log". &lt;/p&gt;&lt;p&gt;  Version 8.0 became available August 2004.  It adds "Additional Attributes" to Runtime Settings.  It also adds (for additional fee) diagnostics and tuning capabilities,  allowing Transaction Breakdown to breakdown transaction times across different servers servicing various transaction layers  (web server, Oracle 11i &amp;amp; Peoplesoft 8 app server, database) layers.  It separates SQL time in execute, parse, and fetch times. &lt;/p&gt;&lt;p&gt;  Version 7.8 Feature Pack 1 added support for Windows XP. &lt;/p&gt;&lt;p&gt;  Version 7.8 became available September 2003. &lt;/p&gt;&lt;p&gt;  Version 6.5 available June 2000 offered new "TurboLoad" technology -- a completely new replay engine that  runs thousands of vusers using a single operating system thread. &lt;/p&gt;&lt;p&gt;  Version 6.0 used a separate thread per user, which required almost 10 times more i/o and CPU cycles  than 6.5. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/ul&gt; &lt;/td&gt;&lt;td width="15"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td bgcolor="#cfefcf" width="15"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td bg="" style="color: rgb(207, 239, 207);" width="220"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="OfferText"&gt;  Note: Links to documents that used to be here were removed after Mercury Interactive, Inc.  lawyers demanded their removal. &lt;!-- &lt;p align="left"&gt;  &lt;a target="_blank" href="docs/db.hlp"&gt;&lt;img src="img/hlp.gif" border="0" width="16" height="16" /&gt;  Online Function Reference&lt;/a&gt;. &lt;br /&gt;  &lt;a target="_blank" href="docs/automation_vb.hlp"&gt;&lt;img src="img/hlp.gif" border="0" width="16" height="16" /&gt;  Wlrun Library Help&lt;/a&gt; &lt;br /&gt;  &lt;a target="_blank" href="docs/wlrun.hlp"&gt;&lt;img src="img/hlp.gif" border="0" width="16" height="16" /&gt;  LoadRunner Controller Help&lt;/a&gt; &lt;br /&gt;  &lt;a target="_blank" href="docs/vb_addon.hlp"&gt;&lt;img src="img/hlp.gif" border="0" width="16" height="16" /&gt;  Virtual User Generator Report&lt;/a&gt; &lt;br /&gt;  &lt;a target="_blank" href="docs/vugen.hlp"&gt;&lt;img src="img/hlp.gif" border="0" width="16" height="16" /&gt;  VuGen&lt;/a&gt; &lt;p&gt; --&gt;  &lt;img src="http://www.wilsonmar.com/img/reminder.gif" height="16" width="20" /&gt;  Page numbers in online pdf files are different (have more pages)  than page numbers in the paper document of the same title. &lt;/span&gt; &lt;/td&gt;&lt;td bgcolor="#cfefcf" width="15"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td align="center" width="40"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#SysReqz"&gt;&lt;br /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="Patchez"&gt;&lt;/a&gt; &lt;a name="SysReqz"&gt;&lt;/a&gt;&lt;h2&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#SysReqz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Application Components' Requirements&lt;/h2&gt; &lt;ul&gt;  Loadrunner makes use of four executables with different &lt;a target="_blank" href="http://www-heva.mercuryinteractive.com/products/loadrunner/technical/"&gt;  &lt;img src="http://www.wilsonmar.com/img/htm.gif" alt="webpage article" border="0" height="15" width="13" /&gt;  system requirements&lt;/a&gt;&lt;p&gt;  &lt;table border="1" cellpadding="4" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2"&gt; Application&lt;br /&gt;Product &lt;/th&gt;&lt;th&gt; Process&lt;br /&gt;Image Name &lt;/th&gt;&lt;th&gt; V8.0&lt;br /&gt;Img&lt;br /&gt;KB &lt;/th&gt;&lt;th&gt; File&lt;br /&gt;Size&lt;/th&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;img src="http://www.wilsonmar.com/img/icon/LRLauncherApp.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td&gt;    - &lt;/td&gt;&lt;td&gt; LRLauncherApp.exe &lt;/td&gt;&lt;td align="right"&gt; 16,288    &lt;/td&gt;&lt;td align="right"&gt; n/a &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;img src="http://www.wilsonmar.com/img/icon/VuGen.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td&gt;    &lt;a href="http://www.wilsonmar.com/1loadrun.htm#VuGenRec"&gt; Virtual User Generator&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;    &lt;/td&gt;&lt;td&gt; VuGen.exe    &lt;/td&gt;&lt;td align="right"&gt; 12,436    &lt;/td&gt;&lt;td align="right"&gt; 2,334,769&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;img src="http://www.wilsonmar.com/img/icon/wlrun.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td&gt;    &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Scenarioz"&gt;Controller&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;  with On-Line Monitors    &lt;/td&gt;&lt;td&gt; wlrun.exe    &lt;/td&gt;&lt;td align="right"&gt; 13,076    &lt;/td&gt;&lt;td align="right"&gt; 5,681,215 &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td rowspan="3"&gt; &lt;img src="http://www.wilsonmar.com/img/icon/mdrv.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td rowspan="3"&gt;    &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Agentz"&gt; Load Generator Agent&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;   &lt;/td&gt;&lt;td&gt; magentproc.exe    &lt;/td&gt;&lt;td align="right"&gt; 3,236   &lt;/td&gt;&lt;td align="right"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; magentservice.exe   &lt;/td&gt;&lt;td align="right"&gt;  &lt;br /&gt;&lt;/td&gt;&lt;td align="right"&gt; 65,536&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; mdrv.exe    &lt;/td&gt;&lt;td align="right"&gt;  &lt;br /&gt;&lt;/td&gt;&lt;td align="right"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;img src="http://www.wilsonmar.com/img/icon/Analysisui.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td&gt;    &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Analysiz"&gt;Analysis&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;&lt;/a&gt;    &lt;/td&gt;&lt;td&gt; Analysisui.exe    &lt;/td&gt;&lt;td align="right"&gt; 13,132    &lt;/td&gt;&lt;td align="right"&gt; 6,058,496&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;img src="http://www.wilsonmar.com/img/icon/protune.jpg" height="18" width="18" /&gt;&lt;/td&gt;&lt;td&gt;    Tuning Console&lt;img src="http://www.wilsonmar.com/img/itemsep.gif" alt="on this page" border="0" height="11" width="11" /&gt;    &lt;/td&gt;&lt;td&gt; protune.exe    &lt;/td&gt;&lt;td align="right"&gt;  &lt;br /&gt;&lt;/td&gt;&lt;td align="right"&gt; 3,403,833&lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;h3&gt;Console programs&lt;/h3&gt;&lt;table border="1" cellpadding="4" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; perl5.8.0.exe &lt;/td&gt;&lt;td&gt; Interpreter &lt;/td&gt;&lt;td&gt; 20,535 &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; regtlb.exe &lt;/td&gt;&lt;td&gt; registers the batch automation type library &lt;/td&gt;&lt;td&gt; 30,720 &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; sed.exe &lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt; 55,296 &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; wdiff.exe &lt;/td&gt;&lt;td&gt; Compares text files &lt;/td&gt;&lt;td&gt; 197,632 &lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;  Alex Arbitman's &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr78/Alex%20Arbitman%20LR%207.8%20Footprints.xls"&gt;&lt;img alt="MS Excel spreadsheet" src="http://www.wilsonmar.com/img/xls.gif" border="0" /&gt;LR 7.8 Footprints.xls&lt;/a&gt;  reports that to run Web requires __ per process and __ per thread.  &lt;/p&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td align="center" width="40"&gt;  &lt;a href="http://www.wilsonmar.com/1loadrun.htm#TopMenu"&gt;&lt;img src="http://www.wilsonmar.com/img/top1.gif" alt="Go to Top of this page." border="0" height="16" width="16" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#Versionz"&gt;&lt;img src="http://www.wilsonmar.com/img/wcuptri.gif" alt="Previous topic this page" border="0" height="22" width="32" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#SysConstraintz"&gt;&lt;img src="http://www.wilsonmar.com/img/wcdntri.gif" alt="Next topic this page" border="0" height="23" width="40" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;    &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt; &lt;a name="SysConstraintz"&gt;&lt;/a&gt;&lt;h2&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#SysConstraintz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Using Windows Remote Desktop Connection&lt;/h2&gt; &lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt; Remote Desktop Connection (part of the Terminal Services that comes with Winodows XP) is not as reliable with LoadRunner as Remote Administrator. &lt;p&gt; To keep &lt;strong&gt;Windows Remote Desktop Connection&lt;/strong&gt; sessions from timing out during a test, the &lt;strong&gt;Terminal Services&lt;/strong&gt; on each machine should be configured as follows: &lt;/p&gt;&lt;ol type="1"&gt;&lt;li&gt; Click Start, point to Programs (or Control Panel), Administrative Tools and choose Terminal Services Configuration. &lt;/li&gt;&lt;li&gt; Open the Connections folder in tree by clicking it once. &lt;/li&gt;&lt;li&gt; Right-click RDP-Tcp and select Properties. &lt;/li&gt;&lt;li&gt; Click the Sessions tab. &lt;/li&gt;&lt;li&gt; Make sure "Override user settings" is checked. &lt;/li&gt;&lt;li&gt; Set &lt;strong&gt;Idle session limit&lt;/strong&gt; to the maximum of 2 days instead of the default 2 hours. &lt;/li&gt;&lt;li&gt; Click Apply. &lt;/li&gt;&lt;li&gt; Click OK to confirm message "Configuration changes have been made to the system registry; however, the user session now active on the RDP-Tcp connection will not be changed." &lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt; Make sure that when you do this you're not violating one of your corporation's security policies. &lt;/p&gt;&lt;p&gt; &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt; Terminal Server only allows two simultaneous connections. To disconnect from a session, do not click "X" on the remote desktop window but click Start and Log Off. &lt;/p&gt;&lt;/ul&gt; &lt;/td&gt;&lt;td width="15"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td bgcolor="#cfefcf" width="250"&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/book.gif" alt="book" align="left" border="0" height="13" width="15" /&gt;&lt;a class="OfferText" target="_blank" href="http://www.amazon.com/exec/obidos/ASIN/0201719363/wilsonslifenotes"&gt;  &lt;img src="http://www.wilsonmar.com/img/books/0201719363.jpg" alt="Buy this!" align="right" border="0" height="90" width="72" /&gt;  Quality Web Systems: Performance, Security, and Usability  (Addison-Wesley Professional; Aug.  2001)&lt;/a&gt;  by Elfriede Dustin, Jeff Rashka, Douglas McDiarmid &lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/book.gif" alt="book" align="left" border="0" height="13" width="15" /&gt;  &lt;a class="OfferText" target="_blank" href="http://www.amazon.com/exec/obidos/ASIN/0970436300/wilsonslifenotes"&gt;  &lt;img src="http://www.wilsonmar.com/img/books/0970436300.jpg" alt="Buy this!" align="right" border="0" height="90" width="70" /&gt;  The Web Testing Handbook   (S T Q E Pub, Jan. 2001)&lt;/a&gt;  by Steven Splaine, Stefan P. Jaskiel, Alberto Savoia   is a good overview introduction, but does not make you an expert.  &lt;/p&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td align="center" width="40"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wilsonmar.com/1loadrun.htm#Configz"&gt;&lt;br /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;table cellpadding="0" cellspacing="0" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt;  &lt;table align="right" border="0" cellpadding="0" cellspacing="0" width="250"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="15"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Among &lt;a target="_blank" href="http://kb-web.mercury.com/KBA/print.asp?conceptid=37455&amp;Product=LR"&gt;  Common problems installing LoadRunner&lt;/a&gt;: Windows 2003 &amp;amp; XP SP2 have a DEP (Data Execution Prevention) feature which prevents VuGen recording.  Go to Control Panel, System -&gt; Advanced tab, Performance section "Settings" button Data Execution Prevention tab  and add the client program or choose &lt;strong&gt;"Turn on DEP for essential windows programs and services only."&lt;/strong&gt;  A reboot is required.  &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;a name="Configz"&gt;&lt;/a&gt;&lt;h2&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#Configz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; LR Installation and Configuration&lt;/h2&gt; &lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/download.gif" border="0" /&gt;  Download [after required registration] the 10 day trial from   &lt;a target="_blank" href="http://downloads.mercury.com/cgi-bin/portal/download/index.jsp"&gt;  here&lt;/a&gt; or  &lt;a target="_blank" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?id=160"&gt;  here&lt;/a&gt;. &lt;p&gt;  &lt;/p&gt;&lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt;  I recommend that you put downloaded LoadRunner installation files and patches to a separate media such as a CD or USB drive.  Then mark those files as read-only. &lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/idea.gif" /&gt;  Disable your anti-virus software (Symantec, McAfee, etc.) before invoking on installers. &lt;/p&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution" border="0" /&gt;  Virus Detection engines (such as Hauri versions since May 18) may find that program &lt;a target="_blank" href="http://www.freevbcode.com/ShowCode.Asp?ID=2195"&gt;  regtlb.exe&lt;/a&gt; (which registers/unregisters type libraries)  to contain a "virus" they call "Backdoor.Win32.PoeBot.15872".  Automatic repair by the virus remover will break those files. &lt;/p&gt;&lt;/ul&gt;&lt;p&gt;  The LR box comes with two CD's and &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr78/install.pdf"&gt;&lt;img src="http://www.wilsonmar.com/img/pdf.gif" border="0" /&gt;  this installation manual&lt;/a&gt;. Separate installation manuals are available for the &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr78/installController.pdf"&gt;&lt;img src="http://www.wilsonmar.com/img/pdf.gif" border="0" /&gt;  Controller&lt;/a&gt; and &lt;a target="_blank" href="http://www.wilsonmar.com/docs/lr78/installAnalysis.pdf"&gt;&lt;img src="http://www.wilsonmar.com/img/pdf.gif" border="0" /&gt;  Analysis&lt;/a&gt; modules. &lt;/p&gt;&lt;p&gt;  The Windows CD autostarts to   &lt;a target="_blank" href="http://www.wilsonmar.com/img/scr/lr/lrinst.gif"&gt;  this initial screen for  v7.8 &lt;img src="http://www.wilsonmar.com/img/view.gif" alt="screen captured" border="0" height="12" width="12" /&gt;&lt;/a&gt;   and &lt;a target="_blank" href="http://www.wilsonmar.com/img/scr/lr/lr8_install.jpg"&gt;  this initial screen for v8.0 &lt;img src="http://www.wilsonmar.com/img/view.gif" alt="screen captured" border="0" height="12" width="12" /&gt;&lt;/a&gt;  &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;  You can install just a single component (such as VuGen) by (ironically) selecting "Full install" and   then the "Custom" option to check the specific components to install. However,&lt;br /&gt;&lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt;  due to a strange bug with v8.0, before you do that,  first install the Load Generator, then return to install "custom" components.  &lt;/ul&gt;&lt;p&gt; &lt;!--   &lt;ol type="1"&gt; &lt;li&gt; Before starting, close all programs because a reboot will be necessary. &lt;li&gt;From Windows Explorer Tool menu, Map Network Drive to Folder: \\loadclient03\c$ &lt;li&gt; Authenticate as &lt;a href="perfset.htm#TestUser"&gt;the test user&lt;/a&gt; &lt;li&gt; Click on the new Network Drive. &lt;li&gt;Open folder "c:\LR 8.0 WIndows Install" subfolder "LR_80_WIN32_CD1" &lt;li&gt;Click the "setup.exe" &lt;li&gt;Click "Open" &lt;li&gt;Click "Load Generator" at the Mercury LoadRunner 8.0 screen. &lt;li&gt;Click "Open" &lt;li&gt;At the Registration Information screen, enter your username, company,  and 8888-8888888888 for the Maintenance number. &lt;li&gt;Accept the Location  &lt;li&gt;OK folder creation. &lt;li&gt;Click Next twice to info screens. &lt;li&gt;Wait for Copying files to end (about 3 minutes). &lt;li&gt;At the "User Login Settings" screen, click "Allow virtual users to run on this machine without user login". &lt;li&gt;Enter your Domain. &lt;li&gt;Enter your userid for User Name. &lt;li&gt;Enter your password. &lt;li&gt;Uncheck "Register now" and click Next. &lt;li&gt;Click "Finish" to allow reboot to occur. &lt;li&gt;When the machine returns, wait for the pop-up to disappear. &lt;li&gt;Exit the readme browser window. &lt;/p&gt;&lt;p&gt; &lt;li&gt;Email me so I can do a confirmation run.  &lt;/ol&gt; &lt;/p&gt;&lt;p&gt; --&gt;  The UNIX CD installs only the Load Generator (not the Controller or VuGen) on UNIX machines  because the Controller and VuGen only run on Windows machines. &lt;/p&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt;  Zero fill machine names to t001, ... t010, etc.  The LR Controller sorts machines named t1, t2, ... t10 as t1, t10, t2. &lt;/p&gt;&lt;p&gt;  &lt;a name="InstallPathz"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#InstallPathz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Location of Program Files&lt;/h3&gt;   The LoadRunner installation program &lt;a href="http://www.wilsonmar.com/1lrinst.htm"&gt;  adds files in Program Files, Windows folder, and the Windows Registry&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;  that are NOT removed during un-installation. &lt;p&gt;   If you get a "License violation" message,   you need to get from Mercury support a one-day license key to install with. &lt;/p&gt;&lt;p&gt;  By default, different versions of LoadRunner are installed to different parts of your hard disk:  &lt;/p&gt;&lt;ul&gt;&lt;p&gt;  LoadRunner 8.1 executable files are installed to file path&lt;br /&gt;&lt;tt&gt;"C:\Program Files\Mercury\LoadRunner\bin"&lt;/tt&gt; &lt;/p&gt;&lt;p&gt;   LoadRunner 8.0 "stutters" when it installs to its default file path&lt;br /&gt;&lt;tt&gt;"C:\Program Files\Mercury Interactive\&lt;strong&gt;Mercury&lt;/strong&gt; LoadRunner\bin"&lt;/tt&gt; &lt;/p&gt;&lt;p&gt;  Note: Even though 8.0 uses a different folder, folders created by previous versions   still need to be removed before its installation. &lt;/p&gt;&lt;p&gt;  LoadRunner 7.8 executable files are installed to file path&lt;br /&gt;&lt;tt&gt;"C:\Program Files\Mercury Interactive\LoadRunner\bin"&lt;/tt&gt; &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;/ul&gt;   When working with Java, instead of overridding these default installation folder to a path without spaces (such as &lt;tt&gt;C:\LR78&lt;/tt&gt;)  as recommended by &lt;img alt="Mercury KnowledgeBase article" src="http://www.wilsonmar.com/img/target_orange.gif" border="0" height="12" width="12" /&gt;&lt;a title="Merc KB article 11878" target="_blank" href="http://kb-web.mercury.com/facets/CPT11875.doc"&gt;  KB article 11878&lt;/a&gt;, just use the equivalent DOS 8.3 file names:   &lt;ul&gt;&lt;p&gt; For LoadRunner 8.1: &lt;a href="http://www.wilsonmar.com/1loadrun.htm#InstallPathz"&gt;C:\PROGRA~\MERCUR~1\LoadRunner\lib&lt;/a&gt;&lt;br /&gt;For LoadRunner 8.0: &lt;a href="http://www.wilsonmar.com/1loadrun.htm#InstallPathz"&gt;C:\PROGRA~\MERCUR~1\MERCUR~1\lib&lt;/a&gt; &lt;/p&gt;&lt;/ul&gt;&lt;p&gt; &lt;!--   Classes in LoadRunner's &lt;strong&gt;\classes&lt;/strong&gt; and &lt;strong&gt;\classes\srv&lt;/strong&gt; directories   should be loaded first, then the JDK/JRE folders. &lt;/p&gt;&lt;p&gt; --&gt;  &lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt;  To quickly get at this LoadRunner installation folder,  create an &lt;a href="http://www.wilsonmar.com/1envvars.htm"&gt;environment variable&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;  named "LR81" so you can use a quick command such as   &lt;/p&gt;&lt;ul&gt;&lt;pre&gt;&lt;img src="http://www.wilsonmar.com/img/cmd.gif" /&gt;&lt;tt&gt; cd %lr81%&lt;/tt&gt; &lt;/pre&gt;&lt;/ul&gt;&lt;p&gt;    To get at this folder quickly,   I created a batch file named "L.bat" in the cmd's default C:\ root folder containing this:  &lt;/p&gt;&lt;ul&gt;&lt;pre&gt;cd \Program Files\Mercury\LoadRunner\bin&lt;br /&gt;&lt;br /&gt;pause&lt;br /&gt;&lt;/pre&gt;  I created a shortcut to this file on my desktop and dragged it over Windows &lt;img src="http://www.wilsonmar.com/img/start.gif" /&gt; so that I can click into that folder  from anywhere.    The pause command ensures that the command window does not disappear automatically.  Alternately, from within a command window I can just type "L" and press Enter.  &lt;/ul&gt;&lt;p&gt; &lt;a name="WinFolderz"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#WinFolderz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Files in Windows Folders&lt;/h3&gt;&lt;/ul&gt; &lt;ol start="27"&gt;&lt;li&gt; This path specified is stored under &lt;tt&gt;[ProductEnv]&lt;/tt&gt; as &lt;strong&gt;M_ROOT&lt;/strong&gt; in file &lt;strong&gt;wlrun.ini&lt;/strong&gt; in the C:\WINNT (or C:\Windows) folder. &lt;p&gt;  The C:\WINNT (or C:\Windows) folder also holds the &lt;strong&gt;Maintenance Number (MPN)&lt;/strong&gt; specified during installation,  stored as a parameter named "LoadRunner_SerialNumber" (such as 1234-1234567890) in the &lt;strong&gt;mercury.ini&lt;/strong&gt; file. &lt;/p&gt;&lt;p&gt; &lt;a name="StartMenuz"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm#StartMenuz"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Start Menu&lt;/h3&gt; &lt;p&gt;  The LR installer adds links to the most used programs in  &lt;/p&gt;&lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/start.gif" /&gt; &gt; Programs &gt; Mercury Interactive &gt; LoadRunner  &lt;/ul&gt; &lt;p&gt;  However, some programs are installed which are not conveniently listed there, such as&lt;br /&gt;&lt;a target="_blank" href="http://www.wilsonmar.com/docs/wdiff.exe"&gt;&lt;img src="http://www.wilsonmar.com/img/tool.gif" alt="tool" border="0" height="16" width="16" /&gt;  WDiff.exe v1.49&lt;/a&gt; to compare differences between two ASCII text files.  It has an accompanying  &lt;a target="_blank" href="http://www.wilsonmar.com/docs/wdiff.hlp"&gt;&lt;img src="http://www.wilsonmar.com/img/hlp.gif" border="0" height="16" width="16" /&gt;  help file&lt;/a&gt; &lt;/p&gt;&lt;p&gt;  Beginning with v7, LoadRunner prevents software piracy   (much like Microsoft began doing with Windows XP)  by requiring that a license key be provided within 10 days of installation.  Mercury generates its license key based on a host ID generated on each computer.    &lt;img src="http://www.wilsonmar.com/img/msword.gif" /&gt;   &lt;a target="_blank" href="http://kb-web.mercury.com/facets/CPT12784.doc"&gt;   CPT12784.doc&lt;/a&gt; &lt;/p&gt;&lt;p&gt;  With v7.x, to generate Generate a HostID key (such as "XCCWJU-APBE-BYDS")   &lt;a target="_blank" href="http://kb-web.mercury.com/facets/CPT11875.doc"&gt;  &lt;img src="http://www.wilsonmar.com/img/msword.gif" border="0" /&gt;&lt;/a&gt;  click down &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;img src="http://www.wilsonmar.com/img/start.gif" /&gt; Programs &gt; Mercury LoadRunner &gt; LoadRunner &gt; License tab &lt;p&gt;  The key can be obtained before installation &lt;!-- 10749 --&gt;  from program &lt;tt&gt; licidgenerator.exe &lt;/tt&gt;   and (after registration) its &lt;tt&gt; lm70.dll &lt;/tt&gt;  from the installation CD folder \lrunner\lm70.nt\bin or    \lrunner\setup\lm70.nt\bin. &lt;/p&gt;&lt;/ul&gt;  &lt;a name="SampApps"&gt;&lt;/a&gt;&lt;h3&gt;  &lt;a href="http://www.wilsonmar.com/1loadrun.htm#SampApps"&gt;&lt;img src="http://www.wilsonmar.com/img/itemthis.gif" alt="Set screen" border="0" height="17" width="17" /&gt;&lt;/a&gt; Sample Apps / Protocols &lt;/h3&gt;  Running the samples install program populates folder &lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; C:\Program Files\Mercury Interactive\Mercury LoadRunner\  &lt;/tt&gt;&lt;/ul&gt;&lt;br /&gt;Copy the link location below into the "&lt;span style="text-decoration: underline;"&gt;P&lt;/span&gt;rogram to record:" field: &lt;p&gt;  &lt;table border="1" cellpadding="4" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;&lt;th&gt; Protocol &lt;/th&gt;&lt;th&gt; Server &lt;/th&gt;&lt;th&gt; Client Program &lt;/th&gt;&lt;th&gt; Parameter &lt;/th&gt;&lt;th&gt; Notes &lt;/th&gt;&lt;/tr&gt;   &lt;tr valign="top"&gt;&lt;td&gt; Web &lt;/td&gt;&lt;td&gt; &lt;a href="http://www.wilsonmar.com/1loadrun.htm" program="" mercury="" bat=""&gt; WebTours\StartServer.bat&lt;/a&gt;   &lt;/td&gt;&lt;td&gt; &lt;a href="http://localhost:1080/mercuryWebTours"&gt;http://localhost:1080/mercuryWebTours&lt;/a&gt;   &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; COM/DCOM &lt;/td&gt;&lt;td&gt; &lt;em&gt;(Operating System)&lt;/em&gt;   &lt;/td&gt;&lt;td&gt; &lt;a href="file:///C:%5CProgram%20Files%5CMercury%20Interactive%5CMercury%20LoadRunner%5Csamples%5Cbin%5Cfrsui.exe"&gt; samples\bin\frsui.exe&lt;/a&gt;    &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; Winsock &lt;/td&gt;&lt;td&gt; &lt;a href="file:///C:%5CProgram%20Files%5CMercury%20Interactive%5CMercury%20LoadRunner%5Csamples%5Cbin%5Csockfrs.exe"&gt; sockfrs.exe&lt;/a&gt;    &lt;/td&gt;&lt;td&gt; &lt;a href="file:///C:%5CProgram%20Files%5CMercury%20Interactive%5CMercury%20LoadRunner%5Csamples%5Cbin%5Cflights.exe"&gt; samples\bin\flights.exe&lt;/a&gt;   &lt;/td&gt;&lt;td&gt; Winsock&lt;br /&gt;WinSockWeb   &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; &lt;a href="http://www.wilsonmar.com/1jdbc.htm"&gt;ODBC&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt; (MS Access)    &lt;/td&gt;&lt;td&gt; &lt;a href="file:///C:%5CProgram%20Files%5CMercury%20Interactive%5CMercury%20LoadRunner%5Csamples%5Cbin%5Cflights.exe"&gt; samples\bin\flights.exe&lt;/a&gt;   &lt;/td&gt;&lt;td&gt; ODBC_Access   &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; CORBA    &lt;/td&gt;&lt;td&gt; samples\CorbaSamples\server.cmd &amp;&lt;br /&gt;  samples\CorbaSamples\server.bat   &lt;/td&gt;&lt;td&gt; samples\CorbaSamples\client.cmd &amp;amp;&lt;br /&gt;  samples\Corbasamples\clientrecord.cmd   &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;&lt;/td&gt;&lt;td&gt; &lt;a target="_blank" href="http://www.myloadtest.com/loadrunner-tips-for-corba/"&gt;   Stuart Moncrieff's article on CORBA&lt;img src="http://www.wilsonmar.com/img/itemexit.gif" alt="A website external to this site" border="0" height="11" width="17" /&gt;&lt;/a&gt;   &lt;/td&gt;&lt;/tr&gt;  &lt;tr valign="top"&gt;&lt;td&gt; RMI    &lt;/td&gt;&lt;td&gt; samples\RMISamples\server.cmd &amp;&lt;br /&gt;  samples\RMISamples\server.bat   &lt;/td&gt;&lt;td&gt; samples\RMISamples\client.cmd &amp;amp;&lt;br /&gt;  samples\RMISamples\clientrecord.cmd   &lt;/td&gt;&lt;td&gt;  &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/dothis.gif" align="left" /&gt;  According to CPT11877.doc, JDK 1.5 users need to contact Mercury Support for a patch   to each specific LoadRunner version (7.6, 7.8 FP1 or 8.0). Otherwise, you'll get these messages: &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; Error: Failed to find javac.exe Java Compiler in Path and JDK installation folder in registry. [MsgId: MERR-22981]&lt;br /&gt;Error: Failed to compile the Actions.java file. Please add the &lt;jdk&gt;\bin to the path and try again. [MsgId: MERR-22996]&lt;br /&gt;Warning: Extension java_int.dll reports error -1 on call to function ExtPerProcessInitialize [MsgId: MWAR-10485]&lt;br /&gt;Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't initialized on this thread. [MsgId: MERR-10176] &lt;/jdk&gt;&lt;/tt&gt;&lt;/ul&gt; &lt;p&gt;The Java sample apps use the "flight32lr" User Data Source with Microsoft Access driver(*.mdb) in the USER DNS table in Data Sources(ODBC) of the VuGen's local machine. &lt;/p&gt;&lt;p&gt; Additionally, the sample Java servers must be operational prior to starting the client.   This is done with the "samples\RMISamples\server.cmd": &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; set lrpath=C:\PROGRA~1\Java\jre1.5.0_02\bin;C:\PROGRA~1\MERCUR~1\MERCUR~1\classes&lt;br /&gt;set lrclasspath=C:\PROGRA~1\MERCUR~1\MERCUR~1\classes;C:\PROGRA~1\MERCUR~1\MERCUR~1\classes\srv;C:\PROGRA~1\Java\jre1.5.0_02\lib\rt.jar&lt;br /&gt;set flightRmi=%~dp0;%~dp0RmiSamples.zip&lt;br /&gt;set classpath=%lrclasspath%;%flightRmi%;C:\PROGRA~1\Java\lib\rt.jar;.;%classpath%&lt;br /&gt;set path=%lrpath%;.;%path%&lt;br /&gt;&lt;br /&gt;cd %~dp0&lt;br /&gt;start  java -Djava.security.policy="%~dp0RmiFlights.policy" RmiFlights.Server &lt;/tt&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/idea.gif" alt="Idea" border="0" height="16" width="16" /&gt; Note the location of loadrunner class files I added to the default sample. They are pre-pended to the existing classpath. &lt;/p&gt;&lt;p&gt; Note that there are no spaces in the file path. &lt;/p&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/reminder.gif" alt="Reminder" border="0" height="16" width="20" /&gt;  The Zip file is equivalent to a JAR file in Unix systems. &lt;/p&gt;&lt;p&gt;  &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt;  Do not delete the black command window because the Java server runs within it.  &lt;/p&gt;&lt;/ul&gt; &lt;p&gt; CORBA and RMI Java clients are invoked with a command for Windows to start the java.exe program. This "samples\RMISamples\client.cmd" file contains: &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; set lrpath=C:\PROGRA~1\Java\jdk1.5.0_02\bin;C:\PROGRA~1\MERCUR~1\MERCUR~1\classes&lt;br /&gt;set lrclasspath=C:\PROGRA~1\MERCUR~1\MERCUR~1\classes;C:\PROGRA~1\MERCUR~1\MERCUR~1\classes\srv;C:\PROGRA~1\Java\jdk1.5.0_02\lib\rt.jar&lt;br /&gt;set flightRmi=%~dp0;%~dp0RmiSamples.zip&lt;br /&gt;set classpath=%lrclasspath%;%flightRmi%;C:\PROGRA~1\Java\jdk1.5.0_02\lib\rt.jar;.;%classpath%&lt;br /&gt;set path=%lrpath%;.;%path%&lt;br /&gt;&lt;br /&gt;cd %~dp0&lt;br /&gt;&lt;br /&gt;start java RmiFlights.main &lt;/tt&gt;&lt;p&gt;  Note that the &lt;strong&gt; RmiFlights.main &lt;/strong&gt; class file name is passed into java for it to load. &lt;/p&gt;&lt;/ul&gt; &lt;p&gt; When recording Java with VuGen, a different command — such as the sample &lt;strong&gt; clientRecord.cmd&lt;/strong&gt; —  needs to be invoked because VuGen needs to be invoked within the JVM sandbox: &lt;/p&gt;&lt;ul&gt;&lt;tt&gt; set flightRmi=%~dp0;%~dp0RmiSamples.zip&lt;br /&gt;set classpath=%flightRmi%;%classpath%&lt;br /&gt;cd %~dp0&lt;br /&gt;&lt;br /&gt;start InvokeVugen.exe &lt;/tt&gt;&lt;/ul&gt;   &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt;  The location of the JDK needs to be specified &lt;a href="http://www.wilsonmar.com/1envvars.htm"&gt;in the Windows PATH environment variable PATH&lt;img src="http://www.wilsonmar.com/img/itemgo.gif" alt="another page on this site" border="0" height="16" width="19" /&gt;&lt;/a&gt;   to avoid this message: &lt;ul&gt;&lt;tt&gt;Error: Failed to find javac.exe Java Compiler in Path and JDK installation folder in registry. [MsgId: MERR-22981]&lt;/tt&gt;&lt;/ul&gt;  &lt;img src="http://www.wilsonmar.com/img/reminder.gif" alt="Reminder" border="0" height="16" width="20" /&gt;  VuGen "Java Vusers" can only operate as Single Vuser mode (not multi-vuser). &lt;p&gt;  Instead of web "Start recording",  Java VuGen scripts invoke &lt;strong&gt;Java functions&lt;/strong&gt; within the Actions section.&lt;br /&gt;"vuser_init" and "vuser_end" actions are not relevant within Java VuScripts. &lt;/p&gt;&lt;p&gt;  Internally, the &lt;tt&gt;cjhook.ini&lt;/tt&gt; file specifies which Java classes can hook in its  [EXC_SYSTEM_CL] section.  Java classes specified in the [SYSTEM_CL] section are not hooked. &lt;/p&gt;&lt;p&gt;  The &lt;strong&gt; user.hooks &lt;/strong&gt; file in LR \bin folder is a  general format and cannot be used as-in.  It needs to be copied.    &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;h3&gt; Uninstall &lt;/h3&gt;  &lt;img src="http://www.wilsonmar.com/img/caution.gif" alt="Caution!" border="0" height="14" width="15" /&gt;  To uninstall LoadRunner, you must be logged in with the same Windows userID   as was used during original installation!    If you use a different userid, the uninstall will delete  only the dat folder which contains the "miuninst" file. &lt;p&gt;  &lt;!-- 12783 --&gt; Unlike Microsoft Office applications, Mercury has not programmed invididual components to be selectively uninstalled on its own. &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1364820628312242248?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1364820628312242248/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1364820628312242248' title='28 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1364820628312242248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1364820628312242248'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/loadrunner.html' title='LoadRunner的工作原理(第一部分)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6336122756501446062</id><published>2007-02-13T17:35:00.000+08:00</published><updated>2007-02-13T17:42:58.907+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='最爱金曲'/><title type='text'>Lonely</title><content type='html'>一九六九年十月五日出生在加纳。十岁的时候他跟随他母亲、兄弟姐妹一起去了德国。这一去，改变了他的生活，nana学到了很多新的东西。从幼年开始，nana酷爱音乐，他从中学毕业后，当了一名dj。他在很多地方表演，渐渐小有名气。与此同时，他还在两部德国电影中担任配角，因而，nana也可以被称为一名演员。这个时候，他遇到了toni cottura。此人在fun factory大大地有名，参与炮制好几个著名组合：后街男孩、超级男孩、Marky Mark.在与nana合作一段时间之后，tony cottura 和他的搭档离开了fun factory。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;歌词：&lt;br /&gt;&lt;br /&gt;I am lonely lonely lonely 我是寂寞的 寂寞的 寂寞的&lt;br /&gt;I am lonely lonely in my life我是寂寞的 孤独的在我的生命中&lt;br /&gt;I am lonely lonely lonely 我是寂寞的 寂寞的 寂寞的&lt;br /&gt;God help me help me to survive! 神救我 帮助我生存&lt;br /&gt;Remember first time we met day one 记得那天第一次我们相遇一个小孩在花园里快乐的玩耍&lt;br /&gt;Kids in the garden\' playin\'&lt;br /&gt;games heaven\' fun&lt;br /&gt;Excitin\' and amazin\' havin\'激动和吃惊发现了我的一个真正的朋友&lt;br /&gt;a real friend of mine&lt;br /&gt;Feel my heartbeat and for感觉到当我遇到真正朋友时的心跳&lt;br /&gt;real friend of mine&lt;br /&gt;Face to face and eye to eye脸对脸.眼对眼&lt;br /&gt;Usin\' our hands to buy and supply 用 我们的手去卖去供给&lt;br /&gt;Chillin\' is cool from january to june 寒意从一月到六月&lt;br /&gt;And we still stiked together我们像胶水一样粘一起&lt;br /&gt;like the glue&lt;br /&gt;And know the rules 我们知道规则&lt;br /&gt;Forever you and i and believe 我和你都相信它永远是干净的&lt;br /&gt;it was clear&lt;br /&gt;If i ever should fall即使我曾经落下&lt;br /&gt;i could count on you with no fear 我可以依靠你不会害怕&lt;br /&gt;Runnin\' out of time i see who\'s fake 用完所有时间,我看到虚假的孤独没有保护&lt;br /&gt;Alone without protection&lt;br /&gt;from all them snakes 从他们的虚假&lt;br /&gt;All for one one for all i was told 不管我说黑白黄不管年轻或老&lt;br /&gt;Black white yellow no matter&lt;br /&gt;if your young or old&lt;br /&gt;Nana\'s in the house to let you know祖母让你知道&lt;br /&gt;What i see is how i fell and damn 我看到的,我是多么忧伤和失败&lt;br /&gt;I\'m alone我是孤独的&lt;br /&gt;&lt;br /&gt;I am lonely lonely lonely 我是寂寞的 寂寞的 寂寞的&lt;br /&gt;I am lonely lonely in my life 我是寂寞的 孤独的在我的生命中&lt;br /&gt;I am lonely lonely lonely 我是寂寞的 寂寞的 寂寞的&lt;br /&gt;God help me help me to survive! 神救我 帮助我生存&lt;br /&gt;Everybody\'s trippin\' on me 所有人牵绊着我&lt;br /&gt;Oh lord come help me please 求上帝来保佑我&lt;br /&gt;I did some bad things in my life 很多不好的事情在我的生命中&lt;br /&gt;Why can\'t you rescue me 为什么你不来拯救我&lt;br /&gt;\'cause you\'ve got all i need 你能做到我所有想要的&lt;br /&gt;I know i got to pay the price 我知道我需要付出代价&lt;br /&gt;Cheppin\' thru the streets at night在夜间穿过大街&lt;br /&gt;after a fuss and fight 在一切慌乱后&lt;br /&gt;Tears in my eyes i\'m a man眼泪在我眼底,我一个人望着光&lt;br /&gt;lookin\' for the light&lt;br /&gt;Dark is the path黑暗已经过去&lt;br /&gt;i know he will rescue me我知道他会来拯救我&lt;br /&gt;The lord is my shepard上帝是我的牧主&lt;br /&gt;i\'m cool despite emergency&lt;br /&gt;Whom shall i fear exept the god只有上帝在我冷的时候不会让我遇到事情时感到害怕&lt;br /&gt;Thank you for the blessin\' a&lt;br /&gt;nd the skils on the mic 谢谢你保佑和赐予我唱歌的能力&lt;br /&gt;Five years we know there\'s no diggity 五年我们知道了那儿没有diggity(不知道这个词什么意思)&lt;br /&gt;Free at last see the light in me 我最后一次看到光&lt;br /&gt;What goes up must come down 什么才是必须做的&lt;br /&gt;I\'ll be around while you 我会在你周围直到死亡&lt;br /&gt;heading towards deathtown 朝（？）前进&lt;br /&gt;Allways look forward hardly 一直努力的向前看决不回头&lt;br /&gt;never look back So many tears and 决不回顾那么多眼泪和毒蛇&lt;br /&gt;the snakes on my jock 当我成为男子汉&lt;br /&gt;Now i\'m riding in my big fat ride 现在我骑着我肥壮的马&lt;br /&gt;Your ass is late so look for the line 你的驴慢所以只能看着线&lt;br /&gt;Nana in the house to let you know 祖母会让你知道&lt;br /&gt;What i see is how我感觉到我的感觉所以让我一个人带回儿&lt;br /&gt;i feel so leave me alone 感觉到 我不管&lt;br /&gt;I am lonely lonely lonely我是寂寞的 寂寞的 寂寞的&lt;br /&gt;I am lonely lonely in my life我是寂寞的 孤独的在我的生命中&lt;br /&gt;I am lonely lonely lonely我是寂寞的 寂寞的 寂寞的&lt;br /&gt;God help me help me to survive!神救我 帮助我生存&lt;br /&gt;Knock on my door whom you lookin\' for 敲我的门当你看到梦想的敌人在我的门前&lt;br /&gt;A dream or reality enemies at my door&lt;br /&gt;Eyes i realize 注视着,我发现了,那是梦想我必须定很很高&lt;br /&gt;it\'s fantasize i must be high 想象中一定是高的&lt;br /&gt;So let me live before i die 所以让我生动的度过我剩余的时间&lt;br /&gt;Once again grab the&lt;br /&gt;bottle twist the cap再一次拿起瓶子&lt;br /&gt;To survive your life 去拯救你的生命&lt;br /&gt;is yours my life is mine 是你的我的生活是我的&lt;br /&gt;No emotions in this world full of lies面对这个世界的完美的谎言不要冲动&lt;br /&gt;Step by step and be versatile 一步一步的实现&lt;br /&gt;Love peace and cash爱,和平和死亡&lt;br /&gt;that\'s what is\'s all about那是所有&lt;br /&gt;Alone by yourself than you比你自己更孤独&lt;br /&gt;lack there\'s no doubt about 不要怀疑&lt;br /&gt;I\'m always into something&lt;br /&gt;making moves to improve 只要你归于我,我会证明给你看&lt;br /&gt;What would you do 如果你处在我的位置&lt;br /&gt;if you were in my shoes 你能做什么&lt;br /&gt;Boom a letter oops another suicide(这句实在是不知道怎么翻译)&lt;br /&gt;Meet me for a ride at the boulevard 骑着马和我在林荫道相遇&lt;br /&gt;Nana\'s in the house to let you know 祖母会让你知道,&lt;br /&gt;What i see is how i feel我看到的和我感到的&lt;br /&gt;and damn l\'m alone和我 多么的孤独&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6336122756501446062?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6336122756501446062/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6336122756501446062' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6336122756501446062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6336122756501446062'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/lonely.html' title='Lonely'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2946709308113998530</id><published>2007-02-10T17:48:00.000+08:00</published><updated>2007-02-09T11:05:59.596+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之功利篇</title><content type='html'>上周参加公司的自动化测试研讨会，今年的主题是ROI（投资回报），个人感觉这是一个很严肃的话题，也是领导最关心的一个问题。不过谈测试自动化的投资回报似乎并不是一件容易的事情。测试自动化本身是一个需要持续投入的系统工程。他并不像开发过程一样那么容易衡量产出和回报。另外，对于测试自动化的投资回报似乎不应该在一开始提到一个很高的高度。否则对自动化的开展非常不利。&lt;br /&gt;&lt;br /&gt;另外，测试自动化并不是简单的把手工的测试转化成自动化的代码或者脚本这么简单的过程，而是要贯穿在产品的生命周期中，进行不断地执行，只有不断地执行，才能得到收益，根据经验，回归测试的自动化测试用例在不考虑被测对象改变带来自动化测试脚本维护的前提下，反复执行4-7轮才能收回成本。如果被测对象本身不是十分稳定，或者缺陷比较多，产品不成熟，这个时候介入测试自动化是非常得不偿失的。&lt;br /&gt;&lt;br /&gt;测试自动化在很大程度也依赖于被测对象或者被测设备的稳定性，系统的设计应该考虑到可测试性，Design for Test。测试自动化越早加入到产品的开发周期，成功的机会越大。&lt;br /&gt;关于测试自动化的效果衡量不是简单的发现了多少缺陷，其实自动化测试并不能比手工测试发现更多的缺陷，如果要发现更多的缺陷，一定要进行必要的手工测试。自动化测试的效果或者投资回报可以通过其他一些方法进行衡量，比如节省的测试人力成本，可以通过统计手工测试的时间，自动化测试的开发时间，自动化测试的执行之间，执行次数，刨去维护时间，进行计算得到。另外，还可以从回归测试能加快产品的发布时间上进行衡量。&lt;br /&gt;&lt;br /&gt;最后，关于产品的自动化程度，究竟多少比例的产品需要被自动化，这个取决于产品本身，以及这个产品本身可以被自动化的程度有关系，还要考虑自动化所需要花费的代价。一般来说，不是所有的测试用例都需要自动化，也不是所有的测试用例都能够自动化。据个简单的例子，有一个测试用例，需要重新启动机房里面一台服务器，常规来说，是不能也不需要自动化。但是有没有可能自动化呢？肯定有，不过肯定不会为了这个自动化这个测试用例而去花费巨大的代价开发一个机器人帮你完成这个任务。当然这是一个极端的例子。目的是告诉大家，不是所有的测试用例都需要自动化，也不是所有的用力都能自动化。衡量的依据是不同产品和代价得多少。&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2946709308113998530?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2946709308113998530/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2946709308113998530' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2946709308113998530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2946709308113998530'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_10.html' title='自动化测试的思考和总结之功利篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-8248363082889704510</id><published>2007-02-09T10:57:00.000+08:00</published><updated>2007-02-09T11:04:59.070+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>二十世纪最狂妄的演讲</title><content type='html'>埃里森，甲骨文公司CEO，是当今仅次于盖茨的第二富翁。不过，也有人网上和他开玩笑，以下是网上流传的他在耶鲁大学2000年毕业典礼上的致词(可以肯定这不是真的)。&lt;br /&gt;&lt;br /&gt;　　耶鲁的毕业生们，我很抱歉一一如果你们不喜欢这样的开场。我想请你们为我做一件事。请你一一好好看一看周围，看一看站在你左边的同学，看一看站在你右边的同学。请你设想这样的情&lt;br /&gt;况：从现在起5年之后，10年之后，或30年之后，今天站在你左边的这个人会是一个失败者&lt;br /&gt;右边的这个人，同样，也是个失败者。而你，站在中间的家伙，你以为会怎样?一样是失败者。失败的经历。失败的优等生&lt;br /&gt;&lt;br /&gt;说实话，今天我站在这里，并没有看到一千个毕业生的灿烂未来。我没有看到一千个行业的一千名卓越领导者。我只看到了一千个失败者。你们感到沮丧。这是可以理解的。为什么，我，埃里森，一个退学生，竟然在美国最具声望的学府里这样厚颜地散布异端?我来告诉你原因。因为，&lt;br /&gt;&lt;br /&gt;我，埃里森，这个行星上第二富有的人，是个退学生，而你不是。因为比尔·盖茨，这个行星上最富有的人一一就目前而言一一是个退学生，而你不是。因为艾伦，这个行星上第三富有的人，也退了学，而你没有。再来一点证据吧，因为戴尔，这个行星上第九富有的人一一他的排位还在不断上升，也是个退学生。而你，不是。&lt;br /&gt;&lt;br /&gt;　　……你们非常沮丧。这是可以理解的。&lt;br /&gt;&lt;br /&gt;　　现在，让我打击你一下。我要相当诚挚地指出：你们的文凭不是白拿的。你们中的大多数，我猜，已经在这里花费了四五年时光，你们将以各种方式在未来使用你所学的东西。你们已经确立了好的工作习惯。你们已经建立了能帮你沿这条路前进的人际网。你们已经将自己这辈子与“治疗”这个词建立了一种联系。一切很好。因为事实上，你们需要这些。&lt;br /&gt;&lt;br /&gt;　　你们将来需要这些有用的工作习惯。你将来需要这种“治疗”。你需要它们，因为你没辍学，所以你永远不会成为世界上最富有的人。哦，当然，你可以，也许，以你的方式进步到第10位，第 11位，就像史蒂夫·鲍尔默，但，我没有告诉你他在为谁工作，是吧?根据记载，他是研究生时辍的学，开化得稍晚了些。&lt;br /&gt;&lt;br /&gt;　　现在，我猜想你们中间很多人，也许是绝大多数人，正在琢磨，“我能做什么?我究竟有没有前途?”当然没有。太晚丁，你们已经吸收了太多东西，以为自己懂得太多。你们再也不是19岁了。你们有了“内置”的帽子，哦，我指的可不是你们脑袋上的学位帽。&lt;br /&gt;&lt;br /&gt;　　嗯……你们已经非常沮丧啦。这是可以理解的。所以，现在可能是讨论实质的时候啦一一绝不是为了你们，2000年毕业生。你们已经被报销，不予考虑了。我想，你们就偷偷摸摸去干那年薪20万的可怜工作吧，在那里，工资单是由你两年前辍学的同班同学签字开出来的。事实上，我是寄希望于眼下还没有毕业的同学。我要对他们说，离开这里。收拾好你的东西，带着你的点子，别再回来。退学吧，开始行动。我要告诉你，一顶帽子一套学位服必然要让你沦落……就像这些保安马上要把我从这个讲台上撵走一样必然……(此时，Oracle CEO被带离了讲台)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;人物介绍：&lt;br /&gt;姓名：拉里.埃里森（Larry·Ellison），俄罗斯移民的美国犹太人后裔&lt;br /&gt;年龄：57岁，出生于1944年曼哈顿&lt;br /&gt;婚史：曾经历过3次婚姻&lt;br /&gt;学历：读过三所大学，伊利诺斯大学、芝加哥大学、西北大学，后辍学&lt;br /&gt;人生目标：击败微软，成为世界最大的软件企业是我的一大目标。我成功并不重要，重要的是其他所有人都失败了，那时我才是真正的成功。&lt;br /&gt;惊人手笔：&lt;br /&gt;1、他曾经想花2000万美元购买一架俄罗斯米格战斗机，令美国海关手足无措。&lt;br /&gt;2、开着一架意大利产战斗机在太平洋上空和别人进行模拟空战。&lt;br /&gt;3、因冒险玩命多次住进医院：上大学踢球时弄断过鼻梁骨，在夏威夷冲浪时扭伤过颈骨，还有一次因骑车摔断过肘骨。&lt;br /&gt;4、拥有一架拆除武器的意大利产‘马尔切蒂S.211’型战斗机。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-8248363082889704510?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/8248363082889704510/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=8248363082889704510' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8248363082889704510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8248363082889704510'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_09.html' title='二十世纪最狂妄的演讲'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5747754330788355539</id><published>2007-02-08T16:12:00.000+08:00</published><updated>2007-02-08T15:36:24.165+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>如何判断一个字符串是否为数字或日期?</title><content type='html'>转自Eygle大侠的一篇文章,感受颇深:&lt;br /&gt;&lt;p&gt;这就是区别.&lt;/p&gt;  &lt;p&gt;高手遇到问题,总是说:自己写一个吧!&lt;br /&gt;新手遇到问题,总是问:这个怎么实现?&lt;/p&gt;  -------------------------------&lt;br /&gt;&lt;p&gt;昨天有一个朋友在MSN上问，如何判断一个字符串是否为数字?&lt;br /&gt;我说，写一个函数吧。于是给出了一个例子:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;SQL&gt; CREATE OR REPLACE FUNCTION is_number (parmin VARCHAR2)&lt;br /&gt;  2     RETURN NUMBER&lt;br /&gt;  3  IS&lt;br /&gt;  4     val   NUMBER;&lt;br /&gt;  5  BEGIN&lt;br /&gt;  6     val := TO_NUMBER (NVL (parmin, 'a'));&lt;br /&gt;  7     RETURN 1;&lt;br /&gt;  8  EXCEPTION&lt;br /&gt;  9     WHEN OTHERS&lt;br /&gt; 10     THEN&lt;br /&gt; 11        RETURN 0;&lt;br /&gt; 12  END;&lt;br /&gt; 13  /  &lt;p&gt;Function created.&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_number('a') from dual;&lt;/p&gt;  &lt;p&gt;IS_NUMBER('A')&lt;br /&gt;--------------&lt;br /&gt;             0&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_number('0.998') from dual;&lt;/p&gt;  &lt;p&gt;IS_NUMBER('0.998')&lt;br /&gt;------------------&lt;br /&gt;                 1&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_number('9999999999999999') from dual;&lt;/p&gt;  &lt;p&gt;IS_NUMBER('9999999999999999')&lt;br /&gt;-----------------------------&lt;br /&gt;                            1&lt;/p&gt;&lt;/blockquote&gt;  &lt;p&gt;今天，这个朋友在MSN上又问：如何判断一个字符是否是日期?&lt;br /&gt;我说，再写一个函数吧。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;补注:由于session的语言设置会影响日期的输出格式，所以时间被转换为字符可能有多种形式。&lt;br /&gt;以下这个函数只能满足部分情况，仅供参考。&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt; SQL&gt; CREATE OR REPLACE FUNCTION is_date (parmin VARCHAR2)&lt;br /&gt;  2     RETURN NUMBER&lt;br /&gt;  3  IS&lt;br /&gt;  4     val   DATE;&lt;br /&gt;  5  BEGIN&lt;br /&gt;  6     val := TO_DATE (NVL (parmin, 'a'), 'yyyy-mm-dd hh24:mi:ss');&lt;br /&gt;  7     RETURN 1;&lt;br /&gt;  8  EXCEPTION&lt;br /&gt;  9     WHEN OTHERS&lt;br /&gt; 10     THEN&lt;br /&gt; 11        RETURN 0;&lt;br /&gt; 12  END;&lt;br /&gt; 13  /&lt;br /&gt; &lt;p&gt;Function created.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_date('a') from dual;&lt;/p&gt;  &lt;p&gt;IS_DATE('A')&lt;br /&gt;------------&lt;br /&gt;           0&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_date('2004-05-05') from dual;&lt;/p&gt;  &lt;p&gt;IS_DATE('2004-05-05')&lt;br /&gt;---------------------&lt;br /&gt;                    1&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_date('2004/01/01') from dual;&lt;/p&gt;  &lt;p&gt;IS_DATE('2004/01/01')&lt;br /&gt;---------------------&lt;br /&gt;                    1&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_date('01/01/04') from dual;&lt;/p&gt;  &lt;p&gt;IS_DATE('01/01/04')&lt;br /&gt;-------------------&lt;br /&gt;                  1&lt;/p&gt;  &lt;p&gt;SQL&gt; select is_date('01-jan-04') from dual;&lt;/p&gt;  &lt;p&gt;IS_DATE('01-JAN-04')&lt;br /&gt;--------------------&lt;br /&gt;                   1&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;p&gt;这两者是何其相似啊！&lt;/p&gt;&lt;a href="http://www.eygle.com/archives/2007/02/is_date_or_number.html"&gt;参考原文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-5747754330788355539?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/5747754330788355539/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=5747754330788355539' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5747754330788355539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5747754330788355539'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_08.html' title='如何判断一个字符串是否为数字或日期?'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-714153411469790873</id><published>2007-02-03T14:27:00.000+08:00</published><updated>2007-02-03T14:48:44.017+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活感悟'/><title type='text'>天堂里没有忧愁--沉痛悼念丽丽</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_fwbFyFkh91M/RcQwIUnZXnI/AAAAAAAAAPA/5EVlj1iBUIw/s1600-h/lili.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_fwbFyFkh91M/RcQwIUnZXnI/AAAAAAAAAPA/5EVlj1iBUIw/s320/lili.jpg" alt="" id="BLOGGER_PHOTO_ID_5027196003583352434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;为什么??这究竟是为什么??&lt;br /&gt;&lt;br /&gt;昨天看到曾勇发的短信,"丽丽昨天上吊自杀了",我真的不敢相信自己的眼睛.&lt;br /&gt;活泼可爱的丽丽,自从毕业之后就一直没能见过一面,去年她来过一次深圳&lt;br /&gt;我们最近的时候相隔竟然不到一公里,而因为行程,居然没有见着,想不到...&lt;br /&gt;&lt;br /&gt;一直都记得她那铜铃般灿烂的笑声,可是以后再也听不到了,这究竟为什么...&lt;br /&gt;&lt;br /&gt;祝福丽丽在天堂能得到她的幸福....&lt;br /&gt;&lt;br /&gt;丽丽,一路走好~~&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;五四六零上的部分留言:以此来纪念曾经的活泼可爱的丽丽&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=1192529&amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;张皓&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         惊闻噩耗,内心涌动着震痛的酸楚!&lt;br /&gt;可从上午至今,一直没有落泪,难以面对的事实使我精神麻木!&lt;br /&gt;但现在,看着这行行思念和祝福,泪水夺眶而出!&lt;br /&gt;&lt;br /&gt;她将所有的快乐播撒给了我们,然后在那天悄悄的走开!&lt;br /&gt;然而在红尘寂寂的生活中,我想我居然并没有时常想起她,只会独自的享受"开心果"的开心.真的,现在,今天,明天&lt;br /&gt;          请记住她,请记住那天!&lt;br /&gt;          并请加上永远的&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=3336202&amp;amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;陈艳琴&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         丽 丽，很久没有你的消息，没想到有了，确实这样一个令人难以置信的噩耗，我真的真的希望这只是个玩笑，从知道这个噩耗到现在，脑子里全是你的笑容，你的声 音，你的一切的一切...，好想再陪你去逛步行街，帮你参考衣服，好想再陪你聊天，哪怕是一次也行。可事实确是这么的残酷，我们要永远的失去你，永远也见 不到你......只能默默的祝福你，祝福你在那个世界里，内心能象你的笑容一样灿烂、开心。&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=3010616&amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;董玉华&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                             流过泪以后，还有一个小时才到下班时间，我换好衣服走出来，早退，实在不能再呆在单位，遇到同事都低头，怕人看见自己的眼睛红红，沿海边走了一站路，吹吹海风希望能清醒点，先坐车去了夫的单位，路上就想吐，没有缘由地。&lt;br /&gt;  到了他单位，门卫奇怪地看着我，我说进去找人，工程机所的×××，然后进去，正是他们下班的时候，每个人匆匆忙忙地走过，我呆呆地，没有人注意到我，穿过第一栋楼的大厅，他站在那等我，看到他，我泪水又下来......&lt;br /&gt;  他问：是不是真的？会不会是弄错了啊?&lt;br /&gt;  我也宁愿相信这不是真的，张帆在电话里失声痛哭，我也哭。&lt;br /&gt;  前段时间她还说有空来青岛玩，我也说我全程陪伴的，而这个，也是她许给我的空头承诺。&lt;br /&gt;  眼泪流干心被掏空........&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=1783426&amp;amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;黄刘华&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         我 不知道用什么做留言主题，好像脑袋空白似的。我也不想说祝福她在天国，因为宁愿她现在还在人世，哪怕是痛苦的活着。抑郁症不是常人所能够理解的，所以大家 一定要珍重眼前人，而且如果谁觉得很郁闷的话，如果旁边没人可说，那多打电话骚扰同学吧，所有的人都喜欢被关心的感觉，能被打电话骚扰也是一种幸福。&lt;br /&gt;&lt;br /&gt;谢谢伟光，新运能发起这个捐款号召&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=2035634&amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;熊英&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                             我没有心情也没有力气了,我总不能相信,你就这样永远的离开了我们,永远!&lt;br /&gt;&lt;br /&gt;  天堂是什么模样,祈祷你在天堂不再不快乐,不再没有人陪你说话,你现在应该知道了是不是和梦中一样,那里应该没有痛苦没有烦恼.&lt;br /&gt;&lt;br /&gt;  你blog最后的链接是"查无此人",时间是2006年11月11日,你离开的时间是2007年2月1日,没有人知道你承受多少痛苦,你把关于你的一切永远的永远的带走了......&lt;br /&gt;&lt;br /&gt;  我知道,每个人都会离开这个世界的,可是你离开的方式是这么壮烈.&lt;br /&gt;&lt;br /&gt;  我们再也联系不到你了,再也不知道另一个世界你的喜怒哀乐了.&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=1192467&amp;amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;尹雪辉&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                             惊闻噩耗传来，不禁悲痛万分，熊英脸上依然挂着泪水。&lt;br /&gt;  正如伟光所言，彭丽选择了她自己的道路，我们惟有送上自己的祝福。&lt;br /&gt;  脑海里，彭丽的音容笑貌历历在目。毕业后，大家各赴前程，和彭丽也只见过2面。一次彭丽来上海进修，一次在长沙母校重逢。&lt;br /&gt;  给女友电话，告之彭丽的事情，女友大声叫着，不会吧，这么一个爱笑的女孩，这么一个开朗的女生，就这么走了？虽然只有一面之缘，餐桌上，那清朗略带腼腆的笑容给每个人留下深刻的印象。&lt;br /&gt;  而我，也始终无法接受这样的现实。在长沙，也就2，3个月之前，彭丽站在铁道校区大门口等待我们。仍然感受着只属于她的那种温柔，那种温暖。笑着，望着……&lt;br /&gt;  我们始终无法走进彭丽的思维，就像一个正常人来考虑这样的事情一样，而她还是去了。但那动人的笑容，会浮现在眼前。生命啊，何其重，何其轻？&lt;br /&gt;  愿她的天堂，像她一样，充满欢笑，充满阳光。&lt;br /&gt;  我们也会把你的笑容珍藏，在每年的今日，再和你一起共享。&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=2446683&amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;高洪霞&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         天堂里没有烦恼，你的笑容永远灿烂，你是我们心中永远可爱的女孩，你是天使，一起走过的日子是彼此心中永远珍藏的角落。。。&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=3367748&amp;amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;薛_云志^&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         真不敢相信，那么开朗的lily居然会以这种方式离开人间...&lt;br /&gt;&lt;br /&gt;一段时间没见她上网，一直以为年底工作忙。没想到却是这样的一个消息...&lt;br /&gt;&lt;br /&gt;msn上，有一个名字，永远也无法上线了...&lt;br /&gt;&lt;br /&gt;lily的照片还在下面，那笑容还是很灿烂...&lt;br /&gt;&lt;br /&gt;lily走好，天国一切平安。&lt;br /&gt;&lt;br /&gt;留言者：&lt;span class="style64"&gt;                     &lt;a href="http://www.5460.net/gy5460/jsp/person/onePerson.jsp?memberID=4374115&amp;amp;classID=331784" target="_blank"&gt;&lt;span class="style64"&gt;周新运&lt;/span&gt;&lt;/a&gt;                                                               &lt;/span&gt;                                                     &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="4" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="6"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                  &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" width="730"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td bgcolor="#cccccc" height="1"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                 &lt;table align="center" border="0" cellpadding="0" cellspacing="0" height="16" width="740"&gt;                   &lt;tbody&gt;&lt;tr&gt;                     &lt;td height="12"&gt;&lt;br /&gt;&lt;/td&gt;                   &lt;/tr&gt;                 &lt;/tbody&gt;&lt;/table&gt;                                                         今天接到噩耗，我们的小开心果彭丽昨晚去世。大致情形是丽丽患上了抑郁症，然后...&lt;br /&gt;逝者已经远去，留下的只是无尽的伤痛。&lt;br /&gt;现在最痛苦莫过于丽丽的父母和亲人。&lt;br /&gt;丽丽的父母都是农民，丽丽是他们家经济上的主力。我们所能做的也就是奉献自己的绵薄之力，代丽丽孝敬一下丽丽的爸妈。&lt;br /&gt;我和伟光商量后，打算这样做。&lt;br /&gt;伟光设立一个帐号，大家往这个帐号上面汇过去，汇总了之后，由伟光等人做代表送给丽丽的爸妈。具体的帐号信息稍后伟光会公布出来。&lt;br /&gt;此外，由于一时联系不上很多同学，请知道这个消息的同学给身边的同学转发通知一下，大家齐伸手，谢谢大家。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-714153411469790873?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/714153411469790873/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=714153411469790873' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/714153411469790873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/714153411469790873'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post_03.html' title='天堂里没有忧愁--沉痛悼念丽丽'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fwbFyFkh91M/RcQwIUnZXnI/AAAAAAAAAPA/5EVlj1iBUIw/s72-c/lili.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6235277503214220286</id><published>2007-02-01T22:23:00.000+08:00</published><updated>2007-02-14T15:12:44.574+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之工具利器篇</title><content type='html'>谈到自动化测试,自然离不开自动化测试工具. 其实自动化测试和自动化测试工具还有很大的差别,不过很多人提起来自动化测试就想到自动化测试工具,其实是不全面的，更有人提到自动化测试就想到QTP,LoadRunner,Test Manager,那就更是片面的了。&lt;br /&gt;&lt;br /&gt;自动化测试工具是开展自动化测试的必备利器，就好像你要进行性能测试自动化，但是缺少工具。传统的方法比如压力测试是号召大伙某个固定的时间，登陆某台测试对象或者测试设备进行同时测试。这在现在看来是有些不切实际，而且实际的测试效果往往因为无法有效组织或者无法模拟实际情况大打折扣。而利用自动化测试工具就可以很好的满足这样的需求，最简单的就是模拟500用户并发测试web服务器的性能。&lt;br /&gt;&lt;br /&gt;不单单性能测试，往往功能测试自动化也是这样的，只是性能测试表现得更加明显罢了。功能测试自动化如果能有效的利用自动化测试工具，有的时候可以收到事半功倍的效果。&lt;br /&gt;&lt;br /&gt;简单的分析到这里，关于测试工具的一个很全面地总结，可以参考&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/blog-post_6065.html"&gt;前面的一篇日志&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;--to be continued&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6235277503214220286?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6235277503214220286/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6235277503214220286' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6235277503214220286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6235277503214220286'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/blog-post.html' title='自动化测试的思考和总结之工具利器篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-7241307641151873673</id><published>2007-02-01T18:11:00.000+08:00</published><updated>2007-02-14T15:11:40.353+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='测试人生'/><title type='text'>软件测试工程师面试题</title><content type='html'>&lt;div  style="font-size:12px;"&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;在51上&lt;a href="http://bbs.51testing.com/thread-64534-1-1.html"&gt;看到这个帖子&lt;/a&gt;,挺有感触的,就转过来了.&lt;br /&gt;&lt;br /&gt;以前做过测试,有志于从事测试,目前正在从事测试或者将来要从事测试的朋友都来问问自己 ,这些问题如果问到我应该怎么回答.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;软件测试工程师面试题&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;01. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;为什么要在一个团队中开展软件测试工作？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;02. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您是否了解以往所工作的企业的软件测试过程？如果了解，请试述在这个过程中都有哪些工作要做？分别由哪些不同的角色来完成这些工作？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;03. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您是否了解以往所工作的企业的软件开发过程？如果了解，请试述一个完整的开发过程需要完成哪些工作？分别由哪些不同的角色来完成这些工作？（对于软件测试部分，可以简述）&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;04. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您在以往的测试工作中都曾经具体从事过哪些工作？其中最擅长哪部分工作？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;05. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您所熟悉的软件测试类型都有哪些？请试着分别比较这些不同的测试类型的区别与联系（如功能测试、性能测试……）&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;06. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;07. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;测试计划工作的目的是什么？测试计划工作的内容都包括什么？其中哪些是最重要的？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;08. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您认为做好测试计划工作的关键是什么？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;09. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您所熟悉的测试用例设计方法都有哪些？请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;10. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您认为做好测试用例设计工作的关键是什么？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;11. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;请以您以往的实际工作为例，详细的描述一次测试用例设计的完整的过程。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;12. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您以往的工作中是否曾开展过测试用例的评审工作？如果有，请描述测试用例评审的过程和评审的内容。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;13. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您以往是否曾经从事过性能测试工作？如果有，请尽可能的详细描述您以往的性能测试工作的完整过程。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;14. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您在从事性能测试工作时，是否使用过一些测试工具？如果有，请试述该工具的工作原理，并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;15. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;您认为性能测试工作的目的是什么？做好性能测试工作的关键是什么？&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;16. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;在您以往的工作中，一条软件缺陷（或者叫&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;Bug&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;）记录都包含了哪些内容？如何提交高质量的软件缺陷（&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:10;"&gt;Bug&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;"&gt;&lt;span style="font-size:10;"&gt;）记录？&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;-end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-7241307641151873673?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/7241307641151873673/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=7241307641151873673' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7241307641151873673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7241307641151873673'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/02/51.html' title='软件测试工程师面试题'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-196756035215418653</id><published>2007-01-31T08:54:00.000+08:00</published><updated>2007-01-31T10:05:26.174+08:00</updated><title type='text'>CPC考试居然差点没过</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/cpc.html"&gt;LoadRunner CPC&lt;/a&gt;考试居然没过, &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 102, 102); font-weight: bold;"&gt;68分&lt;/span&gt;,没有把我郁闷坏.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/cpc_27.html"&gt;本来以为顶多能考四五十分&lt;/a&gt;,谁成想差那么2分,加油吧,下次一定要过了,否则浪费了考试的费用4,500千快,白花花的银子呐.&lt;br /&gt;&lt;br /&gt;不过据51的老师们说,2007年的考试全部改成选择题,跟SP考试一样,当场出结果,难度可能降低了,没有挑战,那样岂不是没有多少含金量了,这是Mercury(美科利)被HP并购之后的对认证考试的最初的影响吧,天知道以后会不会全部并入HP的认证系统哪? (HP有什么认证好像没太听说过,知道的朋友给介绍介绍?)&lt;br /&gt;&lt;br /&gt;--end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-196756035215418653?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/196756035215418653/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=196756035215418653' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/196756035215418653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/196756035215418653'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/cpc.html' title='CPC考试居然差点没过'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2446265243464452287</id><published>2007-01-30T13:03:00.000+08:00</published><updated>2007-01-30T13:15:18.342+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='测试人生'/><title type='text'>庆祝自己升级51系统测试版版主</title><content type='html'>经过努力,于今日升级为&lt;a href="http://bbs.51testing.com/forum-130-1.html"&gt;51testing系统测试版&lt;/a&gt;斑竹一职.&lt;br /&gt;就职演说就免了,还是要发表一下感言:&lt;br /&gt;&lt;br /&gt;首先感谢51各位老师特别是水老师和蒋老师的信任,我一定不辜负两位老师的信任.&lt;br /&gt;在我做斑竹期间,我一定坚持弘扬&lt;a href="http://bbs.51testing.com/forum-130-1.html"&gt;51tesging&lt;/a&gt;一贯的对软件测试的专业精神,努力学习,提高自己.&lt;br /&gt;在技术上和管理上争取有更大的进步,为51testing的发展和中国的软件测试事业贡献自己的力量.&lt;br /&gt;&lt;br /&gt;首先技术上要不断否定自己,反思自己,总结自己, 学习国内外先进的测试经验和测试理论知识,自己总结特别是创作一些优秀的文章并与广大的网友分享,一起提高,一起进步.&lt;br /&gt;管理上,要加强管理方面的学习,兢兢业业,做好日常的版块的管理工作.&lt;br /&gt;&lt;br /&gt;希望得到各位的及时监督.&lt;br /&gt;&lt;br /&gt;谢谢了哈.&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2446265243464452287?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2446265243464452287/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2446265243464452287' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2446265243464452287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2446265243464452287'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/51.html' title='庆祝自己升级51系统测试版版主'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4395451184768170063</id><published>2007-01-29T13:28:00.000+08:00</published><updated>2007-01-29T13:31:48.157+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='转载系列'/><category scheme='http://www.blogger.com/atom/ns#' term='测试人生'/><title type='text'>好的测试工程师应具备的素质</title><content type='html'>人是测试工作中最有价值也是最重要的资源，没有一个合格的、积极的测试小组，测试就不可能实现。然而，在软件开发产业中有一种非常普遍习惯，那就是让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为，对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少，事实上，测试者将获得极其广泛的经验，他们将遇到许多开发者不可能遇到的问题。&lt;br /&gt;&lt;br /&gt;　　①、沟通能力&lt;br /&gt;&lt;br /&gt;　　一名理想的测试者必须能够同测试涉及到的所有人进行沟通，具有与技术（开发者）和非技术人员（客户，管理人员）的交流能力。既要可以和用户谈得来，又能同开发人员说得上话，不幸的是这两类人没有共同语言。和用户谈话的重点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息时，就必须将这些活重新组织以另一种方式表达出来，测试小组的成员必须能够同等地同用户和开发者沟通。&lt;br /&gt;&lt;br /&gt;　　②、移情能力&lt;br /&gt;&lt;br /&gt;　　和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统，开发者则担心由于系统要求不正确而使他不得不重新开发整个系统，管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道，因此需要测试小组的成员对他们每个人都具有足够的理解和同情，具备了这种能力可以将测试人员与相关人员之间的冲突和对抗减少到最低程度。&lt;br /&gt;&lt;br /&gt;　　③、技术能力&lt;br /&gt;&lt;br /&gt;　　就总体言，开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某个成员作出了一个错误的断定，那么他们的可信度就会立刻被传扬了出去。一个测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到这一点需要有几年以上的编程经验，前期的开发经验可以帮助对软件开发过程有较深入的理解，从开发人员的角度正确的评价测试者，简化自动测试工具编程的学习曲线。&lt;br /&gt;&lt;br /&gt;　　④、自信心&lt;br /&gt;&lt;br /&gt;　　开发者指责测试者出了错是常有的事，测试者必须对自己的观点有足够的自信心。如果容许别人对自己指东指西，就不能完成什么更多的事情了。&lt;br /&gt;&lt;br /&gt;　　⑤、外交能力&lt;br /&gt;&lt;br /&gt;　　当你告诉某人他出了错时，就必须使用一些外交方法。机智老练和外交手法有助于维护与开发人员的协作关系，测试者在告诉开发者他的软件有错误时，也同样需要一定的外交手腕。如果采取的方法过于强硬，对测试者来说，在以后和开发部门的合作方面就相当于“赢了战争却输了战役”。&lt;br /&gt;&lt;br /&gt;　　⑥、幽默感&lt;br /&gt;&lt;br /&gt;　　在遇到狡辩的情况下，一个幽默的批评将是很有帮助的。&lt;br /&gt;&lt;br /&gt;　　⑦、很强的记忆力&lt;br /&gt;&lt;br /&gt;　　一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来，这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。&lt;br /&gt;&lt;br /&gt;　　⑧、耐心&lt;br /&gt;&lt;br /&gt;　　一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识别和分派一个错误。这个工作是那些坐不住的人无法完成的。&lt;br /&gt;&lt;br /&gt;　　⑨、怀疑精神&lt;br /&gt;&lt;br /&gt;　　可以预料，开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每个人的说明，但他必须保持怀疑直到他自己看过以后。&lt;br /&gt;&lt;br /&gt;　　⑩、自我督促&lt;br /&gt;&lt;br /&gt;　　干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能够使自己每天正常地工作。&lt;br /&gt;&lt;br /&gt;　　11、洞察力&lt;br /&gt;&lt;br /&gt;　　一个好的测试工程师具有“测试是为了破坏”的观点，捕获用户观点的能力，强烈的质量追求，对细节的关注能力。应用的高风险区的判断能力以便将有限的测试针对重点环节.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://testing.csdn.net/page/0ef6d4bd-7ebf-4b87-97df-4c733010b766"&gt;转载自CSDN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4395451184768170063?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4395451184768170063/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4395451184768170063' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4395451184768170063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4395451184768170063'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_3569.html' title='好的测试工程师应具备的素质'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4570857764416924184</id><published>2007-01-29T12:50:00.000+08:00</published><updated>2007-02-01T22:08:21.288+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之平台利器篇</title><content type='html'>上周休了一周的假, 在医院照顾老爸&lt;br /&gt;这周继续自动化测试的思考系列,今天谈谈平台建设.&lt;br /&gt;&lt;br /&gt;自动化测试一般来说,随着产品的不同,都会有不同的测试架构和测试平台,稳定和合适的平台对于一个产品的自动化测试来说,相对来说相当重要,有了合适的载体和工具,自动化测试就能很好的扩容和执行.&lt;br /&gt;&lt;br /&gt;一般来说,自动化测试的平台包含以下一些方面:&lt;br /&gt;&lt;br /&gt;测试管理部分--管理不同产品,不同版本的测试用例&lt;br /&gt;测试执行部分--执行测试用例&lt;br /&gt;测试维护部分--测试用例的维护,版本控制等&lt;br /&gt;测试资源部分--测试资源特别是实验室资源的管理&lt;br /&gt;测试调度部分--测试的调度,控制和执行中心&lt;br /&gt;&lt;br /&gt;一般来说,这几个部分可以集成于一个平台本身,也可是独立的子系统,通过接口有机的结合起来,其实市场上也有很多商用的产品,比如Mercury的QC(Quality Center, Test Director的后续版本)就覆盖了其中的测试管理,测试执行等, Rational的Test Manager覆盖了另外一些部分等等.&lt;br /&gt;&lt;br /&gt;因为这些商业工具相对来说,价格比较昂贵,而且对具体产品的适应能力等方面的考虑,不一定适合所有的公司,因此我们自己开发了自己的相应的系统.&lt;br /&gt;&lt;br /&gt;测试执行平台:我们的测试执行平台其实覆盖了测试执行部分,测试维护部分和测试调度部分,是一个很强大的平台,从最初的1.0版本,到现在的2.1.1版本,基本可以支持我们公司的绝大多数的产品,另外测试管理的部分也有一些涉及,但是相对来说比较薄弱,特别是版本管理部分,目前是通过和测试管理工具的接口来实现的,我们正在改进这些薄弱的环节.&lt;br /&gt;&lt;br /&gt;测试资源平台:我们也有一个自己开发的资源管理平台,可以预定实验室的各项资源,并用于测试,目前我们在测试执行平台预留了资源的相关接口.这部分跟具体的产品联系比较密切.&lt;br /&gt;&lt;br /&gt;总体来说,下面这个图能详细说明这些部分之间的一个关系和接口.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_fwbFyFkh91M/Rb2Ch-q8UzI/AAAAAAAAAOk/zsIrqahUPYs/s1600-h/%E5%9B%BE%E7%89%872.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_fwbFyFkh91M/Rb2Ch-q8UzI/AAAAAAAAAOk/zsIrqahUPYs/s320/%E5%9B%BE%E7%89%872.jpg" alt="" id="BLOGGER_PHOTO_ID_5025316279485748018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下图是我们自己的测试执行平台的架构:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_fwbFyFkh91M/Rb2Cyeq8U0I/AAAAAAAAAOs/05SAp0bgmD4/s1600-h/%E5%9B%BE%E7%89%873.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_fwbFyFkh91M/Rb2Cyeq8U0I/AAAAAAAAAOs/05SAp0bgmD4/s320/%E5%9B%BE%E7%89%873.jpg" alt="" id="BLOGGER_PHOTO_ID_5025316562953589570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其中&lt;br /&gt;ATS: automated testing system&lt;br /&gt;LRMS: lab resource management system&lt;br /&gt;TMS: test management system&lt;br /&gt;(转载请注明出处)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--to be continued&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4570857764416924184?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4570857764416924184/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4570857764416924184' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4570857764416924184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4570857764416924184'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_29.html' title='自动化测试的思考和总结之平台利器篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_fwbFyFkh91M/Rb2Ch-q8UzI/AAAAAAAAAOk/zsIrqahUPYs/s72-c/%E5%9B%BE%E7%89%872.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-91259734907661681</id><published>2007-01-27T21:09:00.000+08:00</published><updated>2007-01-27T21:28:52.403+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活感悟'/><title type='text'>老爸的颈椎病有救了</title><content type='html'>这几天一直在医院，老爸的颈椎病经过确证，是脊髓型颈椎病，椎间盘突出压制到中枢神经，导致四肢麻木，严重束缚感。对比两个月前在老家做的MRI（磁共振），已经压迫到第3/4/5脊椎，如果不及时解除压迫，很有可能导致全身瘫痪。&lt;br /&gt;&lt;br /&gt;颈椎病一般分为三种类型，这种是最严重的，而且是唯一一种不能通过按摩或者其他保守疗法治疗的颈椎病。幸好是比较及时动了手术。不过，这种手术虽然目前已经比较成熟，还是存在很大的风险。手术主要是通过把颈椎挪开，然后植入钢板，在从其它部位取一块骨头垫上，等彻底融合之后就可以达到手术目的。手术费用主要是材料费比较贵（我老爸用的进口钢板，25，3000元，如果用国产的钢板，大概可以节省10，000多元，不过因为制作工艺，可能会影响到以后进食），其他费用不高，手术费用+药费+住院费用应该在10，000元左右。&lt;br /&gt;&lt;br /&gt;今天是手术后第三天了，老爸的手和脚已经恢复差不多了，只是头部还暂时不能移动，而且三个月之内不能随意转动头部，否则可能导致进一步的麻烦。&lt;br /&gt;&lt;br /&gt;我们的手术室在&lt;a href="http://www.szplgk.com/"&gt;深圳平乐骨伤科医院&lt;/a&gt;脊柱外科做的，虽然这是二级甲等医院，但是总体来说，骨科的技术力量还是比较雄厚的。而且服务都还不错。我们是冲着这医院口碑不错的想法过去试试的，结果果然没有让我们失望。医院的&lt;a href="http://szplgk.cn/ehibition/ehibition_default.asp?pro_id=225"&gt;前任院长郭春园&lt;/a&gt;是一位传奇式的医生，有点精神领袖的意味。&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-91259734907661681?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/91259734907661681/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=91259734907661681' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/91259734907661681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/91259734907661681'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_27.html' title='老爸的颈椎病有救了'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2297130606416672722</id><published>2007-01-21T16:47:00.000+08:00</published><updated>2007-01-21T16:53:26.057+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活感悟'/><title type='text'>世界网站之最</title><content type='html'>1、世界上最长的网站，号称已经&lt;strong&gt;18.939 kilometers&lt;/strong&gt; 了，不相信，就进去看看。&lt;br /&gt;不过如果你不是很闲的话，建议你乘坐电梯，否则，哈哈。。。自己看看就知道了。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://worlds-highest-website.com/"&gt;http://worlds-highest-website.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2、世界上最小的网站。进来看看吧。&lt;br /&gt;&lt;a href="http://www.guimp.com/home.html"&gt;http://www.guimp.com/home.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2297130606416672722?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2297130606416672722/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2297130606416672722' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2297130606416672722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2297130606416672722'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_21.html' title='世界网站之最'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6898386128599204822</id><published>2007-01-20T20:49:00.000+08:00</published><updated>2007-01-20T20:54:50.039+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>Mercury LoadRunner的内部架构</title><content type='html'>Mercury LoadRunner的内部工作原理和架构。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wilsonmar.com/img/fig/lrarch2.gif"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.wilsonmar.com/img/fig/lrarch2.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以前看到过这个&lt;a href="http://www.wilsonmar.com/"&gt;Mr Wilson&lt;/a&gt;的介绍，看来他对很多的工具和技术(&lt;a href="http://www.wilsonmar.com/1loadrun.htm"&gt;不仅仅是LoadRunner&lt;/a&gt;)都有很深入地研究。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.wilsonmar.com/docs/LRIntro.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.wilsonmar.com/docs/LRIntro.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6898386128599204822?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6898386128599204822/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6898386128599204822' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6898386128599204822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6898386128599204822'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/mercury-loadrunner.html' title='Mercury LoadRunner的内部架构'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1427008268257268967</id><published>2007-01-20T11:34:00.000+08:00</published><updated>2007-01-20T19:48:54.379+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>Oracle Database 10g为数据库管理员提供的20个最重要的特性（四）</title><content type='html'>&lt;span class="parahead2"&gt;第 4 周&lt;/span&gt;&lt;br /&gt;&lt;span class="parahead1"&gt;高速的导出/导入：Oracle Data Pump&lt;/span&gt; &lt;p&gt;&lt;span class="boldbodycopy"&gt;利用 Oracle Database 10&lt;em&gt;g&lt;/em&gt; 实用工具数据移动得到了很大的提高。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;迄今为止，导出/导入工具集仍是跨多个平台转移数据所需劳动强度最小的首选实用工具，尽管人们常常抱怨它速度太慢。导入只是将每条记录从导出转储文件中读出来，然后使用常见的 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;INSERT INTO&lt;/span&gt;&lt;/tt&gt; 命令将其插入到目标表中，因此导入可能是个很慢的过程，这一点并不让人感到吃惊。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;进入 &lt;a href="http://www.oracle.com/technology/products/database/utilities/"&gt;Oracle Data Pump&lt;/a&gt;，Oracle Database 10&lt;em&gt;g&lt;/em&gt; 中的导出/导入工具包的更新更快的同类工具，它被设计来成倍地加速这个过程。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;Data Pump 反映了整个导出/导入过程的彻底革新。它不是使用常见的 SQL 命令，而是应用专用 API 来以更快得多的速度加载和卸载数据。在我的测试中，我看到导出性能比在直接模式下提高了 10-15 倍，导入过程性能提高了 5 倍。此外，与使用导出实用工具不同，它还能够只取出特定类型的对象（如过程）。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;Data Pump 导出&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这 个新的实用工具称为 expdp，以和原来的导出 exp 区分开。在本例中，我们将用 Data Pump 来导出一个大表 CASES，大小约为 3GB。Data Pump 在服务器端使用文件处理来创建和读取文件；因此，目录作为位置使用。在这种情况下，我们将使用文件系统 /u02/dpdata1 来保存转储文件。&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;create directory dpdata1 as '/u02/dpdata1';&lt;br /&gt;grant read, write on directory dpdata1 to ananda;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;接下来，我们将导出数据：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;expdp ananda/abc123 tables=CASES directory=DPDATA1&lt;br /&gt;dumpfile=expCASES.dmp job_name=CASES_EXPORT&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;让我们来分析该命令的各个部分。用户 ID/口令组合、表和转储文件参数的意义是显而易见的。与原来的导出不同，文件是在服务器（不是客户端）上创建的。位置由目录参数值 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;DPDATA1&lt;/span&gt;&lt;/tt&gt; 指定，它指向之前创建的 /u02/dpdata1。这个进程还在目录参数指定的位置上创建一个日志文件（同样在服务器上）。默认地，这个进程使用一个名称为 DPUMP_DIR 的目录；因此可以创建它来代替 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;DPDATA1&lt;/span&gt;&lt;/tt&gt;。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;注 意上面的参数 job_name，这是个特殊的参数，在原来的导出中没有。所有的 Data Pump 工作都通过作业来完成。Data Pump 作业 — 与 DBMS 作业不同 — 只是服务器进程，它代表主进程处理数据。主进程（称为主控制进程）通过高级队列 (AQ) 来协调这项工作；它通过在运行期内创建的一个特殊的表（称为主表）来实现这个目的。在我们的例子中，如果您在 expdp 运行时检查用户 ANANDA 的模式 ，您将注意到一个表 CASES_EXPORT 的存在（对应参数 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;job_name&lt;/span&gt;&lt;/tt&gt;）。当 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;expdp&lt;/span&gt;&lt;/tt&gt; 结束时，这个表被丢弃。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;导出监控&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;当 Data Pump Export (DPE) 运行时，按 Control-C；它将阻止消息在屏幕上显示，但不停止导出进程本身。相反，它将显示 DPE 提示符（如下所示）。进程现在被认为处于“交互式”模式：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;Export&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这种方法允许在这个 DPE 作业上输入几条命令。要查看概要，在提示符下使用 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;STATUS&lt;/span&gt;&lt;/tt&gt; 命令：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;Export&gt; status&lt;br /&gt;Job:CASES_EXPORT&lt;br /&gt;Operation:EXPORT                      &lt;br /&gt;Mode:TABLE                       &lt;br /&gt;State:EXECUTING                   &lt;br /&gt;Degree: 1&lt;br /&gt;Job Error Count: 0&lt;br /&gt;Dump file:/u02/dpdata1/expCASES.dmp&lt;br /&gt;bytes written =  2048&lt;br /&gt;&lt;br /&gt;Worker 1 Status:&lt;br /&gt;State：EXECUTING                   &lt;br /&gt;Object Schema:DWOWNER&lt;br /&gt;Object Name:CASES&lt;br /&gt;Object Type:TABLE_EXPORT/TBL_TABLE_DATA/TABLE/TABLE_DATA&lt;br /&gt;Completed Objects: 1&lt;br /&gt;Total Objects: 1&lt;br /&gt;Completed Rows: 4687818&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;记住，这只是状态显示。导出在后台工作。要继续在屏幕上查看消息，从 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;Export&gt;&lt;/span&gt;&lt;/tt&gt; 提示符下使用命令 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;CONTINUE_CLIENT&lt;/span&gt;&lt;/tt&gt;。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;并行操作&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;您可以通过 PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件，因此参数 dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名，而不是显式地输入各个文件名，例如：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;expdp ananda/abc123 tables=CASES directory=DPDATA1&lt;br /&gt;dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;注意 dumpfile 参数拥有一个通配符 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;%U&lt;/span&gt;&lt;/tt&gt;，它指示文件将按需要创建，格式将为 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;expCASES_nn.dmp&lt;/span&gt;&lt;/tt&gt;，其中 nn 从 01 开始，然后按需要向上增加。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;在并行模式下，状态屏幕将显示四个工作进程。（在默认模式下，只有一个进程是可见的。）所有的工作进程同步取出数据，并在状态屏幕上显示它们的进度。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则，与维护 Data Pump 作业相关的开销可能超过并行线程的效益，并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;数据库监控&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;您 还可以从数据库视图获得关于运行的 Data Pump 作业的更多信息。监控作业的主视图是 DBA_DATAPUMP_JOBS，它将告诉您在作业上有多少个工作进程（列 DEGREE）在工作。另一个重要的视图是 DBA_DATAPUMP_SESSIONS，当它与上述视图和 V$SESSION 结合时将给出主前台进程的会话 SID。&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;select sid, serial#&lt;br /&gt;from v$session s, dba_datapump_sessions d&lt;br /&gt;where s.saddr = d.saddr;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这条指令显示前台进程的会话。更多有用的信息可以从警报日志中获得。当进程启动时，MCP 和工作进程在警报日志中显示如下：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;kupprdp:master process DM00 started with pid=23, OS id=20530 to execute -&lt;br /&gt;SYS.KUPM$MCP.MAIN('CASES_EXPORT', 'ANANDA');&lt;br /&gt;&lt;p&gt;&lt;br /&gt;kupprdp:worker process DW01 started with worker id=1, pid=24, OS id=20532 to execute -&lt;br /&gt;SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;kupprdp:worker process DW03 started with worker id=2, pid=25, OS id=20534 to execute -&lt;br /&gt;SYS.KUPW$WORKER.MAIN('CASES_EXPORT', 'ANANDA');&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;它显示为数据泵操作启动的会话的 PID。您可以用以下查询找到实际的 SID：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;select sid, program from v$session where paddr in&lt;br /&gt;(select addr from v$process where pid in (23,24,25));&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;PROGRAM 列将对应警报日志文件中的名称显示进程 DM （为主进程）或 DW （为工作进程）。如果一个工作进程使用了并行查询，比如说 SID 23，您可以在视图 V$PX_SESSION 中看到它，并把它找出来。它将为您显示从 SID 23 代表的工作进程中运行的所有并行查询会话：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;select sid from v$px_session where qcsid = 23;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;从视图 V$SESSION_LONGOPS 中可以获得其它的有用信息来预测完成作业将花费的时间。&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;select sid, serial#, sofar, totalwork&lt;br /&gt;from v$session_longops&lt;br /&gt;where opname = 'CASES_EXPORT'&lt;br /&gt;and sofar != totalwork;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;列 totalwork 显示总工作量，该列的 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;sofar&lt;/span&gt;&lt;/tt&gt; 数量被加和到当前的时刻 &lt;em&gt;—&lt;/em&gt; 因而您可以用它来估计还要花多长时间。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;Data Pump 导入&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;不过，数据导入性能是 Data Pump 真正出色的地方。要导入先前导出的数据，我们将使用&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;impdp ananda/abc123 directory=dpdata1 dumpfile=expCASES.dmp job_name=cases_import&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;导入进程的默认行为是创建表和所有相关的对象，然后在表已存在时产生一个错误。如果您想把数据添加到一个现有的表中，您可以在上述命令行中使用 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;TABLE_EXISTS_ACTION=APPEND&lt;/span&gt;&lt;/tt&gt;。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;和使用 Data Pump 导入一样，在进程中按 Control-C 将进入 Date Pump Import (DPI) 的交互模式；同样，提示符是 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;Import&gt;&lt;/span&gt;&lt;/tt&gt;。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;处理特定对象&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;您是否有过只需要从一个用户导出特定的过程，以在一个不同的数据库或用户中重新创建这些过程的情况？与传统的导出实用工具不同，Data Pump 允许您只导出特定类型的对象。例如，以下命令让您只导出过程，而不导出其它任何东西 &lt;em&gt;—&lt;/em&gt; 不导出表、视图、甚至函数：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp include=PROCEDURE&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;要只导出一些特定的对象 &lt;em&gt;—&lt;/em&gt; 比如说，函数 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;FUNC1&lt;/span&gt;&lt;/tt&gt; 和过程 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;PROC1&lt;/span&gt;&lt;/tt&gt;&lt;em&gt; — &lt;/em&gt;您可以使用&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;expdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp&lt;br /&gt;include=PROCEDURE:"='PROC1'",FUNCTION:"='FUNC1'"&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这个转储文件充当了源对象的一个备份。您甚至可以用它来创建 DDL 脚本，以供之后使用。一个称为 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;SQLFILE&lt;/span&gt;&lt;/tt&gt; 的特殊参数允许创建 DDL 脚本文件。&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;impdp ananda/iclaim directory=DPDATA1 dumpfile=expprocs.dmp sqlfile=procs.sql&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;该指令在 DPDATA1 指定的目录中创建一个名称为 procs.sql 的文件，并将对象的脚本包含在导出转储文件中。这种方法帮助您快速地在另一个模式中创建源对象。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;利用参数 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;INCLUDE&lt;/span&gt;&lt;/tt&gt; 允许您从转储文件中定义要包含或排除的对象。您可以使用子句 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;INCLUDE=TABLE:"LIKE 'TAB%'"&lt;/span&gt;&lt;/tt&gt; 来仅导出那些名称以 TAB 开头的表。类似地，您可以使用结构 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;INCLUDE=TABLE:"NOT LIKE 'TAB%'"&lt;/span&gt;&lt;/tt&gt; 来排除所有名称以 TAB 开头的表。作为另一种选择，您可以使用 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;EXCLUDE&lt;/span&gt;&lt;/tt&gt; 参数来排除特定的对象。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;通过外部表，Data Pump 还可以用来传输表空间；它非常强大，能够即时地重定义并行方式，将更多的表添加到一个现有的进程中等等（这超出了本文的范围；关于更多详细信息，请参考 &lt;a href="http://download-west.oracle.com/docs/cd/B12037_01/server.101/b10825/toc.htm" target="_blank"&gt;&lt;em&gt;Oracle Database Utilities 10g Release 1 10.1&lt;/em&gt;&lt;/a&gt;）。以下命令显示Data Pump 导出实用工具提供的所有参数的列表：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;expdp help=y&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;类似地，&lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;impdp help=y&lt;/span&gt;&lt;/tt&gt; 将显示 DPI 中的所有参数。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;当 Data Pump 作业在运行时，您可以通过在 DPE 或 DPI 提示符下发出 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;STOP_JOB&lt;/span&gt;&lt;/tt&gt; 来暂停它们，然后用 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;START_JOB&lt;/span&gt;&lt;/tt&gt; 来重起它们。这个功能在您空间不足和想在继续执行之前进行修改时非常方便。&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1427008268257268967?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1427008268257268967/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1427008268257268967' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1427008268257268967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1427008268257268967'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/oracle-database-10g20_13.html' title='Oracle Database 10g为数据库管理员提供的20个最重要的特性（四）'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1420222234035789578</id><published>2007-01-19T13:56:00.000+08:00</published><updated>2007-01-19T15:22:47.822+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='最爱金曲'/><title type='text'>Hotel California</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.chinaenglish.com.cn/upload/2006_09/06092909337320.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 217px; height: 225px;" src="http://www.chinaenglish.com.cn/upload/2006_09/06092909337320.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;关于Eagles的“Hotel California”，的介绍几乎多到泛滥。从六七十年代摇滚乐的繁荣上升时期以来,数不清的人们被这首绝世佳作深深地打动.有些乐队不但多产，而且精 品甚多,Eagles也是这样，但是正因为这首“加州旅馆”太过出色,以至人们只记得Eagles是唱"加州旅馆"的乐队。在九天音乐有整整一张cd，全 是“加州旅馆”的不同版本的演绎。但是总归最最动人的，最最经典的,还是Eagles自己演绎的Unplugged版本，只有吉他，鼓声伴奏。步入中年的 Eagles，光芒四射的舞台，唯一被人们记住的“Hotel California”，歌词里如同宿命般断言:你永远也离不开“Hotel California”，了，Eagles的终生成就，似乎只有这首“Hotel California”，霜华染鬓，怕见人去，不如帘儿底下，静静听人欢笑。灯影车流中，穿越喧嚣繁华，“热闹是他们的，我什么也没有。”现场歌迷们的喝 彩声浪里，是不被真正理解的Eagles的寂寞。借用中国的一句古语“成也萧何、败也萧何”，可能是《Hotel California》太成功了，以后，The Eagles再也没有创作出超过《Hotel California》的作品。或许是听众们太苛刻了，他们对这首歌曲近乎于崇拜的喜爱已使他们忽略了The Eagles其他的单曲。更有甚者，传说The Eagles到日本举行演唱会，演唱会第一支曲子就安排的是Hotel California，但演唱完了这首曲子之后,音乐会就走了近一半的人。 &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;    the eagles(老鹰乐队)&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;　　On a dark desert highway.&lt;br /&gt;　　Cool wind in my hair.&lt;br /&gt;　　Warm smell of colitas rising&lt;br /&gt;　　Up through the air Up ahead in the distance.&lt;br /&gt;　　I saw a shimmering light&lt;br /&gt;　　My head grew heavy and my sight grew dim&lt;br /&gt;　　I had to stop for the night&lt;br /&gt;　　There she stood in the doorway&lt;br /&gt;　　I heard the mission bell&lt;br /&gt;　　And I was thinking to myself&lt;/p&gt; &lt;p&gt;　　This could be heaven or this could be hell&lt;br /&gt;　　Then she lit up a candle&lt;br /&gt;　　And she showed me the way&lt;br /&gt;　　There were voices down in corridor&lt;br /&gt;　　I thought I heard them say... ...&lt;br /&gt;　　Welcome to the Hotel California&lt;br /&gt;　　Such a lovely place (such a lovely face)&lt;br /&gt;　　There's plenty of rooms at the&lt;br /&gt;　　Hotel California&lt;br /&gt;　　Any time of year you can find it here&lt;/p&gt; &lt;p&gt;　　Her mind is Tiffany-twisted&lt;br /&gt;　　She got the Mercedes-Benz&lt;br /&gt;　　She got a lot of pretty,&lt;br /&gt;　　Pretty boys that she calls friends&lt;br /&gt;　　How they dance in the courtyard&lt;br /&gt;　　Sweet summer sweat&lt;br /&gt;　　Some dance to remember&lt;br /&gt;　　Some dance to forget&lt;br /&gt;　　So I called up the captain&lt;br /&gt;　　Please bring me my wine&lt;br /&gt;　　He said we haven't had that spirit&lt;br /&gt;　　Here since nineteen sixty nine&lt;br /&gt;　　And still those voices are&lt;/p&gt; &lt;p&gt;　　Calling from far away&lt;br /&gt;　　Wake you up in the middle of the night&lt;br /&gt;　　Just to hear them say... ...&lt;br /&gt;　　Welcome to the Hotel&lt;br /&gt;　　California Such a lovely place&lt;br /&gt;　　(such a lovely face)&lt;br /&gt;　　They livin'it up at the Hotel California&lt;br /&gt;　　What a nice surprise bring your alibis&lt;br /&gt;　　Mirrors on the ceilling&lt;br /&gt;　　The pink champagne on ice&lt;/p&gt; &lt;p&gt;　　And she said we are all just prisoners&lt;br /&gt;　　Here of our own device&lt;br /&gt;　　And in the master's chambers&lt;br /&gt;　　They gathered for the feast&lt;br /&gt;　　They stab it with their steely knives&lt;br /&gt;　　But they just can't kill the beast&lt;/p&gt; &lt;p&gt;　　Last thing I remember,&lt;br /&gt;　　I was running for the door&lt;br /&gt;　　I had to find the passage back&lt;br /&gt;　　To the place I was before&lt;br /&gt;　　Relax said programmed to receive&lt;br /&gt;　　You can check out any time you like&lt;br /&gt;　　But you can never leave&lt;/p&gt;&lt;a href="http://61.156.17.162/MP3/huiw/Track06.mp3"&gt;download it&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1420222234035789578?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1420222234035789578/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1420222234035789578' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1420222234035789578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1420222234035789578'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/hotel-california.html' title='Hotel California'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6825512803093871508</id><published>2007-01-19T12:43:00.000+08:00</published><updated>2007-02-01T22:07:24.032+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之天下三分篇</title><content type='html'>对于自动化测试的组织划分,一般来说,在企业内部,有两种结构: 隶属于系统测试部门或者专门的自动化测试部门.&lt;br /&gt;&lt;br /&gt;我所经历的自动化测试部门,就经过这么一波三折的过程,首先始于系统测试部门的一个team,专门为这个产品的系统测试服务,自动化也就仅仅局限于这个产品的系统回归测试. 随着自动化程度的不断提高和管理层的重视,自动化测试也逐步发展壮大,服务的部门也从仅仅是系统测试部门的回归测试拓展到集成测试,单元测试等等. 服务的产品也从单一的产品扩大到整个公司的产品.  这是一个必然的过程. 专门的自动化测试部门有利于从整个公司的角度协调各种资源,所以是必然的.&lt;br /&gt;&lt;br /&gt;在自动化测试独立成单独的部门,角色一般是这样:有一个经验丰富的自动化经理,负责全局的统筹和管理.  对于不同的产品或者不同的系统有资深的自动化测试专家/自动化测试主管,  下面会有专门的自动化测试工程师,对自动化测试工程师甚至资深自动化测试专家要求首先有过开发经验,并且有一定的测试经验,做过手工测试,这个必须的,另外,对相关的产品要比较熟悉. 另外对资深自动化测试专家要求对被测系统的架构有全面和深刻的理解. 另外可能还有一些自动化测试工程师或者测试工程师, 来执行相关的自动化测试用例. 这些测试工程师要求对系统要相当了解,可以从手工测试部门抽调过来,也可以本身就属于系统测试部门, 这样就是一个虚拟的泛自动化测试部门.&lt;br /&gt;&lt;br /&gt;有了组织结构,就可以进行自动化测试了吗,当然不, 首先自动化测试需要以来很多的因素,自动化测试平台就是其中一个,下节重点介绍自动化测试的平台建设.&lt;br /&gt;&lt;br /&gt;--to be continued&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6825512803093871508?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6825512803093871508/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6825512803093871508' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6825512803093871508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6825512803093871508'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_19.html' title='自动化测试的思考和总结之天下三分篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4570455568785623106</id><published>2007-01-18T13:39:00.000+08:00</published><updated>2007-02-01T22:05:56.699+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之天时地利篇</title><content type='html'>昨天谈到自动化适合的产品,今天简单聊聊何时开始引入自动化最有效.&lt;br /&gt;&lt;br /&gt;自动化测试的建设不是一蹴而就的,首先自动化测试的发展依赖于手工测试.&lt;br /&gt;一般来说,手工测试进展到比较成熟的阶段,公司有完整的手工测试流程,相应的手工测试工程师具有一定的编程经验或者脚本开发经验,这个时候引入自动化测试才会比较有效.&lt;br /&gt;&lt;br /&gt;相反,如果一个公司或者一个产品基本的手工测试都很不完善和规范,测试的质量也得不到保证,更谈不到测试的覆盖率,这个时候贸然的想通过实行自动化来提高测试的质量或者测试的效率.失败的机会就会非常大了.&lt;br /&gt;&lt;br /&gt;完善的自动化测试流程和规范不是简单的几个文档就能解决问题的,而是要把这种流程或者规范彻底贯彻到每个测试工程师身上. 测试用例如何写? 产品规格说明书更新及时不及时?有没有符合本公司的测试管理系统? 测试报告能不能按时提交?等等一系列问题,不是简单停留在是否存在几篇文档或者开几次会议就能解决的问题.&lt;br /&gt;&lt;br /&gt;现在国内我知道好多朋友所在的公司,看到自动化测试不错,可以提高效率,节省人力,老板就拍脑袋也要搞自动化,好像搞了自动化测试,公司的测试水平就能提高一个台阶,产品的质量就能得到保证. 其实他完全没有看到自动化测试的另外一面. 另外,居然还有人理解我引入了几个自动化测试工具WinRunner, QTP, LoadRunner, 我就是自动化测试了. 大错特错了.&lt;br /&gt;关于测试工具和自动化测试的话题,后面会有讨论.&lt;br /&gt;&lt;br /&gt;一个公司或者一个产品在引入自动化测试之前,一定要进行详细和客观的评估.&lt;br /&gt;&lt;br /&gt;--to be continued&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4570455568785623106?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4570455568785623106/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4570455568785623106' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4570455568785623106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4570455568785623106'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_18.html' title='自动化测试的思考和总结之天时地利篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-9042716387575131393</id><published>2007-01-17T13:10:00.000+08:00</published><updated>2007-02-01T22:01:18.347+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之有的放矢篇</title><content type='html'>对于自动化测试适合的产品,或者更精确到哪些测试测试适合做自动化,已经被广泛的讨论过.总体来说, 有如下一些:&lt;br /&gt;&lt;br /&gt;1. 首先是回归测试,这是勿庸置疑的.&lt;br /&gt;利用自动化来进行回归测试,不仅可以把测试工程师从枯燥无味的繁琐测试中解脱出来,而且可以腾出更多的时间设计更多更好的测试用例,提供测试的覆盖率和测试的质量.&lt;br /&gt;2. 其次是部分性能测试&lt;br /&gt;对于一些性能测试,比如系统容量或者系统并发用户的测试,因为资源的限制,利用手工测试有很大的困难,有时候条件也不允许,充分利用一些自动化性能测试工具,就可以很好的完成测试目的.&lt;br /&gt;3. 还有就是利用手工很困难或者根本无法完成的.&lt;br /&gt;有的时候,需要进行一些压力测试,离开工具可能比较困难,这个时候就可以发挥自动化的长处.&lt;br /&gt;4. 还有就是产品趋于稳定,变化小,这样的产品更适合与自动化,我们就曾经在一个产品很不完善的时候进入到自动化,结果耗费了巨大的人力,最后产品变化了,自动化测试脚本和测试用例重用性不好,基本全废了. 其实这也需要产品和软件本身应该满足一些可测性要求. 并在前后的版本之间保持接口的统一. 细节来说,就是配置哪怕是基本的日志都必须满足一定的规范. 否则自动化测试进展起来就比较困难.&lt;br /&gt;&lt;br /&gt;另外,无论针对任何产品的自动化测试,都会存在一些普遍的问题:&lt;br /&gt;1. 自动化测试不会比系统测试发现更多的bug,或者说自动化测试更重要的是帮助快速验证产品经过更新或者修改之后的质量.如果要发现更多的潜在问题,必须进行手工测试.&lt;br /&gt;2.对于频繁变化的产品,自动化测试的维护成本很高,这点反复强调,就是因为我们在这方面走过很多弯路,往事不堪回首啊~~&lt;br /&gt;3.通过自动化测试没有发现缺陷并不能代表说一定没有缺陷存在,没有权限的系统或者产品是不存在的.&lt;br /&gt;4.自动化测试对环境的依赖远远大于手工测试对环境的依赖,针对自动化测试的环境问题,因为牵涉到的问题比较多,后面打算专门讨论这个问题.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-9042716387575131393?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/9042716387575131393/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=9042716387575131393' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/9042716387575131393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/9042716387575131393'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_17.html' title='自动化测试的思考和总结之有的放矢篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6857443914987020130</id><published>2007-01-16T13:02:00.000+08:00</published><updated>2007-02-01T22:02:48.986+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='测试人生'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='原创系列'/><title type='text'>自动化测试的思考和总结之开篇</title><content type='html'>自己从事自动化测试三年了,经历了很多的波折和教训,当然也积累了些许的经验,很久以来一直有想法把这些内容系统的记录下来,对自己来说,轻装上阵,更好的探索以后的自动化怎么走;对别人来说,也算提个醒,哪些错误最容易犯, 需要避免什么样的误区.&lt;br /&gt;最近看了很多的论坛文章,感觉大家都很茫然,测试怎么做, 刚入行的, 在这个行业打拼了几年的,大家对前途都没有太多的目标,也许只能好好反省自己的过去,总结一下自己过去犯过的错误,回过头去,才能更好的认识前面的路.&lt;br /&gt;罗嗦了这么多,现在开篇,本文打算以系列的形式连载,主要都是自己的经验和教训的回顾,所以有时候想到哪儿就说到哪里,不会刻意去组织很美的文字,不过我会尽量使文章能表达我的意思. 这个系列目前大致想分为几个大的部分:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;自动化测试的适合产品&lt;/li&gt;&lt;li&gt;何时引入自动化&lt;/li&gt;&lt;li&gt;自动化测试的组织结构&lt;/li&gt;&lt;li&gt;自动化测试的平台建设&lt;/li&gt;&lt;li&gt;自动化测试的支持和维护&lt;/li&gt;&lt;li&gt;自动化测试和自动化测试工具&lt;/li&gt;&lt;li&gt;自动化测试的管理保证&lt;/li&gt;&lt;li&gt;自动化测试和回归测试&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;下次着重讲讲自动化测试的适合产品.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--to be continue&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6857443914987020130?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6857443914987020130/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6857443914987020130' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6857443914987020130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6857443914987020130'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_16.html' title='自动化测试的思考和总结之开篇'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-8334890557609138666</id><published>2007-01-15T13:50:00.000+08:00</published><updated>2007-01-15T13:55:38.676+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活感悟'/><title type='text'>网易新闻2006科举大典</title><content type='html'>读了一年的&lt;a href="http://news.163.com"&gt;网易新闻&lt;/a&gt;&lt;br /&gt;年终了&lt;br /&gt;就像大学例行的期末考试&lt;br /&gt;&lt;br /&gt;从童试&lt;br /&gt;院试&lt;br /&gt;乡试&lt;br /&gt;会试&lt;br /&gt;到殿试&lt;br /&gt;&lt;br /&gt;排艰辛&lt;br /&gt;过五关&lt;br /&gt;一切尽在恶搞中&lt;br /&gt;&lt;br /&gt;请参考&lt;a href="http://news.163.com/special/0001sp/ie2006.html"&gt;科举大典&lt;/a&gt;&lt;br /&gt;看看你是否需要补考?&lt;br /&gt;能否毕业&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;疑,我怎么成了诗人聊.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-8334890557609138666?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/8334890557609138666/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=8334890557609138666' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8334890557609138666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/8334890557609138666'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/2006.html' title='网易新闻2006科举大典'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1430593887631693198</id><published>2007-01-15T10:53:00.000+08:00</published><updated>2007-01-15T10:55:13.806+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>一些软件测试概念的标准定义(下篇)</title><content type='html'>&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test documentation.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Documentation describing plans for, or results of, the testing of a system or component, Types include test case specification, test incident report, test log, test plan, test procedure, test report.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test driver.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A software module used to invoke a module under test and, often, provide test inputs, control and monitor execution, and report test results. Syn: &lt;b style=""&gt;test harness.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test incident report.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A document reporting on any event that occurs during testing that requires further investigation.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test item.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A software item which is the object of testing.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test log.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A chronological record of all relevant details about the execution of a test.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test phase.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The period of time in the software life cycle in which the components of a software product are evaluated and integrated, and the software product is evaluated to determine whether or not requirements have been satisfied.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test plan.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Documentation specifying the scope, approach, resources, and schedule of intended testing activities. It identifies test items, the features to be tested, the testing tasks, responsibilities, required, resources, and any risks requiring contingency planning. See: test design, validation protocol.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test procedure.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NIST) A formal document developed from a test plan that presents detailed instructions for the setup, operation, and evaluation of the results for each defined test. See: test case.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test report.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A document describing the conduct and results of the testing carried out for a system or system component.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test result analyzer.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; A software tool used to test output data reduction, formatting, and printing.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) (1) The process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component. (2) The process of analyzing a software item to detect the differences between existing and required conditions, i.e. bugs, and to evaluate the features of the software items. See: dynamic analysis, static analysis&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, acceptance.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Testing conducted to determine whether or not a system satisfies its acceptance criteria and to enable the customer to determine whether or not to accept the system. Contrast with testing, development; testing, operational. &lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, alpha [].&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (Pressman) Acceptance testing performed by the customer in a controlled environment at the developer's site. The software is used by the customer in a setting approximating the target environment with the developer observing and recording errors and usage problems.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, assertion.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) A dynamic analysis technique which inserts assertions about the relationship between program variables into the program code. The truth of the assertions is determined as the program executes. &lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, beta [].&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (Pressman) Acceptance testing performed by the customer in a live application of the software, at one or more end user sites, in an environment not controlled by the developer. (2) For medical device software such use may require an Investigational Device Exemption [IDE] or Institutional Review Board [IRB] approval.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, boundary value.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; A testing technique using input values at, just below, and just above, the defined limits of an input domain; and with input values causing outputs to be at, just below, and just above, the defined limits of an output domain. See: boundary value analysis; testing, stress.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, branch.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) Testing technique to satisfy coverage criteria which require that for each decision point, each possible branch [outcome] be executed at least once. Contrast with testing, path; testing, statement. See: branch coverage.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, compatibility.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; The process of determining the ability of two or more systems to exchange information. In a situation where the developed software replaces an already working program, an investigation should be conducted to assess possible comparability problems between the new software and other programs or systems. &lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, exhaustive.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) Executing the program with all possible combinations of values for program variables. Feasible only for small, simple programs.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, functional.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) (1) Testing that ignores the internal mechanism or structure of a system or component and focuses on the outputs generated in response to selected inputs and execution conditions. (2) Testing conducted to evaluate the compliance of a system or component with specified functional requirements and corresponding predicted results. Syn: black-box testing, input/output driven testing. Contrast with testing, structural.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, integration.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) An orderly progression of testing in which software elements, hardware elements, or both are combined and tested, to evaluate their interactions, until the entire system has been integrated.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, interface.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Testing conducted to evaluate whether systems or components pass data and control correctly to one another. Contrast with testing, unit; testing, system. See: testing, integration.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, mutation.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A testing methodology in which two or more program mutations are executed using the same test cases to evaluate the ability of the test cases to detect differences in the mutations.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, operational.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Testing conducted to evaluate a system or component in its operational environment. Contrast with testing, development; testing, acceptance; See: testing, system.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, parallel.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (ISO) Testing a new or an altered data processing system with the same source data that is used in another system. The other system is considered as the standard of comparison. Syn: parallel run.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, path.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) Testing to satisfy coverage criteria that each logical path through the program be tested. Often paths through the program are grouped into a finite set of classes. One path from each class is then tested. Syn: path coverage. Contrast with testing, branch; testing, statement; branch coverage; condition coverage; decision coverage; multiple condition coverage; statement coverage.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, performance.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Functional testing conducted to evaluate the compliance of a system or component with specified performance requirements.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, qualification.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Formal testing, usually conducted by the developer for the consumer, to demonstrate that the software meets its specified requirements. See: testing, acceptance; testing, system.&lt;/span&gt;&lt;span style="font-size: 20pt; font-family: 宋体; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; text-align: left; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;span style="font-size: 20pt; font-family: 宋体; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, regression.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NIST) Rerunning test cases which a program has previously executed correctly in order to detect errors spawned by changes or corrections made during software development and maintenance.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, statement.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NIST) Testing to satisfy the criterion that each statement in a program be executed at least once during program testing. Syn: statement coverage. Contrast with testing, branch; testing, path; branch coverage; condition coverage; decision coverage; multiple condition coverage; path coverage.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, storage.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; This is a determination of whether or not certain processing conditions use more storage [memory] than estimated.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, stress.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements. Syn: testing, boundary value.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, structural.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (IEEE) Testing that takes into account the internal mechanism [structure] of a system or component. Types include branch testing, path testing, statement testing. (2) Testing to insure each program statement is made to execute during testing and that each program statement performs its intended function. Contrast with functional testing. Syn: white-box testing, glass-box testing, logic driven testing.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, system.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The process of testing an integrated hardware and software system to verify that the system meets its specified requirements. Such testing may be conducted in both the development environment and the target environment.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, unit.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (NIST) Testing of a module for typographic, syntactic, and logical errors, for correct implementation of its design, and for satisfaction of its requirements. (2) (IEEE) Testing conducted to verify the implementation of the design for one software element; e.g., a unit or module; or a collection of software elements. Syn: component testing.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, usability.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; Tests designed to evaluate the machine/user interface. Are the communication device(s) designed in a manner such that the information is displayed in a understandable fashion enabling the operator to correctly interact with the system?&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testing, volume.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; Testing designed to challenge a system's ability to manage the maximum amount of data over a period of time. This type of testing also evaluates a system's ability to handle overload situations in an orderly fashion.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;traceability matrix.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A matrix that records the relationship between two or more products; e.g., a matrix that records the relationship between the requirements and the design of a given software component. See: traceability, traceability analysis.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;usability.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The ease with which a user can learn to operate, prepare inputs for, and interpret outputs of a system or component.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;validation.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (FDA) Establishing documented evidence which provides a high degree of assurance that a specific process will consistently produce a product meeting its predetermined specifications and quality attributes. Contrast with data validation.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;validation, verification, and testing.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NIST) Used as an entity to define a procedure of review, analysis, and testing throughout the software life cycle to discover errors, determine functionality, and ensure the production of quality software.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;verification, software.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) In general the demonstration of consistency, completeness, and correctness of the software at each stage and between each stage of the development life cycle. See: validation, software.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1430593887631693198?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1430593887631693198/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1430593887631693198' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1430593887631693198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1430593887631693198'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_15.html' title='一些软件测试概念的标准定义(下篇)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-3044732065026312275</id><published>2007-01-15T08:33:00.000+08:00</published><updated>2007-01-15T13:09:40.233+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>Oracle Database 10g：数据库管理员提供的20个最重要的特性（三）</title><content type='html'>&lt;h3 class="title"&gt;&lt;br /&gt;&lt;/h3&gt; &lt;p&gt;&lt;span class="topstoryhead"&gt;&lt;span class="parahead2"&gt;第 3 周&lt;/span&gt;&lt;br /&gt;&lt;span class="parahead1"&gt;名字中包含了什么？：改善的表空间管理&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="boldbodycopy"&gt;表空间管理得到了重大的改进，这可以归因于一个 sparser SYSTEM、为用户定义一个默认表空间的支持、新的 SYSAUX、甚至重命名&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋？ &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;在 Oracle9&lt;i&gt;i&lt;/i&gt; Database 之前，如果在创建用户时没有指定默认表空间，那么它将默认为 SYSTEM 表空间。如果用户在创建一个段时没有显式地指定一个表空间，那么这个段将在 SYSTEM 中创建—前提是用户在 SYSTEM 表空间中拥有配额（要么显式地授予，要么通过系统权限 UNLIMITED TABLESPACE 来授予）。Oracle9&lt;i&gt;i&lt;/i&gt; 允许 DBA 为所有未用显式的临时表空间子句创建的用户指定一个默认的临时表空间，从而减少了这个问题。 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;在 Oracle Database 10&lt;i&gt;g&lt;/i&gt; 中，您可以类似地为用户指定一个默认表空间。在数据库创建期间，CREATE DATABASE 命令可以包含子句 DEFAULT TABLESPACE &lt;tsname&gt;。在创建之后，您可以通过发出以下命令来使一个表空间变成默认表空间&lt;/tsname&gt;&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;ALTER DATABASE DEFAULT TABLESPACE &lt;i&gt;&lt;tsname&gt;;&lt;/tsname&gt;&lt;/i&gt; &lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;未用 DEFAULT TABLESPACE 子句创建的所有用户将以 &lt;/span&gt;&lt;span class="italicbodycopy"&gt;&lt;tsname&gt;&lt;/tsname&gt;&lt;/span&gt;&lt;span class="bodycopy"&gt;作为它们的默认表空间。您可以在任何时候通过这个 ALTER 命令来改变默认表空间，从而允许您在不同的节点上将不同的表空间指定为默认表空间。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;重要注意事项：拥有旧的表空间的&lt;/span&gt;&lt;span class="italicbodycopy"&gt;所有&lt;/span&gt;&lt;span class="bodycopy"&gt;用户的默认表空间都被修改为 &lt;/span&gt;&lt;span class="italicbodycopy"&gt;&lt;tsname&gt;&lt;/tsname&gt;&lt;/span&gt;&lt;span class="bodycopy"&gt;， 即使有些表空间是为某些用户显式指定的。例如，假定用户 USER1 和 USER2 的表空间分别是 TS1 和 TS2 — 它们是在用户创建期间显式指定的。数据库当前的默认表空间是 TS2，但之后，数据库的默认表空间变为 TS1。即使 USER2 的默认表空间是显式指定为 TS2 的，它也将变为 TS1。小心这种边界效应！&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;如果在数据库创建期间没有指定默认表空间，它将默认为 SYSTEM。但您如何才能知道现有的数据库的默认表空间是哪一个？发出以下查询：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;SELECT PROPERTY_VALUE&lt;br /&gt;FROM DATABASE_PROPERTIES&lt;br /&gt;WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;DATABASE_PROPERTIES 视图显示默认表空间之外，还显示一些非常重要的信息 — 例如默认临时表空间、全局数据库名、时区等。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;非必要模式的默认表空间&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;几种模式（如智能代理用户 DBSNMP、数据挖掘用户 ODM）与用户操作不直接相关，但对数据库完整性仍很重要。这些模式中的一些曾经用 SYSTEM 作为它们的默认表空间 — 这是在 SYSTEM 表空间内对象增殖的又一个原因。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;Oracle Database 10&lt;i&gt;g&lt;/i&gt; 引进了一个新的称为 SYSAUX 的表空间，它用来保存这些模式的对象。这个表空间是在数据库创建期间自动创建的，并在本地进行管理。唯一允许修改的是数据文件的名称。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这种方法在 SYSTEM 损坏需要完整的数据库恢复时，为恢复提供支持。SYSAUX 中的对象可以被恢复为任意正常的用户对象，同时数据库本身保持运行。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;但 如果您想将 SYSAUX 中的这些模式中的一些转移到一个不同的表空间中时，该怎么办？例如，考虑 LogMiner 使用的对象，这些对象的大小经常增长，直到最终填满表空间。出于可管理性的原因，您可能考虑将它们转移到它们自己的表空间中。但实现这一目的的最好的方法 是什么？ &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;作为一个数据库管理员，了解转移这些特殊对象的正确过程对您而言是很重要的。幸运的是，Oracle Database 10&lt;i&gt;g&lt;/i&gt; 提供了一个新的视图使要凭猜测来做的工作形象化。这个视图，&lt;/span&gt;&lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;V$SYSAUX_OCCUPANTS&lt;/span&gt;&lt;/tt&gt;&lt;span class="bodycopy"&gt;，列出了表空间 SYSAUX 中的模式的名称、它们的说明、当前使用的空间，以及如何转移它们。（参见&lt;a href="http://www.oracle.com/technology/pub/articles/10gdba/week3_10gdba_t1.html" target="_blank"&gt;&lt;span class="bodylink"&gt;表 1&lt;/span&gt;&lt;/a&gt;。）&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;注 意 LogMiner 如何被清楚地显示为占用 7,488 KB 的空间。它归模式 SYSTEM 所有，而要转移对象，您需要执行打包的过程 SYS.DBMS_LOGMNR_D.SET_TABLESPACE。不过，对于 STATSPACK 对象，这个视图推荐使用导入/导出方法；而对于流，没有转移过程 — 因而您不能容易地将它们从 SYSAUX 表空间中转移出来。列 MOVE_PROCEDURE 默认显示 SYSAUX 中存在的几乎所有工具的正确的转移过程。也可以逆向使用转移过程来使对象回到 SYSAUX 表空间中。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="parahead1"&gt;重命名一个表空间&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;在 数据仓库环境中（典型地，对于数据中心体系结构），在数据库之间传输表空间是很常见的。但源数据库和目标数据库必须不存在拥有相同名称的表空间。如果存在 两个拥有相同名称的表空间，则目标表空间中的段必须转移到一个不同的表空间中，然后重新创建这个表空间— 这个任务说起来容易做起来难。 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;Oracle Database 10&lt;i&gt;g&lt;/i&gt; 提供了一个方便的解决方案：您可以用以下命令来简单地重命名一个现有的表空间（SYSTEM 和 SYSAUX 除外） — 无论是永久表空间还是临时表空间：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;ALTER TABLESPACE &lt;i&gt;&lt;oldname&gt;&lt;/oldname&gt;&lt;/i&gt; RENAME TO &lt;i&gt;&lt;newname&gt;&lt;/newname&gt;&lt;/i&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;这个功能还将应用在存档过程中。假定您有一个按范围分区的表，用于记录 销售历史数据，每个月的这个分区位于按这个月份命名的一个表空间中 — 例如，1 月份的分区命名为 JAN，并位于一个名称为 JAN 的表空间中。这样您就拥有了一个将信息保留 12 个月的策略。在 2004 年 1 月，您将能够存档 2003 年 1 月的数据。大致的操作流程类似于以下操作：&lt;/span&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="bodycopy"&gt;利用 ALTER TABLE EXCHANGE PARTITION 从分区 JAN 中创建一个独立的表 JAN03。&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span class="bodycopy"&gt;将表空间重命名为 JAN03。&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span class="bodycopy"&gt;为表空间 JAN03 创建一个可传输表空间集。&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span class="bodycopy"&gt;将表空间 JAN03 重新命名为 JAN。&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span class="bodycopy"&gt;将空的分区交换回表中。&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;第 1、2、4 和 5 步很简单，并且不会过度地消耗资源（如重做和撤消空间）。第 3 步只是拷贝文件并只为 JAN03 输出数据字典信息，这也是个非常轻松的过程。如果您需要恢复之前存档的分区，这个过程也非常简单，您只需要将相同的过程反过来就行了。&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;Oracle Database 10&lt;i&gt;g&lt;/i&gt; 在处理这些重命名的方式上相当智能化。如果您重命名作为 UNDO 或默认临时表空间的表空间，这可能产生混淆。但数据库将自动调整必要的记录来反映这种变化。例如，将默认表空间的名称从 USERS 修改为 USER_DATA 将自动修改视图 DATABASE_PROPERTIES。在修改之前，查询：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;select property_value from database_properties&lt;br /&gt;where property_name = 'DEFAULT_PERMANENT_TABLESPACE';&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;返回 &lt;/span&gt;&lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;USERS&lt;/span&gt;&lt;/tt&gt;&lt;span class="bodycopy"&gt;。在运行下面的语句之后&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;alter tablespace users rename to user_data;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;上述查询返回 &lt;/span&gt;&lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;USER_DATA&lt;/span&gt;&lt;/tt&gt;&lt;span class="bodycopy"&gt;，因为所有对 USERS 的引用都被修改为到 USER_DATA。 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;修改默认临时表空间的情况一样。甚至修改 UNDO 表空间的名称也将触发 SPFILE 中的变化，如下所示：&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;SQL&gt; select value from v$spparameter where name = 'undo_tablespace';&lt;br /&gt;&lt;br /&gt;VALUE&lt;br /&gt;--------&lt;br /&gt;UNDOTBS1&lt;br /&gt;&lt;br /&gt;SQL&gt; alter tablespace undotbs1 rename to undotbs;&lt;br /&gt;&lt;br /&gt;Tablespace altered.&lt;br /&gt;&lt;br /&gt;SQL&gt; select value from v$spparameter where name = 'undo_tablespace';&lt;br /&gt;&lt;br /&gt;VALUE&lt;br /&gt;--------&lt;br /&gt;UNDOTBS&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;span class="parahead1"&gt;结论&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;在最近的几个 Oracle 版本演变的过程中，对象处理得到了稳定的增强。Oracle8&lt;i&gt;i&lt;/i&gt; 引进了表从一个表空间到另一个表空间的转移，Oracle 9&lt;i&gt;i&lt;/i&gt; Database R2 引进了列重命名，现在 — 在最新的版本中 — 表空间自身的重命名成为可能。这些增强显著地减轻了数据库管理员的任务 — 特别是在数据仓库或数据中心环境中。 &lt;/span&gt;&lt;/p&gt; --end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-3044732065026312275?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/3044732065026312275/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=3044732065026312275' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/3044732065026312275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/3044732065026312275'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/oracle-database-10g20.html' title='Oracle Database 10g：数据库管理员提供的20个最重要的特性（三）'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1268694331753595608</id><published>2007-01-14T15:26:00.000+08:00</published><updated>2007-01-14T15:36:14.034+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>新域名终于可以访问了</title><content type='html'>新域名终于可以访问了，不过暂时只能通过代理，代理的设置可以参考&lt;a href="http://www.williamlong.info/archives/739.html"&gt;这篇文章&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一些常用的免费日本和韩国代理列在下面：&lt;br /&gt;&lt;br /&gt;&lt;p&gt;　免费韩国代理服务器列表&lt;/p&gt;&lt;p&gt;　　165.228.128.10：3128&lt;/p&gt;&lt;p&gt;　　59.10.72.198：8080&lt;/p&gt;&lt;p&gt;　　125.248.206.194：8080&lt;/p&gt;&lt;p&gt;　　125.243.249.194：8080&lt;/p&gt;&lt;p&gt;　　210.107.249.50：3128&lt;/p&gt;&lt;p&gt;　　210.107.249.50：3124&lt;/p&gt;&lt;p&gt;　　210.180.39.92：8080&lt;/p&gt;&lt;p&gt;　　210.102.99.71：38466&lt;/p&gt;&lt;p&gt;　　免费日本代理服务器列表&lt;/p&gt;&lt;p&gt;　　58.80.207.41：3128&lt;/p&gt;&lt;p&gt;　　133.1.16.172：3127&lt;/p&gt;&lt;p&gt;　　150.65.32.66：3124&lt;/p&gt;&lt;p&gt;　　203.178.133.2：3128&lt;/p&gt;&lt;p&gt;　　203.178.133.10：3128&lt;/p&gt;&lt;p&gt;　　203.178.133.2：3124&lt;/p&gt;&lt;p&gt;　　203.178.133.3：3127&lt;/p&gt;&lt;p&gt;　　203.178.133.10：3124&lt;/p&gt;&lt;br /&gt;高兴之余，也要show一下第一次成功访问的截图，再次只想说两句话：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;谁让你生在中国！&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_fwbFyFkh91M/RandFXMgyxI/AAAAAAAAAOQ/JWUcsIrzxR8/s1600-h/firstblog.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_fwbFyFkh91M/RandFXMgyxI/AAAAAAAAAOQ/JWUcsIrzxR8/s320/firstblog.JPG" alt="" id="BLOGGER_PHOTO_ID_5019786343876709138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;I am back!&lt;/span&gt;   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1268694331753595608?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1268694331753595608/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1268694331753595608' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1268694331753595608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1268694331753595608'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_14.html' title='新域名终于可以访问了'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_fwbFyFkh91M/RandFXMgyxI/AAAAAAAAAOQ/JWUcsIrzxR8/s72-c/firstblog.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5211082868357828577</id><published>2007-01-14T15:09:00.000+08:00</published><updated>2007-01-14T15:21:45.339+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>Google域名已经成功绑定</title><content type='html'>昨天晚上折腾了大半天，利用Blogger提供的主机绑定服务把新域名给绑定了，不过始终还是不能访问我的新域名:&lt;a href="http://www.rickyzhu.com"&gt;www.rickyzhu.com &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;一度尝试搜索一个国外的免费主机托管服务网站，找到了很多，也成功在&lt;a href="http://www.kingofhosts.com"&gt;kingofhosts.com&lt;/a&gt;上注册并进行了域名托管，似乎有些地方设置不对，而且web上进行文件上传功能似乎很弱，还是观望一下看。下面是kingofhosts提供的一些功能，看样子还不错。&lt;br /&gt;&lt;br /&gt;  KingofHosts has industry leading features that will allow you to build a website above and beyond your competitors, take a look at some of them:   &lt;ul&gt;&lt;li&gt;&lt;s&gt;1,000mb Disk Space&lt;/s&gt;&lt;span style="color:#567aad;"&gt; &lt;strong&gt;5,000mb&lt;/strong&gt;&lt;/span&gt; disk space (5gb!) &lt;/li&gt;&lt;li&gt;&lt;s&gt;10,000mb Bandwidth&lt;/s&gt;&lt;span style="color:#567aad;"&gt;  &lt;strong&gt;50,000mb&lt;/strong&gt;&lt;/span&gt; bandwidth (50gb!).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color:#567aad;"&gt;NO ADVERTISEMENTS&lt;/span&gt;&lt;/strong&gt; on your pages!&lt;/li&gt;&lt;li&gt;FREE &lt;span style="color:#567aad;"&gt;&lt;strong&gt;subdomain&lt;/strong&gt;&lt;/span&gt; (yourname.KingofHosts.com)&lt;/li&gt;&lt;li&gt;Easy to use WYSIWYG editor&lt;/li&gt;&lt;li&gt;Full&lt;span style="color:#567aad;"&gt;&lt;strong&gt; FTP&lt;/strong&gt;&lt;/span&gt; Support&lt;/li&gt;&lt;li&gt;&lt;span style="color:#567aad;"&gt;&lt;strong&gt;PHP 4&lt;/strong&gt;&lt;/span&gt; Support&lt;/li&gt;&lt;li&gt;&lt;s&gt;1 mySQL database &lt;/s&gt;&lt;span style="color:#567aad;"&gt;&lt;strong&gt;10 mySQL&lt;/strong&gt; &lt;/span&gt;database's&lt;/li&gt;&lt;li&gt;&lt;span style="color:#567aad;"&gt;&lt;strong&gt;Instant&lt;/strong&gt;&lt;/span&gt; activation&lt;/li&gt;&lt;li&gt;Domain name support&lt;/li&gt;&lt;li&gt;&lt;span style="color:#567aad;"&gt;&lt;strong&gt;99.9%&lt;/strong&gt;&lt;/span&gt; Uptime&lt;/li&gt;&lt;li&gt;and &lt;span style="color:#567aad;"&gt;&lt;strong&gt;MORE&lt;/strong&gt;&lt;/span&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;没有强制广告，5GB的空间，50GB的带宽，支持MYSQL数据库和二级域名，似乎看起来不错，如果实在不行，就仔细研究研究这个吧。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今天在DNS的设置页面把CNAME设置成ghs.google.com. （似乎后面多了一个点), 很快，在万网上就可以查到我的网站的IP地址，先是托管成功，只是还访问不了，万恶的社会~~&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellpadding="0" cellspacing="0" width="593"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td background="http://www.net.cn/static/hosting_search/hosting_img/hosting_search_no_r2_c2.jpg"&gt;您好！&lt;br /&gt;      经查询，贵网站:&lt;a href="http://www.rickyzhu.com/" target="_blank"&gt;www.rickyzhu.com&lt;/a&gt;&lt;br /&gt;      不是由&lt;span style="color:#ff0000;"&gt;中国万网&lt;/span&gt;提供主机服务&lt;br /&gt;      贵网站IP地址为： &lt;a href="http://diy.hichina.com/cgi-bin/search.cgi" title="64.233.179.121"&gt;64.233.179.121&lt;/a&gt;&lt;/td&gt;    &lt;td&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td&gt;&lt;img src="http://www.net.cn/static/hosting_search/hosting_img/spacer.gif" alt="" border="0" height="96" width="1" /&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td colspan="4"&gt;&lt;img name="hosting_search_no_r3_c1" src="http://www.net.cn/static/hosting_search/hosting_img/hosting_search_no_r3_c1.jpg" alt="" border="0" height="20" width="593" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;看来果真验证了之前的说法：参考月光博客的&lt;a href="http://www.williamlong.info/archives/756.html"&gt;一篇文章&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;尝试一下代理吧！&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-5211082868357828577?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/5211082868357828577/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=5211082868357828577' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5211082868357828577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5211082868357828577'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/google_14.html' title='Google域名已经成功绑定'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5193792305489495097</id><published>2007-01-13T14:37:00.000+08:00</published><updated>2007-01-13T14:41:55.546+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>我的Google域名捆绑梦破灭了</title><content type='html'>昨天还在说，&lt;a href="http://rickyzhuengineer.blogspot.com/2007/01/blog-post_5897.html"&gt;我的新域名&lt;/a&gt;估计两天后启用，看来似乎不那么现实了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以下转载: &lt;a href="http://www.williamlong.info/archives/756.html"&gt;Google的免费主机玩完啦&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今天发现，我前几天刚使用Google免费Bloger托管服务绑定的一个&lt;a target="_blank" href="http://www.moon-blog.com/"&gt;域名&lt;/a&gt;，今天发现其已经IP无法访问，但是通过代理服务器却访问正常，因此我怀疑，Google Blogger仅仅发布数天的新服务：&lt;a target="_blank" href="http://www.williamlong.info/archives/749.html"&gt;Blogger Custom Domains&lt;/a&gt;，可能已经被封了IP。&lt;p&gt;　　主要原因是这个IP：64.233.179.121，所有绑定的域名都指向这个IP，因此这个IP总有一天会被屏蔽掉，只是我没想到这一天会这么快到来。&lt;/p&gt;&lt;p&gt;　　下面是我Trace这个IP的结果，可以看到，访问到202.97.35.49这个IP后就无法继续访问了。&lt;/p&gt;202.97.35.49这个IP又是何方神圣呢？通过查询得知是“中国电信骨干路由器”。下面是查询的截图，这下明白了吧。&lt;br /&gt;&lt;br /&gt;当然，我通过&lt;a target="_blank" href="http://www.williamlong.info/archives/739.html"&gt;韩国或日本的代理服务器&lt;/a&gt;访问我绑定的域名，一切正常，直接访问就无法连接。看来大家还是购买自己的主机吧，免费的好东东我们中国人还是用不了滴，还是&lt;a target="_blank" href="http://www.williamlong.info/archives/386.html"&gt;通过FTP发布到自己主机上&lt;/a&gt;更为保险一些啦。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;看来我又要破费了。55555~~~~，真命苦啊。&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-5193792305489495097?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/5193792305489495097/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=5193792305489495097' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5193792305489495097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5193792305489495097'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/google.html' title='我的Google域名捆绑梦破灭了'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-967353331673245214</id><published>2007-01-13T14:32:00.001+08:00</published><updated>2007-01-13T14:32:23.479+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>这三年自动化测试的思考和总结（原创）</title><content type='html'>&lt;br&gt;搞自动化测试也有三年的时间了，最近总感觉没有多少提高，进步不大。不像最初的两年，总能接触到很多新的知识，进步也快。我也在思索这个问题和造成问题的根本原因，很多方面影响。 当初开始的时候是一穷二白，所以有点点进展也算是很令人高兴和激动人心的，现在总在思索要怎么发展，怎么改进。似乎国内的自动化测试发展很慢，这跟很多公司的管理层有很大关系的，另外，公司的大环境也决定整个的自动化测试的成败。我私下认为，国内的管理者大多眼光没有那么长远，急功近利。恰恰相反，自动化测试又是一个需要长期投入的过程，而且不容易出成效的系统工程，这也难怪国内的自动化测试发展慢。还是从最初做自动化这一路走来开始总结一下吧： &lt;br&gt;&lt;br&gt;初次接触自动化测试应该是2003年了，我们公司实施了自动化测试，一个有多年的自动化测试经验的老板带领我们做,目标明确，也得到了管理程的鼎力支持。进展虽然比较慢却也比较顺利。 &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;我们经历了几个比较大的阶段，从当初的第一种模式（隶属于系统测试部门），到后来独立出一个公司级别的自动化测试 部门，一直到现在覆盖了公司几大产品。中间我们也走了很多的弯路。&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;目前我们有一个比较完善的自动化测试平台，测试管理和测试执行是分开进行的。我们构建了一系列独立于产品的基本函数库和大量的产品相关的业务函数库，系统测试工程师或者自动化测试工程师可以利用这些函数库去构造自动化测试用例，然后利用平台去执行。&lt;/div&gt; &lt;div&gt;&amp;nbsp;&lt;/div&gt; &lt;div&gt;我们还把Mercuy（现在的HP Mercury）的几大产品都集成到了我们的自动化测试平台，QTP, WR 和LR。可以从我们的自动化测试平台去调用这些工具去执行相关的功能或者性能测试。&lt;/div&gt;   &lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/div&gt; &lt;div&gt;近一年以来，我们的自动化似乎进展并不大，除了提供更多的业务函数和维护基本的函数库，在架构上并没有太多的改动，系统测试工程师似乎也习惯了我们的这种思路和平台，从朱少民老师的《&lt;span style="font-size: 10pt;"&gt;功能测试自动化的投入和产出》这篇文章，我看到了其中几个框架的投入产出比，我想我们应该属于第四种－framework structure，基于数据驱动的也许不太适于我们公司的这些产品（流程更新频繁，稳定度不高）。 &lt;/span&gt;&lt;/div&gt;&lt;br&gt;至于以后的自动化应该怎么发展，我想可能是需要认真思考的问题的。&lt;br&gt;&lt;br&gt;--end&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-967353331673245214?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/967353331673245214/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=967353331673245214' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/967353331673245214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/967353331673245214'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_13.html' title='这三年自动化测试的思考和总结（原创）'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-9125121770505093625</id><published>2007-01-13T11:27:00.000+08:00</published><updated>2007-01-13T21:16:04.525+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='转载系列'/><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>Oracle Database 10g:为DBA提供的最佳前20位的特性（二）</title><content type='html'>第一个特性就是前面的那篇&lt;&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/oracle10g.html"&gt;Oracle10g中如何追踪数据操作历史&lt;/a&gt;&gt;&lt;br /&gt;从本周开始，陆续介绍这20位特性，敬请留意。&lt;br /&gt;&lt;br /&gt;&lt;h3 class="title"&gt;Oracle Database 10g:为 DBA 提供的最佳前 20 位的特性第 2 周&lt;/h3&gt; &lt;span style="font-size:85%;"&gt;&lt;span class="parahead2"&gt;第 2 周&lt;/span&gt;&lt;br /&gt;&lt;span class="parahead1"&gt;还要多长时间？：回滚监视&lt;/span&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="boldbodycopy"&gt;为用户提供对回滚操作时间的准确评估&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="italicbodycopy"&gt;&lt;span style="font-size:85%;"&gt;我们还在这地方吗？还要多长时间？&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;听起来熟悉吗？这些问题可能是您在前往孩子们最喜爱的主题公园的路上，从汽车后座上提出来的，并且经常是不断地、越来越频繁地提出来。您不想告诉他们还确切需要多长时间吗 — 或者更简单些，您自己知道答案吗？&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;同样，在回滚长期运行的事务时，经常会有些用户不停地询问相同的问题。这些问题是合理的，因为该事务进行了锁定，正常的处理经常受到回滚进程的影响。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;在 Oracle 9&lt;em&gt;i&lt;/em&gt; Database 及更低的版本中，您可以执行查询&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;SELECT USED_UREC&lt;br /&gt;FROM V$TRANSACTION;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;该语句返回由当前事务所使用的重做记录的数量，而如果重复地执行该语句，将会显示连续减少的数值，因为回滚进程在其处理过程中会释放重做记录。随后您可以通过对一段间隔进行快照来计算其速率，然后推断出评估结束时间的结果。&lt;/span&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;虽然在视图 V$TRANSACTION 中有一个名为 START_TIME 的列，但该列只显示整个事务的起始时间（也就是在回滚执行之前）。因此，除了推断，您没有办法知道回滚实际上是在什么时间执行的。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="parahead1"&gt;事务回滚的扩展统计信息&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;在 &lt;/span&gt;&lt;a href="http://www.oracle.com/technology/global/cn/products/database/oracle10g/"&gt;&lt;span style="font-size:85%;"&gt;Oracle Database 10&lt;em&gt;g&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; 中，这种操作很简单。当事务回滚时，事件被记录在视图 V$SESSION_LONGOPS 中，该视图显示长期运行的事务。用于回滚，如果进程耗时超过六秒，则记录出现在该视图中。在回滚执行以后，您可能会隐藏所查看的监视屏幕并执行以下的查询：&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;select time_remaining&lt;br /&gt;from v$session_longops&lt;br /&gt;where sid = &lt;&lt;em&gt;sid of the session doing the rollback&lt;/em&gt;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;既然您意识到这个视图 V$SESSION_LONGOPS 的重要性，就让我们来看它必须提供的其他信息。该视图在 Oracle Database 10&lt;em&gt;g&lt;/em&gt; 的预览版中提供，但没有捕获关于回滚事务的信息。为了以一种易读的方式显示所有的列，我们将使用由 Tom Kyte 在 &lt;/span&gt;&lt;a href="http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1035431863958"&gt;&lt;span style="font-size:85%;"&gt;AskTom.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; 中所描述的 PRINT_TABLE 函数。此过程简单地以表格方式而不是常用的行方式来显示列。&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;SQL&gt; set serveroutput on size 999999&lt;br /&gt;SQL&gt; exec print_table('select * from v$session_longops where sid = 9')&lt;br /&gt;SID : 9&lt;br /&gt;SERIAL#                       : 68&lt;br /&gt;OPNAME                        :Transaction Rollback&lt;br /&gt;TARGET                        :&lt;br /&gt;TARGET_DESC                   :xid:0x000e.01c.00000067&lt;br /&gt;SOFAR                         : 20554&lt;br /&gt;TOTALWORK                     : 10234&lt;br /&gt;UNITS                         :Blocks&lt;br /&gt;START_TIME                    :07-dec-2003 21:20:07&lt;br /&gt;LAST_UPDATE_TIME              :07-dec-2003 21:21:24&lt;br /&gt;TIME_REMAINING                : 77&lt;br /&gt;ELAPSED_SECONDS               : 77&lt;br /&gt;CONTEXT                       : 0&lt;br /&gt;MESSAGE                       :Transaction Rollback:xid:0x000e.01c.00000067 :&lt;br /&gt;10234 out of 20554 Blocks done&lt;br /&gt;USERNAME                      ：SYS&lt;br /&gt;SQL_ADDRESS                   :00000003B719ED08&lt;br /&gt;SQL_HASH_VALUE                : 1430203031&lt;br /&gt;SQL_ID                        :306w9c5amyanr&lt;br /&gt;QCSID                         : 0&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;注意，此处显示对行的所有更改，即使删除并重新插入行时也是如此。VERSION_OPERATION 列显示对该行执行的操作 (Insert/Update/Delete)。完成这些操作不需要历史表或额外的列。&lt;/span&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;让 我们仔细检查这些列中的每一列。在会话中可能会有超过多个长期运行操作 — 特别是因为视图中包含以前的会话中所有长期运行操作的历史。列 OPNAME 显示该记录用于“事务回滚”，这为我们指出了正确的方向。列 TIME_REMAINING 显示所评估的剩余时间秒数，这在前面已经描述过，而列 ELAPSED_SECONDS 显示到目前为止所消耗的时间。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;那 么该表如何提供对剩余时间的评估呢？可以在列 TOTALWORK 中找到线索，该列显示要完成的“工作”总量，还有 SOFAR 显示到目前为止已经完成了多少工作。工作的单位显示在列 UNITS 中。在本例中以数据块为单位；因此，到目前为止已经回滚了 20,554 个数据块中共计 10,234 个数据块。此操作到目前为止已消耗了 77 秒。因此，剩余数据块将消耗：&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;77 * ( 10234 / (20554-10234) ) ˜ 77 秒&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;但您不必利用这种方法来获得该数值，它已经清楚地显示出来了。最后，列 LAST_UPDATE_TIME 显示有关当前视图内容的时间，这将用于加强您对结果的解释。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="parahead1"&gt;SQL 语句&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;另一部分重要的新信息是正在被回滚的 SQL 语句的标识符。在早先，SQL_ADDRESS 和 SQL_HASH_VALUE 用于获取正在被回滚的 SQL 语句。新的列 SQL_ID 对应于视图 V$SQL 的 SQL_ID，如下所示：&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;SELECT SQL_TEXT&lt;br /&gt;FROM V$SQL&lt;br /&gt;WHERE SQL_ID = &lt;&lt;em&gt;value of SQL_ID from V$SESSION_LONGOPS&lt;/em&gt;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;该查询返回所回滚的语句，因此提供了额外的校验以及 SQL 语句的地址和散列值。 &lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="parahead1"&gt;并行实例恢复&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;如果 DML 操作是并行操作，则列 QCSID 显示并行查询服务器会话的 SID。在并行回滚事件中，如实例恢复以及随后的故障事务恢复期间，经常用到该信息经常。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;例如，假设在大型的更新期间，实例异常关闭。当实例启动时，发生故障的事务被回滚。如果启用了用于并行恢复的初始化参数值，则回滚并行地而不是串行地发生，如同它发生在常规事务回滚中一样。下一步的任务是评估回滚进程的完成时间。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;视 图 V$FAST_START_TRANSACTIONS 显示为回滚故障事务所产生的事务。类似的视图 V$FAST_START_SERVERS 显示对回滚进行处理的并行查询服务器的数量。这两个视图都在以前的版本中提供，但显示事务标识符的新列 XID 使得联接更方便了。在 Oracle9&lt;em&gt;i&lt;/em&gt; Database 以及更低的版本中，您必须通过三列（USN — 重做段号，SLT — 重做段中的存储区号，SEQ — 序列号）来联接视图。其父集显示在 PARENTUSN、PARENTSLT 和 PARENTSEQ 中。在 Oracle Database 10&lt;em&gt;g&lt;/em&gt; 中，您只需将其联接到 XID 列，其父 XID 由直观的名称表示：PXID。 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;最有用的信息部分来自于 V$FAST_START_TRANSACTIONS 视图中的列 RCVSERVERS。如果发生并行回滚，则该列中显示并行查询服务器的数量。您可以查看该列，了解启动了多少并行查询进程：&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;select rcvservers from v$fast_start_transactions;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;如果输出是 1，则事务正在由 SMON 进程进行串行回滚 — 显然这是完成工作的一种不充分的方法。您可以将初始化参数 RECOVERY_PARALLELISM 的值改为除 0 或 1 以外的值，重新启动实例进行并行回滚。随后您可以执行 &lt;tt&gt;&lt;span style="font-family:新宋体;"&gt;ALTER SYSTEM SET FAST_START_PARALLEL_ROLLBACK = HIGH&lt;/span&gt;&lt;/tt&gt;，按 CPU 数量的 4 倍创建并行服务器。&lt;/span&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;如 果上述查询的输出显示不是 1，则正在进行并行回滚。您可以查询同一视图 (V$FAST_START_TRANSACTIONS) 来获得父事务和子事务（父事务 id — PXID，而子事务 id — XID）。XID 还可用于联接此视图与 V$FAST_START_SERVERS，以获得其他详细信息。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="parahead1"&gt;结论&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="bodycopy"&gt;总之，当在 Oracle Database 10&lt;em&gt;g&lt;/em&gt; 中回滚长期运行的事务时 — 无论是并行实例恢复会话还是用户执行的回滚语句 — 您所需做的一切就是查看视图 V$SESSION_LONGOPS 并评估还需要多少时间。&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="bodycopy"&gt;&lt;span style="font-size:85%;"&gt;现在，如果能预测到达主题公园的时间就好了！&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-9125121770505093625?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/9125121770505093625/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=9125121770505093625' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/9125121770505093625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/9125121770505093625'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/oracle-database-10gdba20.html' title='Oracle Database 10g:为DBA提供的最佳前20位的特性（二）'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-7444786121062063478</id><published>2007-01-12T17:43:00.000+08:00</published><updated>2007-01-12T20:56:00.076+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='建站经过'/><title type='text'>终于拥有自己的域名了</title><content type='html'>&lt;div class="Section1" style=""&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;自从去年的&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;blogger&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;告别&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;beta&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;之后&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;前一阵子又推出了一项新功能&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;域名捆绑&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;这对于很久以来就渴望拥有自己域名的特别象我这样又懒于维护一大堆文件的用户来说&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;无疑十分兴奋&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;今天注册了一个自己的域名&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,59&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;块大洋&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;年&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;找了半天&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;心仪的域名都被别人抢走了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;只能将就了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;不过还要等一天之后才能生效&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;ricky.com.cn, ricky.com, ricky.net &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;都被注册走了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;只能选&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;rickyzhu.com&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;在&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;blogger&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;上进行简单的设置即可把原来的老域名重定向到这个新域名了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;首先把域名坐&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;CNAME&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;设置到&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;ghs.google.com,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;然后再控制台那&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;选择设置&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;发布&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;自定义域&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;添上域名即可&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;看看&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;blogger&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;的官方网站对这个新功能的描述&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span lang="EN-US"  style="font-size:10;"&gt;The new version of Blogger now supports using a &lt;a href="http://help.blogger.com/bin/answer.py?answer=55373"&gt;custom domain&lt;/a&gt; for serving your blog. If you already own a domain named, say, &lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="font-family:宋体;font-size:100%;"&gt;&lt;span lang="EN-US"  style="font-size:12;"&gt;mysite.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span lang="EN-US"&gt; and want your blog to be served at that address instead of at a &lt;/span&gt;&lt;code&gt;&lt;span style="font-family:宋体;font-size:100%;"&gt;&lt;span lang="EN-US"  style="font-size:12;"&gt;blogspot.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span lang="EN-US"&gt; address, we can host your blog on that domain for you ― for free. Your old Blog*Spot address will forward to your new custom domain, so the switch will be seamless for your readers.&lt;br /&gt;&lt;br /&gt;Of course, FTP publishing is still available if you'd like to do your own hosting, but using a custom domain gives you a ton of advantages:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type="disc"&gt;  &lt;li class="MsoNormal" style="text-align: left;"&gt;&lt;b&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:10;" lang="EN-US" &gt;Simpler to set up.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;      You don't have to muck around with FTP paths and file names.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="text-align: left;"&gt;&lt;b&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:10;" lang="EN-US" &gt;Fast publishing.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;      There's no waiting for files to upload to a hosting provider.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="text-align: left;"&gt;&lt;b&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:10;" lang="EN-US" &gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=43708"&gt;Drag-and-drop      template editing&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt; You can use the new Blogger's new template features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="text-align: left;"&gt;&lt;b&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span style="font-weight: bold;font-size:10;" lang="EN-US" &gt;&lt;a href="http://help.blogger.com/bin/answer.py?answer=42673"&gt;Access control&lt;/a&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt; If you'd like, only let      people you choose read your blog.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span lang="EN-US"  style="font-size:10;"&gt;Using Blogger's custom domains is a simple way to start serving your blog on your own domain without having to deal with the hassle of transferring the files to a separate web host.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;看来这个周末应该可以用上新域名了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;呵呵&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;--end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-7444786121062063478?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/7444786121062063478/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=7444786121062063478' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7444786121062063478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7444786121062063478'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_5897.html' title='终于拥有自己的域名了'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1531897453501727044</id><published>2007-01-12T14:43:00.000+08:00</published><updated>2007-01-12T20:54:07.381+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>如何挑选适合你的自动化测试工具</title><content type='html'>&lt;div class="Section1" style=""&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;任何工具没有最好的&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;只有最适合的&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;自动化测试工具也是如此&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;针对不同的公司&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;不同的应用&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;如何挑选最适合自己的自动化测试工具&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;下面的几点也许可以作为你的参考&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;List of points on which the new automation tool for functional and&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;regression testing is evaluated:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;1. Ability to Identify all controls i.e. support Custom controls&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;2. Number of controls supported - Windows, IE, Netscape, .Net, Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;3. Number of OS Lang supported - English, Japanese, French etc.,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;4. Number of DBs supported - MSSQL, Oracle, DB2 etc, [Execution of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;Simple queries, Sprocs, Resultset, etc]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;5. Number of environments supported - win32, web&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;6. Ability to read write from different sources [db, txt, word, excel,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;reg etc.,]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;7. Should have good error handling mechanism.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;8. Dependencies on hardware/software - any new hardware/software to be&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;installed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;9. Ability to run with out the software being installed on each and&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;every machine.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;10.Ability to interact with other interfaces [software's] - API's&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;11.Should be easy to learn and use.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;12.Operational constraints - cost\support\training.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;13.Tool should have good reference for its acceptance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;14.Tool should have backward compatibility.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;15.Tool should be pluggable to standard test frameworks available in&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;the industry.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;16.Ability to Analyze results, generate report and send it across.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;[Even though it falls under framework.]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;已经大致圈定了一些供应商和一些候选工具&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;针对不同的测试工具和厂商进行考察&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;你还在听他们的&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;sales&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;滔滔不绝的给你宣传他们的工具吗&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;?&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;缺少一个衡量的标准吗&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;看看下列一些问题他们如何回答&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体;font-size:78%;"&gt;&lt;span style=";font-family:宋体;font-size:9;"  &gt;就知道如何决定了&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;List of Questions to the tool vendors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;1.What does this tool do?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;2.What are the benefits of using this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;3.How can this tool solve my problems?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;4.Which of my current problems can and can't this tool help with?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;5.Will you demonstrate your tool using our tests on our site?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;6.What environment is needed to run this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;7.How much disk space does it use?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;8.What influence do tool users have on future development of the tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;9.Can tests be re-run in debug mode within the tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;10.What is the market share of this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;11.How do you define market share?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;12.Why is this tool better than other similar tools?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;13.What proportion of tools sold is providing real benefits to the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;organizations, which bought them?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;14.What will I have to do to be sure to succeed with this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;15.What local support is available?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;16.Training, consultancy, help desk, Service Level Agreement for&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;resolution of problems, technical expertise in our area?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;17.What effort is needed in-house by us to support the tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;18.What test-planning standards need to be in place to gain real&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;benefits from using this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;19.What features are included to ease the learning curve for the tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;20.How do other sites usually work with the tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;21.Is there a user group/Forum/Seminar, and can I attend the next&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;meeting?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;22.Can you give me the names of reference sites&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;23.Can I meet with at least two users who are achieving real benefits&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;using this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;24.How many versions have been released in the past year?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;25.Do you release a defect list with the product?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;26.How many known defects are there in the tool currently?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;27.What kind of tailoring / customization is possible for this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;28.What extensions / add-ons / in-house routines have other users&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;built?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;29.How does this tool integrate with other tools?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;30.How long will it take to achieve real payback from this tool?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;31.Can you help me estimate how much effort will be involved in&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;implementing this tool in my organization?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:78%;"&gt;&lt;span style=";font-family:Arial;font-size:9;"  lang="EN-US" &gt;--end&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Times New Roman;font-size:85%;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1531897453501727044?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1531897453501727044/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1531897453501727044' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1531897453501727044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1531897453501727044'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_9705.html' title='如何挑选适合你的自动化测试工具'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4878423544854289139</id><published>2007-01-12T13:21:00.000+08:00</published><updated>2007-01-12T13:26:22.237+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>一些软件测试概念的标准定义(上篇)</title><content type='html'>&lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;audit.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (IEEE) An independent examination of a work product or set of work products to assess compliance with specifications, standards, contractual agreements, or other criteria. See: functional configuration audit, physical configuration audit. (2) (ANSI) To conduct an independent review and examination of system records and activities in order to test the adequacy and effectiveness of data security and data integrity procedures, to ensure compliance with established policy and operational procedures, and to recommend any necessary changes. See: computer system audit, software audit.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;boundary value.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (IEEE) A data value that corresponds to a minimum or maximum input, internal, or output value specified for a system or component. (2) A value which lies at, or just inside or just outside a specified range of valid input and output values.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;boundary value analysis.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) A selection technique in which test data are chosen to lie along "boundaries" of the input domain [or output range] classes, data structures, procedure parameters, etc. Choices often include maximum, minimum, and trivial values or parameters. This technique is often called stress testing. See: testing, boundary value.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;branch coverage.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) A test coverage criteria which requires that for each decision point each possible branch be executed at least once. Syn: decision coverage. Contrast with condition coverage, multiple condition coverage, path coverage, statement coverage. See: testing, branch.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;bug.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; A fault in a program which causes the program to perform in an unintended or unanticipated manner. See: anomaly, defect, error, exception, fault.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;cause effect graph.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (Myers) A Boolean graph linking causes and effects. The graph is actually a digital-logic circuit (a combinatorial logic network) using a simpler notation than standard electronics notation.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;cause effect graphing.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (NBS) Test data selection technique. The input and output domains are partitioned into classes and analysis is performed to determine which input classes cause which effect. A minimal set of inputs is chosen which will cover the entire effect set. (2) (Myers) A systematic method of generating test cases representing combinations of conditions. See: testing, functional.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;code inspection.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (Myers/NBS) A manual [formal] testing [error detection] technique where the programmer reads source code, statement by statement, to a group who ask questions analyzing the program logic, analyzing the code with respect to a checklist of historically common programming errors, and analyzing its compliance with coding standards. Contrast with code audit, code review, code walkthrough. This technique can also be applied to other software and configuration items. Syn: Fagan Inspection. See: static analysis.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;code review.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A meeting at which software code is presented to project personnel, managers, users, customers, or other interested parties for comment or approval. Contrast with code audit, code inspection, code walkthrough. &lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;code walkthrough.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (Myers/NBS) A manual testing [error detection] technique where program [source code] logic [structure] is traced manually [mentally] by a group with a small set of test cases, while the state of program variables is manually monitored, to analyze the programmer's logic and assumptions. Contrast with code audit, code inspection, code review. See: static analysis.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;coverage analysis.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NIST) Determining and assessing measures associated with the invocation of program structural elements to determine the adequacy of a test run. Coverage analysis is useful when attempting to execute each statement, branch, path, or iterative structure in a program. Tools that capture this data and provide reports summarizing relevant information have this feature. See: testing, branch; testing, path; testing, statement.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;crash.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The sudden and complete failure of a computer system or component.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;criticality.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The degree of impact that a requirement, module, error, fault, failure, or other item has on the development or operation of a system. Syn: severity.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;cyclomatic complexity.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (McCabe) The number of independent paths through a program. (2) (NBS) The cyclomatic complexity of a program is equivalent to the number of decision statements plus 1.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;error.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (ISO) A discrepancy between a computed, observed, or measured value or condition and the true, specified, or theoretically correct value or condition. See: anomaly, bug, defect, exception, and fault&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;error guessing.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (NBS) Test data selection technique. The selection criterion is to pick values that seem likely to cause errors. See: special test data; testing, special case.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;error seeding.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The process of intentionally adding known faults to those already in a computer program for the purpose of monitoring the rate of detection and removal, and estimating the number of faults remaining in the program. Contrast with mutation analysis.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;exception.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) An event that causes suspension of normal program execution. Types include addressing exception, data exception, operation exception, overflow exception, protection exception, and underflow exception.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;failure.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) The inability of a system or component to perform its required functions within specified performance requirements. See: bug, crash, exception, fault.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;fault.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; An incorrect step, process, or data definition in a computer program which causes the program to perform in an unintended or unanticipated manner. See: bug, defect, error, exception.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;quality assurance.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (ISO) The planned systematic activities necessary to ensure that a component, module, or system conforms to established technical requirements. (2) All actions that are taken to ensure that a development organization delivers products that meet performance requirements and adhere to standards and procedures. (3) The policy, procedures, and systematic actions established in an enterprise for the purpose of providing and maintaining some degree of confidence in data integrity and accuracy throughout the life cycle of the data, which includes input, update, manipulation, and output. (4) (QA) The actions, planned and performed, to provide confidence that all systems and components that influence the quality of the product are working as expected individually and collectively.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;quality assurance, software.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) (1) A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements. (2) A set of activities designed to evaluate the process by which products are developed or manufactured.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;quality control.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; The operational techniques and procedures used to achieve quality requirements.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;review.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A process or meeting during which a work product or set of work products, is presented to project personnel, managers, users, customers, or other interested parties for comment or approval. Types include code review, design review, formal qualification review, requirements review, test readiness review. Contrast with audit, inspection. See: static analysis.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;risk.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A measure of the probability and severity of undesired effects. Often taken as the simple product of probability and consequence.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;risk assessment.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (DOD) A comprehensive evaluation of the risk and its associated impact.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;software review.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) An evaluation of software elements to ascertain discrepancies from planned results and to recommend improvement. This evaluation follows a formal process. Syn: software audit. See: code audit, code inspection, code review, code walkthrough, design review, specification analysis, static analysis&lt;/span&gt;&lt;span style="font-size: 20pt; font-family: 宋体; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;static analysis.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (1) (NBS) Analysis of a program that is performed without executing the program. (2) (IEEE) The process of evaluating a system or component based on its form, structure, content, documentation. Contrast with dynamic analysis. See: code audit, code inspection, code review, code walk-through, design review, symbolic execution.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) An activity in which a system or component is executed under specified conditions, the results are observed or recorded and an evaluation is made of some aspect of the system or component.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;testability.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) (1) The degree to which a system or component facilitates the establishment of test criteria and the performance of tests to determine whether those criteria have been met. (2) The degree to which a requirement is stated in terms that permit establishment of test criteria and performance of tests to determine whether those criteria have been met.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test case.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Documentation specifying inputs, predicted results, and a set of execution conditions for a test item. Syn: test case specification. See: test procedure.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test case generator.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) A software tool that accepts as input source code, test criteria, specifications, or data structure definitions; uses these inputs to generate test input data; and, sometimes, determines expected results. Syn: test data generator, test generator.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="background: white none repeat scroll 0%; margin-bottom: 18pt; text-align: left; line-height: 14.4pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="left"&gt;&lt;b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt;test design.&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Verdana; color: black;" lang="EN-US"&gt; (IEEE) Documentation specifying the details of the test approach for a software feature or combination of software features and identifying the associated tests. See: testing functional; cause effect graphing; boundary value analysis; equivalence class partitioning; error guessing; testing, structural; branch analysis; path analysis; statement coverage; condition coverage; decision coverage; multiple-condition coverage.&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: Verdana; color: rgb(34, 34, 34);" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4878423544854289139?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4878423544854289139/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4878423544854289139' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4878423544854289139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4878423544854289139'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_5013.html' title='一些软件测试概念的标准定义(上篇)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-7824687486756889663</id><published>2007-01-12T11:01:00.000+08:00</published><updated>2007-01-12T11:05:42.974+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>掌握有效测试软件的方法与技术(二)</title><content type='html'>4. 企业的测试策略&lt;br /&gt;4.1 理念：&lt;br /&gt;u    企业的主要目的是获取利润，降低测试成本也是盈利的一种方式。&lt;br /&gt;u    用较低的代价实现有效的测试，不应为了追求完美的测试而不失一切代价。&lt;br /&gt;4.2 如何合理地减少测试工作量&lt;br /&gt;u    减少冗余的测试&lt;br /&gt;白盒测试与黑盒测试的方式虽然不同，但往往有“异曲同工”之妙。在很多地方，白盒测试与黑盒测试会产生一模一样的效果（或者能推理出来），这样的测试是冗余的。&lt;br /&gt;在集成测试、系统测试阶段，可能要执行多次“回归测试”。每一次“回归测试”都会存在不少的冗余，应当设法剔除不必要的重复测试工作。&lt;br /&gt;u    减少无价值的测试&lt;br /&gt;无价值的测试通常是由于不懂得测试技术引起的。例如功能测试，在等价区间之中，本来只要测试一个典型的输入就行了，如果有人在此区间测试了100次，那么其中99次就是无价值的。&lt;br /&gt;u    如何“偷工减料”&lt;br /&gt;有一些“短、平、快”的项目，经费本来就少，用户对质量要求也马马虎虎。为了能多挣一点钱，开发方不得不采用“偷工减料”的方式来降低测试代价。偷工减料的途径无非就是减少测试的内容和频度。但不能砍得太狠，否则软件拿不出手。基本方法是找出软件中需要优先测试的部分（见下表），其它次要部分可以忽略或将来再测试。&lt;br /&gt;u    “偷工减料”方法的测试优先级：&lt;br /&gt;哪些功能是软件的特色？&lt;br /&gt;哪些功能是用户最常用的？&lt;br /&gt;如果系统可以分块卖的话，哪些功能块在销售时最昂贵？&lt;br /&gt;哪些功能出错将导致用户不满或索赔？&lt;br /&gt;哪些程序是最复杂、最容易出错的？&lt;br /&gt;哪些程序是相对独立，应当提前测试的？&lt;br /&gt;哪些程序最容易扩散错误？&lt;br /&gt;哪些程序是全系统的性能瓶颈所在？&lt;br /&gt;哪些程序是开发者最没有信心的？     &lt;br /&gt;4.3 测试何时结束&lt;br /&gt;u    基于测试用例的规则&lt;br /&gt;u    基于“测试期缺陷密度”的规则&lt;br /&gt;u    基于“运行期缺陷密度”的规则&lt;br /&gt;4.4 测试奖励机制&lt;br /&gt;u    根据缺陷的危害程度，把奖金分等级。每个新缺陷对应一份奖金，把奖金发给第一个发现该缺陷的人。奖金额要适当，太低了人们不感兴趣，太高了会让项目破产的。 &lt;br /&gt;&lt;br /&gt;5. 测试规范&lt;br /&gt;5.1 测试流程&lt;br /&gt;u    第一步：制定测试计划。该计划被批准后转向第二步。&lt;br /&gt;u    第二步：设计测试用例。该用例被批准后转向第三步。&lt;br /&gt;u    第三步：如果满足“启动准则” ，那么执行测试。&lt;br /&gt;u    第四步：撰写测试报告。&lt;br /&gt;u    第五步：消除软件缺陷。如果满足“完成准则”，那么正常结束测试。&lt;br /&gt;5.2 测试启动准则&lt;br /&gt;u    同时满足以下条件，允许开始测试：&lt;br /&gt;（1）测试计划已经制定并且通过了审批；&lt;br /&gt;（2）测试用例已经设计并且通过了审批；&lt;br /&gt;（3）被测试对象已经开发完毕并等待测试。&lt;br /&gt;5.3 测试完成准则&lt;br /&gt;u    对于非严格系统可以采用“基于测试用例”的准则。同时满足以下条件允许结束测试：&lt;br /&gt;（1）功能性测试用例通过率达到100％；&lt;br /&gt;（2）非功能性测试用例通过率达到90％时。&lt;br /&gt;u    对于严格系统，应当补充“基于测试期缺陷密度”的规则：&lt;br /&gt;（3）相邻n个CPU小时内“测试期缺陷密度”全部低于某个值m。例如n大于10，m小于等于1。&lt;br /&gt;6. 软件系统的主要测试内容及技术&lt;br /&gt;6.1 接口与路径测试&lt;br /&gt;u    数据一般通过接口输入和输出，所以接口测试是白盒测试的第一步。每个接口可能有多个输入参数，每个参数有“典型值”、“边界值”、“异常值”之分，所以输入的组合数可能并不少。根据接口的定义，可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。如果实际输出与期望的输出不一致，那么说明程序有错误。白盒方式的接口测试和黑盒方式的功能测试，其方法十分相似。&lt;br /&gt;u    一个函数体内的语句可能只有十几条，但逻辑路径可能有成千上万条。想遍历测试几乎是不可能的，不测试或者胡乱找几条路径测试却又不行。&lt;br /&gt;u    对于非严格系统而言，在分析路径方面化费很多精力是不值得的。我认为在构造接口测试的同时已经建立了测试路径。因为每一种输入将产生唯一的输出，输入与输出之间的路径也是唯一的。由于接口测试中的输入是有代表性的，因此相应的路径也具有代表性，不用得着费煞苦心地去找测试路径。&lt;br /&gt;u    路径测试的检查表&lt;br /&gt;数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理 &lt;br /&gt;u    由于接口测试是枚举的，有可能漏掉某些状况，导致一些重要的路径没有被测试。预防措施有：&lt;br /&gt;观察是否有程序语句从来没有被执行过。如果发生在这种情况，要么是程序有错误，存在无用的代码；要么是接口测试不充分，漏掉了一些路径。&lt;br /&gt;要特别留意函数体内的错误处理程序块（如果存在的话），这是最易被人疏忽的路径，隐患最多。&lt;br /&gt;&lt;br /&gt;6.2 功能测试&lt;br /&gt;u    功能测试的基本方法是构造一些合理输入（在需求范围之内），检查输出是否与期望的相同。如果两者不一致，即表明功能有误。也有例外的情况，如《需求规格说明书》中的某个功能写错了，而实际上软件的功能却是正确的，这时要更改的是《需求规格说明书》。&lt;br /&gt;u    功能测试看起来比较简单，只要看得懂《需求规格说明书》，谁都会做。难点在于如何构造有效的输入。由于输入空间通常是无限的，穷举测试显然行不通。那么随便输入一些东西，碰运气行不行？&lt;br /&gt;u    功能测试有两种比较好的测试方法：等价划分法和边界值分析法。&lt;br /&gt;等价划分是指把输入空间划分为几个“等价区间”，在每个“等价区间”中只需要测试一个典型值就可以了。等价划分法来源于人们的直觉与经验，可令测试事半功倍。&lt;br /&gt;“缺陷遗漏在角落里，聚集在边界上”。边界值测试法是对等价划分法的补充。如果A和B是输入空间的边界值，那么除了典型值外还要用A和B作为测试用例。&lt;br /&gt;例如测试函数。凭直觉，等价区间应是（0, 1）和（1, +∞）。可取典型值x=0.5以及x=2.0进行“等价划分”测试。再取 x=0以及x=1进行“边界值”测试。&lt;br /&gt;6.3 健壮性测试&lt;br /&gt;u    健壮性是指在异常情况下，软件还能正常运行的能力。健壮性有两层含义：一是容错能力，二是恢复能力。&lt;br /&gt;u    容错性测试通常构造一些不合理的输入来引诱软件出错，例如：&lt;br /&gt;（1）输入错误的数据类型。如“猴”年“马”月。&lt;br /&gt;（2）输入定义域之外的数值。如上海人常说的“十三点”&lt;br /&gt;u    粗暴一些方式俗称“大猩猩”测试法。除了不能拳打脚踢嘴咬外，什么招术都可以使出来。例如在测试客户机－服务器模式的软件时，把网络线拔掉，造成通信异常中断。&lt;br /&gt;u    恢复测试重点考察一下几项：&lt;br /&gt;（1）系统能否重新运行；&lt;br /&gt;（2）有无重要的数据丢失；&lt;br /&gt;（3）是否毁坏了其它相关的软件硬件。&lt;br /&gt;6.4 性能测试&lt;br /&gt;u    性能测试即测试软件处理事务的速度，一是为了检验性能是否符合需求，二是为了得到某些性能数据供人们参考（例如用于宣传）。&lt;br /&gt;u    有时人们关心测试的“绝对值”，如数据送输速率是每秒多少比特。有时人们关心测试的“相对值”，如某个软件比另一个软件快多少倍。&lt;br /&gt;u    在获取测试的“绝对值”时，我们要充分考虑并记录运行环境对测试的影响。例如网络环境、计算机主频，总线结构和外部设备都可能影响软件的运行速度。&lt;br /&gt;u    性能测试的一些注意事项：&lt;br /&gt;不要试图让人拿着钟表去测时间，应当编写一段程序用于计算时间以及相关数据。&lt;br /&gt;应当测试软件在标准配置和最低配置下的性能。&lt;br /&gt;为了排除干扰，应当关闭那些消耗内存、占用CPU的其它应用软件（如杀毒软件）。&lt;br /&gt;不同的输入情况会得到不同的性能数据，应当分档记录。例如传输文件的容量从100K到1M可以分成若干等级。&lt;br /&gt;由于环境的波动，同一种输入情况在不同的时间可能得到不同的性能数据，可以取其平均值。&lt;br /&gt;6.5 用户界面测试&lt;br /&gt;u    绝大多数软件拥有图形用户界面。图形用户界面的测试重点是正确性、易用性和视觉效果。在评价易用性和视觉效果时，主观性非常强，应当考虑多个人的观点。&lt;br /&gt;6.6 信息安全测试&lt;br /&gt;u    信息安全性（security）是指防止系统被非法入侵的能力，既属于技术问题又属于管理问题。&lt;br /&gt;u    信息安全性测试有如下步骤：&lt;br /&gt;（1）为非法入侵设立目标，例如“盗窃某个文件”或“更改数据库记录”等。&lt;br /&gt;（2）邀请（或悬赏）一些人扮演黑客，让他们想尽办法入侵系统，实现“目标”。&lt;br /&gt;（3）如果有人成功了，请他详述入侵的过程。别忘了给予奖励。 &lt;br /&gt;6.7 压力测试&lt;br /&gt;u    压力测试也叫负荷测试，即获取系统能正常运行的极限状态。了解“极限”是很有价值的，例如潜艇下潜极限深度…。&lt;br /&gt;u    压力测试的主要任务是：构造正确的输入，使劲折腾系统却让它刚好不瘫痪。&lt;br /&gt;u    压力测试的一个变种是敏感测试。在某种情况下，微小的输入变动会导致系统的表现（如性能）发生急剧的变化。敏感测试目的是发现什么样的输入可能会引发不稳定现象。&lt;br /&gt;6.8 可靠性测试&lt;br /&gt;u    可靠性是指在一定的环境下、在给定的时间内、系统不发生故障的概率。由于软件不像硬件那样可以“加速老化”，按此定义，软件可靠性测试可能会花费很长时间。&lt;br /&gt;u    比较实用的办法是，让用户使用该系统，记录每一次发生故障的时刻。计算出相邻故障的时间间隔，注意要去掉非工作时间。这样我们可以方便地统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。其中“平均时间间隔”会让人们大体了解到系统“可靠”的程度。&lt;br /&gt;6.9 安装 / 反安装测试&lt;br /&gt;u    安装 / 反安装测试的目的：避免“大风浪都挺过来了，却在阴沟里翻了船”&lt;br /&gt;u    目前市面上有非常流行的、专门制作安装/反安装程序的一些工具，如Install Shelled。制作安装/反安装程序不再是件难事，关键是不要麻痹大意。主要测试工作：&lt;br /&gt;（1）至少在标准配置和最低配置两种环境下测试；&lt;br /&gt;（2）如果有安装界面，应当尝试各种选项，如选择“全部”、“部分”、“升级”等。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-7824687486756889663?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/7824687486756889663/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=7824687486756889663' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7824687486756889663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7824687486756889663'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_12.html' title='掌握有效测试软件的方法与技术(二)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5342522641683062923</id><published>2007-01-11T13:50:00.000+08:00</published><updated>2007-01-12T13:47:01.610+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>掌握有效测试软件的方法与技术(一)</title><content type='html'>1. 测试的常识与道理&lt;br /&gt;&lt;br /&gt;1.1 你真的懂测试吗&lt;br /&gt;&lt;br /&gt;u 编程大师说：没有错误的程序世间难求。 （《编程之道》）&lt;br /&gt;&lt;br /&gt;u 你在学校里学过测试吗？（读到博士可能也不懂测试）&lt;br /&gt;&lt;br /&gt;u 你所在的企业重视测试吗？ （小公司程序员的技能更加全面）&lt;br /&gt;&lt;br /&gt;u 临时抱佛脚行吗？你以为有文档模板就会测试了吗？&lt;br /&gt;&lt;br /&gt;u 如果不懂得有效地进行测试，你不仅得不到功劳，也没人欣赏你的苦劳，你拥有最多的将只是疲劳。&lt;br /&gt;&lt;br /&gt;u 职业软件工程师应当掌握需求开发、系统设计、编程、测试、维护 所有技能。&lt;br /&gt;&lt;br /&gt;1.2 测试的目的是什么&lt;br /&gt;&lt;br /&gt;u 测试的目的是为了发现尽可能多的缺陷，不是为了说明软件中没有缺陷。&lt;br /&gt;&lt;br /&gt;u 推论：成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例，它能有效地揭示潜伏在软件里的缺陷。&lt;br /&gt;&lt;br /&gt;u 千万不要将“测试”与“演示”混为一谈。例如科研鉴定会。&lt;br /&gt;&lt;br /&gt;u 如果产品通过了严格的测试，大家不要不吭气，应当好好地宣传一把 。&lt;br /&gt;&lt;br /&gt;1.3 一些常识和经验之谈&lt;br /&gt;&lt;br /&gt;u 测试能提高软件的质量，但是提高质量不能依赖测试。&lt;br /&gt;&lt;br /&gt;u 测试只能证明缺陷存在，不能证明缺陷不存在。“彻底地测试”难以成为现实，要考虑时间、费用等限制，不允许无休止地测试。我们应当祈祷：软件的缺陷在产品被淘汰之前一直没有机会发作。&lt;br /&gt;&lt;br /&gt;u 测试的主要困难是不知道如何进行有效地测试，也不知道什么时候可以放心地结束测试。&lt;br /&gt;&lt;br /&gt;u 每个开发人员应当测试自己的程序（份内之事），但是不能作为该程序已经通过测试的依据（所以项目需要独立测试人员）。&lt;br /&gt;&lt;br /&gt;u 80-20原则：80％的缺陷聚集在20％的模块中，经常出错的模块改错后还会经常出错&lt;br /&gt;&lt;br /&gt;u 测试应当循序渐进，不要企图一次性干完，注意“欲速则不达”。&lt;br /&gt;&lt;br /&gt;2. 测试的分类与比较&lt;br /&gt;&lt;br /&gt;u 问题1：有了“黑盒”测试为什么还要“白盒”测试？&lt;br /&gt;&lt;br /&gt;– 黑盒测试只能观察软件的外部表现，即使软件的输入输出都是正确的，却并不能说明软件就是正确的。因为程序有可能用错误的运算方式得出正确的结果，例如“负负得正，错错得对”，只有白盒测试才能发现真正的原因。&lt;br /&gt;&lt;br /&gt;– 白盒测试能发现程序里的隐患，象内存泄漏、误差累计问题。在这方面，黑盒测试存在严重的不足。&lt;br /&gt;&lt;br /&gt;u 问题2：由于单元测试要写测试驱动程序，非常麻烦，能否等到整个系统全部开发完后，再集中精力进行一次性地单元测试呢？&lt;br /&gt;&lt;br /&gt;– 如果这样做，在开发过程中，缺陷会越积越多并且分布得更广、隐藏得更深，反而导致测试与改错的代价大大增加。最糟糕的是无法估计测试与改错的工作量，使进度失去控制。因此为图眼前省事而省略单元测试或者“偷工减料”，是“得不偿失”的做法。&lt;br /&gt;&lt;br /&gt;u 问题3：如果每个单元都通过了测试，把它们集成一起难道会有什么不妥吗？集成测试是否多此一举？&lt;br /&gt;&lt;br /&gt;– 要把N个单元集成一起肯定靠接口耦合，这时可能会产生在单元测试中无法发现的问题。例如：数据通过不同的接口时可能出错；几个函数关联在一起时可能达不到预期的功能；在某个单元里可以接受的误差可能在集成后被扩大到无法接受的程度。所以集成测试是必要的，不是多此一举。&lt;br /&gt;&lt;br /&gt;u 问题4：在集成测试的时候，已经对一些子系统进行了功能测试、性能测试等等，那么在系统测试时能否跳过相同内容的测试?&lt;br /&gt;&lt;br /&gt;– 不能！因为集成测试是在仿真环境中开展的，那不是真正的目标系统。再者，单元测试和集成测试通常由开发小组执行。根据测试心理学的分析，开发人员测试自己的工作成果虽然是必要的，但不能作为成果已经通过测试的依据。&lt;br /&gt;&lt;br /&gt;u 问题5：既然系统测试与验收测试的内容几乎是相同的，为什么还要验收测试？&lt;br /&gt;&lt;br /&gt;– 首先是“信任”问题。对于合同项目而言，如果测试小组是开发方的人员，客户怎么能够轻易相信“别人”呢? 所以当项目进行系统测试之后，客户再进行验收测试是情理之中的事。否则，那是客户失职。&lt;br /&gt;&lt;br /&gt;– 不论是合同项目还是非合同项目，软件的最终用户各色各样（如受教育程度不同、使用习惯不同等等）。测试小组至多能够模仿小部分用户的行为，但并不具有普遍的代表性。&lt;br /&gt;&lt;br /&gt;u 问题6：能否将系统测试和验收测试“合二为一”？&lt;br /&gt;&lt;br /&gt;– 系统测试不是一会儿就能做完的，比较长时间的用户测试很难组织。用户还有自己的事情要做，他们为什么要为别人测试呢？即使用户愿意做系统测试，他们消耗的时间、花费的金钱大多比测试小组的高。&lt;br /&gt;&lt;br /&gt;– 系统测试时会找出相当多的软件缺陷，软件需要反反复复地改错。如果让用户发现“内幕”，一是丢脸，二是会吓跑买主。所以还是关起门来，先让测试小组做完系统测试的好。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. 测试人员的组织&lt;br /&gt;&lt;br /&gt;3.1 了解开发人员的测试心理&lt;br /&gt;&lt;br /&gt;u 测试的目的是找出尽可能多的缺陷。所以测试是“破坏性”的，而开发却是“建设性”的。开发人员总是喜欢欣赏程序的成功之处，而不愿看到失败之处。让开发者去做“蓄意破坏”的测试，就象杀自己的孩子一样难以接受。&lt;br /&gt;&lt;br /&gt;u 开发者对自己的程序印象深刻，并总以为是正确的（自信是应该的）。倘若在设计时就存在理解错误，或因不良的编程习惯而流下了隐患，他本人很难发现这类错误.&lt;br /&gt;&lt;br /&gt;u 开发者对自己的程序的功能、接口十分熟悉，他自己几乎不可能因为使用不当而引发错误，这与大众用户的情况不太相似，所以测试自己的程序不具备典型性。&lt;br /&gt;&lt;br /&gt;u 结论：开发人员应当测试自己的程序，这是他分内的工作。但是开发人员在测试自己的程序时，很难做到客观、公正，所以自我测试不具有说服力。&lt;br /&gt;&lt;br /&gt;3.2 如何组织测试人员：应当视企业的人力资源而定&lt;br /&gt;&lt;br /&gt;u 条件特别好的公司，可以为每一个开发人员分配一名独立的测试人员。这样的测试人员职业化程度很高，可以完成单元测试、集成测试和系统测试工作，能够实现开发与测试同步进行。&lt;br /&gt;&lt;br /&gt;u 条件比较好的公司，可以设置一个独立的测试小组，该测试小组轮流参加各个项目的系统测试。而单元测试、集成测试工作由项目的开发小组承担。&lt;br /&gt;&lt;br /&gt;u 条件一般的公司，养不起独立的测试小组。单元测试、集成测试工作由项目开发小组承担。当项目进展到系统测试阶段，可以从项目外抽调一些人员，加上开发人员，临时组织系统测试小组。&lt;br /&gt;&lt;br /&gt;u 条件比较差的公司，也许只有一个项目和为数不多的一些开发人员。那么就让开发人员一直兼任测试人员的角色，相互测试对方的程序。如果人员实在太少了，只好让开发者测试自己的程序，有测试总比没有测试好吧！&lt;br /&gt;&lt;br /&gt;3.3 避免开发人员与测试人员产生矛盾&lt;br /&gt;&lt;br /&gt;u 开发人员的注意事项：&lt;br /&gt;&lt;br /&gt;不要敌视测试人员。要理解测试的目的就是发现缺陷，是测试人员的工作职责。不要以为测试人员吃饱了没事干，存心找茬。&lt;br /&gt;&lt;br /&gt;不要轻视测试人员，别说人家技术水平差，不配搞开发只好搞测试。&lt;br /&gt;&lt;br /&gt;u 测试人员的注意事项：&lt;br /&gt;&lt;br /&gt;发现缺陷时不要嘲笑开发人员，别说他的程序真臭、到处是Bug。&lt;br /&gt;&lt;br /&gt;在开发人员压力太大时或心情不好时不要火上浇油，发现缺陷时别大声嚷嚷。&lt;br /&gt;&lt;br /&gt;u 请留意另一种极端：如果测试人员与开发人员的关系非常好，可能会导致在测试的时候“手下留情”，这对项目也是一种伤害。&lt;br /&gt;&lt;br /&gt;--to be continue&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-5342522641683062923?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/5342522641683062923/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=5342522641683062923' title='3 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5342522641683062923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/5342522641683062923'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_11.html' title='掌握有效测试软件的方法与技术(一)'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-6731934290077012037</id><published>2007-01-10T21:35:00.000+08:00</published><updated>2007-01-10T21:38:25.477+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活感悟'/><title type='text'>火车票不涨价，我们咋就受益了？</title><content type='html'>铁道部新闻发言人王勇平１０日透露，２００７年铁路春运各类旅客列车票价一律不上浮，以后春运也将不再实行票价上浮制度。  &lt;p&gt;    王勇平说，今年春运，铁路部门在各类旅客列车中均不再实行票价上浮，这一票价政策实行后将会使数千万旅客直接受益。  &lt;/p&gt;&lt;p&gt;    ２００６年春运铁路火车票票价上浮情况为：春节前１月２１日至２７日、春节后１月３１日起，硬座票价上浮１５％，其他席别上浮２０％。但以农民工、高校学生为主要客流的临时旅客列车票价没有上浮。  &lt;/p&gt;&lt;p&gt;    王勇平说，目前铁路运输能力仍很紧张，尤其在春运期间有的线路和方向无法全面满足旅客的出行需求。铁路部门将克服困难，全力挖潜扩能、精心组织调度，尽最大能力缓和运力与需求的矛盾，努力为旅客过一个愉快祥和的春节创造较好的旅行环境。  &lt;/p&gt;&lt;p&gt;    他同时呼吁，旅客应妥当安排出行时间，合理选择交通工具，尽可能避开客流高峰期出行。铁路部门届时将及时向社会发布旅客流向和运力配置的有关信息。  &lt;/p&gt;    ２００７年全国铁路春运方案显示，在２月３日至３月１４日的４０天春运里，预计铁路将发送旅客１．５６亿人次，较去年增长４．３％，客流高峰将超过历年春运 。&lt;br /&gt;&lt;br /&gt;来自&lt;a href="http://finance.163.com/07/0110/12/34FQ0SG600251OB6.html"&gt;网易新闻&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;这是怎么了，不涨价我们就受益了，那以前没涨价之前，我们难道是受到优惠了？？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-6731934290077012037?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/6731934290077012037/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=6731934290077012037' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6731934290077012037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/6731934290077012037'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_7872.html' title='火车票不涨价，我们咋就受益了？'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2928095469363947475</id><published>2007-01-10T13:35:00.000+08:00</published><updated>2007-01-12T13:44:35.607+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><title type='text'>Best Practices in Software Test Automation</title><content type='html'>What are Best Practices?&lt;br /&gt;&lt;br /&gt;Best practices are guidelines and advice on the best way to do something; collected over time and based on experience with previous projects. Best practices in an organization should come from the bottom of the organization up, rather than being mandated by management. These best practices might even differ from organization to organization, but certain key factors are present in successful organizations and projects. Discussed in this article are twelve of the most important practices that can assist you in ensuring successful implementation of functional test automation on your projects and in your organization.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 1: Know your objective&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;There are many good reasons for doing test automation.&lt;br /&gt;&lt;br /&gt;Test automation can save time, make testing easier, and improve the testing coverage. It can also help keep testers motivated; I can list a page of other benefits that can be derived from doing functional test automation. However, it is not likely that your organization will need to do all these things at the same time. Different groups typically have different hopes and ideas of what they want test automation to offer them. These need to be stated, or else disappointment is likely.&lt;br /&gt;&lt;br /&gt;A clear objective to work towards during test automation is highly important. It provides us with a compass heading towards which planning and implementation will be directed. Eventually, the results of the test automation implementation will be compared against the original objective to establish whether we did reach our goal or not.&lt;br /&gt;&lt;br /&gt;Mistakes made...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "Test automation is the answer to our testing problems"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Test automation assists in the testing process, and can therefore provide value to a test team. Certain benefits can be derived, but we need to know and understand exactly what they are without having false expectations or hopes. Automation is not a replacement for an inadequate test process or an inefficient test team. Address the testing problems prior to embarking on a costly test automation implementation. Automation's objective is definitely not to solve all testing problems in existence.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "Since we have limited time to test, let's use test automation."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Test automation takes 3 to 128 times longer to implement than manual testing, and therefore it should be properly planned to achieve the expected benefits. If time is of the essence, consider adding more resources to the test process (this also has limited benefits, and might not always be a solution) rather than embarking on the lengthy process of implementing test automation. Functional test automation is definitely not a quick solution to a test project in distress. Multiple other solutions are better suited to address this need.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 2: Test Automation requires a manual test process&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;"Success in test automation requires careful planning and design work, and it's not a universal solution. ... automated testing should not be considered a replacement for hand testing, but rather as an enhancement." (James Bach [pg. vii] in his foreword: Software Testing with Visual Test 4.0, Thomas Arnold II, IDG Books Worldwide Inc. Foster City, CA.: 1996. ISBN 0-7645-8000-0.)&lt;br /&gt;&lt;br /&gt;The words of James Bach and many others are quite clear on this subject. Test automation will not give you a correct testing process or methodology. It will not enforce a methodology or process. Test automation merely supports the test process; it will not replace the manual test process.&lt;br /&gt;&lt;br /&gt;Mistakes made ...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We need to implement testing in our projects. Let's buy a tool and automate the testing."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;You can script to your heart's content, if you do not have a proper manual test process in place the benefits of test automation will never be seen. It will only assist you in doing the incorrect process a lot faster. Test automation merely assists and enhances the test process itself. Ensure that a proper test methodology is implemented before attempting to add test automation.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We can just add the test automation to our current test process and start automating our current test scripts."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Test Automation requires test cases to support the automation process. If my test cases do not incorporate the all-important logon to the SUT (system under test), the automation script will need a lot of manual intervention, and would therefore be more manual than automated. The current test process might have to be changed, or adapted, to be implemented for the tool suite selected. Review and adapt the test process to ensure maximum benefit is realized from the tool suite to be used in your test process.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 3: The earlier the involvement in the Software Development Life Cycle (SDLC) the greater the benefits&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We all know how testing has its own phases aligned with the phases of the SDLC. The earlier testing gets involved in the life cycle of the project the better. Many articles have been written on this subject, and it holds true. Since test automation supports the testing process, the test team can get involved very early in the life cycle of a project. If the test team uses a test automation tool suite, they will most likely have a requirements management tool or test management tool included in the suite. These tools can assist the test team in various ways from an early stage in the development life cycle, even before a line of code is developed.&lt;br /&gt;&lt;br /&gt;The more mature techniques and methods of test automation are closely tied to the testing methodology being used. An early start to the test life cycle, at the start of the development project life cycle, is vital to achieving the best results, and ensuring maximum return on investment.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "The test automators cannot get involved in the project before the developers release the first build."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;A software development project does not start with code development. Since functional test automation is also a development project, as we will discuss in Best Practice 9, it follows the same phases as a software development project and does not start at the coding phase. Proper planning and design are essential to the success of the functional test automation implementation, and need to be conducted hand-in-hand with the test life cycle.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "Testing is only a single phase in the SDLC and therefore testers and test automation only need to be part of the project for the testing phase."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This 'prehistoric' misconception in the IT industry has been proven one of the major reasons for bad software quality.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 4: Test Automation is a fulltime effort&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When people are allowed to work on test automation on their own time, or as a back burner project whenever the test schedule allows, test automation becomes a sideline effort. Test Automation does not get the time and focus it needs.&lt;br /&gt;&lt;br /&gt;Getting into automated testing requires preparing not only yourself, but also your company and environment. This requires focus and dedicated resources.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We have a test automation tool. Can the test team see if they can use it?"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;It is clear that the expectation and an understanding of test automation is lacking. I can guarantee that the tool implementation will not be successful, and would result in almost no benefit to the test team. The test team is usually confronted with manual test work for development projects that does not meet the code delivery date for testing. The test automation implementation would probably be of the capture-record-and-playback form, and therefore the benefit would be low.&lt;br /&gt;&lt;br /&gt;Test Automation will require training for the staff involved with it. Time is required to design and implement the architecture. Referring to the development nature of functional test automation implementation, the team will have to learn a new skill set. Test automation implementation requires dedication and focus to ensure success. In this instance, it is better to not implement test automation than to allocate ad hoc time for experimentation.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 5: Select the correct product or suite of products&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Buying the wrong tool is listed as one of the major challenges in test automation, because - no matter what kind of process, methodology, or organisation you have - if the tool is not a good technical and business fit, it will not be used.&lt;br /&gt;&lt;br /&gt;We know that a good process and organisation are also essential for test automation. However, if the tool will not function at a basic level, the people who should use the tool, and thereby gain the benefit from the tool, will not use it.&lt;br /&gt;&lt;br /&gt;Unfortunately, too few people do adequate research before buying a test tool. Adequate research includes defining a set of tool requirements based on what the intended users of the tool need to accomplish, developing a set of evaluation criteria by which candidate tools will be judged, and taking the experience of other people who have used the tools into consideration.&lt;br /&gt;&lt;br /&gt;Select a tool that will allow you to implement automated testing in a way that conforms to your long-term testing strategy and test methodology.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "A vendor demonstrated a tool to us and it seems as if the tool will add value. I think we should buy it."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Take time to define the tool requirements in terms of technology, process, applications, people skills, and organisation. Then look at multiple tool vendors and select the right fit for your circumstances. A good idea would be to do a proof of concept project with the tool that best fits your criteria.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We purchased the whole suite of tools from the vendor, but are only using the functional test automation tool."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Test Automation tools are expensive, and to justify the Return On Investment (ROI) it is normally not effective and efficient to use only the functional test automation tool in the product suite. Other benefits can be derived from using the full suite of products; for example, proper defect management, metric reporting on test status, etc. Purchase what you need, or use what you have fully.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "The yearly license fees are so expensive we cannot afford to use the tool suite any more."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Too often test automation tools end up as 'shelf-ware' because of the cost of the licenses compared to the benefit derived. Refer to mistake two above for one of the reasons why the ROI is not being realised. Before signing the purchase order, be aware of the impact of annual licensing fees.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 6: Get executive management commitment&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Test automation can yield very substantial results, but requires a substantial commitment to be successful. Do not start without commitments in all areas, the most important being executive management.&lt;br /&gt;&lt;br /&gt;'Thomas R. Arnold II, VP at ST Labs, Inc., sums it up fairly well:&lt;br /&gt;"I would like to say up front ... that no test automation tool is a silver bullet. Automation takes time, effort, and commitment from all involved, including an understanding from management about the realities of what automation can and cannot do." ' 1&lt;br /&gt;&lt;br /&gt;Management support is needed in designing and deploying test processes that will support the effective use of test tools, reinforce the role and use of automated test tools in the organisation, and allow time for tools to be integrated in the testing process.&lt;br /&gt;&lt;br /&gt;Without management support, the entire test automation effort is at risk. If management does not - clearly and consistently - show their support for test automation, people will be less inclined to show interest in using the tools. This is a major concern, especially considering that overcoming the learning curve of some tools requires dedication.&lt;br /&gt;&lt;br /&gt;Perhaps the greatest challenge seen in management support is balancing the high expectations of tool benefits against the time, effort, and discipline it takes to implement the tool. Management may become impatient about the lack of tool progress and shift their support to other initiatives.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We thought these tools were going to solve your testing problems."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;When making the case to management for acquiring test tools, present the challenges as well as the benefits. Make sure that management understand their influence on how others will accept automated test tools.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We purchased a tool for you 3 months ago, and yet we cannot see any benefits in the project."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Communicate to management from the start that it takes time and planning to build a firm foundation of people, processes, and the right tools. Keep management informed of tool progress, and any issues that arise.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 7: Select the appropriate technique/s for the project&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;As maturity levels improve in the functional test automation field, we see a decrease in cost for test automation implementations, and an increase in benefits derived for the project or organisation.&lt;br /&gt;&lt;br /&gt;The increase in maturity levels has provided us with more mature techniques for implementing test automation. These techniques vary from the simplest record-and-playback to the most mature, viz., keyword or action based. These techniques each have their own benefits and drawbacks, appropriate for certain specific circumstances.&lt;br /&gt;&lt;br /&gt;During a small data conversion project, a few lookup data tables' contents in the old system need to be compared to the new lookup data tables' contents after the batch conversion. If this can be done via the enquiry functions of both systems, the fastest method might be record-and-playback. This is a once off test of the conversion, and writing specific scripts to do this might take longer than the record-and-playback method. In terms of cost and timing, the record-and-playback technique would be the most appropriate for this project. This is one of the few instances where I would suggest using the record-and-playback technique; most of the time the benefits of this technique are few compared to the more mature techniques like data-driven and keyword test automation.&lt;br /&gt;&lt;br /&gt;It is important to know, and be able to use, multiple techniques appropriately. If we do not use the various techniques when appropriate, our test automation will not provide us with the benefits we are aiming for.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "Record-and-playback is sufficient for our needs."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The benefits of this simplistic technique are few, and its application is widely misused. More mature techniques are available with exponentially more benefits in terms of ease of use, cost saving, and time saving if implemented correctly.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We have created our test cases for the project and are approaching the release of the first build. Can we implement keyword test automation before the end of the project."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Keyword test automation is a very advanced test automation technique, and is closely tied to the testing methodology being used for the project. The preparation work for implementing keyword test automation requires more time than some other techniques. The framework needs to be established, and test design needs to support the method. I would not suggest implementing the method from scratch at this late stage of the project.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 8: Do not attempt to automate all tests&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Test Automation does not work well for all situations or tests. Some tests are better left for manual execution. If a test will not be repeated more than three times, it is probably not a good candidate to automate. It takes a lot longer to automate a test than to execute it manually. The benefit of the automated tests is linked to how many times it would be repeated. For example, multiple builds, or testing on multiple platforms, or executing the same test for multiple data sets.&lt;br /&gt;&lt;br /&gt;Software that is tested manually will be tested with a randomness that helps find bugs in more varied situations. Since a software program usually will not vary, automated testing may not find some bugs that manual testing will. Automated software testing is never a complete substitute for manual testing.&lt;br /&gt;&lt;br /&gt;Proper analysis needs to be done to identify the correct test cases to automate to ensure ROI for the effort. How to select tests for automation is a subject on its own, but the following suggestions can be helpful:&lt;br /&gt;&lt;br /&gt;1. Perform a proof-of-concept (POC) on a cross section of test cases for the system to determine technical applicability and return on investment (ROI) metrics.&lt;br /&gt;&lt;br /&gt;2. Perform an ROI analysis for each testing regimen to select automation candidates.&lt;br /&gt;&lt;br /&gt;3. Perform a risk analysis on the automation candidates to prioritise what should be automated first.&lt;br /&gt;&lt;br /&gt;If the tests selected for functional test automation are identified and prioritised, the test cases with the best potential to provide benefit will be automated first. If time constraints affect the test automation delivery, at least we know the largest possible benefit would be derived.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "It was so much fun that we automated all the tests."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;It might have been fun, but the ROI was definitely not optimal. Time spent on automation of certain tests would never be recovered. A general rule of thumb would be never to automate more than 60% of your test cases to ensure maximum benefit with the lowest investment cost.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 9: Manage the automation as a development project&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Test Automation development is a software development process, although it is seldom treated that way. Following software development practices can make the difference between the success and failure of an automated testing project.&lt;br /&gt;&lt;br /&gt;We need to run test automation projects just as we do our other software development projects. The following pertains to test automation projects, and is true for development projects:&lt;br /&gt;&lt;br /&gt;· Projects need developers dedicated to developing test automation.&lt;br /&gt;&lt;br /&gt;· Test automation automates a task in which the programmer is probably not an expert. Therefore, expert testers should be consulted and provide the requirements.&lt;br /&gt;&lt;br /&gt;· Test automation benefits can be seen if we design our approach before we start coding.&lt;br /&gt;&lt;br /&gt;· Test automation code needs to be tracked and safeguarded. Therefore, we need to use source code management.&lt;br /&gt;&lt;br /&gt;· Test automation will have bugs. Therefore, we need to plan to track them, and test for them.&lt;br /&gt;&lt;br /&gt;· Users will need to know how to use it. Therefore, we need user documentation.&lt;br /&gt;&lt;br /&gt;The type of work done during test automation is software code development, and since these are programs, they must be managed in the same way that application code is managed.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "When the code is complete, give it to the testers so they can implement test automation."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Why would we follow a phased approach to software development, but not with test automation script development? We should enforce the same stringent processes and phases on test automation scripters as on developers… and the scripts need to be tested.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "You don't need to follow all the phases of the software development life cycle with test automation."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The fact that we are writing software to test software, and not to perform some business scenario, does not mean the method is different. What is important for the one is important for the other; both are software development projects.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 10: Use the correct resources&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;One area consistently missed by organisations desiring to automate testing is the staffing issue.&lt;br /&gt;&lt;br /&gt;Automated testing is different from other types of testing:&lt;br /&gt;&lt;br /&gt;1. Most tools use procedural languages to create their scripts.&lt;br /&gt;&lt;br /&gt;2. These tools are very similar to IDEs (Integrated Development Environments).&lt;br /&gt;&lt;br /&gt;3. Debugging scripts is the same as debugging traditional software.&lt;br /&gt;&lt;br /&gt;…and therefore, resources are going to need:&lt;br /&gt;&lt;br /&gt;· academic-level knowledge of procedural coding languages,&lt;br /&gt;&lt;br /&gt;· basic knowledge of coding practices and procedures, and&lt;br /&gt;&lt;br /&gt;· in-depth knowledge and practical experience with the tool being used for the test automation.&lt;br /&gt;&lt;br /&gt;Because of this and because 'record-and-playback' (which generally does not require learning the back-end scripting) is not a valid way to automate most tests, the use of these tools becomes like that of a development effort. Given that such is the case, there must be support within the organisation to realise this and hire staff accordingly, as well as giving the necessary time for the development.&lt;br /&gt;&lt;br /&gt;To accomplish this, a Test Automation Tool Specialist, or similar, position must be created, and staffed with at least one senior-level programmer. It does not really matter in what languages the programmer is proficient; what is important is that this person must be capable of designing, developing, testing, debugging, and documenting code.&lt;br /&gt;&lt;br /&gt;Test Automation is a combination of testing and development. To mentor and teach your team and resources, use consultants as appropriate to bootstrap your effort. Learn as much as possible from theses consultants to enable you to avoid the stumbling blocks, and proceed successfully with your automation effort after they depart.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We sent our testers on a test automation course, and they still can't implement proper test automation scripts."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Learning the test tool Integrated Development Environment (IDE) does not make you a good scripter. A 3-day course will not teach you programming principles. Mentoring by a developer can accelerate the learning process. Add a person to the test team who is a test scripter. This person should be comfortable working with code, and be able to take the basic test designed by a test analyst and convert it into an automated script.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "The testers did attend the vendor training."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The vendor training will train your staff in the product. Teaching someone Microsoft's development studio will not make them a code writer or programmer. The person will merely know how to use the IDE to write code. It is going to require more than just vendor training to turn your staff into test automators. I suggest hiring a test automation consultant to assist with getting the test team out of the starting block. The consultant can train and mentor your staff, and teach them how to avoid the most common pitfalls. Start the team with simple basic scripting concepts, and add complexity later.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 11: Develop for maintenance&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Without proper automation architecture planning and design the test team will soon find itself with hundreds or thousands of test scripts, thousands of separate run result files/logs, and the combined work of maintaining the existing scripts for various versions of the system, as well as creation of new scripts for new enhancements. Soon they will find themselves with a maintenance nightmare.&lt;br /&gt;&lt;br /&gt;To avoid the maintenance problems that so many organisations succumb to, the following pointers can help:&lt;br /&gt;&lt;br /&gt;· Create a reusable architecture.&lt;br /&gt;&lt;br /&gt;· Develop generic, cross application initialisation and configuration parameters.&lt;br /&gt;&lt;br /&gt;· Create reusable, cross application functions.&lt;br /&gt;&lt;br /&gt;· Design test scripts by assembling components.&lt;br /&gt;&lt;br /&gt;Avoid the creation of disposable automation through proper planning and design of your test automation implementation.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We did not design with maintenance in mind."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;If you did not start your test automation with a design for maintenance, you have probably already become a victim of the maintenance nightmare. Review your current scripts and determine what amount of script/code snippets can be reused if you implement a different approach (maintenance focused). If the amount of rework is large, it might be better to restart your effort with the correct approach in mind.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "No standards were followed in script creation."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This will also result in difficulty during the maintenance phase; or if the resource that created the scripts leaves for greener pastures. Coding and scripting standards allow for ease of maintenance for the whole team. Different people can understand each other's scripts with ease, and when someone leaves the team it is not the end of the world. When test automators return to scripts that they have not worked on for a while it is also easier to understand what they did the first time round. This leads to a reduction in script maintenance time.&lt;br /&gt;&lt;br /&gt;Start to implement standards and good coding practices for the test automators or scripters in your project/organisation. It is never too late to start with this practice.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Best Practice 12: Review and improve implementation process after each project&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Development practices suggest having 'post-mortems' at the end of a project. This holds true for the test automation project as well. The following information will surface during a 'post-mortem':&lt;br /&gt;&lt;br /&gt;· New ways to deal with specific issues that were discovered during the project may be suggested.&lt;br /&gt;&lt;br /&gt;· Experiences gained will provide insight into changes required for the current process or architecture in use.&lt;br /&gt;&lt;br /&gt;· Ideas may emerge that may enhance and make the current process more efficient.&lt;br /&gt;&lt;br /&gt;· Metrics to be reviewed may provide valuable information for the enhancement of processes.&lt;br /&gt;&lt;br /&gt;· Further training or mentoring needs may emerge.&lt;br /&gt;&lt;br /&gt;Use the information from the 'post-mortem' to learn and adapt your processes and best practices to gain maximum benefit from your test automation implementation.&lt;br /&gt;&lt;br /&gt;Mistakes made…&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "We are still implementing test automation in the same manner as we did on our first test automation project in the organisation."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;It is clear that the team/organisation is not learning from its experiences. Learning from our experiences allows us to change our ways for the better, adapt processes for maximum benefit, and make life easier for ourselves. The test team needs to review what works for them and what does not, and adapt their methods to improve for future projects.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;· "What benefits did we derive from this automation effort."&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;This should be easy to answer if we followed Best Practice 1: Know your objective. We set out with a goal in mind and, while we implemented the test automation, we worked towards our goal. At the end of the project, we should know if we achieved what we set out to do. If we cannot answer, it is time to implement Best Practice no. 1.&lt;br /&gt;&lt;br /&gt;Conclusion&lt;br /&gt;&lt;br /&gt;Once you determine your company profile, perfect your processes, establish test specialists, give the team members appropriate testing tools, and follow the best practices laid out in this article; your company can realise the benefits of automated software testing. When compared to manual testing, properly applied automation will result in higher quality products, lower risk to your company, faster approval, and decreased time to market.&lt;br /&gt;&lt;br /&gt;The higher level you reach on the automated software testing maturity ladder, the more benefits you will realise. Whatever level you choose, however, keep in mind a major lesson of the past few decades: No matter what tools you buy, your largest investment by far will be in the processes and people you put in place to use those tools.&lt;br /&gt;&lt;br /&gt;Use the best practices as specified by those who have travel-led the path to successful test automation implementation, and adapt these practices to fit your organisation's individual needs by learning from your test automation implementation.&lt;br /&gt;&lt;br /&gt;By Henk Coetzee&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2928095469363947475?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2928095469363947475/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2928095469363947475' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2928095469363947475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2928095469363947475'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/best-practices-in-software-test.html' title='Best Practices in Software Test Automation'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-4935055384045178593</id><published>2007-01-10T13:13:00.000+08:00</published><updated>2007-01-12T13:37:31.835+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='转载系列'/><category scheme='http://www.blogger.com/atom/ns#' term='软件测试'/><category scheme='http://www.blogger.com/atom/ns#' term='测试工具'/><title type='text'>开源测试工具的完整解决方案</title><content type='html'>开源软件运动正在获得很大成功，正在改变软件业的开发模式、运营方法等，也自然改变着软件测试的方法，借助开源软件测试工具完全可以构造一个完整的测试解决方案，可以极大地提高测试效率，又能大大的降低测试成本。从单元测试、功能测试到性能测试，从Web页面测试到VoIP/Telephony等一些多媒体应用的测试，直至测试的管理平台和缺陷跟踪系统，能覆盖整个测试工作领域。&lt;br /&gt;&lt;br /&gt;1. 测试模型：见 开源软件测试模型 ，阐述了开放源码软件测试模型框架以及环境、元素和技术等。&lt;br /&gt;&lt;br /&gt;2. 单元测试工具：JUint (大家太熟悉了）- see: http://www.junit.org/index.htm&lt;br /&gt;针对各种语言 （C/C++/C#, PHP, SQL ） Cactus， Cgreen, Check, CppTest, NUnit, NUnitForms , PHPUnit, SQLUnit, ...还有针对各种对象(HTTP, XML, Database, ) 进行的单元测试：HttpUnit, XMLUnit, DBUnit, ObjcUnit, SIPUnit, ...Mockrunner用在J2EE环境中进行应用程序的单元测试,不仅支持Struts actions, servlets，过滤器和标签类还包括一个JDBC和一个JMS测试框架，可以用于测试基于EJB的应用程序。&lt;br /&gt;&lt;br /&gt;3. Web 功能测试 : 要数 Selenium，see: 强大的Web开源测试工具—Selenium&lt;br /&gt;再结合 Ant, EMMA 一起使用就更完美了， see：使用 EMMA 测量测试覆盖率&lt;br /&gt;又如：Canoo WebTest,&lt;br /&gt;功能测试工具很多，可以发现多达几十个：http://www.opensourcetesting.org/functional.php&lt;br /&gt;&lt;br /&gt;4. Java 客户端，可以使用 Abbot， see: http://abbot.sourceforge.net/doc/overview.shtml&lt;br /&gt;Abbot是一个用来测试Java GUIs的框架, 用简单的基于XML的脚本或者Java代码，就可以开始一个GUI.&lt;br /&gt;&lt;br /&gt;5. 性能测试， 著名的有 Jmeter 和 OpenSTA，使用都很方便&lt;br /&gt;Jmeter可以完成针对静态资源和动态资源（ Servlets, Perl脚本, Java对象, 数据查询s, FTP服务等）的性能测试。 Jmeter 可以结合 Badboy 来使用，录制测试脚本。&lt;br /&gt;性能测试工具很多，可以访问 http://www.opensourcetesting.org/performance.php&lt;br /&gt;&lt;br /&gt;6. 数据库测试： DBMonster, DBProbe, OraRep, phpMyAdmin&lt;br /&gt;OSDL Database Test Suite, 是根据Linux开发人员需要而开发的测试框架中数据库测试工具套件，具有很好的实用价值。 see: http://www.osdl.org/lab_activities/kernel_testing/osdl_database_test_suite/&lt;br /&gt;More: http://dbcommander.sourceforge.net/&lt;br /&gt;&lt;br /&gt;7. 多媒体(VoIP/Vedio)、IP电话 等测试Ethereal, AuthTool, ... SIPp, Sofia SIP, ... Seagull, ... Asterisk - the Open Source PBX，X-Lite&lt;br /&gt;其中经常使用的有：Ethereal, SIPp 和 Seagull。而Asterisk 不仅可以作为测试工具，还可以构造企业内部电话网络。&lt;br /&gt;更多的还有：http://voipsa.org/Resources/tools.php&lt;br /&gt;&lt;br /&gt;8. 网络安全性测试&lt;br /&gt;#1 Nessus : Premier UNIX vulnerability assessment tool&lt;br /&gt;#2 Wireshark : Sniffing the glue that holds the Internet together&lt;br /&gt;#3 Snort : A Everyone's favorite open source IDS&lt;br /&gt;#4 Netcat : The network Swiss army knife&lt;br /&gt;还有许多网络监控工具，pls visit: http://www.slac.stanford.edu/xorg/nmtf/nmtf-tools.html&lt;br /&gt;&lt;br /&gt;9. 缺陷跟踪&lt;br /&gt;Bugzilla一款不错的软件缺陷管理工具&lt;br /&gt;Mantis是一款基于WEB的软件缺陷管理工具，配置和使用都很简单，适合中小型软件开发团队&lt;br /&gt;&lt;br /&gt;10. 测试平台&lt;br /&gt;TestMaker (solve functionality, scalability and performance of services)- http://www.pushtotest.com/&lt;br /&gt;Eclipse Test &amp; Performance Tools Platform (TPTP 4.3)&lt;br /&gt;&lt;br /&gt;11. Reference&lt;br /&gt;http://www.eclipse.org/tptp/&lt;br /&gt;http://sourceforge.net/search/?type_of_search=soft&amp;amp;words=Test+Tool&lt;br /&gt;http://www.opensourcetesting.org&lt;br /&gt;http://testingfaqs.org/&lt;br /&gt;http://www.pushtotest.com/&lt;br /&gt;http://www.openqa.org/&lt;br /&gt;http://www.aptest.com/webresources.html&lt;br /&gt;&lt;br /&gt;注：测试自动化可以做到90％或更高，但也不能完全代替手工测试。&lt;br /&gt;&lt;br /&gt;参考：&lt;br /&gt;"Test Automation Snake Oil" (James Bach, http://www.satisfice.com/articles/test_automation_snake_oil.pdf )&lt;br /&gt;"Automation Myths" (M. N. Alam, http://www.benchmarkqa.com/PDFs/automation_myths.pdf )&lt;br /&gt;"When Should a Test Be Automated?" (Brian Marick, http://www.stickyminds.com/r.asp?F=DART_2010 )&lt;br /&gt;&lt;br /&gt;转载朱少民老师的博客&lt;&lt;a href="http://blog.csdn.net/kerryzhu"&gt;软件测试和质量专栏&lt;/a&gt;&gt;&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-4935055384045178593?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/4935055384045178593/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=4935055384045178593' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4935055384045178593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/4935055384045178593'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_10.html' title='开源测试工具的完整解决方案'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-1048429569089274121</id><published>2007-01-10T10:32:00.000+08:00</published><updated>2007-01-10T10:46:55.600+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='推荐软件'/><title type='text'>如何利用Google Analysis优化你的网站</title><content type='html'>免费注册并利用Google Analysis分析并优化你的网站,有助于提高网站的访问量.&lt;br /&gt;&lt;br /&gt;今天Google Blog上推出了&lt;a href="http://googlechinablog.com/2007_01_01_archive.html"&gt;一篇这样的文章&lt;/a&gt;,仔细阅读了一下,发现以前对这个工具的理解还不够彻底.&lt;br /&gt;&lt;br /&gt;自从上个月在&lt;a href="http://www2.blogger.com"&gt;Blogger&lt;/a&gt;上注册自己的博客以来,通过&lt;a href="http://www.google.com/analytics/zh-CN/"&gt;Analysis&lt;/a&gt;分析,先后有过几次访问的高峰.&lt;br /&gt;&lt;br /&gt;1. 在&lt;a href="http://bbs.51testing.com"&gt;51testing&lt;/a&gt;上发表并回复了一些帖子,并在后面留下了博客地址,结果访问量增加很厉害,说明51的朋友很关心技术,另外从一个侧面反映现在软件测试行业发展很快.&lt;br /&gt;2. 在&lt;a href="http://www.eygle.com"&gt;eygle的blog&lt;/a&gt;上留了几次言,结果来自eygle的访问量也有稳定的增加, eygle的博客一直人气比较旺, :)&lt;br /&gt;3. 我把自己的博客地址提交到google以后,来自google的搜索用户一直很多,多数是一些技术问题,比如sed,&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/blog-post_21.html"&gt;软件测试发展&lt;/a&gt;,&lt;a href="http://rickyzhuengineer.blogspot.com/2007/01/blog-post_7443.html"&gt;质量保证&lt;/a&gt;,&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/tcl.html"&gt;tcl语言&lt;/a&gt;等等,说明技术是真正吸引用户来源的真正力量.&lt;br /&gt;4. 还有就是&lt;a href="http://googlechinablog.com"&gt;google的博客&lt;/a&gt;,最早引用了一篇&lt;a href="http://rickyzhuengineer.blogspot.com/2006/12/google.html"&gt;google的blog&lt;/a&gt;,结果来自这个blog的访问一直断断续续,呵呵,说明google blog的更新速度有待提高,这也是很多人诟病googlechinablog的一个原因. 呵呵, 我这是典型的因祸得福.&lt;br /&gt;&lt;br /&gt;先说这么多. 以后继续增加宣传;多充实内容. 两手都要抓,两手都要硬.&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-1048429569089274121?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/1048429569089274121/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=1048429569089274121' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1048429569089274121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/1048429569089274121'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/google-analysis.html' title='如何利用Google Analysis优化你的网站'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-2067881656702921769</id><published>2007-01-09T13:32:00.000+08:00</published><updated>2007-01-09T13:54:10.004+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='推荐软件'/><title type='text'>Firefox的几款优秀插件</title><content type='html'>Firefox之所以能不断抢占IE的市场,并且得到越来越多人的喜爱的原因之一是有一系列功能强大和&lt;a href="https://addons.mozilla.org/"&gt;丰富多彩的插件&lt;/a&gt;,我已经脱离IE的振营,改投Firefox两个月之久了,现在给大家推荐几款我日常用的最多的插件:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="https://addons.mozilla.org/firefox/3755/"&gt;GUtil!&lt;/a&gt;&lt;br /&gt;首先要说的,就是这个集成了所有Google服务的GUtil!插件,有点类似于一键上网,基本上所有Google提供的服务,都可以以最快的方式访问,这对于象我这样的Google迷来说,无疑是个好消息.&lt;br /&gt;&lt;br /&gt;2. &lt;a href="http://releases.mozilla.org/pub/mozilla.org/extensions/mailman/mailman-2.0-fx+fl.xpi"&gt;MailMan&lt;/a&gt;&lt;br /&gt;提供包括Gmail, MSN和Yahoo,以及自定义pop3邮箱的实时查看和收信. 别提多方便, 另外还有一些常用的工具都可以集成进来,比如写字板,记事本,计算器,MSN等等. 另外提供了一个方便的本地天气预报功能,可谓天下气象尽在掌握.&lt;br /&gt;&lt;br /&gt;3. &lt;a href="https://addons.mozilla.org/firefox/1419/"&gt;IETab&lt;/a&gt;&lt;br /&gt;有些网站因为设计的局限,可能兼容性并不是那么好,如果要想完全脱离IE,进入Firefox,有时候还有些迫不得已. 现在好了,有了IETab,这个问题彻底解决,用IE的内核在firefox中打开你想打开的网站.&lt;br /&gt;&lt;br /&gt;4. &lt;a href="https://addons.mozilla.org/firefox/201/"&gt;DownThemAll!&lt;/a&gt;&lt;br /&gt;这又是一款我超级稀饭的插件, 可以从当前页面中把所有的文件通通下载下来,文件的格式可以自己定义,比如所有的.mp3, .doc, .htm, .jpg或者之类的. 另外还可以支持正则表达式. 真可谓"只有想不到,没有做不到",超级稀饭!!&lt;br /&gt;&lt;br /&gt;5. &lt;a href="https://addons.mozilla.org/firefox/684/"&gt;FireFTP&lt;/a&gt;&lt;br /&gt;另外一款我超稀饭的插件,以前安装了一些远程下载工具和ftp工具,不是因为license就是太慢,而且经常过期,实在不方便,自从有了FireFTP,就可以把本机的所有FTP工具卸载, 滚蛋去吧. FireFTP, FireFTP, FireFTP,不要给其他的FTP工具任何机会!!... (此处省略200字)&lt;br /&gt;&lt;br /&gt;6. &lt;a href="http://www.foxytunes.com/firefox/download/"&gt;FoxyTunes&lt;/a&gt;&lt;br /&gt;内嵌的播放器,可支持广泛的类型,rm,mp3,wmv等等,还是那句话,只有想不到,没有做不到.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今天就先介绍这么多,还有其他一些比较好的插件, fasterfox, adblock plus等等,如果你善于发现,就去这里找找吧. 祝你好运~&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-2067881656702921769?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/2067881656702921769/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=2067881656702921769' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2067881656702921769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/2067881656702921769'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/firefox.html' title='Firefox的几款优秀插件'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-7111303455412656071</id><published>2007-01-08T21:54:00.000+08:00</published><updated>2007-01-08T22:13:05.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='质量保证'/><title type='text'>&lt;软件质量控制&gt;读书笔记--合同评审</title><content type='html'>如何区别两个合同评审阶段：&lt;br /&gt;建议草案评审。这个阶段评审最终建议草案及其基础：顾客的需求文档，顾客对需求的详细解释，费用与资源评估，同合伙商和分包商已有的合同等。&lt;br /&gt;合同草案评审。这个阶段在后续谈判其达成的理解和建议的基础上评审合同草案。&lt;br /&gt;&lt;br /&gt;每个合同评审阶段的目标：&lt;br /&gt;建议草案评审目标如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;已经考察了完成项目的替代途径。&lt;/li&gt;&lt;li&gt;已经明确顾客与软件公司之间关系的正式方面。&lt;/li&gt;&lt;li&gt;开发风险的识别。&lt;/li&gt;&lt;li&gt;已经充分估计项目资源和进度。&lt;/li&gt;&lt;li&gt;对公司完成项目的能力的考察。&lt;/li&gt;&lt;li&gt;合伙商和分包商参与的确定。&lt;/li&gt;&lt;li&gt;专有权利的确定和保护。&lt;/li&gt;&lt;/ul&gt;合同草案评审目标如下：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;合同草案中没有留下未澄清的问题&lt;/li&gt;&lt;li&gt;在建议之后达成的所有理解正确的文档化。&lt;/li&gt;&lt;li&gt;没有将任何“新“的更改，补充或者遗漏放到合同草案中。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;为进行正确的重大合同评审，应当遵守下列指南：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;合同评审应该是建议编制进度安排的一部分。&lt;/li&gt;&lt;li&gt;合同评审因该有一个小组执行。&lt;/li&gt;&lt;li&gt;应当制定合同评审组的组长。&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;一些小的对内项目也应该进行合同评审：&lt;br /&gt;在内部顾客和内部开发者之间维持的松散关系增加了项目失败的可能性。这种倾向可通过确定草案编制的适当规程和应用针对外部合同评审的相同指南而降低。&lt;br /&gt;(待续)&lt;br /&gt;&lt;br /&gt;--end&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1788769222070257547-7111303455412656071?l=rickyzhuengineer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rickyzhuengineer.blogspot.com/feeds/7111303455412656071/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1788769222070257547&amp;postID=7111303455412656071' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7111303455412656071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1788769222070257547/posts/default/7111303455412656071'/><link rel='alternate' type='text/html' href='http://rickyzhuengineer.blogspot.com/2007/01/blog-post_1979.html' title='&lt;软件质量控制&gt;读书笔记--合同评审'/><author><name>天行健,君子当自强不息</name><uri>http://www.blogger.com/profile/01691756180815445752</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1788769222070257547.post-5724495610523461798</id><published>2007-01-08T21:33:00.000+08:00</published><updated>2007-01-08T21:42:34.555+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='宝贝儿子'/><title type='text'>妈妈亲自织的小帽子</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/ricky.zhu/RaJHbHeXSbI/AAAAAAAAAOI
