<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[师人长技以自强]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[软件测试,测试，ruanjianceshi]]></description>
<link>http://hi.baidu.com/ruanjianceshi</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[OA办公自动化系统测试方案]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e79784e3b70cf6cba.html]]></link>
        <description><![CDATA[
		
		<div class="t_msgfont" >
<p><font size="3">办公自动化系统擅长处理类似公告、公文等流转类型的行政办公类应用需求、设计及相对独立的个人相关资料、通讯录、记事本等个人事务类的需求、设计。另外办公自动化系统软件的权限管理是其不同于其他应用软件的另外一个特点。系统需要为使用人员提供设置不同的权限和访问许可的功能，管理员可以通过调整各功能模块的访问权限，设置一般用户某些功能可以用，某些功能不允许用；并为员工创建、注销帐号及访问权限。提高了企业系统的资料的安全度，阻止非授权人的非法进入系统。针对这些特点我们在测试时主要着重于对流转型的行政办公需求、设计和对独立型的个人事务需求和设计来组织测试工作。</font></p>
<p><font size="3">一、测试方法：<br>
   从整体来OA办公自动化系统一般包括公文管理、网上审批、个人信息管理、以及公共信息管理四个大的模块，在对每个模块的测试过程中我们将针对对每个模块的需求、特点分别采用不同的方法，具体在以后的测试过程中我们将采用以下方法：<br>
1、公文管理、网上审批：<br>
    公文管理和网上审批都是以流转型业务为主，在此对于此类功能点我们将以收文管理为例，简要说明我们测试过程所采用的方法方案。<br>
    例如oa公文管理主要对公文进行登记和处理。在登记收文过程中直接输入，并将登记后的收文送领导阅读或批示（批示的流程完全可以根据用户的需要自己定义，也可以使用系统管理员已经定义好的公文批示流程），处理结束后将文件进行归档。管理人员可以对收文处理全过程进行监督、催办、重定位，也可以随时进行文件流程跟踪及查看其所有领导的批示意见、批示时间。针对这些情况，在进行测试分析和设计时，我们首先按照上面提到的根据现成的公司体制进行分析和设计的测试数据，然后将各个领导是否兼职的情况区分开来。测试过程中我们准备了两套数据：<br>
1) 领导不兼职<br>
领导不兼职的情况， 相对较简单， 即每个领导只负责一个批示。<br>
2) 领导兼职<br>
领导兼职的情况，即每个领导可能负责不同过程中多个批示，这是流转型模块测试的一个难点，因此在测试过程中我们对此进行了重点测试。<br>
2、个人事务 <br>
    个人事务通常包括：待办工作、日程安排、个人资料、个人通讯录、个人记事本、外出声明等模块。例如批阅各部门上报的各种公文，评阅同事交流的各种文件内容，起草各类报告，查看个人的活动日程、外出等安排，同时系统能自动提醒待办事项。<br>
   以个人通讯录为例，用户可将朋友、同事名片登记并进行管理查询。每个人只能看到自己的通讯录，通过对所有个人通讯录的查询，自己可很快地找出所需要联系的人员信息，并方便地通知他们参加会议或发送邮件等等。在进行测试分析、设计和执行中我们将特别考虑以下几点：<br>
1) 新建或修改通讯录时对于输入重复的信息系统是否给予提示警告；<br>
2) 新建或修改信息时个人维护的私有名片是否能被其他人看到或修改；<br>
3) 个人删除私有通讯录信息时是否影响到其他用户的通讯录信息； <br>
4) 需要联系的通讯信息主人联系时，是否可以正确联系上，其联系内容是否显示正确；<br>
3. 公共信息管理<br>
公共信息通常分两部分：一部分为一般用户的浏览操作，在此用户只能浏览、查阅。一部分为管理级别的用户，他们有权限添加、修改、编辑、删除相应的功能信息<br>
在进行测试分析、设计和执行时要重点考虑：<br>
1) 对规章制度的权限操作（管理员用户和一般用户）<br>
2) 规章制度的套红头操作。<br>
3) 规章制度浏览时的不可修改性。<br>
4.系统基础信息<br>
    基础服务包括： 人员注册、部门设置、组织结构调整、OA基础信息维护等模块。在此以基础数据维护为例：OA系统为系统的管理员提供了多项数据维护的服务。可以对一些常用的数据进行设置，包括用户登录名/用户密码组合方式、用户登录名/用户密码长度、主题词、常用意见、公文类型、文件套红模板、存储时间和公文格式等基础信息进行维护。<br>
在进行测试分析、设计和执行时要特别考虑：<br>
1) 用户登录名/用户密码组合方式设置是否正确；<br>
2) 用户登录名/用户密码长度设置是否正确、有效；<br>
3) 存储大小设置是否正确、有效； 对于超出设定的存储大小系统是否能正确提示；<br>
5、测试策略<br>
在测试时对于功能性验证测试，采用黑盒测试方法。测试将覆盖OA系统所涉及的所有功能模块。在对非流程功能测试时将采用边界值法，一般将准备两组数据，一组正常数据，一组非正常数据（边界数据或者非法数据），对带流程的功能点，采用场景法，进行验证测试，测试过程总围绕主干流程进行，也要考虑到分支流程对主干流程的影响，每个流程都分别涉及了多种测试路线，力争最大程度的模拟现场办公。<br>
办公自动化OA系统是基于协同工作流架构，采用B/S了结构主要以网页页面的方式来展现、实现系统设计功能，因此在测试时我们将按照web页面测试标准和方法对其功能界面进行测试验证重点对其直观性、一致性、灵活性和舒适性四个方面进行系统测试。具体如下：<br>
    对其直观性测试主要是看用户界面是否洁净，不唐突，不拥挤，界面不应该为用户制造障碍。所需功能或者期待的响应应该明显，并在预期出现的地方。<br>
对其一致性的测试主要查看菜单选项，以及在Windows 中按F1键总是得到帮助信息 ，整个软件使用术语或者特征命名是否一致? 页面上各种功能的布局是否和日常操作一致。<br>
    对其灵活性测试主要是测试其在选择人员的操作和委托任务时的方便性，以及数据输入和输出方便性等。<br>
  &nbsp;&nbsp;&nbsp; 对其舒适性测试主要测试软件外观和感觉是否与所做的需求工作和使用者要求相符， <br>
程序是否在用户执行错误的操作之前提出警告，并允许用户恢复由于错误操作导致丢失的数据。 <br>
具体测试时对主要页面元素进行了以下内容的验证测试<br>
&Oslash;背景/色调 是否正确、美观，是否符合用户需求； <br>
&Oslash;页面在窗口中的显示是否正确、美观（在调整浏览器窗口大小时，屏幕刷新是否正确）表单样式 大小，格式，是否对提交数据进行验证（如果在页面部分进行验证的话）等<br>
&Oslash;页面元素的容错性列表（如输入框、时间列表或日历）； <br>
&Oslash;页面元素清单（为实现功能，是否将所需要的元素全部都列出来了，如按钮、单选框、复选框、列表框、超链接、输入框等等）；<br>
&Oslash;页面元素的容错性是否存在； <br>
&Oslash;页面元素的容错性是否正确； <br>
&Oslash;页面元素的外形、摆放位置（如按钮、列表框、核选框、输入框、超链接等）； <br>
&Oslash;页面元素是否显示正确（主要针对文字、图形、签章）。<br>
元素是否显示（元素是否存在）</font></p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e79784e3b70cf6cba.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-03  22:54</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e79784e3b70cf6cba.html</guid>
</item>

<item>
        <title><![CDATA[征途 2008-8-20]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/8b1039123546db57f819b8af.html]]></link>
        <description><![CDATA[
		
		<p>8月20号正式提出了辞职的意向，再呆上两个月左右也就离开了 。犹豫了很久，最终还是决定说出去并执行它，毕竟，事情总是要解决，要有了断的。</p>
<p>总体感觉还是有些感伤，北京是我学习过、生活过且已经熟悉的地方，但是现在决定离开这里，总有一些伤怀的。</p>
<p>公司的意思也是很想挽留，但是并不是物质和地位上的提升所能解决的，为了我所爱的人，我想，总是会有所取舍的。</p>
<p>公司对我而言，我认为，还是很有感情的，刚进公司的一切还历历在目，经历的很多事情，从无到有的创建测试部门，对于每次每次的测试项目的执行监督，产品的测试把关，那些没白没黑的日子里的通宵加班，感受到了很多，认识了很多的人，接触了很多的事情，学会了很多的经验，我想，这也是我的一本很大的人生财富吧。</p>
<p>离开这里的环境 ，还有很多的朋友、同事，去开创新的未来之路，充满新奇，但，我也乐于去接受、去</p>
<p>感受一下上海的风情和文化。体验一下新思想和新思路的洗礼，未尝不是一件坏事。</p>
<p><font color="#000000">&ldquo;生活太安逸了,工作就被生活所累了&rdquo;，我还是希望一种进取、学习、向上的状态的。。。。</font></p>
<p>我想，我踏上了一条充满新奇和挑战的征途。。。</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%BB%A8%D0%F5">花絮</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/8b1039123546db57f819b8af.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-24  00:09</pubDate>
        <category><![CDATA[花絮]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/8b1039123546db57f819b8af.html</guid>
</item>

<item>
        <title><![CDATA[意识流]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/b7add1c8edb691117f3e6ff9.html]]></link>
        <description><![CDATA[
		
		<p>学习或旅行；</p>
<p>坚强的心；</p>
<p>抛下过去的阴影，影响崭新的未来；</p>
<p>爱与坚强的意志力；</p>
<p>认识新的朋友，得到新的理解；</p>
<p>时机是关键所在；</p>
<p>置之死地而后生；</p>
<p>太阳；</p>
<p>恶魔；</p>
<p>命运之轮</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%BB%A8%D0%F5">花絮</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/b7add1c8edb691117f3e6ff9.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-16  23:14</pubDate>
        <category><![CDATA[花絮]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/b7add1c8edb691117f3e6ff9.html</guid>
</item>

<item>
        <title><![CDATA[转载：在面试中看清自己]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/a041cffcf4357587b901a0f4.html]]></link>
        <description><![CDATA[
		
		<font size="2"> 感谢大家的关注,这些天因为项目的原因,总加班,就少了些时间在这上面.不过,我会继续把我的<u><strong>面试</strong></u>历程尽可能的详尽的写出来,分享给大家,当然也会在中间穿插一些自己这些年面试的经验及<u><strong>学习</strong></u>心得,希望对大家能起到借鉴的作用,增大成功的机率,尽可能快的提升自己,从而减少中间的弯路,ok,闲话少说,开始正题了:-)</font>
<p><font size="2">&nbsp;&nbsp;&nbsp;  在正式开始面试之旅前,先说一下我在面试前一个月所做的一些准备吧,俗话说:不打无准备的仗:-),现在大大小小的公司在面试这一关都卡的很严(除非你是内部介绍进去的,或是那里些什么起决定作用的人),不过我在这一点不行,到现在也没能有机会认识些那些大公司里面的牛人,也没有什么特硬的关系(注:基本是没有:-)),所以只能凭自己了,在面试时这些公司都会从你的毕业时间,学校,学历,到会些什么技术,到哪个层次,到管理,管理过几个人,都是如何管理的等等方方面面的考核你,其实如果你有幸真的能进去的话,你会发现,其实大多他们考查人的那些点,在实际</font><u><strong><font size="2">工作</font></strong></u><font size="2">上都是不怎么用的,或是跟本不用.这里也不排除有些公司在这点做的很好,他们考查你的都是你要进来就用的.当然这种情况很少,最好我遇到的很少.所以说,针对我们这一行,这一领域,需要准备的东西也会多一些.以下列一些特,特,特常用的几个点.如果你现在也正在</font><u><strong><font size="2">找工作</font></strong></u><font size="2">,确定一下以下几点,自己是否已掌握,也许你在笔试的时候会发现它的价值:-)</font></p>
<p><font size="2">1.数据库.<br>
 1).最少熟悉一种</font><u><strong><font size="2">数据库</font></strong></u><font size="2">(SQLServer容易上手)<br>
 2).会手写简单的Insert, Update, Select, Delete语句.<br>
 3).会其于二个表的查询,并按一定的顺序显示<br>
2.程序<br>
 1).最少熟悉一种开发语言(不需要太精)<br>
 2).能看懂代码,能写一些简单的代码(如排序,查最大公共字符子串等)<br>
 3).知道i++和++i之间的差别<br>
3.测试基本概念<br>
 1).测试的流程<br>
 2).测试有哪些策略,如何应用<br>
 3).BUG的管理流程<br>
 4).高效的</font><u><strong><font size="2">测试</font></strong></u><font size="2">用例(记住写</font><u><strong><font size="2">测试用例</font></strong></u><font size="2">的几种方法,如边界值呀什么的)<br>
4.测试工具(最好了解或熟悉一种以上的</font><u><strong><font size="2">测试工具</font></strong></u><font size="2">,虽然真的工作当中你很少用,但要会,以后才好发展)<br>
 1).了解QTP<br>
 2).了解WinRunner<br>
 3).了解</font><u><strong><font size="2">LoadRunner</font></strong></u><font size="2">(了解几个概念即可,事务呀,聚合点)<br>
 4).了解</font><u><strong><font size="2">性能测试</font></strong></u><font size="2">的几个要点(<br>
5.BUG管理工具/配置管理工具<br>
 1).了解Bugzila<br>
 2).TestDerector<br>
 3).CVS/VSS<br>
6.英语<br>
 1).写一个自我介绍(最好包括你哪年毕业,从哪个学校毕业,然后去了哪个公司,做了些什么工作)<br>
 2).背一些面试时常问的针对你自己的回答.</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;  说着说着就走题了,开始正题了:-)根据自己当前的情况,英语好一些,做过JAVA开发,接触过</font><u><strong><font size="2">自动化测试</font></strong></u><font size="2">(当时用的是IBM的Ration Functional Tester),也在业余时间从51testing.com网上下载了好多技术文档(这里再顺便为51testing做下广告,在51testing里,好东西真的特别特别多,各种各样的资料,心得,录音,PPT等等,我大概就从上面下载下来近2个G的资料,有点时间就看看,充实自己,也好在之后的面试中充分发挥),也从IBM里也拷回去好多技术资料,在家利用业余时间也学了很多测试相关的东西,包括流程呀,策略呀,用例,工具呀等等.所以就把这次找工作的重点目标锁定一些规模比较大的外企.之所以没选择国企和民企是因为当时我的薪金还不错:-),相信那些小规模的公司一般是给不了那个钱的:-)</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;  在找工作之前的一个月里,系统的学了一遍MI的几个工具(QTP,WinRunner,PC,LoadRunner),因为在公司里都用的是IBM自己的工具,但真的要出来的话,可能会用MI公司的工具,所以做个充分的准备来应对面试,防止在面试时被问的什么也不知道.<br>
QTP:安装-&gt;读文档-&gt;实际用QTP测一些自带的航空售票系统.<br>
 花了一周的时间,把 QTP8 Tutorial_oldsidney走了一遍(这里要谢谢oldsidney,共享了自己整理的资料),<br>
 然后又把安装完QTP后自带的用户指南也过了一遍,因当时没有合适的项目实践,也只能跑一些自带的航空售票系统Flight.<br>
WinRunner:安装-&gt;读文档-&gt;实际用QTP测一些自带的航空售票系统.<br>
&nbsp;&nbsp;&nbsp;&nbsp;  这次用了三天的时间把WinRunner使用教程中文版走了一遍(如果你已经会一种自动化功有测试工具,再学其它自动化</font><u><strong><font size="2">功能测试</font></strong></u><font size="2">工具时,你会感觉其实各个公司的工具都大同小异.都是先录制或是先抓对象,再进行一些正则化的处理,以适应在随便哪台机器上,哪个目录下执行.然后添加一些验证点,比对后显示到log里,如果你擅长程序的话,你也可以控制每个出错的Testcase,让它在之后再运行几次来确定这个功能,直到超过多少次后都为错.最后再用手工确定一下,如果还是有问题,就可以开defect了,这样可以让自动化工具来缩小你所需要值的关注的Testcase.以上两个自动化工具,因自己没有具体运用的实际的项目,所以像好多技术性的东西,<br>
 例如无法识别对像呀,运行出错呀,编写代码来跑起来呀至今也没遇到过,当然也就不太知道如果处理,也就只能算是了解级别吧.<br>
QC:安装-&gt;读文档-&gt;自己捉摸着建些东西<br>
 QC9.0试用版(也是从51testing的FTP上下载下来的),简单了解了一下.<br>
LoadRunner:安装-&gt;读文档-&gt;实际用LoadRunner测一些自带的航空售票系统.<br>
 当然只看了一个做了一个简单的LoadRunner应用,也是从51testing上下载下来的,然后开始看装完后自带的UserGuide,共四本,记的其中有一本有1000多页,看的后来就晕了.所以后来也就没怎么看,只学了些基本的性能认识.<br>
英语方面,也把自己的简要介绍,包括哪年毕业,在哪个学校,有过什么工作经验,做过些什么项目,那些项目是什么,用到什么工具,什么语言等等,然后再就背一些简单的问答.什么爱好呀,为什么要换工作呀等等.</font></p>
<p><font size="2">&nbsp;&nbsp;&nbsp;  语言方面,以前是用JAVA语言开发的,但因近一年多没做具体的项目了,也忘的差不多了,只看了一下基本的语法.<br>
Unix方面,因平时常和它打交道,总装系统呀,装软件呀,配置呀等等,所以也就简单看了一下.</font></p>
<font size="2">原始链接：</font><a href="http://blog.51testing.com/html/12/33612_itemid_4057.html" target="_blank"><font color="#000000" size="2">http://blog.51testing.com/html/12/33612_itemid_4057.html</font></a><br> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/a041cffcf4357587b901a0f4.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-15  13:47</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/a041cffcf4357587b901a0f4.html</guid>
</item>

<item>
        <title><![CDATA[在路上]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/212878f0104157c67931aa81.html]]></link>
        <description><![CDATA[
		
		<p align="center"> 那一天 <br>
　　我不得已上路 <br>
　　为不安分的心 <br>
　　为自尊的生存 <br>
　　为自我的证明 <br>
　　路上的心酸 <br>
　　已融进我的眼睛 <br>
　　心灵的困境 <br>
　　已化作我的坚定 <br>
　　在路上 <br>
　　用我心灵的呼声 <br>
　　在路上 <br>
　　只为伴着我的人 <br>
　　在路上 <br>
　　是我生命的远行 <br>
　　在路上 <br>
　　只为温暖我的人 <br>
　　温暖我的人 <br>
<br>
　　那一天 <br>
　　我不得已上路 <br>
　　为不安分的心 <br>
　　为自尊的生存 <br>
　　为自我的证明 <br>
　　路上的心酸 <br>
　　已融进我的眼睛 <br>
　　心灵的困境 <br>
　　已化作我的坚定 <br>
　　在路上 <br>
　　用我心灵的呼声 <br>
　　在路上 <br>
　　只为伴着我的人 <br>
　　在路上 <br>
　　是我生命的远行 <br>
　　在路上 <br>
　　只为温暖我的人 <br>
　　温暖我的人 <br>
　　在路上 <br>
　　用我心灵的呼声 <br>
　　在路上 <br>
　　只为伴着我的人 <br>
　　在路上 <br>
　　是我生命的远行 <br>
　　在路上 <br>
　　只为温暖我的人 <br>
　　温暖我的人</p>
<p align="left">忽然的又想起这首歌词，倒是跟现在的心境有些相似。</p>
<p align="left">事情总是向前发展，并且伴随着一个个的希望，就看我，该如何抓住这些转瞬即逝抑或来之不易的机会。</p>
<p align="left">似乎也重新回到了一个新的起点，幸好的是，关心我的人还在，我的周围的朋友还在，更庆幸的，还有更多的新朋友，是我在路上，一直温暖我的人；</p>
<p align="left">也已经厌倦了茫然无目标的日子，我想，又是一个启程的时刻了，</p>
<p align="left">我要勇敢的走下去，尽管知道，前方不是一帆风顺，但还是要，勇气！自信！</p>
<p align="left">so,good good study,day day up!!</p>
<p align="left">哈哈，学习英语，加油！！！！</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%BB%A8%D0%F5">花絮</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/212878f0104157c67931aa81.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-12  21:44</pubDate>
        <category><![CDATA[花絮]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/212878f0104157c67931aa81.html</guid>
</item>

<item>
        <title><![CDATA[离京奔沪？？2008-07-12]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/2dd40f24b6280536c8955998.html]]></link>
        <description><![CDATA[
		
		<p align="center">决定了，</p>
<p align="center">就要一直向前看，</p>
<p align="center">不在乎过往的，</p>
<p align="center">一切的成败得失，</p>
<p align="center">向前！</p>
<p align="center">只为年轻的心，</p>
<p align="center">和为之奋斗的勇气！</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%BB%A8%D0%F5">花絮</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/2dd40f24b6280536c8955998.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-02  16:08</pubDate>
        <category><![CDATA[花絮]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/2dd40f24b6280536c8955998.html</guid>
</item>

<item>
        <title><![CDATA[软件测试的面临的三大棘手问题]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e04568b3970cf6cae.html]]></link>
        <description><![CDATA[
		
		<p align="left"><font size="3">我们都知道，「测试」是产品的真正试炼场；即使对一项软件开发工程投注了庞大的心血，如果测试不合格还是枉然，因为客户要的是「合格产品」，而不是你的「努力过程」。所以测试的重要性应该不必赘述。只不过，「知道」跟「做得到」是两回事，就如同我们都知道应该多吃青菜水果，然而还是有许多人每餐都是大鱼大肉。 </font></p>
<p align="left"><font size="3">许多人谈到测试，总是有满腹牢骚，因为它似乎是一件「知易行难」的麻烦工作。为何测试总是做不好？大致可归类成下述三大原因。 </font></p>
<p align="left"><strong><font size="3">测试排最后 </font></strong></p>
<p><font size="3">目前一般的软件开发工作，大多采用传统的「瀑布式（ Waterfall ）」流程法，也就是把开发过程分为「需求」、「分析」、「设计与撰写」、「整合」、「测试」等阶段，一个接一个依序进行。 </font></p>
<p align="left"><font size="3">这种方法很单纯，但导致「测试总是排在最后才进行」的状况。这种设计会产生两个状况：一是测试人员直到案子接近尾声才上工，所以往往在尚未了解整个系统架构的情况下，就一头栽进工作。二是这个时间点距离完工期实在太近，如果有什么突发状况，往往导致整个开发项目大乱或失败。 </font></p>
<p align="left"><strong><font size="3">时间不够 </font></strong></p>
<p align="left"><font size="3">测试做不好的第二个原因是「时间不够」，这是开发团队最常面临的问题。它其实也是上述「瀑布式」流程法把测试排在最后所导致的另一个致命伤。由于许多开发团队把大部分时间分配给前面阶段（特别是程序设计与撰写部分），只留少数时间给测试工作。然而突发状况永远无法预期，如果前面阶段因故导致工作拖延，在出货时间不能延后的情况下，后面阶段的时间就会不断地被牺牲。 </font></p>
<p align="left"><font size="3">所以我们常常看到，在一个预定进行八个月的软件项目里，因为前面阶段的状况百出（计算机当机、同仁生病请假、客户需求更改、开发不顺等），结果前面阶段不断占用后面阶段的时间，最后导致原本排定一个月的测试时间只剩下一周，甚至二、三天而已，根本无法测试。所以常常出现有些产品根本是在未经完整测试的情形下就贸然出货上市，把测试工作留给客户或消费者的情况。 </font></p>
<p align="left"><font size="3">另外还有一个与「时间不够」刚好相反的现象，就是「时间太长」。有时产品经初步测试之后发现问题丛生，实在无法交差（或是被客户退件），所以开发团队只好回头继续进行大量又重复的「测试 → 修改 → 验证」工作。如此折腾了好一阵子，最后产品终于可以验收。把这段额外时间加总起来，重新计算整体开发时间，这时才突然惊觉：「天啊，测试竟然占了将近一半的时间！」 </font></p>
<p align="left"><strong><font size="3">风险太高 </font></strong></p>
<p align="left"><font size="3">第三个问题是「风险太高」，也是流程设计不当所致。如文章开头所言：「测试才是产品的真正试炼场」，也就是一个项目的各种隐藏性风险，往往是透过「测试」才被完整发掘出来。但是「单向瀑布式」流程法却把测试集中在最后进行，所以它的风险容易随着开发流程的推进而越来越高；是一种相当危险的风险控管方式。 </font></p>
<p align="left"><font size="3">事实上，这也是许多项目在后期才突然出现成本失控或失败的重要原因。因为等到风险爆发之时，往往已经无力回天，或必须付出相当大的代价以为因应。 </font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e04568b3970cf6cae.html#comment">查看评论</a>]]></description>
        <pubDate>2008-01-16  13:48</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/eb707f3e04568b3970cf6cae.html</guid>
</item>

<item>
        <title><![CDATA[学习正则表达式 基本语法]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/779cb2fb0a23bb214f4aeac4.html]]></link>
        <description><![CDATA[
		
		正则表达式 基本语法<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　正则表达式的形式一般如下：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/love/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　其中位于&ldquo;/&rdquo;定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入&ldquo;/&rdquo;定界符之间即可。为了能够使用户更加灵活的定制模式内容，正则表达式提供了专门的&ldquo;元字符&rdquo;。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符，可以用来规定其前导字符（即位于元字符前面的字符）在目标对象中的出现模式。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　较为常用的元字符包括： &ldquo;+&rdquo;， &ldquo;*&rdquo;，以及 &ldquo;?&rdquo;。其中，&ldquo;+&rdquo;元字符规定其前导字符必须在目标对象中连续出现一次或多次，&ldquo;*&rdquo;元字符规定其前导字符必须在目标对象中出现零次或连续多次，而&ldquo;?&rdquo;元字符规定其前导对象必须在目标对象中连续出现零次或一次。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　下面，就让我们来看一下正则表达式元字符的具体应用。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/fo+/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式中包含&ldquo;+&rdquo;元字符，表示可以与目标对象中的 &ldquo;fool&rdquo;, &ldquo;fo&rdquo;, 或者 &ldquo;football&rdquo;等在字母f后面连续出现一个或多个字母o的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/eg*/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式中包含&ldquo;*&rdquo;元字符，表示可以与目标对象中的 &ldquo;easy&rdquo;, &ldquo;ego&rdquo;, 或者 &ldquo;egg&rdquo;等在字母e后面连续出现零个或多个字母g的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/Wil?/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式中包含&ldquo;？&rdquo;元字符，表示可以与目标对象中的 &ldquo;Win&rdquo;, 或者 &ldquo;Wilson&rdquo;,等在字母i后面连续出现零个或一个字母l的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　除了元字符之外，用户还可以精确指定模式在匹配对象中出现的频率。例如，<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/jim{2,6}/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式规定字符m可以在匹配对象中连续出现2-6次，因此，上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　在对如何使用正则表达式有了初步了解之后，我们来看一下其它几个重要的元字符的使用方式。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　\s：用于匹配单个空格符，包括tab键和换行符；<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　\S：用于匹配除单个空格符之外的所有字符；<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　\d：用于匹配从0到9的数字；<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　\w：用于匹配字母，数字或下划线字符；<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　\W：用于匹配所有与\w不匹配的字符；<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　. ：用于匹配除换行符之外的所有字符。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　（说明：我们可以把\s和\S以及\w和\W看作互为逆运算）<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　下面，我们就通过实例看一下如何在正则表达式中使用上述元字符。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/\s+/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/\d000/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　如果我们手中有一份复杂的财务报表，那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　除了我们以上所介绍的元字符之外，正则表达式中还具有另外一种较为独特的专用字符，即定位符。定位符用于规定匹配模式在目标对象中的出现位置。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　较为常用的定位符包括： &ldquo;^&rdquo;, &ldquo;$&rdquo;, &ldquo;\b&rdquo; 以及 &ldquo;\B&rdquo;。其中，&ldquo;^&rdquo;定位符规定匹配模式必须出现在目标字符串的开头，&ldquo;$&rdquo;定位符规定匹配模式必须出现在目标对象的结尾，\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一，而&ldquo;\B&rdquo;定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内，即匹配对象既不能作为目标字符串的开头，也不能作为目标字符串的结尾。同样，我们也可以把&ldquo;^&rdquo;和&ldquo;$&rdquo;以及&ldquo;\b&rdquo;和&ldquo;\B&rdquo;看作是互为逆运算的两组定位符。举例来说：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/^hell/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式中包含&ldquo;^&rdquo;定位符，所以可以与目标对象中以 &ldquo;hell&rdquo;, &ldquo;hello&rdquo;或 &ldquo;hellhound&rdquo;开头的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/ar$/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式中包含&ldquo;$&rdquo;定位符，所以可以与目标对象中以 &ldquo;car&rdquo;, &ldquo;bar&rdquo;或 &ldquo;ar&rdquo; 结尾的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/\bbom/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式模式以&ldquo;\b&rdquo;定位符开头，所以可以与目标对象中以 &ldquo;bomb&rdquo;, 或 &ldquo;bom&rdquo;开头的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/man\b/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　因为上述正则表达式模式以&ldquo;\b&rdquo;定位符结尾，所以可以与目标对象中以 &ldquo;human&rdquo;, &ldquo;woman&rdquo;或 &ldquo;man&rdquo;结尾的字符串相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　为了能够方便用户更加灵活的设定匹配模式，正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/[A-Z]/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/[a-z]/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/[0-9]/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与从0到9范围内任何一个数字相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/([a-z][A-Z][0-9])+/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与任何由字母和数字组成的字符串，如 &ldquo;aB0&rdquo; 等相匹配。这里需要提醒用户注意的一点就是可以在正则表达式中使用 &ldquo;()&rdquo; 把字符串组合在一起。&ldquo;()&rdquo;符号包含的内容必须同时出现在目标对象中。因此，上述正则表达式将无法与诸如 &ldquo;abc&rdquo;等的字符串匹配，因为&ldquo;abc&rdquo;中的最后一个字符为字母而非数字。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　如果我们希望在正则表达式中实现类似编程逻辑中的&ldquo;或&rdquo;运算，在多个不同的模式中任选一个进行匹配的话，可以使用管道符 &ldquo;|&rdquo;。例如：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/to|too|2/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与目标对象中的 &ldquo;to&rdquo;, &ldquo;too&rdquo;, 或 &ldquo;2&rdquo; 相匹配。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　正则表达式中还有一个较为常用的运算符，即否定符 &ldquo;[^]&rdquo;。与我们前文所介绍的定位符 &ldquo;^&rdquo; 不同，否定符 &ldquo;[^]&rdquo;规定目标对象中不能存在模式中所规定的字符串。例如：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/[^A-C]/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述字符串将会与目标对象中除A，B，和C之外的任何字符相匹配。一般来说，当&ldquo;^&rdquo;出现在 &ldquo;[]&rdquo;内时就被视做否定运算符；而当&ldquo;^&rdquo;位于&ldquo;[]&rdquo;之外，或没有&ldquo;[]&rdquo;时，则应当被视做定位符。<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　最后，当用户需要在正则表达式的模式中加入元字符，并查找其匹配对象时，可以使用转义符&ldquo;\&rdquo;。例如：<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　/Th\*/<br>
<br>
&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp; 　　上述正则表达式将会与目标对象中的&ldquo;Th*&rdquo;而非&ldquo;The&rdquo;等相匹配。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/779cb2fb0a23bb214f4aeac4.html#comment">查看评论</a>]]></description>
        <pubDate>2007-12-03  15:46</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/779cb2fb0a23bb214f4aeac4.html</guid>
</item>

<item>
        <title><![CDATA[QUICK Test Professiona V8.2 中文补丁包]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/6577b912c54067cdc2fd7842.html]]></link>
        <description><![CDATA[
		
		<div class="item-content">
<p><font size="3">QUICK Test Professiona V8.2</font></p>
<p><a target="_blank" href="http://218.8.251.139:82/demo/QTPV8.2%20ChinesePack.iso"><font color="#0000ff" size="3">下载：QUICK Test Professiona V8.2 中文补丁包</font></a></p>
<p><font size="3">QuickTest 8.2 Pro最新正式版发行,QTP 8.2是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件QuickTest Professional 8.2，可以覆盖绝大多数的软件开发技术，简单高效，并具备测试用例可重用的特点。</font></p>
<p><font size="3">Mercury QuickTest Pro 8.2是一款先进的自动化测试解决方案，用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。 Mercury QuickTest Pro 8.2为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。创建测试：用QuickTest Professional创立一个测试， 您只需记录下一个标准的业务流程， 如下一张订单或建立一个新的商家帐户。QuickTest Professional直观的记录流程能让任何人在GUI上轻轻点击鼠标就可建立测试， 即使技术知识有限的用户也能生成完整的测试。您还可以直接编辑测试指令来满足各种复杂测试的需求。QuickTest Professional将2种测试创建方式结合在一个环境下，来适应不同的背景支持和您团队的喜好。 　</font></p>
<p><font size="3">插入检查点：在记录一个测试的过程中，可插入检查点， 在查寻潜在错误的同时，比较预想和实际的测试结果。在插入检查点后，QuickTest Professional会收集一套性能指标，在测试运行时对其一一验证。QuickTest Professional允许使用几种不同类型的检查点， 包括文本的，GUI， 位图和数据库。 　 检验数据：除了创立并运行测试，QuickTest Professional还能验证数据库的数值， 从而确保交易的准确性。例如，在测试创建时，您可以设定哪些数据库表格和记录资料需要检测。在重放时，您的测试程序就会核对数据库内的实际数值与预想的数值。QuickTest Professional能自动显示检测结果， 在有更新/修改， 删除或插入的记录上会用突出标识以引起注意。 　</font></p>
<p><font size="3">增强测试：为了彻底全面地测试一个应用程序，您需要了解对于不同类型的数据它是如何运行的。QuickTest Professional的DataDriverTM Wizard，让您只需点击几下鼠标，就能简单地将一个记录下的业务流程转化为一个数据驱动的测试，来反映多个用户各自独特且真实的操作行为。 目前有相当数量的企业应用程序仍然使用非标准的对象。QuickTest Professional的Virtual Object Wizard能识别以前未知的对象，不必特别编写代码。使用Virtual Object Wizard界面，您会看到一张的对象类型列表，能用其来代表您未知的对象。您可以为您的对象设定标识，如一个按钮，并为其命名。 　</font></p>
<p><font size="3">运行测试： 建立起您的测试，并插入检查点和做一些必要的功能添加后，您就可以开始运行测试。当WinRunner和QuickTest Professional执行您的测试时，它会自动操作应用程序，正如一个真实用户根据记录流程执行着每一步的操作。而且，它的意外处理功能为测试排除干扰，包括消息和警报。 　 分析结果：一旦测试运行后，您就需要分析测试结果。QuickTest Professional的互动式的报告工具通过提供详尽的，易读的报告，其中会列出在测试中发现的差错和出错的位置，来帮助您解释所得的结果。这些报告对在测试运行中发生的重要事件进行描述，如出错内容和检查点等。点击按钮，您还能进一步获取任何未被包括在此测试范围内的错误的详尽资料。 　</font></p>
<p><font size="3">维护测试：随时间推移，开发人员会对应用程序做进一步的修改，并需要另加额外的测试。有了QuickTest Professional，您不必应用程序改动一次，就得重新建一个新的测试。而WinRunner会帮助您创立在程序应用周期内可重复使用的测试。这样大大地节省时间和资源，充分利用测试投资.365dn免费软件下载站 特点和优势 &#8226;具有行业领先的便于使用的特性，以及支持提前配置环境的功能，确保了快速的投资回报。 &#8226;可独立运行，也可以同Mercury Business Process Testing和Mercury质量中心集成。 &#8226;引进了QuickTest Professional 8.0中新一代的&ldquo;零配置&rdquo;关键词驱动测试技术，从而实现了快速建立测试、测试脚本更易维护，和更强大的数据驱动能力。</font></p>
<p><font size="3">&#8226;通过集成的数据表，可数据驱动任意对象、方式、检查点和输出值等。</font></p>
<p><font size="3">QuickTest Professional 8.2 新功能: Keyword View: Lets you easily build and maintain tests without writing VBScripts. Auto-Documentation: Provides improved test clarity and the ability to view test steps in plain English. Step Generator: Allows you to quickly insert custom-built functions into your tests. Mercury Business Process Testing: Enhanced integration with BPT -- Business Components, Scripted Components, and Application Areas. Enhanced Expert View: Provides greater efficiency when generalizing test components. Action Parameters: Allows you to generalize testing actions for greater reusability. Data Parameters: You can now specify test or action parameters to pass values into and from your test, and between actions in your test. Open XML Report Format for Test Results: Test results are now stored in an open XML format, enabling you to easily customize the reports according to your own requirements, and to integrate the test result information with other applications. Unicode Support: Lets you test global deployments of your enterprise applications. Function Definition Generator: You can use the new Function Definition Generator to generate definitions for user-defined functions, add header information to them, and register functions to a test object.</font></p>
<p><a href="http://218.8.251.139:82/demo/QTPV8.2%20ChinesePack.iso"><font color="#0000ff" size="3">下载：QUICK Test Professiona V8.2 中文补丁包</font></a></p>
<div class="clear"> </div>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%B9%A4%BE%DF">软件测试工具</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/6577b912c54067cdc2fd7842.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-13  10:35</pubDate>
        <category><![CDATA[软件测试工具]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/6577b912c54067cdc2fd7842.html</guid>
</item>

<item>
        <title><![CDATA[解决“数据执行保护”的弹出]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/f07c0ef428b9276dddc474b2.html]]></link>
        <description><![CDATA[
		
		<p><font size="3">脚本调试的过程中，不时的弹出&ldquo;数据执行保护&rdquo;，到网上一查，原来是windows sp2在作怪，解决方法如下：</font></p>
<p><font size="3">现在的WinXP用户已无可选择地升级到了WinXP SP2，这样也让用户必须无条件地接受一个名为DEP(数据执行保护)的安全保护功能。如果你用上了64位CPU，那么，这个保护功能将更加强大，因为64处理器中采用了一种全新的防毒技术--EVP(增强型病毒防护)，配合WinXP SP2的DEP技术，能将病毒的防治机制提升到一个新的高度。 <br>
<br>
不过EVP和DEP也存在兼容问题，它可能将对用户有用的程序也阻止掉，对普通用户而言，首先要解决这个问题。 <br>
<br>
1.在系统属性中修改 <br>
<br>
默认下，在&ldquo;系统属性&rdquo;下的&ldquo;高级→设置→数据执行保护&rdquo;中选择的是&ldquo;仅为基本Windows程序和服务启用DEP&rdquo;。在这种状态下，有的程序不能正常运行，如Virtual PC。 <br>
<br>
如果出现了有些应用程序不能正常运行，可在&ldquo;数据执行保护&rdquo;项中选择&ldquo;为除下列选定程序之外的所有程序和服务启用DEP&rdquo;，再单击&ldquo;添加&rdquo;，定位到某应用程序的安装目录，找到该程序的可执行文件，将其添加进来。一般地，这个程序就能正常运行了。重启电脑后设置生效。 <br>
<br>
2.直接修改Boot.ini文件 <br>
<br>
在WinXP SP2系统所在分区根目录下找到Boot.ini文件。注意看，它多出了一个&ldquo;NoExecute&rdquo;参数，而前面在系统属性中对DEP的修改也会反映在这个参数上。 <br>
<br>
在&ldquo;数据执行保护&rdquo;项中只有两个选项，反映在Boot.ini文件中就是&ldquo;NoExecute&rdquo;参数的&ldquo;Optin&rdquo;和&ldquo;Opton&rdquo;两个值。可是，有些应用程序或驱动程序的兼容性不强，纵使在&ldquo;数据执行保护&rdquo;中将其&ldquo;放行&rdquo;，它还是不能正常运行，比如:3721的上网助手、ZoneAlarm Pro等，这就要靠&ldquo;NoExecute&rdquo;参数的其他两个值了。 <br>
<br>
NoExecute=AlwaysOff相当于关闭EVP和DEP功能，此时，这两项功能将全部丧失。由这项功能引起的兼容性问题即全部解决，但少了一堵安全保护的墙。</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/f07c0ef428b9276dddc474b2.html#comment">查看评论</a>]]></description>
        <pubDate>2007-11-02  14:05</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/f07c0ef428b9276dddc474b2.html</guid>
</item>

<item>
        <title><![CDATA[参数化LINK的方法]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/3c708a82dc3dcc93f603a6c3.html]]></link>
        <description><![CDATA[
		
		<font size="3">利用 Description 对象，Description对象有5个方法<br>
Add Method<br>
Count Property<br>
Remove Method<br>
RegularExpression Property<br>
Value Property </font>
<div class="blockcode"><font size="3"><span class="headactions" >复制内容到剪贴板</span> </font>
<h5><font size="3">代码:</font></h5>
<code ><font face="新宋体" size="3">For intLoop = 1 to N<br>
&nbsp;&nbsp;&nbsp;&nbsp; strText=DataTable.Value(...)<br>
&nbsp;&nbsp;&nbsp;&nbsp; Set LinkDesc = Description.Create() <br>
&nbsp;&nbsp;&nbsp;&nbsp; LinkDesc ("Text").Value = strText<br>
&nbsp;&nbsp;&nbsp;&nbsp; Browser("").Page("").Link(LinkDesc).Click<br>
&nbsp;&nbsp;&nbsp;&nbsp; DataTable.GetSheet("").SetNextRow<br>
Next</font></code></div>
<font size="3">或者还可以用以下方法，描述性编程，格式<font color="#ff0000"> object(":property:=" &amp; Parameterized_Variant)</font> </font>
<div class="blockcode">
<h5><font size="3">代码:</font></h5>
<code ><font face="新宋体" size="3">For intLoop = 1 to N<br>
&nbsp;&nbsp;&nbsp;&nbsp; strText=DataTable.Value(...)<br>
&nbsp;&nbsp;&nbsp;&nbsp; Browser("").Page("").Link("text:=" &amp; strText).Click<br>
&nbsp;&nbsp;&nbsp;&nbsp; DataTable.GetSheet("").SetNextRow<br>
Next</font></code></div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%B9%A4%BE%DF">软件测试工具</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/3c708a82dc3dcc93f603a6c3.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-31  15:24</pubDate>
        <category><![CDATA[软件测试工具]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/3c708a82dc3dcc93f603a6c3.html</guid>
</item>

<item>
        <title><![CDATA[GetROProperty,GetTOProperties,GetTOProperty的区别]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/b5baa144621bdf81b2b7dcfe.html]]></link>
        <description><![CDATA[
		
		<p><font size="3">GetTOProperty和GetROProperty都用于取出对象的某个具体属性的值,它们的语法和用法几近相同,唯一的区别就是GetTOProperty取出的是录制对象的属性值,而GetROProperty取出的是在回放过程中运行的对象的属性值.</font></p>
<p><br>
<font size="3"><font face="新宋体 "><font color="#000000">GetTOProperties,是指取出录制对象的所有属性。</font></font><br>
GetTOProperty和GetROProperty语法都是:<br>
object.GetTOProperty(<em>Property</em>)<br>
或者是:<br>
object.GetROProperty(<em>Property)</em><br>
其中<em>Property</em>,对象的属性,是必填项.<br>
</font></p>
<div class="t_msgfont"><font size="3">关键在于RO和TO，R，就是Runtime，T就是Testtime，O就是Object。因此顾名思义，RO就是在测试执行时的对象，TO就是录制/编写测试时的对象。是同一个类在不同的时间生成的不同的实例，一般来说TO是静态的，而RO是动态的（每次执行测试都会生成新的实例）。</font></div>
<p><font size="3"><br>
</font></p>
<font size="3"><font face="新宋体 ">GetTOProperties的语法为：<br>
</font><font face="Courier New ">object.</font><font face="新宋体 ">GetTOProperties</font></font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%B9%A4%BE%DF">软件测试工具</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/b5baa144621bdf81b2b7dcfe.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-31  15:01</pubDate>
        <category><![CDATA[软件测试工具]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/b5baa144621bdf81b2b7dcfe.html</guid>
</item>

<item>
        <title><![CDATA[QTP运行错误：对象无法识别的解决办法(转)]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/754b11df1509df1062279834.html]]></link>
        <description><![CDATA[
		
		<p>1.1 如何去识别对象描述（Identifying Test Object Descrīption Problems）<br>
&nbsp;&nbsp;&nbsp;&nbsp; 如果你能在被测程序中看到对象，但仍出现了“Cannot Identify Object”错误信息，这就表示仓库中对象的描述与程序中对象的描述一定存在着差异。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 解决对象描述问题的第一步是找到差异，最简单的方法是将仓库中对象的属性值与程序中对象的属性值进行比较。（仓库中对象的属性值可在Object Repository窗口中查看，程序中对象的属性值可用Object Spy功能查看。）<br>
&nbsp;&nbsp;&nbsp;&nbsp; 比较仓库中对象的属性值与程序中对象的属性值的操作见1.3。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 在完成比较后，是否发现存在差异？如果是，请参考1.4；如果否，请参考1.5。<br>
<br>
1.2 处理对象丢失问题（Solving Missing Object Problems）<br>
在运行脚本时，QTP尝试进行某种操作，而该操作的对象在程序中却没有出现，出现这种情况的原因有以下几种：<br>
&gt;&gt;&gt;对象不再存在。对象已经被从程序中删除。解决方法：见1.2.1。<br>
&gt;&gt;&gt;对象还没有装载。解决方法：见1.2.2。<br>
&gt;&gt;&gt;当前的程序页面（或窗口）不正确，不是对象所在的页面（或窗口）。解决方法：见1.2.3。<br>
&gt;&gt;&gt;前一个步骤没有正确执行。解决方法：见1.2.3。<br>
<br>
1.2.1 解决对象不再存在的问题<br>
如果对象已经不再在被测程序中存在，则应在脚本中修改或删除相关步骤。<br>
<br>
1.2.2 解决对象装载超时的问题<br>
如果对象丢失的原因是因为没有足够的时间装载，尝试以下解决方案：<br>
a.对于Web对象，增加Browser Navigation Timeout（File&gt;Setting&gt;Web页签）时间。<br>
b.在包括该对象的步骤前使用Wait语句，让QTP在执行该步骤之前等待一段时间。<br>
<br>
1.2.3 检查前面步骤的执行情况<br>
如果是因为打开了错误的页面（或窗口）导致对象丢失问题，或因为前一步骤执行措误导致对象丢失问题，则请按以下方法检查原因：<br>
a. 如果怀疑在完成脚本后，被测程序又发生了改变，则检查对象的继承关系以及对象描述。参考1.1。<br>
b. 如果怀疑脚本错误，则检查脚本的每一个步骤。你可能是遗失了某个步骤，也可能是使用了不正确的方法或参数。<br>
<br>
1.3 测试对象的属性值与Run-time对象的属性值的比较（Comparing Test Object and Run-Time Object Property Values）<br>
<br>
根据以下的步骤比较测试对象与Run-time对象的属性值：<br>
1) 进入Obecjt Repository窗口（Resources&gt;Object Repository），选择对象。<br>
2) 记录对象的class以及它的各个属性及属性值。<br>
3) 打开被测程序，并打开包含被测对象的页面或窗口。<br>
4) 在QTP中选择菜单Tools&gt;Object Spy或点击Object Spy按钮，打开Object Spy<span class="t_tag" href="tag.php?name=%B6%D4%BB%B0%BF%F2">对话框</span>。<br>
5) 选择“Test Object Properties”选项。<br>
6) 点击右上角的按钮（带有手图标的），这时QTP窗口以及Object Spy对话框都被最小化。<br>
7) 在程序页面（或窗口）中点击目标对象，恢复Object Spy对话框，并在对话框中显示对象及其父对象（以树的形式显示），并在Properties页签中显示当前对象的属性及属性值。<br>
8) 这时Object Spy对话框的Properties页签中显示Run-time对象的所有属性，在此查看对象的class，以及它的属性及属性值，并将它与第2步中记下的内容进行比较。<br>
<br>
1.4 解决对象描述存在的问题（Solving Object Descrīption Problems）<br>
&nbsp;&nbsp;&nbsp;&nbsp; 如果发现仓库中对象的属性值与程序中对象的属性值存在不同，你应该判断这个不同是个别对象的问题，还是其它同类对象也存在相同的问题。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 是所有（或多个）同类对象都存在问题吗？如果是，则参考1.6；如果否，则参考1.7<br>
<br>
1.5 关于父对象描述的识别问题（Identifying Parent Object Descrīption Problems）<br>
对象的识别还与它所继承的父对象有关。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 如果你能在被测程序中看到对象，而且程序中对象的属性值与仓库中对象的属性值也是一致的，但仍然遭遇到了“Cannot identify object”错误，则这个错误可能与它的父对象有关（如仓库中父对象的属性值与程序中父对象的属性值不一致），也可能是仓库中的对象与程序中对象的继承关系不相同导致的。<br>
要判断是继承关系中的哪个父对象出现了问题，请尝试下面的方法之一：<br>
<br>
&gt;&gt;&gt;重新录制对象，比较新旧对象的父对象。<br>
欲了解如何完成比较，参考1.8。<br>
&gt;&gt;&gt;对继承关系中的每个父对象，分别插入一个Exist语句，并运行该部分脚本。<br>
欲了解如果创建Exist语句，参考1.9。<br>
注：你也可以使用Object Repository窗口中的Highlight in Application功能，在被测程序中定位对象。<br>
一旦找到了存在问题的父对象，接下来偿试以下方法：<br>
&gt;&gt;&gt;修复存在问题的父对象的描述。方法见1.4。<br>
&gt;&gt;&gt;在专家视图的模式下，查找所有继承存在问题的实例并进行修正。举例：1.8.1。<br>
<br>
1.6 解决某类对象的识别问题（Soving Object Identification Problems for a Test Object Class）<br>
&nbsp;&nbsp;&nbsp;&nbsp; 如果你发现某类对象的对象描述对于被测程序来说都不是很合理，或你预期到对象描述中的某属性值是经常变化的，你可以在Object Identification对话框中改变该类的识别属性的设置，或定义该类的Smart Identification设置并启用Smart Identification机制，这样QTP就可以唯一识别对象了。<br>
<br>
1.7 解决单个对象的描述问题（Solving Individual Test Object Descrīption Problems）<br>
选择下列方法之一来解决对象的描述问题：<br>
&gt;&gt;&gt;如果被测程序中对象描述发生了改变，并且你也清楚改变的内容，并且该改变是永久性或长期性的，你可以直接手工修改仓库中对象描述中的相关属性值。<br>
&gt;&gt;&gt;如果被测程序中的对象的属性值依赖于前面的步骤或其它对象，则将该属性值参数化，这样就可以使用其它步骤的输出值为属性值。<br>
&gt;&gt;&gt;如果属性值的组成部分中，部分是固定的，部分是动态改变的，则可以将属性值设计为正则表达式。<br>
&gt;&gt;&gt;如果属性值是遵循某种规则变化的，或者是不可预期的，则从对象描述中移除该属性，并向对象描述中添加一个或多个属性以便于QTP进行对象识别。<br>
&gt;&gt;&gt;If you can only access the information on the property values during the run session, you can create and use functions that use programmatic descrīptions to identify the object using property values retrieved earlier in the run session.<br>
For more information on programmatic descrīptions, see Using Programmatic Descrīptions.<br>
&gt;&gt;&gt;如果在录制过程中对象是唯一的，但现在程序中出现了两个或多个描述相同的对象，但是它们在页面（或窗口）中的位置不相同，则应在Object Properties或Object Repository窗口中，向对象描述中添加一个ordinal identifier（index或location）。<br>
<br>
1.8 重新录制对象，以判断父对象描述是否存在问题（Re-recording an Object to Identify Parent Object Descrīption Problems）<br>
根据下面的指引，来判断父对象的问题。<br>
通过重新录制对象，来判断它的父对象是否存在问题：<br>
1) 打开浏览器或程序，来到包含被测对象的页面或窗口。<br>
2) 在关键字视图模式，选择最后一个组件（component），或在专家视图模式，将光标放在最后一个脚本步骤的下面。<br>
3) 点击Record按钮，或选择Automation&gt;Record。<br>
4) 点击（或操作）页面或窗口中的目标对象。<br>
5) 点击Stop按钮，或选择Automation&gt;Stop，完成步骤添加。<br>
6) 右击新添加的步骤，并选择Object Properties右键菜单。<br>
7) 在Object Properties对话框中，点击Repository，打开Object Repository窗口，并选中了新对象。注意记下该对象的继承关系。<br>
8) 在Object Repository窗口中找到旧的对象（即存在问题的对象），将它的继承关系与新对象的继承关系进行比较。<br>
通过比较，可以检查到新旧对象是父对象的描述存在不同，还是它们的继承关系根本就不同。<br>
a. 如果是父对象的描述问题，则修改父对象的描述。参见1.4.<br>
b. 如果是对象的继承关系不正确（即具有不同的父对象）引起的问题，则在脚本中找到所有使用该继承关系的实例，将它们替换为正确的继承关系。举例：参见1.8.1。<br>
<br>
1.8.1 举例<br>
&nbsp;&nbsp;&nbsp;&nbsp; 假设有一个带有Frame的网站，你录制了一个操作针对Image对象“Poster”的操作步骤。在Object Repository窗口，你可以Image对象的继承关系如下所示：<br>
MyCompany（Browser）<br>
&nbsp;&nbsp;&nbsp;&nbsp; MyCompany（Page）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main(Frame)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Poster(image)<br>
&nbsp;&nbsp;&nbsp;&nbsp; 当你运行脚本时，网页看起来没有什么不同，但是识别Image对象时却出现了“Cannot identiry object”的错误提示。当你重新录制操作步骤，然后在Object Repository窗口中查看新的Image对象时，发现该对象的继承关系如下所示：<br>
MyCompany（Browser）<br>
&nbsp;&nbsp;&nbsp;&nbsp; MyCompany（Page）<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Poster(image)<br>
&nbsp;&nbsp;&nbsp;&nbsp; 从中可以看出，Frame已经从Web Page中移除，所以尽管Image对象“Poster”的描述没有发生任何改变，但它的继承关系已经改变了。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 在Object Repository窗口，你可以看到新旧Image对象“Poster”是两个完全不同的对象：旧的位于已经被移除的Frame对象之下，而新的则直接位于Page“Mycompany”对象之下。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 修复这个问题，可以在脚本步骤中将旧的对象替换为新的对象。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 为了保持Object Repository窗口的整洁，你应删除那些已不再存在的对象（如本例中的Frame）。<br>
<br>
1.9 创建Exist语句，以判断父对象的描述是否存在问题<br>
&nbsp;&nbsp;&nbsp;&nbsp; QTP在录制发生在某个对象上的操作时，也会同时去了解对象以及它的继承关系。因此，如果在运行过程中，QTP不能识别继承关系中的任何一个父对象，都会导致目标对象的识别失败。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 使用带有Exist方法的Msgbox语句，可以方便的检查出是继承关系中的哪个父对象出现了问题。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 假设在运行下面脚本时，你遇到了“Cannot identify Object”错误信息（但是可以确定对象仓库中Link对象的描述与当前程序中对象的描述是完全一致的）：<br>
Browser("Yahoo!").Page("Yahoo!").Link("Arts &amp; Humanities").Click<br>
你可以在该语句前面插入以下语句：<br>
Msgbox Browser("Yahoo!").Exist<br>
Msgbox Browser("Yahoo!").Page("Yahoo!").Exist<br>
Msgbox Browser("Yahoo!").Page("Yahoo!").Link("Arts &amp; Humanities").Exist<br>
然后你从头开始运行脚本，发现第1行语句运<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; 但是，当QTP运行到第2步时，就弹出信息框，内容为“False”，表示不能找到Page object。这就证明Page对象存在问题。<br>
&nbsp;&nbsp;&nbsp;&nbsp; 确定了出现问题的父对象以后，修复该问题。参见1.4。<br>
<br>
<br>
2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：对象不唯一（The object is not unique）<br>
在被测页面或窗口中的同一父对象下，找到多个与仓库中对象描述相符的Run-tim对象。<br>
请确定是只有个别对象存在此问题，还是此类对象的所有对象（或部分对象）存在此问题。<br>
此类对象的所有对象（或部分对象）都存在此问题吗？如果是，参考2.1；如果否，参考2.2。<br>
<br>
2.1 为某对象类设置能唯一识别对象的描述规则（Configuring Unique Test Object Descrīptions for a Test Object Class）<br>
&nbsp;&nbsp;&nbsp;&nbsp; 如果你发现某类对象的对象描述都不足以唯一识别对象，你可以在Object Identification对话框中，改变该类的识别属性的设置，或定义该类的Smart Identification设置并启用Smart Identification机制，这样QTP就可以唯一识别对象了。<br>
<br>
2.2 设置通唯一识别对象的对象描述（Creating a Unique Test Object Descrīption for an Object）<br>
查看当前对象的描述，并偿试在程序中找到其它具有相同描述的对象并查看它们的描述。<br>
&gt;&gt;&gt;如果你找到了可以将它们<span class="t_tag" href="tag.php?name=%C7%F8%B1%F0">区别</span>开来的一个或多个属性，则修改仓库中对象的相关属性（如向描述中添加属性等），以使QTP在运行时可以唯一识别它。<br>
&gt;&gt;&gt;如果它们的识别属性完全相同，则在对象描述中为对象添加一个ordinal identifier（index或location）。<br>
<br>
3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：找不到父对象（Parent not found）<br>
识别对象时，会先识别它的父对象是否正确。如果遇到“Parent not found”的错误信息，请偿试以下解决方法：<br>
&gt;&gt;&gt;修复出现问题的父对象的描述。参见1.4。<br>
&gt;&gt;&gt;在脚本中找到继承关系不正确的实例，并修改为正确的继承关系。例如1.8.1。</p>
<div class="t_msgfont" >4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：无效的参数（Invalid arguments）<br>
一个或多个方法的参数是无效的。<br>
参数无效可能是参数类型错误，也可能是参数个数不正确。<br>
根据以下建议，找到方法的正确语法：<br>
&gt;&gt;&gt;在Keyword模式，如果方法包括参数，则在Value栏会显示该方法的参数提示。<br>
<br>
&gt;&gt;&gt;在Expert 模式，如果方法包括参数，则当你插入方法然后按下Shift+Ctrl+Space键时，QTP会显示该方法的参数的提示信息。（注：只有在Editor Options对话框的General页签中打开了Statement completion功能时才可以看到参数的提示信息。）<br>
<br>
<br>
5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：不能识别item（Cannot identify item）<br>
QTP不能识别方法参数中指定的列表或树对象的item时，请确认指定的item是否存在于对象之中。<br>
&gt;&gt;&gt;如果item不存在，则删除相关脚本步骤，或修改item。<br>
&gt;&gt;&gt;如果item存在，但被测程序中它的名字发生了改变，则修改item的名称，或在脚本中使用item的index而不是名字（如“#4”）。注意，不同的对象或方法，它们使用index的语法可能不同。<br>
<br>
6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：对象的item不唯一（The object’s item is not unique）<br>
在列表或树对象中，可能有多个名字相同的item。<br>
在这种情况下，可以指定item使用index（例如“#4”）。<br>
<br>
7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运行错误：运行失败（Test run failed）<br>
测试运行失败，还有可能是其它未知错误造成的。检查出现错误时的脚本步骤。<br>
如果错误出现在执行检查点或输出值时，请查阅关于检查点与输出值的帮助。<br>
如果错误出现在使用外部文件时，如数据库表、数据库、环境变量文件、或关联仓库文件等，则检查是否可以正常获取并使用文件，或这些文件的存储格式是否正确。<br>
如果错误出现在完成某个脚本动作时，请参考QuickTest Object Model Reference帮助，以确认方法或函数的使用是否正确。<br>
如果错误出现在执行一个标准的VBscrīpt语句时，参考Microsoft VBscrīpt Reference以获得帮助。</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/754b11df1509df1062279834.html#comment">查看评论</a>]]></description>
        <pubDate>2007-10-10  19:24</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/754b11df1509df1062279834.html</guid>
</item>

<item>
        <title><![CDATA[各位国庆快乐！]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/2e9331ade84b4e0a4a36d66a.html]]></link>
        <description><![CDATA[
		
		<p>国庆回来就要开始进行更多更细致的测试工作了，整个测试工具的引用也要全面启动了，到时候肯定还会遇见很多的困难，还要向各位学习阿！</p>
<p> </p>
<p>国庆快乐，总结一下过去，规划一下未来！</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/2e9331ade84b4e0a4a36d66a.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-28  16:17</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/2e9331ade84b4e0a4a36d66a.html</guid>
</item>

<item>
        <title><![CDATA[（转）如何做好测试工作]]></title>
        <link><![CDATA[http://hi.baidu.com/ruanjianceshi/blog/item/b23598225bb3f2f1d6cae243.html]]></link>
        <description><![CDATA[
		
		<p>让我们看看如何利用 RUP(Rational Unified Process) 的往复式 (Iterations) 流程法让软件产品合乎「质量」要求。 </p>
<p align="left">「质量」这个名词在许多领域都会被提到，也没有完全相等与严谨的定义。不过在 RUP 所规范的软件开发领域里，我们认为「质量」应该满足以下条件：一、产品应该按预定计划流程完成生产；二、产品应该满足或超越预定需求；三、前述需求应该可以被预定的方法予以衡量。 </p>
<p align="left">「测试」在整个开发流程里所扮演的角色与介入方式。这篇文章要介绍该用什么方法或衡量工具，才能让产品满足或超越预定需求。 </p>
<p align="left"><strong>测试的五个面向 </strong></p>
<p align="left">「测试在大多数人的认知中，大概就是测试「软件产品的功能」罢了，而且由于时间有限，约莫只要把「功能测试」确实做完也就很不错了。不过，在 RUP 准则里，我们认为合乎「质量」的测试应该做到下述五个面向的工作：分别是功能测试、可靠度测试、效能测试三个基本测试工作，及使用性测试与支持性测试两个延伸性的测试工作。 </p>
<table cellspacing="0" cellpadding="0" align="right" border="0">
<tbody>
    <tr>
        <td align="center"><img src="http://www.zdnet.com.cn/ads/image/advertisement_e1.gif"></td>
    </tr>
    <tr>
        <td>

<a href="http://ad.doubleclick.net/click;h=v8/35c2/0/0/%2a/s;44306;0-0;0;6694711;31-1/1;0/0/0;;~sscs=%3f" target="_top"><img alt="Click here to find out more!" src="http://m1.2mdn.net/viewad/817-grey.gif" border="0"></a>  </td>
    </tr>
</tbody>
</table>
<p>· <strong>功能测试 </strong>（ Functional testing ）：这是最基本的测试。主要目的在于精确检测系统在各种使用环境（ usage scenarios ）中的运作与反应行为，验证产品是否确实符合预定需求。此外，它也包括对系统特性（ features ）及安全性（ security ）的测试。 </p>
<p align="left">· <strong>可靠度测试 </strong>（ Reliability testing ）：这是第二个测试面向，目的在检测系统在预设环境下的运作是否正常与稳定。例如，有些系统会随着运作时间拉长而产生渐次延迟等各种不正常的现象，测试人员必须找出导致异常的原因，确保系统运作是「完全可靠，不会倾向失误 ( 包括系统崩溃、响应停摆、占用内存等 ) 情形」。以下是建议进行的检测工作项目，包括系统结构测试 ( 测试程序代码的语法及处理程序是否正常、简洁，而且不会造成延迟或瓶颈 ) 、压力测试 ( 以严酷环境来检测出系统的运作上限 ) 、竞争测试 ( 同时有两个以上要求被提出时，系统面对这种竞争要求的真实反应情形 ) 、容量测试 ( 系统处理大量数据的反应行为 ) 等。 </p>
<p align="left">· <strong>效能测试 </strong>（ Performance testing ）：目的在于检测当系统运作于上述两个条件 ( 功能与可靠度 ) 的环境下，其面对平均负载与尖峰负载时的真实反应能力。简言之，就是测试系统的真正效能表现。效能测试包括标竿测试 (benchmark tests) 、负载测试 (load tests) 与效能表现测试 (performance profile tests) 。 </p>
<p align="left">上述三种测试面向，是我们认为要完成一项「质量产品」最基本的测试工作。此外，也建议再进行以下两种测试。 </p>
<p align="left">· <strong>使用性测试 </strong>（ Usability testing ）：目的是检测系统是否可以让最终使用者觉得方便好用。因此这项测试会从使用者角度出发，评估系统在人类行为、美观、操作接口、文字说明、辅助与导览工具、训练教材等涉及使用者操作行为方面的表现。 </p>
<p align="left">· <strong>支持性测试 </strong>（ Supportability testing ）：为检测系统是否可以部署在预设的环境，并评估其在被使用时的维护与后续支持能力。此外，这个测试也包括安装测试 (installation tests) 与环境调校测试 (configuration tests) ，可以检测系统在什么样的硬件环境下会运作得更好。 </p>
<p align="left">从上述五个面向的测试可以清楚看出， RUP 准则几乎把所有「设想之内」与「意料之外」的情形与环境都纳入测试工作范围。目的就是要透过一套严谨的程序质量 (Process Quality) 规范，确保产品质量 (Product Quality) 。 </p>
<p align="left">测试工作相当多样且复杂，要完全做好并不简单；诀窍就在于善用工具。 </p>
<p align="left"><strong>善用工具 </strong></p>
<p align="left">大家都清楚善用工具的好处。例如，使用电表而不是自己的手去测量电压或电流，或是当朋友之间争论到底谁比较胖，除了找第三者提供「目测答案」，还会利用「体重计」或「脂肪仪」来做精准的量测，如此才能取得有公信力的答案。 </p>
<p align="left">上述都是使用工具的范例。同样的，软件测试工作也必须运用合适的工具。测试是相当繁琐复杂、且不容出错的工作，测试人员需要模拟、检测、追踪、报告的各种环境与控制变因之庞杂，其实已经超出人类大脑的想象与运算能力，而且任何一项测试行为都可能因为缺少严谨控制的环境或变因而被扭曲，甚至导致完全相反的结果。此时唯有具备精准控制与监视能力，而且不会疲劳、偷懒、发脾气、生病的科学性与专门工具，才能完全胜任这些工作。 </p>
<p align="left"><strong>测试的真谛 </strong></p>
<p align="left">「合格的测试」才能确保合格的产品，而且也唯有合格的产品才是开发团队与客户所冀求的，这就是测试工作的真谛。所以，当你花了一千亿美元经费建造一艘航天飞机之后，请不要以一千美元的草率测试方法毁了它。 </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/ruanjianceshi/blog/category/%C8%ED%BC%FE%B2%E2%CA%D4%D1%A7%CF%B0">软件测试学习</a>&nbsp;<a href="http://hi.baidu.com/ruanjianceshi/blog/item/b23598225bb3f2f1d6cae243.html#comment">查看评论</a>]]></description>
        <pubDate>2007-09-03  13:44</pubDate>
        <category><![CDATA[软件测试学习]]></category>
        <author><![CDATA[ruance]]></author>
		<guid>http://hi.baidu.com/ruanjianceshi/blog/item/b23598225bb3f2f1d6cae243.html</guid>
</item>


</channel>
</rss>