﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-我的ITblog我作主　　关注→　『伊波拉』→　测试　SzDlinXie- ITblog　　  　　   -随笔分类-软件测试管理</title><link>http://www.cnitblog.com/szdlinxie/category/4494.html</link><description>·√·  本ITblog站点记录相关的软件技术文档、网络技术杂志、测试技术杂谈等技术文档的管理站点.联系方式：MSN：dowling@sunlike.cn   QQ:94595885</description><language>zh-cn</language><lastBuildDate>Fri, 30 Sep 2011 06:32:39 GMT</lastBuildDate><pubDate>Fri, 30 Sep 2011 06:32:39 GMT</pubDate><ttl>60</ttl><item><title>项目进度计划方法</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48546.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 29 Aug 2008 15:19:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48546.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48546.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48546.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48546.html</trackback:ping><description><![CDATA[<p><font face=Verdana>安排进度计划的目的是为了控制时间和节约时间，而项目的主要特点之一即是有严格的时间期限要求，由此决定了进度计划在<a href="http://www.miiceic.org.cn/phrase/200604240825565.html" target=_new><u><font color=#0000ff>项目</font></u><a onclick="javascript:tagshow(event, '%B9%DC%C0%ED');" href="javascript:;" target=_self><strong><u><font color=#0000ff>管理</font></u></strong></a></a>中的重要性。</font></p>
<p><font face=Verdana>基本进度计划要说明哪些工作必须于何时完成和完成每一任务所需要的时间，但最好同时也能表示出每项活动所需要的人数。常用的制定进度计划的方法有以下几种：</font></p>
<p><font face=Verdana>①关键日期表</font></p>
<p><font face=Verdana>这是最简单的一种进度计划表，它只列出一些关键活动和进行的日期。</font></p>
<p><font face=Verdana>②甘特图</font></p>
<p><font face=Verdana>也叫做线条图或横道图。它是以横线来表示每项活动的起止时间。甘特图的优点是简单、明了、直观，易于编制，因此到目前为止仍然是小型项目中常用的<a onclick="javascript:tagshow(event, '%B9%A4%BE%DF');" href="javascript:;" target=_self><u><strong><font color=#0000ff>工具</font></strong></u></a>。即使在大型工程项目中，它也是高级管理层了解全局、基层安排进度时有用的工具。</font></p>
<p><font face=Verdana>在甘特图上，可以看出各项活动的开始和终了时间。在绘制各项活动的起止时间时，也考虑它们的先后顺序。但各项活动上间的关系却没有表示出来，同时也没有指出影响项目寿命周期的关键所在。因此，对于复杂的项目来说，甘特图就显得不足以适应。</font></p>
<p><font face=Verdana>③关键路线法（Critical Path Method，简称CPM）。</font></p>
<p><font face=Verdana>④计划评审<a onclick="javascript:tagshow(event, '%BC%BC%CA%F5');" href="javascript:;" target=_self><u><strong><font color=#0000ff>技术</font></strong></u></a>（Program Evaluation and Review Technique，简称PERT）。</font></p>
<p><font face=Verdana>CPM 和PERT是50年代后期几乎同时出现的两种计划方法。随着科学技术和生产的迅速发展，出现了许多庞大而复杂的科研和工程项日，它们工序繁多，协作面广，常常需要动用大量人力、物力、财力。因此，如何合理而有效地把它们组织起来，使之相互协调，在有限资源下，以最短的时间和最低费用，最好地完成整个项目就成为一个突出的重要问题。CPM和PERT就是在这种背景下出现的。这两种计划方法是分别独立发展起来的，但其基本原理是一致的，即用<a onclick="javascript:tagshow(event, '%CD%F8%C2%E7');" href="javascript:;" target=_self><u><strong><font color=#0000ff>网络</font></strong></u></a>图来表达项目中各项活动的进度和它们之间的相互关系，并在此<a onclick="javascript:tagshow(event, '%BB%F9%B4%A1');" href="javascript:;" target=_self><u><strong><font color=#0000ff>基础</font></strong></u></a>上，进行网络分析，计算网络中各项时间多数，确定关键活动与关键路线，利用时差不断地调整与优化网络，以求得最短周期。然后，还可将成本与资源问题考虑进去，以求得综合优化的项目计划<a onclick="javascript:tagshow(event, '%B7%BD%B0%B8');" href="javascript:;" target=_self><u><strong><font color=#0000ff>方案</font></strong></u></a>。因这两种方法都是通过网络图和相应的计算来反映整个项目的全貌，所以又叫做网络计划技术。</font></p>
<p><font face=Verdana>此外，后来还陆续提出了一些新的网络技术，如GERT（Graphical Evaluation and Review Technique，图示评审技术），VERT（Venture Evaluation and Review Technique，风险评审技术）等。</font></p>
<p><font face=Verdana>很显然，采用以上几种不同的进度计划方法本身所需的时间和费用是不同的。关键日期表编制时间最短，费用最低。甘特图所需时间要长一些，费用也高一些。CPM要把每个活动都加以分析，如活动数目较多，还需用<a href="http://www.miiceic.org.cn/phrase/200603021438435.html" target=_new><u><font color=#0000ff>计算机</font></u></a>求出总工期和关键路线，因此花费的时间和费用将更多。PERT法可以说是制订项目进度计划方法中最复杂的一种，所以花费时间和费用也最多。</font></p>
<p><font face=Verdana>应该采用哪一种进度计划方法，主要应考虑下列因素：</font></p>
<p><font face=Verdana>①项目的规模大小。很显然，小项目应采用简单的进度计划方法，大项目为了保证按期按质达到项目目标，就需考虑用较复杂的进度计划方法。</font></p>
<p><font face=Verdana>②项目的复杂程度。这里应该注意到，项目的规模并不一定总是与项目的复杂程度成正比。例如修一条公路，规模虽然不小，但并不太复杂，可以用较简单的进度计划方法。而研制一个小型的电子仪器，要很复杂的步骤和很多专业知识，可能就需要较复杂的进度计划方法。</font></p>
<p><font face=Verdana>③项目的紧急性。在项目急需进行，特别是在开始阶段，需要对各项工作发布指示，以便尽早开始工作，此时，如果用很长时间去编制进度计划，就会延误时间。</font></p>
<p><font face=Verdana>④对项目细节掌握的程度。如果在开始阶段项目的细节无法解明，CPM和PERT法就无法<a onclick="javascript:tagshow(event, '%D3%A6%D3%C3');" href="javascript:;" target=_self><u><strong><font color=#0000ff>应用</font></strong></u></a>。</font></p>
<p><font face=Verdana>⑤总进度是否由一、两项关键事项所决定。如果项目进行过程中有一、两项活动需要花费很长时间，而这期间可把其他准备工作都安排好，那么对其他工作就不必编制详细复杂的进度计划了。</font></p>
<p><font face=Verdana>⑥有无相应的技术力量和设备。例如，没有计算机，CPM和PERT进度计划方法有时就难以应用。而如果没有受过良好训练的合格的技术人员，也无法胜任用复杂的方法编制进度计划。</font></p>
<p><font face=Verdana>此外，根据情况不同，还需考虑客户的要求，能够用在进度计划上的预算等因素。到底采用哪一种方法来编制进度计划，要全面考虑以上各个因素。</font></p>
<p><font face=Verdana></font>&nbsp;</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-29 23:19 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成功的团队管理是项目成功的基础</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48545.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 29 Aug 2008 15:15:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48545.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48545.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48545.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48545.html</trackback:ping><description><![CDATA[<p><font face=Verdana>对于许多<a onclick="javascript:tagshow(event, '%CF%EE%C4%BF');" href="javascript:;" target=_self><u><strong><font color=#0000ff>项目</font></strong></u></a>经理而言，项目<a href="http://www.miiceic.org.cn/phrase/200603082251135.html" target=_new><u><font color=#0000ff>团队</font></u></a>管理恐怕是他们所面临的最头疼的问题之一，而团队管理恰恰又是<a href="http://www.miiceic.org.cn/phrase/200604240825565.html" target=_new><u><font color=#0000ff>项目管理</font></u></a>过程中最重要的部分之一：尽管成功的团队管理不一定能保证项目的成功，但失败的团队管理必然导致项目的失败。在一个项目团队中，有各种不同的人员，他们具有不同的背景，有着不同的特长，也具有不同的性格特征。如何充分发挥每一位团队成员的积极性和特长，并保证这些积极性和特长的发挥能够与项目目标保持一致，是每位项目经理在团队管理中所必须处理好的问题。有趣的是，我们在中国的古典小说《西游记》中找到了这样一个非常生动、非常成功的案例。</p>
<p>&nbsp;&nbsp;&nbsp; 让我们来看看《西游记》中的&#8220;项目团队管理&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; 在《西游记》中，唐僧师徒四人历经千难万险，从&#8220;东土大唐&#8221;出发，最终完成&#8220;西天取经&#8221;的任务。从项目管理的眼光来看，这本身就是一个项目的<a onclick="javascript:tagshow(event, '%CA%B5%CA%A9');" href="javascript:;" target=_self><u><strong><font color=#0000ff>实施</font></strong></u></a>过程，也符合项目的一般特征，即&#8220;特定性&#8221;(项目任务为&#8220;西天取经&#8221;，项目交付物为&#8220;佛经&#8221;)和&#8220;过程性&#8221;(完成取经任务，提交项目交付物———&#8220;佛经&#8221;之后，该项目即宣告结束)。任务完成过程中的其他要素也很齐全：包括项目交付物的&#8220;受益人&#8221;(唐朝皇帝)、项目的&#8220;资助人&#8221;(如来佛祖)、项目实施过程中的支持保障体系(各位神仙)等。</p>
<p>&nbsp;&nbsp;&nbsp; 《西游记》中的&#8220;项目团队&#8221;也很符合项目团队的一般特征：唐僧师徒四人构成了项目实施团队，其团队成员有着不同背景、能力和性格特征；而唐僧这位团队领导人也面临着许多项目经理在团队管理中所面临的一般问题：</p>
<p>&nbsp;&nbsp;&nbsp; 项目团队成员并不是他自己挑选的，而是项目实施组织的管理机构指派给他的。唐僧的三个徒弟，甚至包括白龙马，都是&#8220;上级领导&#8221;观音菩萨在他出发前确定的；换句话说，他没有&#8220;选人权&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp; 项目团队成员的<a onclick="javascript:tagshow(event, '%BC%BC%CA%F5');" href="javascript:;" target=_self><u><strong><font color=#0000ff>技术</font></strong></u></a>能力都强于他(至少都能腾云驾雾，论武功更是个个比他强)，都有一定的来头(原来都是天宫中大将以上职位)，个别人还有一定的管理经历(如猪八戒曾是水军元帅)。</p>
<p>&nbsp;&nbsp;&nbsp; 团队成员业务能力和工作态度各异，有业务能力强但心高气傲的(如孙悟空)，有业务能力中等但工作态度不认真、不积极，&#8220;推一下动一下&#8221;的(如猪八戒)，也有尽管勤勤恳恳、任劳任怨但业务水平较差的(如沙僧)，如何将这些人组成一个具有战斗力的团队是一个大难题。</p>
<p>&nbsp;&nbsp;&nbsp; 尽管名义上有一定的&#8220;行政权力&#8221;，如&#8220;惩罚权&#8221;(念&#8220;紧箍咒&#8221;)、&#8220;解聘权&#8221;(将徒弟撵走)等，但自己也知道缺了这些人(尤其是业务能力强但心高气傲的那位)项目就无法完成；况且&#8220;绩效考核权&#8221;和&#8220;奖励权&#8221;都在上级领导手中(取经完成后的封赏工作都是如来佛祖负责的，唐僧连&#8220;建议权&#8221;都没有)。</p>
<p>&nbsp;&nbsp;&nbsp; 但就是这位缺乏&#8220;行政权力&#8221;，&#8220;技术能力&#8221;也不强的唐僧，带着这个团队完成了常人看起来难以完成的任务。由此看来，作为&#8220;项目经理&#8221;，唐僧确实有许多值得学习之处。</p>
</font>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-29 23:15 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/29/48545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件配置管理流程图</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/12/06/37416.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 06 Dec 2007 09:17:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/12/06/37416.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/37416.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/12/06/37416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/37416.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/37416.html</trackback:ping><description><![CDATA[<font face="宋体, MS Song">&nbsp;<img height=768 alt="" src="http://www.cnitblog.com/images/cnitblog_com/szdlinxie/111.JPG" width=532 border=0><v:stroke joinstyle="miter"></v:stroke></font><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/37416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-12-06 17:17 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/12/06/37416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发项目过程中的风险管理研究</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 07:20:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32146.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32146.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32146.html</trackback:ping><description><![CDATA[&nbsp;
<table cellSpacing=0 cellPadding=0 width=535 border=0>
    <tbody>
        <tr>
            <td>
            <p align=center><strong><span>软件开发项目过程中的风险管理研究<span>[1]</span></span></strong></p>
            </td>
        </tr>
        <tr>
            <td>
            <p align=center>&nbsp;</p>
            <p align=left><span>软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现，如果项目风险变成现实，就有可能影响项目的进度，增加项目的成本，甚至使软件项目不能实现。如果对项目进行风险管理，就可以最大限度的减少风险的发生。但是，目前国内的软件企业不太关心软件项目的风险管理，结果造成软件项目经常性的延期、超过预算，甚至失败。成功的项目管理一般都对项目风险进行了良好的管理。因此任何一个系统开发项目都应将风险管理作为软件项目管理的重要内容。<span> </span></span></p>
            <p align=left><span>　　在项目风险管理中，存在多种风险管理方法与工具，软件项目管理只有找出最适合自己的方法与工具并应用到风险管理中，才能尽量减少软件项目风险，促进项目的成功。</span></p>
            <p align=left><span>　　项目风险管理</span></p>
            <p align=left><span>　　项目风险管理是指为了最好的达到项目的目标，识别、分配、应对项目生命周期内风险的科学与艺术。项目风险管理的目标是使潜在机会或回报最大化，使潜在风险最小化。风险管理涉及的主要过程包括：风险识别，风险量化，风险应对计划制定和风险监控，如图<span>1</span>所示。风险识别在项目的开始时就要进行，并在项目执行中不断进行。就是说，在项目的整个生<span>?</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><span>（<span>1</span>）需求风险<span> </span></span></p>
<p><span>　　<span>①</span>需求已经成为项目基准，但需求还在继续变化；</span></p>
<p><span>　　<span>②</span>需求定义欠佳，而进一步的定义会扩展项目范畴；</span></p>
<p><span>　　<span>③</span>添加额外的需求；</span></p>
<p><span>　　<span>④</span>产品定义含混的部分比预期需要更多的时间；</span></p>
<p><span>　　<span>⑤</span>在做需求中客户参与不够；</span></p>
<p><span>　　<span>⑥</span>缺少有效的需求变化管理过程。</span></p>
<p><span>　　（<span>2</span>）计划编制风险</span></p>
<p><span>　　<span>①</span>计划、资源和产品定义全凭客户或上层领导口头指令，并且不完全一致；</span></p>
<p><span>　　<span>②</span>计划是优化的，是<span>"</span>最佳状态<span>"</span>，但计划不现实，只能算是<span>"</span>期望状态<span>"</span>；</span></p>
<p><span>　　<span>③</span>计划基于使用特定的小组成员，而那个特定的小组成员其实指望不上；</span></p>
<p><span>　　<span>④</span>产品规模<span>(</span>代码行数、功能点、与前一产品规模的百分比<span>)</span>比估计的要大；</span></p>
<p><span>　　<span>⑤</span>完成目标日期提前，但没有相应地调整产品范围或可用资源；</span></p>
<p><span>　　<span>⑥</span>涉足不熟悉的产品领域，花费在设计和实现上的时间比预期的要多。</span></p>
<p><span>　　（<span>3</span>）组织和管理风险</span></p>
<p><span>　　<span>①</span>仅由管理层或市场人员进行技术决策，导致计划进度缓慢，计划时间延长；</span></p>
<p><span>　　<span>②</span>低效的项目组结构降低生产率；</span></p>
<p><span>　　<span>③</span>管理层审查决策的周期比预期的时间长；</span></p>
<p><span>　　<span>④</span>预算削减，打乱项目计划；</span></p>
<p><span>　　<span>⑤</span>管理层作出了打击项目组织积极性的决定；</span></p>
<p><span>　　<span>⑥</span>缺乏必要的规范，导致工作失误与重复工作；</span></p>
<p><span>　　<span>⑦</span>非技术的第三方的工作<span>(</span>预算批准、设备采购批准、法律方面的审查、安全保证等<span>)</span>时间比预期的延长。</span></p>
<p><span>　　（<span>4</span>）人员风险</span></p>
<p><span>　　<span>①</span>作为先决条件的任务<span>(</span>如培训及其他项目<span>)</span>不能按时完成；</span></p>
<p><span>　　<span>②</span>开发人员和管理层之间关系不佳，导致决策缓慢，影响全局；</span></p>
<p><span>　　<span>③</span>缺乏激励措施，士气低下，降低了生产能力；</span></p>
<p><span>　　<span>④</span>某些人员需要更多的时间适应还不熟悉的软件工具和环境；</span></p>
<p><span>　　<span>⑤</span>项目后期加入新的开发人员，需进行培训并逐渐与现有成员沟通，从而使现有成员的工作效率降低；</span></p>
<p><span>　　<span>⑥</span>由于项目组成员之间发生冲突，导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作；</span></p>
<p><span>　　<span>⑦</span>不适应工作的成员没有调离项目组，影响了项目组其他成员的积极性；</span></p>
<p><span>　　<span>⑧</span>没有找到项目急需的具有特定技能的人。</span></p>
<p>&nbsp;</p>
<p><span>（<span>5</span>）开发环境风险<span> </span></span></p>
<p><span>　　<span>①</span>设施未及时到位；</span></p>
<p><span>　　<span>②</span>设施虽到位，但不配套，如没有电话、网线、办公用品等；</span></p>
<p><span>　　<span>③</span>设施拥挤、杂乱或者破损；</span></p>
<p><span>　　<span>④</span>开发工具未及时到位；</span></p>
<p><span>　　<span>⑤</span>开发工具不如期望的那样有效，开发人员需要时间创建工作环境或者切换新的工具；</span></p>
<p><span>　　<span>⑥</span>新的开发工具的学习期比预期的长，内容繁多。</span></p>
<p><span>　　（<span>6</span>）客户风险</span></p>
<p><span>　　<span>①</span>客户对于最后交付的产品不满意，要求重新设计和重做；</span></p>
<p><span>　　<span>②</span>客户的意见未被采纳，造成产品最终无法满足用户要求，因而必须重做；</span></p>
<p><span>　　<span>③</span>客户对规划、原型和规格的审核决策周期比预期的要长；</span></p>
<p><span>　　<span>④</span>客户没有或不能参与规划、原型和规格阶段的审核，导致需求不稳定和产品生产周期的变更；</span></p>
<p><span>　　<span>⑤</span>客户答复的时间<span>(</span>如回答或澄清与需求相关问题的时间<span>)</span>比预期长；</span></p>
<p><span>　　<span>⑥</span>客户提供的组件质量欠佳，导致额外的测试、设计和集成工作，以及额外的客户关系管理工作。</span></p>
<p><span>　　（<span>7</span>）产品风险</span></p>
<p><span>　　<span>①</span>矫正质量低下的不可接受的产品，需要比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>②</span>开发额外的不需要的功能<span>(</span>镀金<span>)</span>，延长了计划进度；</span></p>
<p><span>　　<span>③</span>严格要求与现有系统兼容，需要进行比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>④</span>要求与其他系统或不受本项目组控制的系统相连，导致无法预料的设计、实现和测试工作；</span></p>
<p><span>　　<span>⑤</span>在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题；</span></p>
<p><span>　　<span>⑥</span>开发一种全新的模块将比预期花费更长的时间；</span></p>
<p><span>　　<span>⑦</span>依赖正在开发中的技术将延长计划进度。<span> </span></span></p>
<p><span>　　（<span>8</span>）设计和实现风险</span></p>
<p><span>　　<span>①</span>设计质量低下，导致重复设计；</span></p>
<span>　　</span><span>②</span><span>一些必要的功能无法使用现有的代码和库实现，开发人员必须使用新的库或者自行开发新的功能</span>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 15:20 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>db2安装配置补遗</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 20 Aug 2007 16:44:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32125.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32125.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32125.html</trackback:ping><description><![CDATA[<a href="http://www.cnitblog.com/Files/szdlinxie/db2C.pdf">/Files/szdlinxie/db2C.pdf</a>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 00:44 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试风险的管理</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/06/10/28280.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sun, 10 Jun 2007 01:17:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/06/10/28280.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/28280.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/06/10/28280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/28280.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/28280.html</trackback:ping><description><![CDATA[&nbsp;
<p align=left><span><a href="javascript:;" target=_self><strong><span><span>测试</span></span></strong></a></span><span>风险是不可避免的、总是存在的，所以对测试风险的管理非常重要，必须尽力降低测试中所存在的风险，最大程度地保证质量和满足客户的需求。在测试<span><a href="javascript:;" target=_self><strong><span><span>工作</span></span></strong></a></span>中，主要的风险有：<span> </span></span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>一、质量需求或产品的特性理解不准确，造成测试范围分析的误差，结果某些地方始终测试不到或验证的标准不对；<span> <br>&nbsp;&nbsp;&nbsp; </span>二、<span><a href="javascript:;" target=_self><strong><span><span>测试用例</span></span></strong></a></span>没有得到百分之百的执行，如有些测试用例被有意或无意的遗漏；<span> <br>&nbsp;&nbsp;&nbsp; </span>三、需求的临时<span>/</span>突然变化，导致设计的修改和代码的重写，测试时间不够；<span> <br>&nbsp;&nbsp;&nbsp; </span>四、质量标准不都是很清晰的，如适用性的测试，仁者见仁、智者见智；<span> <br>&nbsp;&nbsp;&nbsp; </span>五、测试用例设计不到位，忽视了一些边界条件、深层次的逻辑、用户场景等；<span> <br>&nbsp;&nbsp;&nbsp; </span>六、测试环境，一般不可能和实际运行环境完全一致，造成测试结果的误差；<span> <br>&nbsp;&nbsp;&nbsp; </span>七、有些缺陷出现频率不是百分之百，不容易被发现；如果代码质量差，软件缺陷很多，被漏检的缺陷可能性就大；<span> <br>&nbsp;&nbsp;&nbsp; </span>八、回归测试一般不运行全部测试用例，是有选择性的执行，必然带来风险。<span> </span></span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>前面三种风险是可以避免的，而四至七的四种风险是不能避免的，可以降到最低。最后一种回归测试风险是可以避免，但出于时间或成本的考虑，一般也是存在的。<span><br>&nbsp;&nbsp;&nbsp; </span>针对上述<span><a href="javascript:;" target=_self><strong><span><span>软件测试</span></span></strong></a></span>的风险，有一些有效的测试风险控制方法，如：</span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>&#183;</span><span>测试环境不对可以通过事先列出要检查的所有条目，在测试环境设置好后，由<span><a href="javascript:;" target=_self><strong><span><span>其他</span></span></strong></a></span>人员按已列出条目逐条检查；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>有些测试风险可能带来的后果非常严重，能否将它转化为其他一些不会引起严重后果的低风险。如产品发布前夕，在某个不是很重要的新功能上发现一个严重的缺陷，如果修正这个缺陷，很有可能引起某个原有功能上的缺陷。这时处理这个缺陷所带来的风险就很大，对策是去掉<span>(Diasble)</span>那个新功能，转移这种风险；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>有些风险不可避免，就设法降低风险，如<span>&#8220;</span>程序中未发现的缺陷<span>&#8221;</span>这种风险总是存在，我们就要通过提高测试用例的覆盖率（如达到<span>99.9%</span>）来降低这种风险；<span> </span></span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>为了避免、转移或降低风险，事先要做好风险管理计划和控制风险的策略，并对风险的处理还要制定一些应急的、有效的处理方案，如：</span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>&#183;</span><span>在做资源、时间、成本等估算时，要留有余地，不要用到<span>100%</span>；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>在项目开始前，把一些环节或边界上的可能会有变化、难以控制的因素列入风险管理计划中；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>对每个关键性技术人员培养后备人员，作好人员流动的准备，采取一些措施确保人员一旦离开公司，<span>&nbsp;&nbsp;&nbsp; </span>项目不会受到严重影响，仍能可以继续下去；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>制定文档标准，并建立一种机制，保证文档及时产生；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>对所有工作多进行互相审查，及时发现问题，包括对不同的测试人员在不同的测试模块上相互调换；<span>&nbsp;<br>&nbsp;&nbsp;&nbsp; </span></span><span>&#183;</span><span>对所有过程进行日常跟踪，及时发现风险出现的征兆，避免风险。</span><span> </span></p>
<p align=left><span>&nbsp;&nbsp;&nbsp; </span><span>要想真正回避风险，就必须彻底改变测试项目的管理方式；针对测试的各种风险，建立一种<span>&#8220;</span>防患于未然<span>&#8221;</span>或<span>&#8220;</span>以预防为主<span>&#8221;</span>的管理意识。与传统的软件测试相比，全过程测试管理方式不仅可以有效降低产品的质量风险，而且还可以提前对软件产品缺陷进行规避、缩短对缺陷的反馈周期和整个项目的测试周期。</span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/28280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-06-10 09:17 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/06/10/28280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Robot 基础使用手册</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 21 May 2007 06:17:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27372.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27372.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27372.html</trackback:ping><description><![CDATA[<p>Rational Robot 基础使用手册<br>目录..................................................................................................................................................................................... 1<br>第一章 绪论....................................................................................................................................................................... 3<br>一、概述......................................................................................................................................................................... 3<br>二、基本概念................................................................................................................................................................. 4<br>第二章 使用....................................................................................................................................................................... 5<br>一、GUI 脚本................................................................................................................................................................. 5<br>（一）、设置以及预定义........................................................................................................................................... 5<br>（二）、记录GUI 脚本............................................................................................................................................ 10<br>（三）、在GUI Script 中加入特写........................................................................................................................... 17<br>（四）、使用查证点................................................................................................................................................. 22<br>（五）、使用Datapools............................................................................................................................................ 23<br>（六）、编辑GUI 脚本............................................................................................................................................ 25<br>（七）、编译GUI 脚本............................................................................................................................................ 26<br>（八）、调试GUI 脚本............................................................................................................................................ 27<br>（九）、回放GUI 脚本............................................................................................................................................ 29<br>（十）、工具条操作................................................................................................................................................. 30<br>二、VU 脚本................................................................................................................................................................ 32<br>（一）、设置以及预定义......................................................................................................................................... 32<br>（二）、记录VU 脚本.............................................................................................................................................. 32<br>（三）、回放VU 脚本.............................................................................................................................................. 33<br>（四）、重录VU 脚本.............................................................................................................................................. 33<br>（五）、复制VU 脚本.............................................................................................................................................. 34<br>（六）、删除VU 脚本.............................................................................................................................................. 34<br>（七）、编译VU 脚本.............................................................................................................................................. 34<br>（八）、查询会话中的脚本列表.............................................................................................................................. 34<br>（九）、用会话生成脚本......................................................................................................................................... 35<br>（十）、将VU 脚本融入会话.................................................................................................................................. 35<br>（十一）、手工VU 脚本编码.................................................................................................................................. 35<br>三、VB 脚本................................................................................................................................................................. 36<br>四、SQA BASIC............................................................................................................................................................. 37<br>（一）、定制SQA Basic 脚本.................................................................................................................................. 37<br>五、测试应用程序....................................................................................................................................................... 42<br>（一）、测试Delphi 应用程序................................................................................................................................. 42<br>51Testing 软件测试网<br>（二）、测试Visual Basic 应用程序......................................................................................................................... 43<br>第三章 参考................................................................................................................................................................... 44<br>（一）查证点............................................................................................................................................................... 44<br>（二）查证方法........................................................................................................................................................... 45<br>（三）鉴别方法........................................................................................................................................................... 45<br>（四）标准数据类型................................................................................................................................................... 45<br>（五）RATIONAL ROBOT 命令行选项....................................................................................................................... 45<br>（六）RATIONAL ROBOT 窗口.................................................................................................................................. 45<br>（七）菜单................................................................................................................................................................... 45<br></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-21 14:17 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rational Suite Enterprise2002---系统测试解决方案</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 21 May 2007 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27370.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27370.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27370.html</trackback:ping><description><![CDATA[Rational Suite Enterprise2002<br>系统测试解决方案V 1.0<br><br>Rational 系统测试解决方案 目录<br>- I -<br>目录<br>第一章 整体解决方案.................................................................................................................................. 1<br>第二章 产品线简介...................................................................................................................................... 3<br>2.1 测试管理........................................................................................................................................ 3<br>2.2 调用和功能测试............................................................................................................................. 3<br>2.3 运行时分析.................................................................................................................................... 3<br>2.4 功能测试........................................................................................................................................ 3<br>2.5 微软开发环境的功能测试............................................................................................................. 3<br>2.6 针对X-Windows和终端应用的衰减和调用测试......................................................................... 3<br>2.7 变更影响跟踪................................................................................................................................ 3<br>第三章 具体产品简介.................................................................................................................................. 4<br>3.1 TestManager.................................................................................................................................. 4<br>3.1.1 获得需求变更对于测试的影响........................................................................................... 4<br>3.1.2 让整个团队获得信息共享访问......................................................................................... 4<br>3.1.3 独立性和集成性................................................................................................................. 4<br>3.2 TeamTest........................................................................................................................................ 4<br>3.2.1 提高应用程序质量............................................................................................................. 4<br>3.2.2 重复功能性测试................................................................................................................. 4<br>3.2.3 量化的性能测试................................................................................................................. 4<br>3.2.4 集成测试管理..................................................................................................................... 4<br>3.3 PurifyPlus.................................................................................................................................... 5<br>3.3.1 Features and Benefits................................................................................................... 5<br>3.3.2 已支持环境......................................................................................................................... 5<br>3.3.3 注册.................................................................................................................................... 5<br>3.4 Robot.............................................................................................................................................. 5<br>3.4.1 降低测试用时提高效率..................................................................................................... 5<br>3.4.2 Rational Robot的性能.................................................................................................... 5<br>3.5 Visual Test.................................................................................................................................. 6<br>3.6 prevue............................................................................................................................................ 6<br>3.6.1 自动化脚本生成................................................................................................................. 6<br>3.6.2 非插入性测试..................................................................................................................... 6<br>3.6.3 全面的测试结果................................................................................................................. 6<br>3.7 ClearQuest.................................................................................................................................... 6<br>3.7.1 缺陷和变更跟踪工具-- Rational ClearQuest ............................................................. 6<br>3.7.2 配合你的工作方式............................................................................................................. 6<br>3.7.3 针对整个生命周期的变更跟踪......................................................................................... 6<br>3.7.4 设计一次就可以到处使用................................................................................................. 7<br>3.7.5 将分散的团队整合起来..................................................................................................... 7<br>Rational 系统测试解决方案 整体解决方案<br>- 1 -<br>第一章 整体解决方案<br>TestStudio 是Rational Suite Enterprise的系统测试工具组, 提供了针对可靠性测试, 功能<br>测试, 分布式功能测试, 衰减测试, 单元测试和CS的调用测试, 网页应用测试和ERP应用测试的自<br>动化解决方案. 它提供了一个同开发无缝集成的测试过程, 软件配置管理和测试管理三方面的支<br>持，提高了测试质量和最终的产品质量.<br>针对嵌入式-实时-基于网络的应用产品, Rational提供了实时测试套件. 它提供了针对目标主<br>机的测试, 代码覆盖措施, 内存泄漏检测和性能记录等方面的自动化功能.<br>在开发下一代应用程序软件的激烈竞赛中，企业所面临的压力越来越大，需要在更短时间内开<br>发出更高质量的产品，即我们称之为&#8220;软件开发矛盾&#8221;的两难境地。过去，企业通常以质量为代价<br>或推迟开发某些新功能，来满足产品的面市期限。如今，这些企业认识到：要想生存，就必须在第<br>一时间内既快又好地开发出应用程序。也就是说，开发团队中的每位成员都必须以保证产品质量为<br>己任。Rational Suite TestStudio v2002 可以使企业在Internet 时代，通过交付高质量的应用<br>程序，帮助他们解决软件开发的矛盾。<br>Rational Suite TestStudio 提供了一种集成测试解决方案，使测试人员就产品的功能、可靠<br>性和性能，进行全方位的质量测试。它包括一整套自动化测试和缺陷跟踪工具，以及Rational 团<br>队统一平台(Rational Team Unifying Platform)。该平台通过提供对项目需求、变更请求、测试资<br>料及其他数据的共享，提高了团队的工作效率。通过Rational 软件开发服务机构提供的支持，<br>Rational Suite TestStudio 可以帮助开发团队加速应用程序的开发和实施。<br>功能测试，可以确保应用程序满足产品规格说明和测试计划的每一条业务需求。Rational Suite<br>TestStudio 的目标，是使功能测试变得更简单、有效并可重复执行。为便于这种基于需求的测试，<br>它还提供了Rational RequisitePro.（获奖的需求管理工具）和Rational Robot（创建和维护功能<br>测试脚本的业界领先工具）。<br>Rational Robot 可以对在各种独立开发环境(IDE) 中开发的应用程序，创建、修改并执行功能<br>测试、分布式功能测试、回归测试以及整合测试。它还可以记录并回放能识别业务应用程序对象的<br>测试脚本。除此之外，使用Rational Robot 还可以快速有效地跟踪、报告与质量保证测试相关的<br>所有信息，并将这些信息绘制成图表。使用Rational Suite TestStudio 集成工具包， 可以在一<br>个测试周期中，将Rational Robot 的回归测试与Rational Purify. 结合使用完成可靠性测试，与<br>Rational PureCoverage. 结合使用完成代码覆盖计算，与Rational Quantify. 结合使用完成应用<br>程序性能测试。通过将优化的回归测试脚本与该工具化的测试方式相结合， Rational Suite<br>TestStudio 使可靠性及功能回归测试达到了前所未有的水平。<br>Rational Suite TestStudio 通过Rational TestFactory. 使可靠性测试自动化，该工具可以<br>自动找出应用程序中的缺陷。Rational TestFactory 将在自动认知用户界面的基础上， 创建测试<br>流程对应用程序进行严格的测试。基于这一点，它首先为要测试的应用程序构建元素图，然后自动<br>测试其中的每个元素。它可以找出所有的程序缺陷，例如，运行时错误（如挂起和异常）或设计缺<br>陷（如对话框按钮缺少快捷键）。对于每一个缺陷，TestFactory 都会创建相应的脚本将其重现。随<br>后，测试人员在Rational ClearQuest.（全面集成的变更与缺陷管理系统）中报告缺陷，确保将这<br>些缺陷被正确地跟踪并修正。<br>通过确定哪些功能测试脚本会受到代码变更的影响，Rational TestFactory 可以加速并简化回<br>归测试。这样，测试人员可以快速找到所做的修改，并且运行最少的脚本，即可对开发人员所做的<br>任何修改进行全面测试。<br>Rational Suite TestStudio 提供三种级别的诊断信息，开发人员可以对导致性能不佳的业务<br>事务处理、底层客户端调用和系统资源进行分析， 来找出产生性能瓶颈的原因。例如，Rational<br>Suite TestStudio 性能测试可以帮助测试人员确定，何时可通过增加系统内存或提高CPU 速度来<br>Rational 系统测试解决方案 整体解决方案<br>- 2 -<br>优化后端服务器，还可以找出，导致性能问题的客户端、中间层或服务器端代码所在的特定区域。<br>性能测试的准确性取决于测试工具根据实际用户负载情况调节测试负载，以及通过模拟实际工<br>作负载时间进度情况创建负载的能力。使用Rational Suite TestStudio，不必编程就可以迅速制<br>定综合的使用方案来模拟用户组活动，并创建工作负载计划。在给定时间内，通过指定虚拟用户群<br>提交事务处理的数量和类型， Rational Suite TestStudio 可以准确控制事务处理的速度。而且，<br>Rational Suite TestStudio 可以将功能测试与负载测试集于一身，便于测试人员设置后端服务器<br>的负载规模，同时使用同一个计划对客户端进行功能测试。<br>Rational 系统测试解决方案 产品线简介<br>- 3 -<br>第二章 产品线简介<br>2.1 测试管理<br>Rational TestManager 从一个独立的,全局的角度对于各种测试活动进行管理和控制. 它让测<br>试者可以随时了解需求变更对于测试用例的影响, 通过针对一致目标而进行的测试与报告提高了团<br>队生产力.<br>2.2 调用和功能测试<br>Rational TeamTest 提供了功能, 分布式功能, 衰减, 客户-服务器应用调用, 网页和ERP应用<br>的自动化测试解决方案. 通过跟踪和测试管理可以降低团队开发和配置的风险.<br>2.3 运行时分析<br>Rational PurifyPlus 工具集对于开发期间的单元测试实现了自动化, 确保了可靠性, 高性能<br>和高质量. 包括三个独立工具:<br>l Rational Purify<br>定位内存泄漏和运行时错误<br>l Rational Quantify<br>寻找性能瓶颈<br>l Rational PureCoverage<br>表示了未测试代码和提供代码覆盖分析<br>2.4 功能测试<br>Rational Robot 是一个针对WEB, ERP 和C/S 进行功能自动化测试的工具. 它可以降低功能测<br>试上的人力和物力的投入和风险包括了可见和非可见对象.<br>2.5 微软开发环境的功能测试<br>Rational Visual Test则是针对Windows应用程序的功能测试的自动化工具. 它可以直接针对<br>微软的可视化开发环境使用可复用, 可维护和可扩展的测试脚本, 降低了开发高质量软件的花费.<br>2.6 针对X-Windows和终端应用的衰减和调用测试<br>Rational preVue 是一个针对企业级别的基于X-Windows 和终端应用的自动化测试工具. 它们<br>降低了发布风险, 投入并且提高了用户的满意程度.<br>2.7 变更影响跟踪<br>Rational ClearQuest 是一个可以使用于任意平台上各种类型的项目的需求跟踪和变更调整工<br>具.<br>Rational 系统测试解决方案 具体产品简介<br>- 4 -<br>第三章 具体产品简介<br>3.1 TestManager<br>Rational TestManager用来从各个方面进行测试管理:<br>* 测试计划<br>* 测试设计<br>* 测试实现<br>* 测试执行<br>* 结果分析<br>Rational TestManager 可以处理针对测试的计划, 执行和结果数据收集-甚至包括使用第三方<br>的测试工具.使用Rational TestManager, 测试者可以通过创建, 维护或引用测试用例来组织自己<br>的测试计划, 包括来自外部稳定, 模块, 需求变更请求和Excel 电子表格的数据.<br>3.1.1 获得需求变更对于测试的影响<br>Rational TestManager 一个主要功能就是通过自动跟踪整个项目的质量和需求状态来分析所<br>造成的针对测试用例的影响, 由此成为整个软件团队的项目状态的数据集散中心.<br>3.1.2 让整个团队获得信息共享访问<br>QA 或者QE 经理, 商业分析师, 开发者和测试者使用Rational TestManager 都恶意获得基于<br>他们自己特定角度的测试结构数据, 并且利用这些数据对于他们的工作进行决策. Rational<br>TestManager 在整个项目生命周期内为团队提供了持续地面向测试计划目标的状态和进度跟踪.<br>3.1.3 独立性和集成性<br>Rational TestManager 在Rational Suite TestStudio 中作为一个独立组件存在. 我们也可以<br>配合Rational TeamTest 和Rational Robot 使用.作为一个集成的解决方案套件, Rational<br>TestManager 可以和Rational 的其他产品很好的连接各种产品的输入的即时跟踪, 诸如: Rational<br>RequisitePro 需求组件, Rational Rose系统分析模型, 和Rational ClearQuest 需求变更. 它的<br>开发式API可以让测试者为不同输入类型制作接口配件.<br>3.2 TeamTest<br>3.2.1 提高应用程序质量<br>Rational(r) TeamTest为开发中的项目提供了功能和性能的自动化, 高效率以及可重复的测试,<br>测试管理和跟踪能力. 测试者不仅可以降低配置应用的风险, 还减少了测试用时使得整个团队的生<br>产力得到提高.<br>3.2.2 重复功能性测试<br>Rational TeamTest 让测试者可以长剑和维护强壮的, 可重复的测试脚本进行功能-分布式功能<br>-衰减-冒烟测试, 可以集成在大多数开发环境当中, 和Rational Robot 一样, 它使用了<br>Object-Testing(r)技术.<br>3.2.3 量化的性能测试<br>测试者可以设计并执行高度量化的性能测试来模拟现实世界当中的真是情景. Rational<br>TeamTest使得不用编程就可以建立复杂的用例场景; 并且产生很有条理的报告显示性能问题的根源<br>所在.<br>3.2.4 集成测试管理<br>Rational TestManager 是一个Rational TeamTest集成组件, 是测试者的工作平台, 是一个有<br>力的, 开放式的可扩展环境来管理相关测试工作. 测试者使用Rational TestManager进行计划, 设<br>计和实现, 执行并且升级功能测试和性能测试; 并且Rational ClearQuest 负责根据相应的变更进<br>行跟踪.<br>Rational 系统测试解决方案 具体产品简介<br>- 5 -<br>3.3 PurifyPlus<br>Rational PurifyPlus是一个完整的自动化运行时分析工具, 用来提高应用程序的性能和质量.<br>它为哪些需要进行创建和配置可靠的应用程序的开发者设计, 支持Unix平台的C/C++, 和Java, 以<br>及Windows平台上的VC/C++, C#, VB.NET, VB .PurifyPlus for Windows 对于Java 的服务器端和<br>客户端提供一样的支持. 安装在你的WEB服务器上面以后, 你可以针对在服务器诸如IBM WebSphere,<br>BEA WebLogic 和Apache Jakarta Tomcat 上的Java Server Pages (JSPs)和Java servlets 使用<br>PurifyPlus.Rational PurifyPlus 由Rational Purify, Quantify 和 PureCoverage 组<br>成.PurifyPlus为Windows/UNIX开发者提高了生产力, 因为它完全集成在进程当中. 它不要求重新<br>编译目标应用程序, 不会降低你的进度. PurifyPlus 帮助你可视化的执行代码, 提供便于理解和可<br>重复信息, 可以结合或者独立于源代码-包括各种第三方组件.<br>3.3.1 Features and Benefits<br>* Rational Purify用来探测内存泄漏和代码错误.<br>* Rational Quantify 用来发现性能瓶颈.<br>* Rational PureCoverage 用来标识未测试代码.<br>3.3.2 已支持环境<br>* Rational PurifyPlus for Windows<br>Windows 2000 or NT 4.0 or above (including Japanese Windows NT 4.0)<br>Visual Studio 6.0<br>Rational PurifyPlus for UNIX<br>Sun Solaris 2.5.1, 2.6, 7, 8<br>Forte 6, Update 2, and GCC 2.95.2<br>HP-UX 10.20, 11.0, 11.11<br>HP cc/aCC, GCC 2.95.3 and GNUPro 98r2<br>Compaq Tru64 UNIX V4.0F patch 4, 4.0G patch 1, V5.0A, V5.1<br>Compaq C, CompaqCH (for Tru64 UNIX V4.0F, C or C++ prior to V6.2 supported with patch<br>CxxREDIST 621<br>3.3.3 注册<br>* Windows版本适用于nodelocked 或者floating注册方式<br>* UNIX 版本适用于named user或者floating注册方式<br>* 注册使用Globetrotter Software's FLEXlm license manager<br>3.4 Robot<br>3.4.1 降低测试用时提高效率<br>Rational Robot 是一个面向对象的工具让你可以创建, 修改和实现自动化进行功能, 衰减, 冒<br>烟测试. Rational TestManager 和Rational SiteCheck包含于Rational Robot, 让你实现测试的<br>各方面数据的团队共享, 给你一个面向站点的强壮性工具: 实现网站链接管理, 站点监视等功能.<br>3.4.2 Rational Robot的性能<br>仅仅通过鼠标就可以实现GUI 和各个属性的测试.<br>* 可以识别和记录以及重复测试各种应用程序中的对象.<br>* 跟踪, 报告和图形化你的测试进程的信息<br>* 检测以及修改你的网站的各个元素的问题<br>* 在记录的时候检查和修改测试脚本<br>* 对于多重平台使用同样测试脚本<br>Rational Robot 支持各种环境和语言, 包括HTML和DHMTL, Java, Microsoft Visual Basic and<br>Visual C++, Oracle Developer/2000, Delphi, SAP, PeopleSoft, 和Sybase PowerBuilder.<br>Rational 系统测试解决方案 具体产品简介<br>- 6 -<br>3.5 Visual Test<br>Rational Visual Test(r) 6.5 是专门为微软的视窗应用程序的开发者和测试者开发的自动化<br>功能测试工具, 并且可以和Microsoft Visual C++很好地集成. Rational Visual Test 让开发者和<br>测试者便利地组织程序.<br>特性和收益<br>* 支持Microsoft J++ WFC Controls<br>* 更好的Winfo工具<br>* 更好的套件管理者<br>* 将一个项目的所有文件批处理进入p-code<br>* 支持多监视器<br>* 新的activeX过程<br>* 新的ActiveX/Web过程<br>* 新的RUNEX 函数<br>* 新的MSI-based 安装器<br>3.6 prevue<br>Rational(r) preVue是针对X&amp;终端应用的测试解决方案, 让使用者降低测试投入和提高客户满<br>意程度. Rational preVue利用软件脚本模拟用户或者相关硬件行为, 实现自动化功能和衰减测试,<br>并以量化和图形化形式提交测试数据报告.<br>3.6.1 自动化脚本生成<br>Rational preVue 利用测试脚本记录或者"偷拍"用户和应用程序之间的交互合执行, 便于你可<br>以验证你的应用程序在各种调用方式下的性能及可靠性.<br>3.6.2 非插入性测试<br>使用Rational preVue 不需要额外负担. 针对目标应用程序不需要定制函数库或者修改. 该"<br>黑盒"方式允许你可以实现平台无关的X&amp;终端程序的测试.<br>3.6.3 全面的测试结果<br>Rational preVue 使用专业的报告, 图片和日志保存测试结果. 图片帮助你及早发现微小的质<br>量和性能问题, 使得它们没有机会暴露给最终用户.<br>* Rational preVue-X<br>X Window测试工具, 可以在任何X Window 环境中使用.<br>* Rational preVue-ASCII<br>远程终端模拟器, 模拟用户操作应用程序进行多用户自动化测试. Rational preVue-ASCII 支持<br>UNIX, MS Windows NT, MVS, 或者VMS 等系统的终端应用程序测试.<br>3.7 ClearQuest<br>3.7.1 缺陷和变更跟踪工具-- Rational ClearQuest<br>Rational(r) ClearQuest(r)缺陷跟踪工具是目前最具扩展性的系统. 不管你的开发团队的大<br>小和地理分布, 不管他们使用的平台--Windows, Unix或者Web--Rational ClearQuest都能实现高<br>效率地捕获, 跟踪和管理任意类型的变更. 你可以选择配置或者选择一个合适的模板配合你的过程.<br>配合企业数据库, ClearQuest 可以针对各种尺寸的项目. 同其他开发解决方案的集成确保所有团队<br>成员同缺陷/变更跟踪过程绑定.<br>3.7.2 配合你的工作方式<br>不同的组织使用不同的过程处理软件缺陷, 需求变更何其他修改结果. Rational ClearQuest<br>提供针对大多数组织的过程和允许你定制自己的过程.<br>3.7.3 针对整个生命周期的变更跟踪<br>开发当中的每一个人都不仅需要了解变更在特定层面上造成的影响, 也需要理解对于整个项目<br>Rational 系统测试解决方案 具体产品简介<br>- 7 -<br>的影响. 使用Rational ClearQuest 你可以在整个项目的生命周期中跟踪缺陷和需求变更, 分配工<br>作活动和访问项目的真实状态.<br>3.7.4 设计一次就可以到处使用<br>不管你的开发团队大小和他们的地理分布, 不管他们使用的平台, Rational ClearQuest 都可<br>以实现变更的捕获, 跟踪和管理. 用户化仅仅需要一次, 然后即可以发布到Windows, UNIX, Web 的<br>客户层面. ClearQuest 支持好几种企业数据库. 当你的组织成长的时候, ClearQuest 将和你一起成<br>长.<br>3.7.5 将分散的团队整合起来<br>基于被验证的Rational ClearCase MultiSite 技术, ClearQuest MultiSite 是一个针对<br>Rational ClearQuest 的选项, 支持针对地理上分布的站点的同步发展.
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-21 14:10 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/21/27370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用TestDirector的测试管理的流程</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20899.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 02:55:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20899.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20899.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20899.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20899.html</trackback:ping><description><![CDATA[
		<div align="center">
				<strong>
						<font color="#000066" size="3">用TestDirector的测试管理的流程<br /></font>
				</strong>
		</div>
		<div class="home01" align="left">TestDirector的测试管理包括如下四个阶段： </div>
		<p class="home01" align="left">　　需求定义（Specify Requirements）：分析应用程序并确定测试需求。</p>
		<p class="home01" align="left">　　测试计划（Plan Tests）：基于测试需求，建立测试计划。</p>
		<p class="home01" align="left">　　测试执行（Execute Tests）：创建测试集（Test Set）并执行测试。</p>
		<p class="home01" align="left">　　缺陷跟踪（Track Defects）：报告程序中产生的缺陷并跟踪缺陷修复的全过程。</p>
		<p class="home01" align="left">　　贯穿测试的每一个阶段，你能够通过产生详细的报告和图标对数据进行分析。</p>
		<p class="home01" align="left">1.2需求定义（Specify Requirements）<br />　　分析应用程序并确定测试需求。</p>
		<p class="home01" align="left">　　定义测试范围（Define Testing Scope）：检查应用程序文档，并确定测试范围——测试目的、目标和策略。</p>
		<p class="home01" align="left">　　创建需求（Create Requirements）：创建需求树（Requirements Tree），并确定它涵盖所有的测试需求。</p>
		<p class="home01" align="left">　　描述需求（Detail Requirements）：为“需求树”中的每一个需求主题建立了一个详细的目录，并描述每一个需求，给它分配一个优先级，如有必要的话还可以加上附件。</p>
		<p class="home01" align="left">　　分析需求（Analyze Requirements）：产生报告和图表来帮助你分析测试需求，并检查需求以确保它们在你的测试范围内。</p>
		<p class="home01" align="left"> </p>
		<p class="home01" align="left">1.3测试计划（Planning Tests）<br />　　基于已定义的测试需求，创建相应的测试计划。</p>
		<p class="home01" align="left">　　定义测试策略（Define Testing Strategy）：检查应用程序、系统环境和测试资源，并确认测试目标。</p>
		<p class="home01" align="left">　　定义测试主题（Define Test Subject）：将应用程序基于模块和功能进行划分，并对应到各个测试单元或主题，构建测试计划树（Test Plan Tree）。</p>
		<p class="home01" align="left">　　定义测试（Define Tests）：定义每个模块的测试类型，并为每一个测试添加基本的说明。</p>
		<p class="home01" align="left">　　创建需求覆盖（Create Requirements Coverage）：将每一个测试与测试需求进行连接。</p>
		<p class="home01" align="left">　　设计测试步骤（Design Test Steps）：对于每一个测试，先决定其要进行的测试类型（手动测试和自动测试），若准备进行手动测试，需要为其在测试计划树上添加相应的测试步骤（Test Steps）。测试步骤描述测试的详细操作、检查点和每个测试的预期结果。</p>
		<p class="home01" align="left">　　自动测试（Automate Tests）：对于要进行自动测试的部分，应该利用MI、自己或第三方的测试工具来创建测试脚本。</p>
		<p class="home01" align="left">　　分析测试计划（Analyze Test Plan）：产生报告和图表来帮助你分析测试计划数据，并检查所有测试以确保它们满足你的测试目标。</p>
		<p class="home01" align="left">1.4测试执行（Running Tests）<br />　　创建测试集（Test Set）并执行测试。</p>
		<p class="home01" align="left">　　创建测试集（Create Test Sets）：在你的工程中定义不同的测试组来达到各种不同的测试目标，他们可能包括，举个例子，在一个应用程序中测试一个新的应用版本或是一个特殊的功能。并确定每个测试集都包括了哪些测试。</p>
		<p class="home01" align="left">　　确定进度表（Schedule Runs）：为测试执行制定时间表，并为测试员分配任务。</p>
		<p class="home01" align="left">　　运行测试（Run Tests）：自动或手动执行每一个测试集。</p>
		<p class="home01" align="left">　　分析测试结果（Analyze Test Results）：查看测试结果并确保应用程序缺陷已经被发现。生成的报告和图表可以帮助你分析这些结果。</p>
		<p class="home01" align="left">1.5缺陷跟踪（Tracking Defects）<br />　　报告程序中产生的缺陷并跟踪缺陷修复的全过程。</p>
		<p class="home01" align="left">        添加缺陷（Add Defects）：报告程序测试中发现的新的缺陷。在测试过程中的任何阶段，质量保证人员、开发者、项目经理和最终用户都能添加缺陷。</p>
		<p class="home01" align="left">　　检查新缺陷（Review New Defects）：检查新的缺陷，并确定哪些缺陷应该被修复。</p>
		<p class="home01" align="left">　　修复打开的缺陷（Repair Open Defects）：修复那些你决定要修复的缺陷。</p>
		<p class="home01" align="left">　　测试新构建（Test New Build）：测试应用程序的新构建，重复上面的过程，直到缺陷被修复。</p>
		<p class="home01" align="left">　　分析缺陷数据（Analyze Defect Data）：产生报告和图表来帮助你分析缺陷修复过程，并帮助你决定什么时候发布该产品。</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 10:55 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mercury Quality Center</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 02:07:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20897.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20897.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20897.html</trackback:ping><description><![CDATA[Mercury Quality Center<br /><p>Mercury Quality Center™ 提供了<a href="http://www.mercury.com/cn/products/quality-center/testdirector/">基于 Web 的系统</a>，可在广泛的应用环境下自动执行软件质量测试和管理。<a href="http://www.mercury.com/cn/products/quality-center/dashboard/">仪表盘技术使您可以了解</a>验证功能和将业务流程自动化，并确定生产中阻碍业务成果的瓶颈。Mercury Quality Center 使 IT 团队能够在开发流程完成前就参与应用程序测试。这样将缩短发布时间表，同时确保最高水平的质量。 </p><!-- Begin Plain Bulleted List --><h3>利用 Mercury Quality Center，您可以：</h3><div><ul><li><span>制定可靠的部署决策。</span></li><li><span>管理整个质量流程并使其标准化。</span></li><li><span>降低应用程序部署风险。</span></li><li><span>提高应用程序质量和可用性。</span></li><li><span>通过手动和自动化功能测试管理应用程序变更影响。</span></li><li><span>确保战略采购方案中的质量。</span></li><li><span>存储重要应用程序质量项目数据。</span></li><li><span>针对功能和性能测试面向服务的基础架构服务。</span></li><li><span>确保支持所有环境，包括 J2EE、.NET、Oracle 和 <a href="http://www.mercury.com/cn/solutions/erp-crm/sap/">SAP</a>。</span></li></ul></div><span><h3>Mercury Quality Center 产品</h3><p>Mercury Quality Center 包括自动化软件测试产品，例如 <a href="http://www.mercury.com/cn/products/quality-center/testdirector/">Mercury TestDirector®</a>、<a href="http://www.mercury.com/cn/products/quality-center/functional-testing/quicktest-professional/">Mercury QuickTest Professional™</a>、<a href="http://www.mercury.com/cn/products/quality-center/functional-testing/winrunner/">Mercury WinRunner™</a>、<a href="http://www.mercury.com/cn/products/quality-center/business-process-testing/">Mercury Business Process Testing™</a> 和 <a href="http://www.mercury.com/cn/products/quality-center/functional-testing/service-test/">Mercury Service Test™</a>。Mercury Quality Center 还提供了基于最佳实践的服务，用于内部部署或通过我们的 Mercury Managed Services 进行部署。 </p><p><br /><img height="345" alt="Quality Center" src="http://www.mercury.com/cn/images/products/quality_center/quality-center-diagram.gif" width="539" usemap="#QualityCenter" border="0" /><br /><br />===========================================================</p><table class="sr" id="sr" cellspacing="0" cellpadding="0"><tbody><tr><td class="sr-sub-header" nowrap=""><b>Software Trial</b></td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">  Download  </td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">||</td><td class="sr-sub-header" style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px" nowrap="">    </td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=276#d276"><b>Mercury QuickTest Professional Web Services Add-in</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download1','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download1','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=276#d276"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download1" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info1','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info1','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email1','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '276');" onmouseout="changeImages('email1','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=264#d264"><b>Mercury Diagnostics Profiler for .NET</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download2','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download2','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=264#d264"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download2" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info2','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info2','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/diagnostics/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email2','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '264');" onmouseout="changeImages('email2','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=257#d257"><b>Mercury TestDirector for Quality Center Starter Edition</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download3','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download3','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=257#d257"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download3" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info3','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info3','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/testdirector/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email3','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '257');" onmouseout="changeImages('email3','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=223#d223"><b>Mercury QuickTest Professional for VisualAge Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download4','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download4','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=223#d223"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download4" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info4','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info4','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email4','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '223');" onmouseout="changeImages('email4','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=224#d224"><b>Mercury QuickTest Professional for Stingray Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download5','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download5','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=224#d224"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download5" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info5','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info5','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email5','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '224');" onmouseout="changeImages('email5','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=222#d222"><b>Mercury QuickTest Professional for Peoplesoft Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download6','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download6','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=222#d222"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download6" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info6','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info6','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email6','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '222');" onmouseout="changeImages('email6','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td> <a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=212#d212"><b>Mercury QuickTest Professional for Java Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download7','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download7','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=212#d212"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download7" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info7','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info7','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email7','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '212');" onmouseout="changeImages('email7','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=213#d213"><b>Mercury QuickTest Professional for Oracle Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download8','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download8','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=213#d213"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download8" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info8','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info8','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email8','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '213');" onmouseout="changeImages('email8','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=208#d208"><b>Mercury QuickTest Professional for .Net Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download9','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download9','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=208#d208"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download9" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info9','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info9','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email9','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '208');" onmouseout="changeImages('email9','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=209#d209"><b>Mercury QuickTest Professional for SAP Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download10','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download10','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=209#d209"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download10" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info10','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info10','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email10','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '209');" onmouseout="changeImages('email10','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=210#d210"><b>Mercury QuickTest Professional Terminal Emulator Add-in Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download11','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download11','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=210#d210"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download11" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info11','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info11','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email11','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '210');" onmouseout="changeImages('email11','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=211#d211"><b>Mercury QuickTest Professional for Siebel Evaluation</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download12','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download12','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=211#d211"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download12" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info12','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info12','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email12','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '211');" onmouseout="changeImages('email12','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=189#d189"><b>Introduction to Quality Center 8.0 - Using TestDirector: Computer-Based Training (CBT) Course</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download13','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download13','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=189#d189"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download13" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info13','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info13','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/testdirector/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email13','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '189');" onmouseout="changeImages('email13','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td><a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=183#d183"><b>Introduction to QuickTest Professional 8.0 Computer-Based Training (CBT) Course</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download14','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download14','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=183#d183"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download14" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info14','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info14','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email14','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '183');" onmouseout="changeImages('email14','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr><tr><td class="sr-sep" colspan="4"><div class="sr-sep-bg"><img style="FLOAT: left" height="1" alt="" src="http://download.mercury.com/images/common/spacer.gif" width="1" border="0" /></div></td></tr><tr><td> <a href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=51#d51"><b>Mercury QuickTest Professional Free 14-Day Trial</b></a></td><td valign="top" align="middle"><a onmouseover="changeImages('download15','/images/buttons/dlc/download_red.gif')" onmouseout="changeImages('download15','/images/buttons/dlc/download_blue.gif')" href="http://download.mercury.com/cgi-bin/portal/download/loginForm.jsp?BV_SessionID=@@@@0788818538.1166667231@@@@&amp;BV_EngineID=cccfaddjjheeildcefeceejdfgjdgfi.0&amp;id=51#d51"><img height="15" alt="Download" src="http://download.mercury.com/images/buttons/dlc/download_blue.gif" width="15" border="0" name="download15" /></a></td><td valign="top" align="middle"><a onmouseover="changeImages('info15','/images/buttons/dlc/info_red.gif')" onmouseout="changeImages('info15','/images/buttons/dlc/info_blue.gif')" href="javascript:openStaticURL('http://www.mercury.com/us/products/quality-center/functional-testing/quicktest-professional/', 'more');"></a></td><td valign="top" align="middle"><a onmouseover="changeImages('email15','/images/buttons/dlc/email_red.gif')" onclick="dlc_addMail(this, 'software trial', '51');" onmouseout="changeImages('email15','/images/buttons/dlc/email_blue.gif')" href="mailto:"></a></td></tr></tbody></table></span><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 10:07 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高级测试管理的工具和技术</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 21 Dec 2006 01:51:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20896.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20896.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20896.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 高级测试管理的工具和技术业务优化科技概述近年来，在应用测试领域有了突飞猛进的发展。随着当今应用复杂性的不断提升、竞争压力的不断加大，以及在应用失败和宕机方面的成本激增，使得对测试的需求不断攀升。 实施高质量应用的压力持续加大，其挑战在于日益紧缩的开发和部署进度、分散的机构组织、外包、技术熟练员工的高调动率，这些都造成了应用测试难度的提升。 为了实现以较少资源完成更多任务的目标、同时展开多个项目、管...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-21 09:51 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/21/20896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Rational的测试理念</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 20 Dec 2006 08:10:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20859.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20859.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20859.html</trackback:ping><description><![CDATA[
		<div class="style7" align="center">
				<span style="FONT-SIZE: 12pt">
						<b>使用Rational的测试理念<br /><div class="daxiao14" align="left"><h2><b>1.</b><b>传统软件测试过程中的问题</b><b></b></h2><div>    测试在所有的软件开发过程中都是最重要的部分。在软件开发过程中，一方面要求我们通过测试活动验证所开发的软件在功能上满足软件需求中描述的每一条特性，性能上满足客户要求的负载压力和相应的响应时间、吞吐量要求；另一方面，面向市场和客户，开发团队还要满足在预算范围内尽快发布软件的要求。 <br />    传统的软件测试流程一般是先在软件开发过程中进行少量的单元测试，然后在整个软件开发结束阶段，集中进行大量的测试，包括功能和性能的集成测试和系统测试。随着开发的软件项目越来越复杂，传统的软件测试流程不可避免地给我们的工作带来以下问题： <br /><b>    问题一：</b>项目进度难于控制，项目管理难度加大<br />    如图一所示，大量的软件错误往往只有到了项目后期系统测试时才能够被发现，解决问题所花的时间很难预料，经常导致项目进度无法控制，同时在整个软件开发过程中，项目管理人员缺乏对软件质量状况的了解和控制，加大了项目管理难度。</div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114060.JPG" /><br /><b>图一、传统测试流程中存在的问题</b><b></b></div><div><b>    问题二</b>：对于项目风险的控制能力较弱<br />项目风险在项目开发较晚的时候才能够真正降低。往往是经过系统测试之后，才真正确定该设计是否能够满足系统功能、性能和可靠性方面的需求。 <br /><b>    问题三</b>：软件项目开发费用超出预算<br />在整个软件开发周期中，错误发现的越晚，单位错误修复成本越高，如图二所示，错误的延迟解决必然导致整个项目成本的急剧增加。 </div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114061.JPG" />  </div><div align="center"><b>图二、传统测试流程中存在的问题</b><b></b></div><h2><b>2. </b><b>采用IBM Rational软件自动化测试最佳成功经验解决传统测试问题</b></h2><div>    IBM Rational软件自动化测试技术核心的三个最佳成功经验是：尽早测试、连续测试、自动化测试，并在此基础上提供了完整的软件测试流程和一整套的软件自动化测试工具，使我们最终能够做到：一个测试团队，基于一套完整的软件测试流程，使用一套完整的自动化软件测试工具，完成全方位的软件质量验证。</div><h3>2.1 成功经验一：尽早测试</h3><div>    所谓尽早测试是指在整个软件开发生命周期中通过各种软件工程技术尽量早的完成各种软件测试任务的一种思想。IBM Rational主要在以下三个方面为我们提供的尽早测试的软件工程技术： </div><div>首先，软件的整个测试生命周期是与软件的开发生命周期基本平齐的过程，如图三所示，即当需求分析基本明确后我们就应该基于需求分析的结果和整个项目计划来进行软件的测试计划；伴随着分析设计过程同时应该完成测试用例的设计；当软件的第一个发布出来后，测试人员要马上基于它进行测试脚本的实现，并基于测试计划中的测试目的执行测试用例，对测试结果进行评估报告。这样，我们可以通过各种测试指标实时监控项目质量状况，提高对整个项目的控制和管理能力。<b></b></div><div align="center">  <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114062.JPG" /></div><div align="center"><b>图三、软件测试生命周期</b></div><div>    其次，通过迭代是软件开发把原来的整个软件开发生命周期分成多个迭代周期，在每个迭代周期都进行测试，这样在很大程度上提前了软件系统测试发生的时间，这可以在很大程度上降低项目风险和项目开发成本。 </div><div>    最后，IBM Rational的尽早测试成功经验还体现在它扩展了传统软件测试阶段从单元测试、集成测试到系统测试、验收测试的划分，将整个软件的测试按阶段划分成开发员测试和系统测试两个阶段，如图四所示，它把软件的测试责无旁贷地扩展到整个开发人员的工作过程。通过提前测试发生的时间来尽早地提高软件质量、降低软件测试成本。</div><div align="center"><img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114063.JPG" /></div><div align="center"> <b>图四、IBM Rational测试方法对测试阶段的划分</b></div><h3>2.2 成功经验二：连续测试</h3><div>    测试成功经验连续测试是从迭代式软件开发模式得来。在迭代化的方法中，我们将整个项目的开发目标划分成为一些更易于完成和达到的阶段性小目标，这些小目标都有一个定义明确的阶段性评估标准。迭代就是为了完成一定的阶段性目标而从事的一系列开发活动，在每个迭代开始前都要根据项目当前的状态和所要达到的阶段性目标制定迭代计划，而且每个迭代中都包括需求、设计、编码、集成、测试等一系列的开发活动，都会增量式集成一些新的系统功能。通过每次迭代，我们都产生一个可运行的系统，通过对于这个可运行系统的测试来评估该次迭代有没有达到预定的迭代目标，并以此为依据来制定下一次迭代的目标。由此可见，在迭代式软件开发的每个迭代周期我们都会进行软件测试活动，整个软件测试的完成是通过每个迭代周期不断增量测试和回归测试实现的。 </div><div>    如图五所示，采用连续测试的软件成功测试经验，不但能够持续的提高软件质量、监控质量状态，同时也使系统测试的尽早实现成为可能。从而有效的控制开发风险、减低测试成本和保证项目进度。</div><div align="center"> <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114064.JPG" /></div><div align="center"> <b>图五、IBM Rational测试成功经验：连续测试</b></div><h3>2.3 成功经验三：自动化测试</h3><div>    在整个软件的测试过程中要想实现尽早测试、连续测试，可以说完善的测试流程是前提，自动化测试工具是保证。IBM Rational的自动化测试成功经验主要是指利用软件测试工具提供完整的软件测试流程的支持和各种测试的自动化实现。 </div><div>    为了使各种软件测试团队更好地进行测试，IBM Rational在提供了测试成功经验之外，还为我们提供了一整套的软件测试流程和自动化测试工具，使软件测试团队能够从容不迫地完成整个测试任务。 </div><h2><b>3. IBM Rational</b><b>软件自动化测试工具</b></h2><div>    在IBM Rational的软件自动化测试解决方案中，我们一直致力追求的一点就是测试工具和测试成功经验、测试流程的统一，上面阐述的每个测试成功经验和测试流程环节，我们都可以通过Rational的测试工具以及工具间的完美集成辅助完成。 </div><div>    IBM Rational的软件自动化测试工具如图七所示，其最大特点是通过一套完整的软件测试工具在实现测试管理流程的基础上，同时涵盖了功能测试、性能测试和可靠性测试的自动化测试需求，通过工具之间的集成完成测试资源的整合，帮助测试团队实现IBM Rational的测试成功经验。</div><div align="center"> <img alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114065.JPG" /></div><div align="center"> <b>图七、IBM Rational自动化测试工具</b></div><h2><b>4. IBM Rational</b><b>软件测试流程</b></h2><div>    IBM Rational的软件测试流程，不仅仅包含完整的软件测试流程框架，同时还提供了内嵌软件测试流程的测试管理工具的支持。 </div><h3>4.1 IBM Rational软件测试流程框架</h3><div>    IBM Rational Unified Process(以下简称RUP)提供了一套完整的测试流程框架，软件测试团队可以以它为基础，根据业务发展的实际要求，定制符合团队使用的软件测试流程。RUP中的软件测试流程如图八所示：</div><div align="center"> <img height="404" alt="" src="http://www.51testing.com/ddimg/uploadimg/20060703/1114066.JPG" width="345" /></div><div align="center"> <b> </b><b>图八、IBM Rational 软件测试流程</b></div><div>    每个测试环节的具体阐述如下： </div><div>    制定测试计划的目的是确定和描述要实施和执行的测试。这是通过生成包含测试需求和测试策略的测试计划来完成的。可以制定一个单独的测试计划，用于描述所有要实施和执行的不同测试类型，也可以为每种测试类型制定一个测试计划。 </div><div>    设计测试的目的是确定、描述和生成测试过程和测试用例。 </div><div>    实施测试的目的是实施（记录、生成或编写）设计测试中定义的测试过程。输出工件是测试过程的计算机可读版本，称为测试脚本。 </div><div>    执行测试的目的是确保整个系统按既定意图运行。系统集成员在各迭代中编译并链接系统。每一迭代都需要测试增加的功能，并重复执行以前版本测试过的所有测试用例（回归测试）。 </div><div>    评估测试的目的是生成并交付测试评估摘要。这是通过复审并评估测试结果、确定并记录变更请求，以及计算主要测试评测方法来完成的。测试评估摘要以组织有序的格式提供测试结果和主要测试评测方法，用于评估测试对象和测试流程的质量。 </div><h3>4.2 利用IBM Rational软件测试管理平台实现软件自动化测试流程</h3><div>    IBM Rational在RUP测试方法论的基础上构建了软件自动化测试管理平台工具TestManager，通过和测试需求管理工具RequisitePro、缺陷追踪工具ClearQuest的完美集成，实现了对整个软件测试生命周期的管理，可以帮助软件测试团队快速建立软件测试平台和测试管理流程，使软件测试团队快速拥有以下能力：</div><div><b>    TestManager</b>提供测试管理的核心平台，整合了从测试需求、测试计划、测试设计、测试实施、测试执行到测试结果分析、测试报告的自动生成等整个测试生命周期的管理活动。同时，统一组织各种Test Suite,Test Case,Test Script，方便地进行回归测试 </div><div><b>    TestManager</b>遵循RUP标准测试流程，使测试人员能够在统一的测试管理平台上、遵循统一的测试管理流程，完成对包括产品的功能性、可靠性和性能等全方位的质量测试。 </div><div>    作为一种集成解决方案，Rational TestManager与Rational 其他工具一起，提供从测试需求、到整个软件测试流程管理、缺陷追踪、测试结果评测的可追踪性，方便测试管理人员进行软件测试过程监控和有关软件质量的各种量化指标的采集、分析。 </div><h3>4.3 利用Rational软件测试工具实现软件自动化的功能和性能测试</h3><div>    IBM Rational的自动化软件测试工具的另一个特点就是：通过TestManager + Robot，在实现测试管理流程的同时，能够完成功能测试和性能测试，这会大大缩短测试团队对工具的学习过程，提高工具的易用性。 </div><h4>4.3.1 软件的自动化功能测试</h4><div>    功能测试主要围绕Windows图形界面、字符终端和Browser界面进行测试。客户端可以是VC、VB、PB、Delphi等编制的软件、各种字符终端软件或者运行浏览器Microsoft Explorer和Netscape，通过自动录制形成测试脚本实现自动化的功能/回归测试。 </div><div>    IBM Rational的功能测试解决方案的目标，是使功能性测试变得更简单、有效并可重复执行，从而快速提升软件测试团队的功能测试能力。它主要具有以下特点： </div><div>      能够方便的对各种环境(IDE)中开发的应用程序、字符终端软件，完成包括测试计划、测试设计、测试实施、测试执行和测试结果分析等全部测试流程。 </div><div>      能够方便的录制或编写各种功能测试脚本，实现自动化的功能/回归测试。 </div><div>      利用数据池方便地解决大批量数据驱动的功能测试； </div><div>      能够方便地完成分布式功能测试，可以一次测试多种测试平台； </div><div>      能够自动完成功能测试需求覆盖，确保应用程序满足产品规格说明和测试计划的每一条业务需求； </div><div>    为了提高对Java和Web开发的应用软件功能测试的支持，IBM Rational的功能测试的解决方案还提供了IBM Rational XDE Tester，它主要用于在Windows和Linux平台上基于Java和Web开发的应用软件的功能测试，尤其适用于使用IBM WebSphere Studio、Eclipse和 Rational XDE Developer等开发平台进行软件开发的团队。它的三个最重要的自动化测试的特性是： </div><div>    专业的自动化测试脚本创建环境：测试平台扩展嵌入到IBM WebSphere Studio、Eclipse和 Rational XDE Developer开发平台，统一了测试和开发环境； </div><div>    测试脚本在回归测试方面具有很强的灵活性和可维护性：ScriptAssure是 IBM提供的针对 Java 和Web应用程序测试时的一组高级能力, 它能够帮助创建灵活、可重用的测试脚本，大大提高了脚本的可维护性。对象地图（Object mapping）提供了核心对象库，测试人员可以基于它进行被测程序中被测对象的修改和验证，并根据修改自动更新所有相关的测试脚本。可以自己设置被测程序中用来表示被测对象的对象属性集，这使得少量对象属性的变化不会影响测试脚本的正常回放。同时，可以创建针对动态数据的验证点，通过正则表达式更容易对动态的数据进行验证； </div><div>    强大的测试脚本语言：使用标准的测试脚本语言Java，可以充分利用工业标准语言的优点进行测试。 </div><h4>4.3.2 软件的自动化压力测试</h4><div>    IBM Rational压力测试工具主要目标是快速提升软件测试团队的性能测试能力，包括负载测试，压力测试等等。Rational性能测试解决方案可以方便灵活地模拟各种负载模型，完成以查找响应时间瓶颈、系统吞吐量、最大并发虚拟用户等为目地的各种要求的性能测试。包括： </div><div>利用TestStudio可以完成对压力测试的测试需求、测试计划、测试设计、测试实施、测试执行和测试结果分析等整个测试生命周期的管理； </div><div>利用TestStudio中的Test Suite，能够方便的完成压力测试对负载模型的各种要求，包括： </div><div>      建立复杂的Scenario模型； 准确模拟复杂负载的时序控制； </div><div>      基于Transaction的负载分析； </div><div>      建立面向目标的事务负载模型，例如：100事务/秒 </div><div>      响应时间精确到1/100秒； </div><div>      支持不同虚拟用户的不同IP地址模拟； </div><div>      准确的波特率模拟； </div><div>      利用TestStudio，能够方便地完成压力测试过程中各种指标的观测； </div><div>      利用TestStudio，能够方便地完成压力测试结果分析和各种结果报告的生成； </div><h3>4.4 利用IBM Rational软件测试工具实现软件自动化的可靠性测试和单元测试</h3><div>    IBM Rational软件测试工具PurifyPlus主要用于帮助软件测试团队在短期内快速提升单元测试能力和可靠性测试能力的团队，其主要特点是：见效快、使用方便、门槛低、培训时间短，开发人员2小时内即可完全掌握该软件进行测试。PurifyPlus包含Rational Purify、Quantify和PureCoverage三个产品，主要功能如下： </div><div><b>    Rational Purify</b>主要针对软件开发过程中难于发现的内存错误、运行时错误。在软件开发过程中： </div><div>      自动地发现错误； </div><div>      准确地定位错误； </div><div>      提供完备的错误信息； </div><div>    从而减少了调试时间， 帮助开发团队找出缺陷并最终形成高质量的产品，使您能真正做到更快地发布更好的软件。 </div><div><b>    Rational Quantify</b>主要解决软件开发过程中的性能问题。在软件开发过程中： </div><div>方便地查明并显示应用程序的性能瓶颈，从而确保整个应用程序的质量和性能。</div><div><b>    Rational Quantify</b> 给开发团队提供了一个性能数据的全局图形化视图，使您从开发流程的开头起就注重性能问题，真正做到更快地发布更好的软件。 </div><div><b>    Rational PureCoverage</b>提供应用程序的测试覆盖率信息。在软件开发过程中： </div><div>    能自动找出代码中未经测试的代码，保证代码测试覆盖率； </div><div>    帮助开发人员确保开发质量，并使质量保证人员能够评价测试工作的效果。 </div><div>    可针对每次测试生成全面的覆盖率报告，可以归并程序多次运行所生成的覆盖数据，并自动比较测试结果，以评估测试进度。 </div><h3>4.5 利用Rational软件测试工具实现实时系统软件的自动化测试</h3><div>    IBM Rational Test Realtime主要适合于开发实时系统和具有较高要求的非实时系统的软件开发，可以帮助测试团队快速建立起单元测试、集成测试、系统测试等测试能力。它提供的自动测试（包括单元测试、集成测试、系统测试）、代码覆盖、内存泄漏检查、性能分析以及UML跟踪等重要特性，帮助软件测试团队在系统崩溃前发现并修复软件缺陷。其主要功能特性如下： </div><div>    自动生成测试脚本模板和测试程序（包括驱动模块和桩模块）：通过源代码分析，自动生成在目标上运行所需的测试脚本和测试程序。除了利用测试脚本指定测试数据外，不需要手工编码。而且在测试报告中，测试结果和源代码相联，简化代码修改； </div><div>    通过代码自动插针进行代码覆盖率、内存泄漏以及性能瓶颈进行分析，并和测试用例建立关联； </div><div>通过把测试结果和观察结果和被测代码关联，把测试作为开发的一个重要部分，真正实现边开发边测试，边测试边观察，边观察边评估这一集成的开发测试过程； </div><div>    通用的、低开销而且易于移植的目标适配技术（Target Deployment Port，TDP）：利用TDP技术，使得测试与编译器、连接器、调试器以及目标结构无关，实现了跨多开发环境、多目标结构； </div><div>模型观察和代码覆盖相集成：利用UML Trace功能观察应用运行状态，并通过状态机模型覆盖实现测试用例和模型的关联，充分利用了模型和代码级测试的长处； </div><div>    与ClearCase、ClearQuest和RUP集成：在同一集成环境中完成对测试文件进行版本控制，提交和修改变更请求；</div><h2><b>5. </b><b>小结</b></h2><div align="center"> </div><div align="center"><b>图九、IBM Rational的软件自动化测试解决方案</b></div><div>    IBM Rational主要为软件测试团队提供测试成功经验、自动化测试工具和全方位的咨询服务三方面的支持，如图八所示，最终实现：一个测试团队，基于一套完整的软件测试流程，使用一套完整的自动化软件测试工具，完成全方位的软件质量验证，这正是IBM Rational测试解决方案的精髓和终极目标。 </div><div> </div><div><b>    作者简介:</b></div><div>    Golden Ning，现为IBM中国有限公司软件部 Rational 高级技术专员。在软件工程技术方面，有着多年的实践经验，对于 Rational 的软件工程技术有着深刻的理解。目前主要专注于软件测试技术、面向对象的可视化建模和软件配置管理等技术的研究。在此之前，主要从事电信交换机、电子商务软件分析设计和开发工作。</div></div></b>
				</span>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-20 16:10 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/20/20859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>microsoft的测试过程</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20778.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 06:39:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20778.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20778.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20778.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20778.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="778" align="center" border="0">
				<tbody>
						<tr>
								<td valign="top" width="558">
								</td>
								<td valign="top" width="220">
								</td>
						</tr>
						<tr>
								<td valign="top">
										<table cellspacing="0" cellpadding="0" width="558" border="0">
												<tbody>
														<tr bordercolor="#f0f7ff" bgcolor="#f0f7ff">
																<td valign="center" align="right" colspan="2" height="14">
																		<div align="left">
																				<a name="top">
																				</a> </div>
																</td>
														</tr>
														<tr>
																<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
																</td>
														</tr>
														<tr>
																<td valign="center" align="right" colspan="2" height="32">
																		<div class="style7" align="center">
																				<span style="FONT-SIZE: 12pt">
																						<b>microsoft的测试过程</b>
																				</span>
																		</div>
																</td>
														</tr>
														<tr>
																<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
																</td>
														</tr>
														<tr>
																<td valign="center" align="right" colspan="2" height="20">
																		<div align="center"> </div>
																</td>
														</tr>
														<tr>
																<td valign="top" align="right" colspan="2" height="10">
																</td>
														</tr>
														<tr>
																<td valign="top" align="right" width="2%" height="10">
																		<div align="left">
																		</div>
																</td>
																<td valign="top" align="right" width="98%" bgcolor="#ffffff">
																		<div class="daxiao14" align="left">
																				<p> </p>
																				<p>
																						<strong>一．团队组织 </strong>
																				</p>
																				<p>
																						<span class="main style1">
																								<strong>
																										<font color="#0000ff">
																												<span class="main">    </span>1．常见问题 </font>
																								</strong>
																						</span>
																				</p>
																				<ul>
																						<span class="main">·没有人愿意做测试 </span>
																						<span class="main">
																								<br />·觉得养不起那么多测试人员 </span>
																						<span class="main">
																								<br />·开发人员不遵循规范，随心所欲</span>
																						<br />·<span class="main">项目经理事必躬亲，分身乏术 </span></ul>
																				<p>
																						<span class="main style1">
																								<strong>
																										<font color="#0000ff">
																												<span class="main">
																														<strong>    </strong>
																												</span>2．微软团队模型 </font>
																								</strong>
																						</span>
																				</p>
																				<p align="center">
																						<font color="#0000ff">
																								<img height="245" src="http://www.51testing.com/ddimg/uploadimg/20051028/1036380.gif" width="294" />
																						</font>
																				</p>
																				<p class="main">
																						<strong>
																								<strong>    </strong>
																						</strong>各角色的职责 </p>
																				<p>
																				</p>
																				<table bordercolor="#ffffff" cellspacing="0" cellpadding="2" align="center" border="1">
																						<tbody>
																								<tr bgcolor="#cccccc">
																										<td class="main" align="middle" width="38%">
																												<div align="center">
																														<strong>角色 </strong>
																												</div>
																										</td>
																										<td class="main" align="middle" width="62%">
																												<div align="center">
																														<strong>职责 </strong>
																												</div>
																										</td>
																								</tr>
																								<tr>
																										<td class="main" width="38%">项目经理 </td>
																										<td class="main" width="62%">编写功能规范，协调各角色关系 </td>
																								</tr>
																								<tr>
																										<td class="main" width="38%">产品经理 </td>
																										<td class="main" width="62%">客户联系的桥梁，进行需求分析 </td>
																								</tr>
																								<tr>
																										<td class="main" width="38%">用户教育 </td>
																										<td class="main" width="62%">让产品容易使用 </td>
																								</tr>
																								<tr>
																										<td class="main" width="38%">发布经理 </td>
																										<td class="main" width="62%">保证产品顺利发布 </td>
																								</tr>
																						</tbody>
																				</table>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>二．项目管理 </strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>
																										<span class="style1">
																												<font color="#0000ff">1．常见问题 </font>
																										</span>
																								</strong>
																						</span>
																						<br />
																						<span class="main">
																								<strong>    </strong>·无法决定项目所需的资源（人力和预算）</span>
																						<span class="main">
																								<br />
																								<strong>    </strong>·无法决定项目的进度表</span>
																						<br />
																						<span class="main">
																								<strong>    </strong>
																						</span>·<span class="main">无法控制外包项目的进度和质量 </span></p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>
																										<span class="style1">
																												<font color="#0000ff">2．微软项目管理-- 多里程碑式流程 </font>
																										</span>
																								</strong>
																						</span>
																						<br />
																						<span class="main">
																								<strong>    </strong>·每个里程碑完成部分功能<br /><strong>    </strong>·便于团队集中力量完成一个又一个功能<br /></span>
																						<span class="main">
																								<strong>    </strong>
																						</span>·<span class="main">提供多个机会以适应需求的更改 </span></p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong> <span class="style3"><font color="#ff0000">   </font></span></strong>
																										<span class="style3">
																												<font color="#ff0000">如何完成一个里程碑 </font>
																										</span>
																								</strong>
																						</span>
																						<br />
																						<span class="main">
																								<strong>    </strong>
																						</span>·<span class="main">步骤一： 达成共识 </span></p>
																				<p>
																						<span class="main">
																								<strong>    </strong>
																						</span>
																						<span class="main">
																								<strong>    </strong>
																						</span>·<span class="main">基本完成需求调研和分析 （产品经理负责） </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">确定大方向和长中短期目标 </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">所有角色都参与讨论并真正认同结论 </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">产生的文档：</span><span class="main"><strong>        </strong><strong>   <br /> </strong><strong>    </strong><strong>    </strong><strong>   </strong>·常见用户情景：覆盖80%以上功能<br /><strong>        </strong><strong>    </strong>·Vision：言简意赅地说明大方向，并有激励团队的作用 
<ul></ul><ul></ul></span></p>
																				<p>
																						<span class="main">
																								<strong>    </strong>
																						</span>· <span class="main">步骤二： 完成项目计划 </span></p>
																				<p>
																						<span class="main">
																								<strong>    </strong>
																						</span>
																						<span class="main">
																								<strong>    </strong>
																						</span>· <span class="main">编写详细的功能规范（项目经理负责） </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>· <span class="main">在编程前想清楚所有功能流程，并引导用户明确需求 </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">所有角色都参与审阅功能规范 </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">制订开发计划和进度表（开发团队） </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">制订测试计划和进度表（测试团队） </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">分配资源（人力和预算） </span>·<span class="main">形成项目综合计划和综合进度表 </span><br /><span class="main"><strong>    </strong></span><span class="main"><strong>    </strong></span>·<span class="main">产生的文档： <br /><strong>    </strong><strong>   <strong>    </strong> </strong>功能规范，开发计划，测试计划（用例），项目综合计划 <br /><strong>    </strong><strong>    </strong><strong>    </strong>开发进度表，测试进度表，综合进度表 </span></p>
																				<ul>
																				</ul>
																				<ul>
																						<p class="main">·步骤三： 完成功能 </p>
																						<p class="main">
																								<strong>    </strong>· <span class="main">开发人员分别完成自己的功能 </span><br /><strong>    </strong>·<span class="main">使用版本控制工具 </span><br /><strong>    </strong>·<span class="main">使程序员及时check out和check in，避免积累大量代码 </span><br /><strong>    </strong>·<span class="main">及时进行模块间的整合，及时发现问题（daily build） </span><br /><strong>    </strong>·<span class="main">对每一项可测试的功能进行测试，无需等待 </span><br /><strong>    </strong>·<span class="main">使用测试用例工具，对功能进行完整和重复的检验 </span><br /><strong>    </strong>·<span class="main">使用BMS进行缺陷跟踪 </span><br /><strong>    </strong>·<span class="main">记录所有程序问题 </span><br /><strong>    </strong>·<span class="main">实现解决Bug的自动流程 </span><br /><strong>    </strong>·<span class="main">按照综合进度表不断检查进度 </span><br /><strong>    </strong>·<span class="main">使用的工具： </span><br /><strong>    </strong><strong>    </strong>·<span class="main">版本控制工具 VSS </span><br /><strong>    </strong><strong>    </strong>·<span class="main">缺陷跟踪工具 Raid/BMS </span><br /><strong>    </strong><strong>    </strong>·测试用例管理工具 <br />·步骤四： 稳定与发布 <br /><strong>    </strong>·<span class="main">测试组全面地测试功能，包括性能和稳定性 </span><br /><strong>    </strong>·<span class="main">开发组全力配合解决Bug </span><br /><strong>    </strong>·<span class="main">使用BMS进行 </span><br /><strong>    </strong><strong>    </strong>·<span class="main">监测质量情况 </span><br /><strong>    </strong><strong>    </strong>·预测发布日期 <br /><strong>    </strong>·<span class="main">专家会诊机制： </span><br /><strong>    </strong><strong>    </strong>·<span class="main">决定Bug的优先度 </span><br /><strong>    </strong><strong>    </strong>·<span class="main">决定哪些Bug可以等到下个里程碑或版本中解决 </span><br /><strong>    </strong><strong>    </strong>·决定由谁解决某个Bug <br /><br />·<span class="main">使用的工具： </span><br />·<span class="main">版本控制工具 VSS </span><br />·<span class="main">缺陷跟踪工具 BMS </span><br />·测试用例管理工具 </p>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>三． 微软的开发管理经验：100%以Bug为核心 </strong>
																						</span>
																				</p>
																				<p align="center">
																						<img height="293" src="http://www.51testing.com/ddimg/uploadimg/20051028/1036381.gif" width="408" />
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>   </strong>
																										<span class="style5">
																												<font color="#0000ff"> 1．Bug 及常见类型 </font>
																										</span>
																								</strong>
																						</span>
																						<span class="main">
																								<br />
																								<strong>
																										<strong>   </strong>
																										<span class="style5">
																												<font color="#0000ff"> </font>
																										</span>
																								</strong>·功能未实现，和规格说明书不一致 </span>
																						<br />
																						<span class="main">
																								<strong>
																										<strong>   </strong>
																										<span class="style5">
																												<font color="#0000ff"> </font>
																										</span>
																								</strong>
																						</span>· <span class="main">不能工作：死机，没反应 </span><br /><span class="main"><strong><strong>   </strong><span class="style5"><font color="#0000ff"> </font></span></strong></span>·<span class="main">不兼容 </span><br /><span class="main"><strong><strong>   </strong><span class="style5"><font color="#0000ff"> </font></span></strong></span>·<span class="main">边界条件 </span><br /><span class="main"><strong><strong>   </strong><span class="style5"><font color="#0000ff"> </font></span></strong></span>·<span class="main">界面、消息、提示不够准确，不友好 </span><br /><span class="main"><strong><strong>   </strong><span class="style5"><font color="#0000ff"> </font></span></strong></span>·<span class="main">把尚未完成的工作也作为一个Bug </span><br /><span class="main"><strong><strong>   </strong><span class="style5"><font color="#0000ff"> </font></span></strong></span>·<span class="main">文档与帮助信息中的缺陷也是Bug </span></p>
																				<p>
																						<span class="main style1">
																								<strong>
																										<font color="#0000ff">
																												<strong>    </strong>2．RAID/BMS的基本功能 </font>
																								</strong>
																						</span>
																				</p>
																				<p align="center">
																						<font color="#0000ff">
																								<img height="440" src="http://www.51testing.com/ddimg/uploadimg/20051028/1036382.gif" width="550" />
																						</font>
																				</p>
																				<p>
																						<br />
																						<span class="main style1">
																								<strong>
																										<strong>
																												<font color="#0000ff">    </font>
																										</strong>
																								</strong>
																						</span>· <span class="main">完整的Bug数据库 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>· <span class="main">整个产品组的中央记录和控制 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">强大的查询功能，有效地跟踪项目的状态 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">所有的记录无法删除，对于每个记录只能一直添加内容 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">丰富的报表功能，为产品发布提供判断标准 </span></p>
																				<p>
																						<span class="main style1">
																								<strong>
																										<font color="#0000ff">
																												<strong>    </strong>3．Bug 记录中的有效信息 </font>
																								</strong>
																						</span>
																				</p>
																				<table align="center">
																						<tbody>
																								<tr>
																										<td>
																												<ul>
																														<li>
																																<span class="main">状态 </span>
																														</li>
																														<li>
																																<span class="main">负责人 </span>
																														</li>
																														<li>
																																<span class="main">问题种类 </span>
																														</li>
																														<li>
																																<span class="main">严重级 </span>
																														</li>
																														<li>
																																<span class="main">优先级 </span>
																														</li>
																														<li>
																																<span class="main">修改时间 </span>
																														</li>
																														<li class="main">登记时间 </li>
																												</ul>
																										</td>
																										<td>
																												<ul>
																														<li>
																																<span class="main">缺陷来源 </span>
																														</li>
																														<li>
																																<span class="main">解决方案 </span>
																														</li>
																														<li>
																																<span class="main">运行环境 </span>
																														</li>
																														<li>
																																<span class="main">缺陷关联 </span>
																														</li>
																														<li>
																																<span class="main">附件 </span>
																														</li>
																														<li>
																																<span class="main">附图 </span>
																														</li>
																														<li class="main">缺陷细节 </li>
																												</ul>
																										</td>
																								</tr>
																						</tbody>
																				</table>
																				<p>
																						<font color="#0000ff">
																								<span class="main style1">
																										<strong>
																												<strong>    </strong>4．Bug 的严重程度 </strong>
																								</span>
																								<br />
																								<span class="main style1">
																										<strong>
																												<strong>    </strong>
																										</strong>
																								</span>
																						</font>· <span class="main">死机，数据丢失，主要功能组完全丧失，系统悬挂 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">主要功能丧失，导致严重的问题，或致命的错误声明 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">次要功能丧失， 不太严重，如提示信息不太准确 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·微小的问题，对功能几乎没有影响，产品及属性仍可使用. 如有个错别字 
</p>
																				<p>
																						<font color="#0000ff">
																								<span class="main style1">
																										<strong>
																												<strong>    </strong>5．激活的Bug数量的趋势 </strong>
																								</span>
																								<br />
																								<span class="main style1">
																										<strong>
																												<strong>    </strong>
																										</strong>
																								</span>
																						</font>· <span class="main">代码完成前：很少 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">代码完成后：增长很快 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">接近Beta: 下降 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">接近RC: 奔向零 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">产品质量和里程碑的信号 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">每天新建的Bug 与 修正的 Bug 相比较 </span><br /><span class="main style1"><strong><strong><font color="#0000ff">    </font></strong></strong></span>·<span class="main">Active 状态 Bug 的总数 </span></p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>四．微软的一天 </strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>  <span class="style1"><font color="#0000ff">  </font></span></strong>
																										<span class="style1">
																												<font color="#0000ff">1． 让我们看看项目中每个角色的一天是如何度过的 </font>
																										</span>
																								</strong>
																						</span>
																						<br />
																						<span class="main">
																								<strong>
																										<strong>  <span class="style1"><font color="#0000ff">  </font></span></strong>
																								</strong>
																						</span>· <span class="main">开发 </span><br /><span class="main"><strong><strong>  <span class="style1"><font color="#0000ff">  </font></span></strong></strong></span>·<span class="main">测试 </span><br /><span class="main"><strong><strong>  <span class="style1"><font color="#0000ff">  </font></span></strong></strong></span>·<span class="main">项目经理 </span></p>
																				<p>
																						<span class="main">
																								<strong>    </strong>注：里程碑的每个阶段每个角色的工作有不同侧重点，我们以“完成功能”阶段为例</span>
																				</p>
																				<p>
																						<span class="main">
																								<span class="style3">
																										<strong>
																												<font color="#ff0000">    </font>
																												<span class="style7">
																														<font color="#990000">微软的一天从几点开始？ </font>
																												</span>
																										</strong>
																								</span>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>答案：半夜 </span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>为什么？ </strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>因为Daily Build是所有工作的核心，而且是在半夜自动启动。 <br /><br /><strong><strong>    </strong>每日构造Daily Build </strong></span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">你知道自己所用Windows的版本号吗？ </span>
																						</li>
																						<li>
																								<span class="main">Daily Build的意义： </span>
																								<ul>
																										<li>
																												<span class="main">模块得以及时整合 </span>
																										</li>
																										<li class="main">要求程序员及时把最新代码放入代码库 </li>
																								</ul>
																						</li>
																						<li>
																								<span class="main">用脚本语言和编译/链接工具实现 </span>
																						</li>
																						<li>
																								<span class="main">BVT Build Verification Test </span>
																								<ul>
																										<li class="main">对Build进行验证 </li>
																								</ul>
																						</li>
																						<li>
																								<span class="main">Blocking Bug </span>
																								<ul>
																										<li>
																												<span class="main">让Build无法完成的问题 </span>
																										</li>
																										<li class="main">BVT中发现的问题 </li>
																								</ul>
																						</li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>  <span class="style1"><font color="#0000ff">  </font></span></strong>
																										<span class="style1">
																												<font color="#0000ff">2．程序员每天上班前最担心什么？ </font>
																										</span>
																								</strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>答案：因为自己昨天的代码check-in，造成Blocking Bug. </span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>为什么？ </strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>因为每天的Build是所有人当天工作的基础： <br /><strong>    </strong>程序员需要Build验证与其他模块的接口 <br /><strong>    </strong>测试需要Build发现新Bug，并验证新Build中已解决的Bug <br /><br /><strong><strong>    </strong>有Blocking Bug怎么办？ </strong></span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>解决问题，并对今天的Build打Patch。 <br /><br /><strong><strong>    </strong>开发人员的正事 </strong></span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>经历对Build的提心吊胆和争分夺秒之后，第一件事做什么 <br /><strong>    </strong>答案：打开缺陷跟踪工具，查看指定给自己的Bug，解决高优先度的Bug。因为质量重于新功能。 </span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>接下来，开发人员会… </strong>
																						</span>
																				</p>
																				<p align="center">
																						<span class="main">
																								<strong>    </strong>从版本控制工具中Check out代码 <br /><strong>    </strong>修改代码（解决Bug或实现新功能） <br /><strong>    </strong>取得版本工具中最新变化，在本机Build和单元测试 <br /><strong>    </strong>请开发组同事作Code Review <br /><strong>    </strong>Check in代码 </span>
																						<br />
																						<br />
																						<img height="313" src="http://www.51testing.com/ddimg/uploadimg/20051028/1036383.gif" width="556" />
																						<br />
																						<br />
																						<span class="main">
																								<strong>
																										<strong> <span class="style1"><font color="#0000ff">   </font></span></strong>
																										<span class="style1">
																												<font color="#0000ff">3．测试人员第一件事做什么？ </font>
																										</span>
																								</strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>    </strong>答案：打开Raid/BMS，查看指定给自己的Bug，验证已解决的Bug。 </span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>接下来，测试人员会… </strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">根据测试用例检验今天的Build </span>
																						</li>
																						<li class="main">在Raid/BMS中记录新发现的Bug </li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong> <span class="style1"><font color="#0000ff">   </font></span></strong>
																										<span class="style1">
																												<font color="#0000ff">4．专家会诊 </font>
																										</span>
																								</strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">参加者：项目经理和开发组长、测试组长 </span>
																						</li>
																						<li>
																								<span class="main">通过Raid/BMS评估每个未解决的Bug </span>
																								<ul>
																										<li>
																												<span class="main">决定Bug优先度 </span>
																										</li>
																										<li>
																												<span class="main">可否等到下个里程碑或版本解决？ </span>
																										</li>
																										<li class="main">谁来解决 </li>
																								</ul>
																						</li>
																						<li class="main">预测项目实际进度和发布时间 </li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>缺陷走势图 </strong>
																						</span>
																				</p>
																				<p align="center">
																						<img height="287" src="http://www.51testing.com/ddimg/uploadimg/20051028/1036384.gif" width="600" />
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong> <span class="style1"><font color="#0000ff">   </font></span></strong>
																										<span class="style1">
																												<font color="#0000ff">5．回顾微软的一天 </font>
																										</span>
																								</strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">构造: daily build </span>
																						</li>
																						<li>
																								<span class="main">开发: 解决blocking bugs, 实现功能, check-out, code review, check-in </span>
																						</li>
																						<li>
																								<span class="main">测试: BVT, 使用测试用例进行测试 </span>
																						</li>
																						<li class="main">项目经理/组长: 专家会诊 </li>
																				</ul>
																				<p>
																						<span class="main style1">
																								<strong>
																										<font color="#0000ff">
																												<strong>    </strong>6．微软的做法解决了那些常见问题？ </font>
																								</strong>
																						</span>
																				</p>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>质量问题 </strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">以前解决过的问题发布时又出现了，需要返工 </span>
																						</li>
																						<li>
																								<span class="main">无法预估发布时间 过早发布，带来质量和维护问题 </span>
																						</li>
																						<li>
																								<span class="main">测试发现的问题被忘却或不了了之 </span>
																						</li>
																						<li>
																								<span class="main">无法衡量测试员和开发员的工作 </span>
																						</li>
																						<li class="main">程序中的问题往往在发布后才发现 </li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>文档管理问题 </strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">文档与程序脱节，文档成为程序结果的描述 </span>
																						</li>
																						<li class="main">项目组把写文档看成负担 </li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>团队协调问题 </strong>
																						</span>
																				</p>
																				<ul>
																						<li>
																								<span class="main">开发人员各自为战，进行整合时发现模块衔接中的严重问题 需要作大的改动 </span>
																						</li>
																						<li>
																								<span class="main">没有保管好公司以往的版本和代码，无法满足用户对旧版本的更改要求 </span>
																						</li>
																						<li class="main">开发人员离职对项目带来很大冲击，没有人知道代码在哪，或无法读懂 </li>
																				</ul>
																				<p>
																						<span class="main">
																								<strong>
																										<strong>    </strong>五．提高软件管理的步骤 </strong>
																						</span>
																				</p>
																				<p class="main">
																						<strong>    </strong>1. 使用Raid/BMS，将流程管理自动化 <br /><strong>    </strong>2. 使用测试用例管理工具 <br /><strong>    </strong>3. 使用文档管理工具 <br /><strong>    </strong>4. 使用版本控制工具，进行Daily Build <br /><strong>    </strong>5. 建立代码标准 <br /><strong>    </strong>6. 建立Code Review机制 <br /><strong>    </strong>7. 建立专家会诊机制 <br /><strong>    </strong>8. 建立团队沟通机制 <br /><strong>    </strong>9. 根据需要调整团队结构</p>
																		</div>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 14:39 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试常识</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20774.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 06:26:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20774.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20774.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20774.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20774.html</trackback:ping><description><![CDATA[
		<div class="daxiao14" align="left">
				<p>软件开发和使用的历史已经留给了我们很多由于软件缺陷而导致的巨大财力、物力损失的经验教训。这些经验教训迫使我们这些测试工程师们必须采取强有力的检测措施来检测未发现的隐藏的软件缺陷。 </p>
				<p>生产软件的最终目的是为了满足客户需求，我们以客户需求作为评判软件质量的标准，认为软件缺陷（ Software Bug ）的具体含义包括下面几个因素： </p>
				<p>•  软件未达到客户需求的功能和性能； </p>
				<p>•  软件超出客户需求的范围； </p>
				<p>•  软件出现客户需求不能容忍的错误； </p>
				<p>•  软件的使用未能符合客户的习惯和工作环境。 </p>
				<p>考虑到设计等方面的因素，我们还可以认为软件缺陷还可以包括软件设计不符合规范，未能在特定的条件（资金、范围等）达到最佳等。可惜的是，我们中的很多人更倾向于把软件缺陷看成运行时出现问题上来，认为软件测试仅限于程序提交之后。 </p>
				<p>在目前的国内环境下，我们几乎看不到完整准确的客户需求说明书，加以客户的需求时时在变，追求完美的测试变得不太可能。因此作为一个优异的测试人员，追求软件质量的完美固然是我们的宗旨，但是明确软件测试现实与理想的差距，在软件测试中学会取舍和让步，对软件测试是有百益而无一弊的。 </p>
				<p>下面是一些软件测试的常识，对这些常识的理解和运用将有助于我们在进行软件测试时能够更好的把握软件测试的尺度。 </p>
				<p>•  测试是不完全的（测试不完全） </p>
				<p>很显然，由于软件需求的不完整性、软件逻辑路径的组合性、输入数据的大量性及结果多样性等因素，哪怕是一个极其简单的程序，要想穷尽所有逻辑路径，所有输入数据和验证所有结果是非常困难的一件事情。我们举一个简单的例子，比如说求两个整数的最大公约数。其输入信息为两个正整数。但是如果我们将整个正整数域的数字进行一番测试的话，从其数目的无限性我们便可证明是这样的测试在实际生活中是行不通的，即便某一天我们能够穷尽该程序，只怕我们乃至我们的子孙都早已作古了。为此作为软件测试，我们一般采用等价类和边界值分析等措施来进行实际的软件测试，寻找最小用例集合成为我们精简测试复杂性的一条必经之道。 </p>
				<p>•  测试具有免疫性（软件缺陷免疫性） </p>
				<p>软件缺陷与病毒一样具有可怕的 “ 免疫性 ” ，测试人员对其采用的测试越多，其免疫能力就越强，寻找更多软件缺陷就更加困难。由数学上的概率论我们可以推出这一结论。假设一个 50000 行的程序中有 500 个软件缺陷并且这些软件错误分布时均匀的，则每 100 行可以找到一个软件缺陷。我们假设测试人员用某种方法花在查找软件缺陷的精力为 X 小时 /100 行。照此推算，软件存在 500 个缺陷时，我们查找一个软件缺陷需要 X 小时，当软件只存在 5 个错误时，我们每查找一个软件缺陷需要 100X 小时。实践证明，实际的测试过程比上面的假设更为苛刻，为此我们必须更换不同的测试方式和测试数据。该例子还说明了在软件测试中采用单一的方法不能高效和完全的针对所有软件缺陷，因此软件测试应该尽可能的多采用多种途径进行测试。 </p>
				<p>•  测试是 “ 泛型概念 ” （全程测试） </p>
				<p>我一直反对软件测试仅存在于程序完成之后。如果单纯的只将程序设计阶段后的阶段称之为软件测试的话，需求阶段和设计阶段的缺陷产生的放大效应会加大。这非常不利于保证软件质量。需求缺陷、设计缺陷也是软件缺陷，记住 “ 软件缺陷具有生育能力 ” 。软件测试应该跨越整个软件开发流程。需求验证（自检）和设计验证（自检）也可以算作软件测试（建议称为：需求测试和设计测试）的一种。软件测试应该是一个泛型概念，涵盖整个软件生命周期，这样才能确保周期的每个阶段禁得起考验。同时测试本身也需要有第三者进行评估（信息系统审计和软件工程监理），即测试本身也应当被测试，从而确保测试自身的可靠性和高效性。否则自身不正，难以服人。 </p>
				<p>另外还需指出的是软件测试是提高软件产品质量的必要条件而非充分条件，软件测试是提高产品质量最直接、最快捷的手段，但决不是一个根本手段。 </p>
				<p>•  80-20 原则 </p>
				<p>80% 的软件缺陷常常生存在软件 20% 的空间里。这个原则告诉我们，如果你想使软件测试有效地话，记住常常光临其高危多发 “ 地段 ” 。在那里发现软件缺陷的可能性会大的多。这一原则对于软件测试人员提高测试效率及缺陷发现率有着重大的意义。聪明的测试人员会根据这个原则很快找出较多的缺陷而愚蠢的测试人员却仍在漫无目的地到处搜寻。 </p>
				<p>80-20 原则的另外一种情况是，我们在系统分析、系统设计、系统实现阶段的复审，测试工作中能够发现和避免 80% 的软件缺陷，此后的系统测试能够帮助我们找出剩余缺陷中的 80% ，最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、长时间使用后才会曝露出来。因为软件测试只能够保证尽可能多地发现软件缺陷，却无法保证能够发现所有的软件缺陷。 </p>
				<p>80-20 原则还能反映到软件测试的自动化方面上来，实践证明 80% 的软件缺陷可以借助人工测试而发现， 20% 的软件缺陷可以借助自动化测试能够得以发现。由于这二者间具有交叉的部分，因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修正。 </p>
				<p>•  为效益而测试 </p>
				<p>为什么我们要实施软件测试，是为了提高项目的质量效益最终以提高项目的总体效益。为此我们不难得出我们在实施软件测试应该掌握的度。软件测试应该在软件测试成本和软件质量效益两者间找到一个平衡点。这个平衡点就是我们在实施软件测试时应该遵守的度。单方面的追求都必然损害软件测试存在的价值和意义。一般说来，在软件测试中我们应该尽量地保持软件测试简单性，切勿将软件测试过度复杂化，拿物理学家爱因斯坦的话说就是： Keep it simple but not too simple 。 </p>
				<p>•  缺陷的必然性 </p>
				<p>软件测试中，由于错误的关联性，并不是所有的软件缺陷都能够得以修复。某些软件缺陷虽然能够得以修复但在修复的过程中我们会难免引入新的软件缺陷。很多软件缺陷之间是相互矛盾的，一个矛盾的消失必然会引发另外一个矛盾的产生。比如我们在解决通用性的缺陷后往往会带来执行效率上的缺陷。更何况在缺陷的修复过程中，我们常常还会受时间、成本等方面的限制因此无法有效、完整地修复所有的软件缺陷。因此评估软件缺陷的重要度、影响范围，选择一个折中的方案或是从非软件的因素（比如提升硬件性能）考虑软件缺陷成为我们在面对软件缺陷时一个必须直面的事实。 </p>
				<p>•  软件测试必须有预期结果 </p>
				<p>没有预期结果的测试是不可理喻的。软件缺陷是经过对比而得出来的。这正如没有标准无法进行度量一样。如果我们事先不知道或是无法肯定预期的结果，我们必然无法了解测试正确性。这很容易然人感觉如盲人摸象一般，不少测试人员常常凭借自身的感觉去评判软件缺陷的发生，其结果往往是把似是而非的东西作为正确的结果来判断，因此常常出现误测的现象。 </p>
				<p>•  软件测试的意义 - 事后分析 </p>
				<p>软件测试的目的单单是发现缺陷这么简单吗？如果是 “ 是 ” 的话，我敢保证，类似的软件缺陷在下一次新项目的软件测试中还会发生。古语说得好， “ 不知道历史的人必然会重蹈覆辙 ” 。没有对软件测试结果进行认真的分析，我们就无法了解缺陷发生的原因和应对措施，结果是我们不得不耗费的大量的人力和物力来再次查找软件缺陷。很可惜，目前大多测试团队都没有意识到这一点，测试报告中缺乏测试结果分析这一环节。 </p>
				<p>结论： </p>
				<p>软件测试是一个需要 “ 自觉 ” 的过程，作为一个测试人员，遇事沉着，把持尺度，从根本上应对软件测试有着正确的认识，希望本文对读者对软件测试的认识有所帮助。 </p>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 14:26 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么样的测试人员是好的测试人员</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20765.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 02:43:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20765.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20765.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20765.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20765.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20765.html</trackback:ping><description><![CDATA[            
<div class="style7" align="center"><span style="FONT-SIZE: 12pt"><b>什么样的测试人员是好的测试人员</b></span></div><br />1工作积极主动<br /><br />    工作态度如何，是评价一个测试人员最主要的方面，一个高水平的测试人员（指纯技术能力）如果没有一个好的工作态度，在测试团队中<br />有时候不但不能对测试工作起到推动作用，有时候还起到阻碍作用，而一个愿意工作的测试人员，哪怕他的技术水平不高，人也不聪明，但对自己的<br />工作认真负责，你告诉他的事情，他都可以认真去做，这个测试人员也会对测试工作起到很大的促进作用。这也是为什么很多企业愿意让刚参加工作的<br />人员做测试工作的一个主要原因。另外，测试人员对工作是否主动也会很影响一个测试人员的发展，举一个例子，我的一个测试人员在自己工作空闲的时候<br />会自己去学习QTP,提高自己的技术水平，这样在下一个测试的时候，他可以熟练的使用这个测试工具去进行自动化测试，不但提高了工作效率降低了工作强度<br />而且为自己创造了更好的发展机会（因为使用QTP效果好，被提升为测试组长）。所以说有效的利用工作时间，主动学习对一个人发展是很重要的。另外一个例子<br />也差不多，我的一个测试人员，在自己的测试任务异常终止的时候，而其他测试组任务很忙的情况下，主动要求参加其他组的测试工作，先不说他的技术水平如何，这<br />种主动要求工作的态度就让他从其他人中脱映而出，引起了我的重视，自然对他的工作会格外注意，而我们的每一次的交流都会让他学到很多新东西。<br /><br />2、认真，细心，不怕麻烦<br /><br />    不能不说的是，测试工作是一个烦琐的工作，如果你不是认真、细心，不怕麻烦的人，建议你最好不要进入这个行业，否则，最后难受的肯定是你自己。<br />有那么一句话：细节决定成败，这句话格外适用于测试人员。测试人员的在做测试需求的时候，开发人员人员的写的系统需求报告中的每一个需求点都会在测试需求<br />中成为几个测试需求点（你要验证正常情况，异常情况），有时候给人的感觉就象在玩排列组合的游戏，但这个游戏排列组合的情况实在太多了，如果你不够耐心，不够<br />细心是很容易遗漏测试需求点的，而这些遗漏的地方往往是问题点（开发人员也容易忘记考虑这些地方，从而产生问题），另外测试工作输入的数据是一个很烦琐的事情<br />举一个例子来说，一个日期合法性测试，很容易总结三、四百个测试数据，你想全部测试工作会是一个什么数量。而更可怕的是，测试不是一次性的工作，经常需要做<br />回归测试，所有烦琐的工作必须不断的重复，而在重复的时候测试人员往往会因为怕麻烦，减少测试用例数，造成测试的不全面。所以说认真、细心、不怕麻烦是一个好的测试必备的素质要求<br /><br />3、学习能力强，善于总结<br /><br />不能成为我们提高自己水平的借口，97年我们做的测试主要是功能测试，开始也是大猩猩测试，后来一方面从专业书籍里搜寻测试的资料，一方面总结我们自己的经验，1年<br />以后我们基本形成了自己的测试流程和方法，我们有自己的测试计划的编写方法，测试用例编写的规范，测试总结的方法，新来的测试人员可以这些文件很快的提高自己的水平<br />，后来的测试工具学习我们也是采用这种方法，在QTP的学习过程中，我的一个部下，学习了3个月，就基本掌握了QTP的使用，而且还总结了使用QTP常遇到的问题发表到了<br />51testing上，很多了都认为他是一个技术大拿，其实他只是一个工作了8个月，学习了3个月的新手。不断的学习新技术，不断总结在实际工作遇到的问题，解决的方法，并把<br />他们整理归纳，是一个测试人员提高自己的技术水平的最好的方法。还有两点需要说明的是。1随着测试工作日益专业化，原来的低水平测试人员越来越不能满足测试的需要，测试<br />工具的使用，测试理论的更新，新技术的应用都要求测试人员要不断提高自己的水平，2好的测试人员不但要理解测试技术，对被测试系统以及开发环境和工具以及系统架构都要<br />很了解才能制定合理的测试方案，也就是说测试负责人不要要了解测试技术，还要了解主流的开发技术、架构和工具（虽然不用成为专家），这一切都要测试人员不断的学习和总结 
<p>4、掌握测试理论<br />   开发工具在变，测试工具在变，被测试的系统在变，一切的东西都在边，那么作为一个测试人员最重要的是学习什么，个人认为是测试理论的学习，拿我自己的例子来说，我原来<br />是做纯软件的，可是现在接触到了很多和硬件相关的测试，比如手机测试，但不管你测试的是什么系统基本理论是不变的，首先都需要开发人员提供比较好的需求文档。概要设计文档，<br />详细设计文档，需求文档是我们制定测试需求的标准，也是我们判断系统是否存在问题的标准，而概要设计文档，详细设计文档是我们制作测试用例的依据。我们的划分等价类，边界值<br />测试等基本测试的方法都需要这些文档的支持，当然每一种不同类型的测试，都有其特殊的地方，比如手机的测试就需要你对通讯理论有一定的了解（也就是系统环境），所以说好的测试<br />人员必须数量掌握测试理论。如果你认为你的测试理论已经不错了，那就回答一下性能测试，负载测试，压力测试有什么区别这个问题吧。</p><p>4、不清谈，而是冲锋在前<br /><br />   我的一些测试人员，总是喜欢给我出注意，但却从来不考虑如何实施，他们喜欢的一句话就是，看我多聪明，一眼就可以问题的实质，头我这个参谋不错吧（我原来也是这样）。我要告诉<br />大家这样的人实际已经落入了一个技术生涯的误区，看到问题可以说明你有一定的水平，但如何解决问题，如何实施才是真正体现一个人水平，中国文人当初因为怕杀头，产生了一个极为可怕的<br />现象就是什么光清议，而从不肯去实践。这个不好的习惯我们现在叫做眼高手低。只有在解决实际问题的时候我们才能发现我们的解决方法有那些不足，会产生什么新的问题，从而不断改进我们<br />的工作，一个简单的例子，我用TD已经很长时间了，可今天我还是能发现TD一些新的特点，并把这些特点用到我的工作中去，改进我的测试管理，所以个人认为好的测试人员总是那些冲锋在前的<br />测试人员，在实际工作中才是提高功能能力的最好方法</p><p>5、人际关系的处理<br />   测试工作是一个问题的爆发点，特别是对于那些开发流程不规范的单位，如何处理好人际关系，是一个好的测试人员需要掌握的技巧，作为一个测试负责人要和开发人员、测试人员、公司领导<br />经常面临短暂的测试时间，不断的回归测试，测试的异常终止，领导的批评，开发人员的职责，测试人员关于工期，测试环境的抱怨。如何化解矛盾，处理好这些问题是一个衡量测试人员好坏的标准<br />人际关系处理不好，其实一个主要的问题就是误解，开发人员，公司领导对于测试工作的工作量的误解是产生这些矛盾的一个主要原因，所以作为好的测试人员，除了具备一些常用的人际关系处理<br />技巧以外，还要是一个好的宣传员，不断将测试的方法、理论、工作量对开发人员、上级领导进行宣讲，让他们对测试工作有一个正确的认识，只有这样才能真正处理好测试部门和其他工作人员的<br />人际关系，是单位的测试向一个好的方向发展。<br /><br />6、熟悉开发工具和平台<br />今天累了，不多说了，不了解开发平台是无法做单元测试的，而且也无法做好的性能测试<br /><br />7、掌握测试工具<br /></p><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 10:43 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试常用术语表</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20763.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 02:32:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20763.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20763.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20763.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20763.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="558" border="0">
				<tbody>
						<tr>
								<td valign="center" align="right" colspan="2" height="32">
										<div class="style7" align="center">
												<span style="FONT-SIZE: 12pt">
														<b>软件测试常用术语表</b>
												</span>
										</div>
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" colspan="2" height="20">
										<div align="center"> </div>
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" colspan="2" height="10">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" width="2%" height="10">
										<div align="left">
										</div>
								</td>
								<td valign="top" align="right" width="98%" bgcolor="#ffffff">
										<div class="daxiao14" align="left">
												<p>  Acceptance Testing－－可接受性测试</p>
												<p>  一般由用户/客户进行的确认是否可以接受一个产品的验证性测试。</p>
												<p>  actual outcome－－实际结果</p>
												<p>  被测对象在特定的条件下实际产生的结果。</p>
												<p>  Ad Hoc Testing－－随机测试</p>
												<p>  测试人员通过随机的尝试系统的功能，试图使系统中断。</p>
												<p>  algorithm－－算法</p>
												<p>  （1）一个定义好的有限规则集，用于在有限步骤内解决一个问题；（2）执行一个特定任务的任何操作序列。</p>
												<p>  algorithm analysis－－算法分析</p>
												<p>  一个软件的验证确认任务，用于保证选择的算法是正确的、合适的和稳定的，并且满足所有精确性、规模和时间</p>
												<p>  方面的要求。</p>
												<p>  Alpha Testing－－Alpha测试</p>
												<p>  由选定的用户进行的产品早期性测试。这个测试一般在可控制的环境下进行的。</p>
												<p>  analysis－－分析</p>
												<p>  （1）分解到一些原子部分或基本原则，以便确定整体的特性；（2）一个推理的过程，显示一个特定的结果是假</p>
												<p>  设前提的结果；（3）一个问题的方法研究，并且问题被分解为一些小的相关单元作进一步详细研究。</p>
												<p>  anomaly－－异常</p>
												<p>  在文档或软件操作中观察到的任何与期望违背的结果。</p>
												<p>  application software－－应用软件</p>
												<p>  满足特定需要的软件。</p>
												<p>  architecture－－构架</p>
												<p>  一个系统或组件的组织结构。</p>
												<p>  ASQ－－自动化软件质量（Automated Software Quality）</p>
												<p>  使用软件工具来提高软件的质量。</p>
												<p>  assertion－－断言</p>
												<p>  指定一个程序必须已经存在的状态的一个逻辑表达式，或者一组程序变量在程序执行期间的某个点上必须满足的</p>
												<p>  条件。</p>
												<p>  assertion checking－－断言检查</p>
												<p>  用户在程序中嵌入的断言的检查。</p>
												<p>  audit－－审计</p>
												<p>  一个或一组工作产品的独立检查以评价与规格、标准、契约或其它准则的符合程度。</p>
												<p>  audit trail－－审计跟踪</p>
												<p>  系统审计活动的一个时间记录。</p>
												<p>  Automated Testing－－自动化测试</p>
												<p>  使用自动化测试工具来进行测试，这类测试一般不需要人干预，通常在GUI、性能等测试中用得较多。</p>
												<p>  第120贴【2004－10－13】：常见测试术语二</p>
												<p>  Backus-Naur Form－－BNF范式</p>
												<p>  一种分析语言，用于形式化描述语言的语法</p>
												<p>  baseline－－基线</p>
												<p>  一个已经被正式评审和批准的规格或产品，它作为进一步开发的一个基础，并且必须通过正式的变更流程来变更</p>
												<p>  。</p>
												<p>  Basic Block－－基本块</p>
												<p>  一个或多个顺序的可执行语句块，不包含任何分支语句。</p>
												<p>  basis test set－－基本测试集</p>
												<p>  根据代码逻辑引出来的一个测试用例集合，它保证能获得100%的分支覆盖。</p>
												<p>  behaviour－－行为</p>
												<p>  对于一个系统的一个函数的输入和预置条件组合以及需要的反应。一个函数的所有规格包含一个或多个行为。</p>
												<p>  benchmark－－标杆/指标/基准</p>
												<p>  一个标准，根据该标准可以进行度量或比较。</p>
												<p>  Beta Testing－－Beta测试</p>
												<p>  在客户场地，由客户进行的对产品预发布版本的测试。这个测试一般是不可控的。</p>
												<p>  big-bang testing－－大锤测试/一次性集成测试</p>
												<p>  非渐增式集成测试的一种策略，测试的时候把所有系统的组件一次性组合成系统进行测试。</p>
												<p>  Black Box Testing－－黑盒测试</p>
												<p>  根据软件的规格对软件进行的测试，这类测试不考虑软件内部的运作原理，因此软件对用户来说就像一个黑盒子</p>
												<p>  。</p>
												<p>  bottom-up testing－－由低向上测试</p>
												<p>  渐增式集成测试的一种，其策略是先测试底层的组件，然后逐步加入较高层次的组件进行测试，直到系统所有组</p>
												<p>  件都加入到系统。</p>
												<p>  boundary value－－边界值</p>
												<p>  一个输入或输出值，它处在等价类的边界上。</p>
												<p>  boundary value coverage－－边界值覆盖</p>
												<p>  通过测试用例，测试组件等价类的所有边界值。</p>
												<p>  boundary value testing－－边界值测试</p>
												<p>  通过边界值分析方法来生成测试用例的一种测试策略。</p>
												<p>  Boundry Value Analysis－－边界值分析</p>
												<p>  该分析一般与等价类一起使用。经验认为软件的错误经常在输入的边界上产生，因此边界值分析就是分析软件输</p>
												<p>  入边界的一种方法。</p>
												<p>  branch－－分支</p>
												<p>  在组件中，控制从任何语句到其它任何非直接后续语句的一个条件转换，或者是一个无条件转换。</p>
												<p>  branch condition－－分支条件</p>
												<p>  branch condition combination coverage－－分支条件组合覆盖</p>
												<p>  在每个判定中所有分支条件结果组合被测试用例覆盖到的百分比。</p>
												<p>  branch condition combination testing－－分支条件组合测试</p>
												<p>  通过执行分支条件结果组合来设计测试用例的一种方法。</p>
												<p>  branch condition coverage－－分支条件覆盖</p>
												<p>  每个判定中分支条件结果被测试用例覆盖到的百分比。</p>
												<p>  branch condition testing－－分支条件测试</p>
												<p>  通过执行分支条件结果来设计测试用例的一种方法。</p>
												<p>  branch coverage－－分支覆盖</p>
												<p>  通过测试执行到的分支的百分比。</p>
												<p>  branch outcome－－分支结果</p>
												<p>  见判定结果（decision outcome）</p>
												<p>  branch point－－分支点</p>
												<p>  见判定（decision）</p>
												<p>  branch testing－－分支测试</p>
												<p>  通过执行分支结果来设计测试用例的一种方法。</p>
												<p>  Breadth Testing－－广度测试</p>
												<p>  在测试中测试一个产品的所有功能，但是不测试更细节的特性。</p>
												<p>  bug－－缺陷</p>
												<p>  第121贴【2004－10－14】：常见测试术语三</p>
												<p>  capture/playback tool－－捕获/回放工具</p>
												<p>  参考capture/replay tool</p>
												<p>  Capture/Replay Tool－－捕获/回放工具</p>
												<p>  一种测试工具，能够捕获在测试过程中传递给软件的输入，并且能够在以后的时间中，重复这个执行的过程。这</p>
												<p>  类工具一般在GUI测试中用的较多。</p>
												<p>  CASE－－计算机辅助软件工程（computer aided software engineering）</p>
												<p>  用于支持软件开发的一个自动化系统。</p>
												<p>  CAST－－计算机辅助测试</p>
												<p>  在测试过程中使用计算机软件工具进行辅助的测试。</p>
												<p>  cause-effect graph－－因果图</p>
												<p>  一个图形，用来表示输入（原因）与结果之间的关系，可以被用来设计测试用例。</p>
												<p>  certification －－证明</p>
												<p>  一个过程，用于确定一个系统或组件与特定的需求相一致。</p>
												<p>  change control－－变更控制</p>
												<p>  一个用于计算机系统或系统数据修改的过程，该过程是质量保证程序的一个关键子集，需要被明确的描述。</p>
												<p>  code audit －－代码审计</p>
												<p>  由一个人、组或工具对源代码进行的一个独立的评审，以验证其与设计规格、程序标准的一致性。正确性和有效</p>
												<p>  性也会被评价。</p>
												<p>  Code Coverage－－代码覆盖率</p>
												<p>  一种分析方法，用于确定在一个测试套执行后，软件的哪些部分被执行到了，哪些部分没有被执行到。</p>
												<p>  Code Inspection－－代码检视</p>
												<p>  一个正式的同行评审手段，在该评审中，作者的同行根据检查表对程序的逻辑进行提问，并检查其与编码规范的</p>
												<p>  一致性。</p>
												<p>  Code Walkthrough－－代码走读</p>
												<p>  一个非正式的同行评审手段，在该评审中，代码被使用一些简单的测试用例进行人工执行，程序变量的状态被手</p>
												<p>  工分析，以分析程序的逻辑和假设。</p>
												<p>  code-based testing－－基于代码的测试</p>
												<p>  根据从实现中引出的目标设计测试用例。</p>
												<p>  coding standards－－编程规范</p>
												<p>  一些编程方面需要遵循的标准，包括命名方式、排版格式等内容。</p>
												<p>  Compatibility Testing－－兼容性测试</p>
												<p>  测试软件是否和系统的其它与之交互的元素之间兼容，如：浏览器、操作系统、硬件等。</p>
												<p>  complete path testing －－完全路径测试</p>
												<p>  参考穷尽测试（exhaustive testing）</p>
												<p>  completeness－－完整性</p>
												<p>  实体的所有必须部分必须被包含的属性。</p>
												<p>  complexity －－复杂性</p>
												<p>  系统或组件难于理解或验证的程度。</p>
												<p>  Component－－组件</p>
												<p>  一个最小的软件单元，有着独立的规格</p>
												<p>  Component Testing－－组件测试</p>
												<p>  参考单元测试</p>
												<p>  computation data use－－计算数据使用</p>
												<p>  一个不在条件中的数据使用。</p>
												<p>  computer system security－－计算机系统安全性</p>
												<p>  计算机软件和硬件对偶然的或故意的访问、使用、修改或破坏的一种保护机制。</p>
												<p>  condition－－条件</p>
												<p>  一个不包含布尔操作的布尔表达式，例如：A</p>
												<p>  condition coverage－－条件覆盖</p>
												<p>  通过测试执行到的条件的百分比。</p>
												<p>  condition outcome－－条件结果</p>
												<p>  条件为真为假的评价。</p>
												<p>  configuration control－－配置控制</p>
												<p>  配置管理的一个方面，包括评价、协调、批准、和实现配置项的变更。</p>
												<p>  configuration management－－配置管理</p>
												<p>  一套技术和管理方面的原则用于确定和文档化一个配置项的功能和物理属性、控制对这些属性的变更、记录和报</p>
												<p>  告变更处理和实现的状态、以及验证与指定需求的一致性。</p>
												<p>  conformance criterion－－ 一致性标准</p>
												<p>  判断组件在一个特定输入值上的行为是否符合规格的一种方法。</p>
												<p>  Conformance Testing－－ 一致性测试</p>
												<p>  测试一个系统的实现是否和其基于的规格相一致的测试。</p>
												<p>  consistency －－ 一致性</p>
												<p>  在系统或组件的各组成部分和文档之间没有矛盾，一致的程度。</p>
												<p>  consistency checker－－ 一致性检查器</p>
												<p>  一个软件工具，用于测试设计规格中需求的一致性和完整性。</p>
												<p>  control flow－－控制流</p>
												<p>  程序执行中所有可能的事件顺序的一个抽象表示。</p>
												<p>  control flow graph－－控制流图</p>
												<p>  通过一个组件的可能替换控制流路径的一个图形表示。</p>
												<p>  conversion testing－－转换测试</p>
												<p>  用于测试已有系统的数据是否能够转换到替代系统上的一种测试。</p>
												<p>  corrective maintenance－－故障检修</p>
												<p>  用于纠正硬件或软件中故障的维护。</p>
												<p>  correctness －－正确性</p>
												<p>  软件遵从其规格的程度。</p>
												<p>  correctness －－正确性</p>
												<p>  软件在其规格、设计和编码中没有故障的程度。软件、文档和其它项满足需求的程度。软件、文档和其它项满足</p>
												<p>  用户明显的和隐含的需求的程度。</p>
												<p>  coverage －－覆盖率</p>
												<p>  用于确定测试所执行到的覆盖项的百分比。</p>
												<p>  coverage item－－覆盖项</p>
												<p>  作为测试基础的一个入口或属性：如语句、分支、条件等。</p>
												<p>  crash－－崩溃</p>
												<p>  计算机系统或组件突然并完全的丧失功能。</p>
												<p>  criticality－－关键性</p>
												<p>  需求、模块、错误、故障、失效或其它项对一个系统的操作或开发影响的程度。</p>
												<p>  criticality analysis－－关键性分析</p>
												<p>  需求的一种分析，它根据需求的风险情况给每个需求项分配一个关键级别。</p>
												<p>  cyclomatic complexity－－循环复杂度</p>
												<p>  一个程序中独立路径的数量。</p>
												<p>  第122贴【2004－10－19】：常见测试术语四</p>
												<p>  data corruption－－数据污染</p>
												<p>  违背数据一致性的情况。</p>
												<p>  data definition－－数据定义</p>
												<p>  一个可执行语句，在该语句上一个变量被赋予了一个值。</p>
												<p>  data definition C-use coverage－－数据定义C-use覆盖</p>
												<p>  在组件中被测试执行到的数据定义C-use使用对的百分比。</p>
												<p>  data definition C-use pair－－数据定义C-use使用对</p>
												<p>  一个数据定义和一个计算数据使用，数据使用的值是数据定义的值。</p>
												<p>  data definition P-use coverage－－数据定义P-use覆盖</p>
												<p>  在组件中被测试执行到的数据定义P-use使用对的百分比。</p>
												<p>  data definition P-use pair－－数据定义P-use使用对</p>
												<p>  一个数据定义和一个条件数据使用，数据使用的值是数据定义的值。</p>
												<p>  data definition-use coverage－－数据定义使用覆盖</p>
												<p>  在组件中被测试执行到的数据定义使用对的百分比。</p>
												<p>  data definition-use pair －－数据定义使用对</p>
												<p>  一个数据定义和一个数据使用，数据使用的值是数据定义的值。</p>
												<p>  data definition-use testing－－数据定义使用测试</p>
												<p>  以执行数据定义使用对为目标进行测试用例设计的一种技术。</p>
												<p>  data dictionary－－数据字典</p>
												<p>  （1）一个软件系统中使用的所有数据项名称，以及这些项相关属性的集合。（2）数据流、数据元素、文件、数据基础、和相关处理的一个集合。</p>
												<p>  data flow analysis－－数据流分析</p>
												<p>  一个软件验证和确认过程，用于保证输入和输出数据和它们的格式是被适当定义的，并且数据流是正确的。</p>
												<p>  data flow coverage－－数据流覆盖</p>
												<p>  测试覆盖率的度量是根据变量在代码中的使用情况。</p>
												<p>  data flow diagram－－数据流图</p>
												<p>  把数据源、数据接受、数据存储和数据处理作为节点描述的一个图形，数据之间的逻辑体现为节点之间的边。</p>
												<p>  data flow testing－－数据流测试</p>
												<p>  根据代码中变量的使用情况进行的测试。</p>
												<p>  data integrity－－数据完整性</p>
												<p>  一个数据集合完全、正确和一致的程度。</p>
												<p>  data use－－数据使用</p>
												<p>  一个可执行的语句，在该语句中，变量的值被访问。</p>
												<p>  data validation－－数据确认</p>
												<p>  用于确认数据不正确、不完整和不合理的过程。</p>
												<p>  dead code－－死代码</p>
												<p>  在程序操作过程中永远不可能被执行到的代码。</p>
												<p>  Debugging－－调试</p>
												<p>  发现和去除软件失效根源的过程。</p>
												<p>  decision－－判定</p>
												<p>  一个程序控制点，在该控制点上，控制流有两个或多个可替换路由。</p>
												<p>  Decision condition－－判定条件</p>
												<p>  判定内的一个条件。</p>
												<p>  decision coverage－－判定覆盖</p>
												<p>  在组件中被测试执行到的判定结果的百分比。</p>
												<p>  decision outcome－－判定结果</p>
												<p>  一个判定的结果，决定控制流走哪条路径。</p>
												<p>  decision table－－判定表</p>
												<p>  一个表格，用于显示条件和条件导致动作的集合。</p>
												<p>  Depth Testing－－深度测试</p>
												<p>  执行一个产品的一个特性的所有细节，但不测试所有特性。比较广度测试。</p>
												<p>  design of experiments－－实验设计</p>
												<p>  一种计划实验的方法，这样适合分析的数据可以被收集。</p>
												<p>  design-based testing－－基于设计的测试</p>
												<p>  根据软件的构架或详细设计引出测试用例的一种方法。</p>
												<p>  desk checking－－桌面检查</p>
												<p>  通过手工模拟软件执行的方式进行测试的一种方式。</p>
												<p>  diagnostic－－诊断</p>
												<p>  检测和隔离故障或失效的过程。</p>
												<p>  dirty testing－－肮脏测试</p>
												<p>  参考负面测试（negative testing）</p>
												<p>  disaster recovery－－灾难恢复</p>
												<p>  一个灾难的恢复和重建过程或能力。</p>
												<p>  documentation testing －－文档测试</p>
												<p>  测试关注于文档的正确性。</p>
												<p>  domain－－域</p>
												<p>  值被选择的一个集合。</p>
												<p>  domain testing－－域测试</p>
												<p>  参考等价划分测试（equivalence partition testing）</p>
												<p>  dynamic analysis－－动态分析</p>
												<p>  根据执行的行为评价一个系统或组件的过程。</p>
												<p>  Dynamic Testing－－动态测试</p>
												<p>  通过执行软件的手段来测试软件。</p>
												<p>  第123贴【2004－10－20】：常见测试术语五</p>
												<p>  embedded software－－嵌入式软件</p>
												<p>  软件运行在特定硬件设备中，不能独立于硬件存在。这类系统一般要求实时性较高。</p>
												<p>  emulator－－仿真</p>
												<p>  一个模仿另一个系统的系统或设备，它接受相同的输入并产生相同的输出。</p>
												<p>  End-to-End testing－－端到端测试</p>
												<p>  在一个模拟现实使用的场景下测试一个完整的应用环境，例如和数据库交互，使用网络通信等。</p>
												<p>  entity relationship diagram－－实体关系图</p>
												<p>  描述现实世界中实体及它们关系的图形。</p>
												<p>  entry point －－入口点</p>
												<p>  一个组件的第一个可执行语句。</p>
												<p>  Equivalence Class－－等价类</p>
												<p>  组件输入或输出域的一个部分，在该部分中，组件的行为从组件的规格上来看认为是相同的。</p>
												<p>  equivalence partition coverage－－等价划分覆盖</p>
												<p>  在组件中被测试执行到的等价类的百分比。</p>
												<p>  equivalence partition testing－－等价划分测试</p>
												<p>  根据等价类设计测试用例的一种技术。</p>
												<p>  Equivalence Partitioning－－等价划分</p>
												<p>  组件的一个测试用例设计技术，该技术从组件的等价类中选取典型的点进行测试。</p>
												<p>  error－－错误</p>
												<p>  IEEE的定义是：一个人为产生不正确结果的行为。</p>
												<p>  error guessing－－错误猜测</p>
												<p>  根据测试人员以往的经验猜测可能出现问题的地方来进行用例设计的一种技术。</p>
												<p>  error seeding－－错误播种/错误插值</p>
												<p>  故意插入一些已知故障（fault）到一个系统中去的过程，目的是为了根据错误检测和跟踪的效率并估计系统中遗</p>
												<p>  留缺陷的数量。</p>
												<p>  exception－－异常/例外</p>
												<p>  一个引起正常程序执行挂起的事件。</p>
												<p>  executable statement－－可执行语句</p>
												<p>  一个语句在被编译后会转换成目标代码，当程序运行是会被执行，并且可能对程序数据产生动作。</p>
												<p>  Exhaustive Testing－－穷尽测试</p>
												<p>  测试覆盖软件的所有输入和条件组合。</p>
												<p>  exit point－－出口点</p>
												<p>  一个组件的最后一个可执行语句。</p>
												<p>  expected outcome－－期望结果</p>
												<p>  参考预期结果（predicted outcome）。</p>
												<p>  第124贴【2004－10－21】：常见测试术语六</p>
												<p>  failure－－失效</p>
												<p>  软件的行为与其期望的服务相背离。</p>
												<p>  fault－－故障</p>
												<p>  在软件中一个错误的表现。</p>
												<p>  feasible path－－可达路径</p>
												<p>  可以通过一组输入值和条件执行到的一条路径。</p>
												<p>  feature testing－－特性测试</p>
												<p>  参考功能测试（Functional Testing）</p>
												<p>  FMEA－－失效模型效果分析（Failure Modes and Effects Analysis）</p>
												<p>  可靠性分析中的一种方法，用于在基本组件级别上确认对系统性能有重大影响的失效。</p>
												<p>  FMECA－－失效模型效果关键性分析(Failure Modes and Effects Criticality Analysis)</p>
												<p>  FMEA的一个扩展，它分析了失效结果的严重性。</p>
												<p>  FTA－－故障树分析(Fault Tree Analysis)</p>
												<p>  引起一个不需要事件产生的条件和因素的确认和分析，通常是严重影响系统性能、经济性、安全性或其它需要特</p>
												<p>  性。</p>
												<p>  functional decomposition－－功能分解</p>
												<p>  参考模块分解（modular decomposition）</p>
												<p>  Functional Specification －－功能规格说明书</p>
												<p>  一个详细描述产品特性的文档。</p>
												<p>  Functional Testing－－功能测试</p>
												<p>  测试一个产品的特性和可操作行为以确定它们满足规格。</p>
												<p>  第125贴【2004－10－22】：常见测试术语七</p>
												<p>  glass box testing－－玻璃盒测试</p>
												<p>  参考白盒测试（White Box Testing）</p>
												<p>  IEEE－－美国电子与电器工程师学会（Institute of Electrical and Electronic Engineers）</p>
												<p>  incremental testing－－渐增测试</p>
												<p>  集成测试的一种，组件逐渐被增加到系统中直到整个系统被集成。</p>
												<p>  infeasible path－－不可达路径</p>
												<p>  不能够通过任何可能的输入值集合执行到的路径。</p>
												<p>  input domain－－输入域</p>
												<p>  所有可能输入的集合。</p>
												<p>  inspection－－检视</p>
												<p>  对文档进行的一种评审形式。</p>
												<p>  installability testing－－可安装性测试</p>
												<p>  确定系统的安装程序是否正确的测试。</p>
												<p>  instrumentation－－插装</p>
												<p>  在程序中插入额外的代码以获得程序在执行时行为的信息。</p>
												<p>  instrumenter－－插装器</p>
												<p>  执行插装的工具</p>
												<p>  Integration Testing－－集成测试</p>
												<p>  测试一个应用组合后的部分以确保它们的功能在组合之后正确。该测试一般在单元测试之后进行。</p>
												<p>  interface－－接口</p>
												<p>  两个功能单元的共享边界。</p>
												<p>  interface analysis－－接口分析</p>
												<p>  分析软件与硬件、用户和其它软件之间接口的需求规格。</p>
												<p>  interface testing－－接口测试</p>
												<p>  测试系统组件间接口的一种测试。</p>
												<p>  invalid inputs－－无效输入</p>
												<p>  在程序功能输入域之外的测试数据。</p>
												<p>  isolation testing－－孤立测试</p>
												<p>  组件测试（单元测试）策略中的一种，把被测组件从其上下文组件之中孤立出来，通过设计驱动和桩进行测试的</p>
												<p>  一种方法。</p>
												<p>  第126贴【2004－10－25】：常见测试术语八</p>
												<p>  Job－－工作</p>
												<p>  一个用户定义的要计算机完成的工作单元。</p>
												<p>  job control language－－工作控制语言</p>
												<p>  用于确定工作顺序，描述它们对操作系统要求并控制它们执行的语言。</p>
												<p>  LCSAJ－－线性代码顺序和跳转（Linear Code Sequence And Jump）</p>
												<p>  包含三个部分：可执行语句线性顺序的起始，线性顺序的结束，在线性顺序结束处控制流跳转的目标语句。</p>
												<p>  LCSAJ coverage－－LCSAJ覆盖</p>
												<p>  在组件中被测试执行到的LCSAJ的百分比。</p>
												<p>  LCSAJ testing－－LCSAJ测试</p>
												<p>  根据LCSAJ设计测试用例的一种技术。</p>
												<p>  Load Testing－－负载测试</p>
												<p>  通过测试系统在资源超负荷情况下的表现，以发现设计上的错误或验证系统的负载能力。</p>
												<p>  logic analysis－－逻辑分析</p>
												<p>  （1）评价软件设计的关键安全方程式、算法和控制逻辑的方法。（2）评价程序操作的顺序并且检测可能导致灾难的错误。</p>
												<p>  logic-coverage testing－－逻辑覆盖测试</p>
												<p>  参考结构化测试用例设计（structural test case design）</p>
												<p>  maintainability－－可维护性</p>
												<p>  一个软件系统或组件可以被修改的容易程度，这个修改一般是因为缺陷纠正、性能改进或特性增加引起的。</p>
												<p>  maintainability testing－－可维护性测试</p>
												<p>  测试系统是否满足可维护性目标。</p>
												<p>  modified condition/decision coverage－－修改条件/判定覆盖</p>
												<p>  在组件中被测试执行到的修改条件/判定的百分比。</p>
												<p>  modified condition/decision testing －－修改条件/判定测试</p>
												<p>  根据MC/DC设计测试用例的一种技术。</p>
												<p>  Monkey Testing－－跳跃式测试</p>
												<p>  随机性，跳跃式的测试一个系统，以确定一个系统是否会崩溃。</p>
												<p>  MTBF－－平均失效间隔实际（mean time between failures）</p>
												<p>  两次失效之间的平均操作时间。</p>
												<p>  MTTF－－平均失效时间 （mean time to failure）</p>
												<p>  第一次失效之前的平均时间</p>
												<p>  MTTR－－平均修复时间（mean time to repair）</p>
												<p>  两次修复之间的平均时间</p>
												<p>  multiple condition coverage－－多条件覆盖</p>
												<p>  参考分支条件组合覆盖（branch condition combination coverage）</p>
												<p>  mutation analysis－－变体分析</p>
												<p>  一种确定测试用例套完整性的方法，该方法通过判断测试用例套能够区别程序与其变体之间的程度。</p>
												<p>  第127贴【2004－10－26】：常见测试术语九</p>
												<p>  Negative Testing－－逆向测试/反向测试/负面测试</p>
												<p>  测试瞄准于使系统不能工作。</p>
												<p>  non-functional requirements testing－－非功能性需求测试</p>
												<p>  与功能不相关的需求测试，如：性能测试、可用性测试等。</p>
												<p>  N-switch coverage－－N切换覆盖</p>
												<p>  在组件中被测试执行到的N转换顺序的百分比。</p>
												<p>  N-switch testing－－N切换测试</p>
												<p>  根据N转换顺序设计测试用例的一种技术，经常用于状态转换测试中。</p>
												<p>  N-transitions－－N转换</p>
												<p>  N＋1转换顺序</p>
												<p>  operational testing－－可操作性测试</p>
												<p>  在系统或组件操作的环境中评价它们的表现。</p>
												<p>  output domain－－输出域</p>
												<p>  所有可能输出的集合。</p>
												<p>  第128贴【2004－10－27】：常见测试术语十</p>
												<p>  partition testing－－分类测试</p>
												<p>  参考等价划分测试（equivalence partition testing）</p>
												<p>  path－－路径</p>
												<p>  一个组件从入口到出口的一条可执行语句顺序。</p>
												<p>  path coverage－－路径覆盖</p>
												<p>  在组件中被测试执行到的路径的百分比。</p>
												<p>  path sensitizing－－路径敏感性</p>
												<p>  选择一组输入值强制组件走一个给定的路径。</p>
												<p>  path testing－－路径测试</p>
												<p>  根据路径设计测试用例的一种技术，经常用于状态转换测试中。</p>
												<p>  performance testing－－性能测试</p>
												<p>  评价一个产品或组件与性能需求是否符合的测试。</p>
												<p>  portability testing－－可移植性</p>
												<p>  测试瞄准于证明软件可以被移植到指定的硬件或软件平台上。</p>
												<p>  Positive Testing－－正向测试</p>
												<p>  测试瞄准于显示系统能够正常工作。</p>
												<p>  precondition－－预置条件</p>
												<p>  环境或状态条件，组件执行之前必须被填充一个特定的输入值。</p>
												<p>  predicate－－谓词</p>
												<p>  一个逻辑表达式，结果为‘真’或‘假’。</p>
												<p>  predicate data use－－谓词数据使用</p>
												<p>  在谓词中的一个数据使用。</p>
												<p>  program instrumenter－－程序插装</p>
												<p>  参考插装（instrumenter）</p>
												<p>  progressive testing－－递进测试</p>
												<p>  在先前特性回归测试之后对新特性进行测试的一种策略。</p>
												<p>  pseudo-random－－伪随机</p>
												<p>  看似随机的，实际上是根据预先安排的顺序进行的。</p>
												<p>  第129贴【2004－10－28】：常见测试术语十一</p>
												<p>  QA－－质量保证（quality assurance）</p>
												<p>  （1）已计划的系统性活动，用于保证一个组件、模块或系统遵从已确立的需求。（2）采取的所有活动以保证一</p>
												<p>  个开发组织交付的产品满足性能需求和已确立的标准和过程。</p>
												<p>  QC－－质量控制（quality control）</p>
												<p>  用于获得质量需求的操作技术和过程，如测试活动。</p>
												<p>  Race Condition－－竞争状态</p>
												<p>  并行问题的根源。对一个共享资源的多个访问，至少包含了一个写操作，但是没有一个机制来协调同时发生的访问。</p>
												<p>  recovery testing－－恢复性测试</p>
												<p>  验证系统从失效中恢复能力的测试。</p>
												<p>  regression analysis and testing－－回归分析和测试</p>
												<p>  一个软件验证和确认任务以确定在修改后需要重复测试和分析的范围。</p>
												<p>  Regression Testing－－回归测试</p>
												<p>  在发生修改之后重新测试先前的测试以保证修改的正确性。</p>
												<p>  release－－发布</p>
												<p>  一个批准版本的正式通知和分发。</p>
												<p>  reliability－－可靠性</p>
												<p>  一个系统或组件在规定的条件下在指定的时间内执行其需要功能的能力。</p>
												<p>  reliability assessment－－可靠性评价</p>
												<p>  确定一个已有系统或组件的可靠性级别的过程。</p>
												<p>  requirements-based testing－－基于需求的测试</p>
												<p>  根据软件组件的需求导出测试用例的一种设计方法。</p>
												<p>  review－－评审</p>
												<p>  在产品开发过程中，把产品提交给项目成员、用户、管理者或其它相关人员评价或批准的过程。</p>
												<p>  risk－－风险</p>
												<p>  不期望效果的可能性和严重性的一个度量。</p>
												<p>  risk assessment－－风险评估</p>
												<p>  对风险和风险影响的一个完整的评价。</p>
												<p>  第130贴【2004－10－29】：常见测试术语十二</p>
												<p>  safety－－（生命）安全性</p>
												<p>  不会引起人员伤亡、产生疾病、毁坏或损失设备和财产、或者破坏环境。</p>
												<p>  safety critical－－严格的安全性</p>
												<p>  一个条件、事件、操作、过程或项，它的认识、控制或执行对生命安全性的系统来说是非常关键的。</p>
												<p>  Sanity Testing－－理智测试</p>
												<p>  软件主要功能成分的简单测试以保证它是否能进行基本的测试。参考冒烟测试</p>
												<p>  SDP－－软件开发计划（software development plan）</p>
												<p>  用于一个软件产品开发的项目计划。</p>
												<p>  security testing－－安全性测试</p>
												<p>  验证系统是否符合安全性目标的一种测试。</p>
												<p>  security.－－（信息）安全性</p>
												<p>  参考计算机系统安全性（computer system security）</p>
												<p>  serviceability testing－－可服务性测试</p>
												<p>  参考可维护性测试（maintainability testing）</p>
												<p>  simple subpath－－简单子路径</p>
												<p>  控制流的一个子路径，其中没有不必要的部分被执行。</p>
												<p>  simulation－－模拟</p>
												<p>  使用另一个系统来表示一个物理的或抽象的系统的选定行为特性。</p>
												<p>  simulation－－模拟</p>
												<p>  使用一个可执行模型来表示一个对象的行为。</p>
												<p>  simulator－－模拟器</p>
												<p>  软件验证期间的一个设备、软件程序、或系统，当它给定一个控制的输入时，表现的与一个给定的系统类似。</p>
												<p>  第131贴【2004－11－1】：常见测试术语十三</p>
												<p>  SLA－－服务级别协议（service level agreement）</p>
												<p>  服务提供商与客户之间的一个协议，用于规定服务提供商应当提供什么服务。</p>
												<p>  Smoke Testing－－冒烟测试</p>
												<p>  对软件主要功能进行快餐式测试。最早来自于硬件测试实践，以确定新的硬件在第一次使用的时候不会着火。</p>
												<p>  software development process－－软件开发过程</p>
												<p>  一个把用户需求转换为软件产品的开发过程。</p>
												<p>  software diversity－－软件多样性</p>
												<p>  一种软件开发技术，其中，由不同的程序员或开发组开发的相同规格的不同程序，目的是为了检测错误、增加可靠性。</p>
												<p>  software element－－软件元素</p>
												<p>  软件开发或维护期间产生或获得的一个可交付的或过程内的文档。</p>
												<p>  software engineering－－软件工程</p>
												<p>  一个应用于软件开发、操作和维护的系统性的、有纪律的、可量化的方法。</p>
												<p>  software engineering environment－－软件工程环境</p>
												<p>  执行一个软件工程工作的硬件、软件和固件。</p>
												<p>  software life cycle－－软件生命周期</p>
												<p>  开始于一个软件产品的构思，结束于该产品不再被使用的这段期间。</p>
												<p>  SOP－－标准操作过程（standard operating procedures）</p>
												<p>  书面的步骤，这对保证生产和处理的控制是必须的。</p>
												<p>  source code－－源代码</p>
												<p>  用一种适合于输入到汇编器、编译器或其它转换设备的计算机指令和数据定义。</p>
												<p>  source statement－－源语句</p>
												<p>  参考语句（statement）</p>
												<p>  第132贴【2004－11－2】：常见测试术语十四</p>
												<p>  specification－－规格</p>
												<p>  组件功能的一个描述，格式是：对指定的输入在指定的条件下的输出。</p>
												<p>  specified input－－指定的输入</p>
												<p>  一个输入，根据规格能预知其输出。</p>
												<p>  spiral model －－螺旋模型</p>
												<p>  软件开发过程的一个模型，其中的组成活动，典型的包括需求分析，概要设计，详细设计，编码，集成和测试等活动被迭代的执行直到软件被完成。</p>
												<p>  SQL－－结构化查询语句（structured query language）</p>
												<p>  在一个关系数据库中查询和处理数据的一种语言。</p>
												<p>  state－－状态</p>
												<p>  一个系统、组件或模拟可能存在其中的一个条件或模式。</p>
												<p>  state diagram－－状态图</p>
												<p>  一个图形，描绘一个系统或组件可能假设的状态，并且显示引起或导致一个状态切换到另一个状态的事件或环境。</p>
												<p>  state transition－－状态转换</p>
												<p>  一个系统或组件的两个允许状态之间的切换。</p>
												<p>  state transition testing －－状态转换测试</p>
												<p>  根据状态转换来设计测试用例的一种方法。</p>
												<p>  statement－－语句</p>
												<p>  程序语言的一个实体，是典型的最小可执行单元。</p>
												<p>  statement coverage－－语句覆盖</p>
												<p>  在一个组件中，通过执行一定的测试用例所能达到的语句覆盖百分比。</p>
												<p>  statement testing－－语句测试</p>
												<p>  根据语句覆盖来设计测试用例的一种方法。</p>
												<p>  Static Analysis－－静态分析</p>
												<p>  分析一个程序的执行，但是并不实际执行这个程序。</p>
												<p>  第133贴【2004－11－3】：常见测试术语十五</p>
												<p>  Static Analyzer－－静态分析器</p>
												<p>  进行静态分析的工具。</p>
												<p>  Static Testing－－静态测试</p>
												<p>  不通过执行来测试一个系统。</p>
												<p>  statistical testing－－统计测试</p>
												<p>  通过使用对输入统计分布进行分析来构造测试用例的一种测试设计方法。</p>
												<p>  stepwise refinement－－逐步优化</p>
												<p>  一个结构化软件设计技术，数据和处理步骤首先被广泛的定义，然后被逐步的进行了细化。</p>
												<p>  storage testing－－存储测试</p>
												<p>  验证系统是否满足指定存储目标的测试。</p>
												<p>  Stress Testing－－压力测试</p>
												<p>  在规定的规格条件或者超过规定的规格条件下，测试一个系统，以评价其行为。类似负载测试，通常是性能测试</p>
												<p>  的一部分。</p>
												<p>  structural coverage－－结构化覆盖</p>
												<p>  根据组件内部的结构度量覆盖率。</p>
												<p>  structural test case design－－结构化测试用例设计</p>
												<p>  根据组件内部结构的分析来设计测试用例的一种方法。</p>
												<p>  structural testing－－结构化测试</p>
												<p>  参考结构化测试用例设计（structural test case design）</p>
												<p>  structured basis testing－－结构化的基础测试</p>
												<p>  根据代码逻辑设计测试用例来获得100％分支覆盖的一种测试用例设计技术。</p>
												<p>  structured design－－结构化设计</p>
												<p>  软件设计的任何遵循一定纪律的方法，它按照特定的规则，例如：模块化，有顶向下设计，数据逐步优化，系统</p>
												<p>  结构和处理步骤。</p>
												<p>  structured programming－－结构化编程</p>
												<p>  在结构化程序开发中的任何包含结构化设计和结果的软件开发技术。</p>
												<p>  structured walkthrough－－结构化走读</p>
												<p>  参考走读（walkthrough）</p>
												<p>  第134贴【2004－11－4】：常见测试术语十六</p>
												<p>  stub－－桩</p>
												<p>  一个软件模块的框架或特殊目标实现，主要用于开发和测试一个组件，该组件调用或依赖这个模块。</p>
												<p>  symbolic evaluation－－符号评价</p>
												<p>  参考符号执行（symbolic execution）</p>
												<p>  symbolic execution－－符号执行</p>
												<p>  通过符号表达式来执行程序路径的一种静态分析设计技术。其中，程序的执行被用符号来模拟，例如，使用变量</p>
												<p>  名而不是实际值，程序的输出被表示成包含这些符号的逻辑或数学表达式。</p>
												<p>  symbolic trace－－符号轨迹</p>
												<p>  一个计算机程序通过符号执行是经过的语句分支结果的一个记录。</p>
												<p>  syntax testing－－语法分析</p>
												<p>  根据输入语法来验证一个系统或组件的测试用例设计技术。</p>
												<p>  system analysis－－系统分析</p>
												<p>  对一个计划的或现实的系统进行的一个系统性调查以确定系统的功能以及系统与其它系统之间的交互。</p>
												<p>  system design－－系统设计</p>
												<p>  一个定义硬件和软件构架、组件、模块、接口和数据的过程以满足指定的规格。</p>
												<p>  system integration－－系统集成</p>
												<p>  一个系统组件的渐增的连接和测试，直到一个完整的系统。</p>
												<p>  System Testing－－系统测试</p>
												<p>  从一个系统的整体而不是个体上来测试一个系统，并且该测试关注的是规格，而不是系统内部的逻辑。</p>
												<p>  第135贴【2004－11－7】：常见测试术语十七</p>
												<p>  technical requirements testing－－技术需求测试</p>
												<p>  参考非功能需求测试（non-functional requirements testing）</p>
												<p>  test automation－－测试自动化</p>
												<p>  使用工具来控制测试的执行、结果的比较、测试预置条件的设置、和其它测试控制和报告功能。</p>
												<p>  test case－－测试用例</p>
												<p>  用于特定目标而开发的一组输入、预置条件和预期结果。</p>
												<p>  test case design technique－－测试用例设计技术</p>
												<p>  选择和导出测试用例的技术。</p>
												<p>  test case suite－－测试用例套</p>
												<p>  对被测软件的一个或多个测试用例的集合。</p>
												<p>  test comparator－－测试比较器</p>
												<p>  一个测试工具用于比较软件实际测试产生的结果与测试用例预期的结果。</p>
												<p>  test completion criterion－－测试完成标准</p>
												<p>  一个标准用于确定被计划的测试何时完成。</p>
												<p>  test coverage－－测试覆盖</p>
												<p>  参考覆盖率（Coverage）</p>
												<p>  test driver－－测试驱动</p>
												<p>  一个程序或测试工具用于根据测试套执行软件。</p>
												<p>  test environment－－测试环境</p>
												<p>  测试运行其上的软件和硬件环境的描述，以及任何其它与被测软件交互的软件，包括驱动和桩。</p>
												<p>  第136贴【2004－11－8】：常见测试术语十八</p>
												<p>  test execution－－测试执行</p>
												<p>  一个测试用例被被测软件执行，并得到一个结果。</p>
												<p>  test execution technique－－测试执行技术</p>
												<p>  执行测试用例的技术，包括手工、自动化等。</p>
												<p>  test generator－－测试生成器</p>
												<p>  根据特定的测试用例产生测试用例的工具。</p>
												<p>  test harness－－测试用具</p>
												<p>  包含测试驱动和测试比较器的测试工具。</p>
												<p>  test log－－测试日志</p>
												<p>  一个关于测试执行所有相关细节的时间记录。</p>
												<p>  test measurement technique－－测试度量技术</p>
												<p>  度量测试覆盖率的技术。</p>
												<p>  Test Plan－－测试计划</p>
												<p>  一个文档，描述了要进行的测试活动的范围、方法、资源和进度。它确定测试项、被测特性、测试任务、谁执行</p>
												<p>  任务，并且任何风险都要冲突计划。</p>
												<p>  test procedure－－测试规程</p>
												<p>  一个文档，提供详细的测试用例执行指令。</p>
												<p>  test records－－测试记录</p>
												<p>  对每个测试，明确的记录被测组件的标识、版本，测试规格，和实际结果</p>
												<p>  test report－－测试报告</p>
												<p>  一个描述系统或组件执行的测试和结果的文档。</p>
												<p>  Test Script－－测试脚本</p>
												<p>  一般指的是一个特定测试的一系列指令，这些指令可以被自动化测试工具执行。</p>
												<p>  Test Specification－－测试规格</p>
												<p>  一个文档，用于指定一个软件特性、特性组合或所有特性的测试方法、输入、预期结果和执行条件。</p>
												<p>  第137贴【2004－11－9】：常见测试术语十九</p>
												<p>  test strategy－－测试策略</p>
												<p>  一个简单的高层文档，用于描述测试的大致方法，目标和方向。</p>
												<p>  test suite－－测试套</p>
												<p>  测试用例和/或测试脚本的一个集合，与一个应用的特定功能或特性相关。</p>
												<p>  test target－－测试目标</p>
												<p>  一组测试完成标准。</p>
												<p>  testability－－可测试性</p>
												<p>  一个系统或组件有利于测试标准建立和确定这些标准是否被满足的测试执行的程度。</p>
												<p>  Testing－－测试</p>
												<p>  IEEE给出的定义是：1）一个执行软件的过程，以验证其满足指定的需求并检测错误。2）一个软件项的分析过程</p>
												<p>  以检测已有条件之间的不同，并评价软件项的特性。</p>
												<p>  thread testing－－线程测试</p>
												<p>  自顶向下测试的一个变化版本，其中，递增的组件集成遵循需求子集的实现。</p>
												<p>  time sharing－－时间共享</p>
												<p>  一种操作方式，允许两个或多个用户在相同的计算机系统上同时执行计算机程序。其实现可能通过时间片轮转、</p>
												<p>  优先级中断等。</p>
												<p>  top-down design－－由顶向下设计</p>
												<p>  一种设计策略，首先设计最高层的抽象和处理，然后逐步向更低级别进行设计。</p>
												<p>  top-down testing－－自顶向下测试</p>
												<p>  集成测试的一种策略，首先测试最顶层的组件，其它组件使用桩，然后逐步加入较低层的组件进行测试，直到所</p>
												<p>  有组件被集成到系统中。</p>
												<p>  traceability－－可跟踪性</p>
												<p>  开发过程的两个或多个产品之间关系可以被建立起来的程度，尤其是产品彼此之间有一个前后处理关系。</p>
												<p>  traceability analysis－－跟踪性分析</p>
												<p>  （1）跟踪概念文档中的软件需求到系统需求；（2）跟踪软件设计描述到软件需求规格，以及软件需求规格到软</p>
												<p>  件设计描述；（3）跟踪源代码对应到设计规格，以及设计规格对应到源代码。分析确定它们之间正确性、一致性</p>
												<p>  、完整性、精确性的关系。</p>
												<p>  traceability matrix－－跟踪矩阵</p>
												<p>  一个用于记录两个或多个产品之间关系的矩阵。例如，需求跟踪矩阵是跟踪从需求到设计再到编码的实现。</p>
												<p>  第138贴【2004－11－10】：常见测试术语二十</p>
												<p>  transaction－－事务/处理</p>
												<p>  （1）一个命令、消息或输入记录，它明确或隐含的调用了一个处理活动，例如更新一个文件。（2）用户和系统</p>
												<p>  之间的一次交互。（3）在一个数据库管理系统中，完成一个特定目的的处理单元，如恢复、更新、修改或删除一</p>
												<p>  个或多个数据元素。</p>
												<p>  transform analysis－－事务分析</p>
												<p>  系统的结构是根据分析系统需要处理的事务获得的一种分析技术。</p>
												<p>  trojan horse－－特洛伊木马</p>
												<p>  一种攻击计算机系统的方法，典型的方法是提供一个包含具有攻击性隐含代码的有用程序给用户，在用户执行该</p>
												<p>  程序的时候，其隐含的代码对系统进行非法访问，并可能产生破坏。</p>
												<p>  truth table－－真值表</p>
												<p>  用于逻辑操作的一个操作表格。</p>
												<p>  Unit Testing－－单元测试</p>
												<p>  测试单个的软件组件，属于白盒测试范畴，其测试基础是软件内部的逻辑。</p>
												<p>  Usability Testing－－可用性测试</p>
												<p>  测试用户使用和学习产品的容易程度。</p>
												<p>  validation－－确认</p>
												<p>  根据用户需要确认软件开发的产品的正确性。</p>
												<p>  verification－－验证</p>
												<p>  评价一个组件或系统以确认给定开发阶段的产品是否满足该阶段开始时设定的标准。</p>
												<p>  version－－版本</p>
												<p>  一个软件项或软件元素的一个初始发布或一个完整的再发布。</p>
												<p>  volume testing－－容量测试</p>
												<p>  使用大容量数据测试系统的一种策略。</p>
												<p>  Walkthrough－－走读</p>
												<p>  一个针对需求、设计或代码的非正式的同行评审，一般由作者发起，由作者的同行参与进行的评审过程。</p>
												<p>  waterfall model－－瀑布模型</p>
												<p>  软件开发过程模型的一种，包括概念阶段、需求阶段、设计阶段、实现阶段、测试阶段、安装和检查阶段、操作</p>
												<p>  和维护阶段，这些阶段按次序进行，可能有部分重叠，但很少会迭代。</p>
												<p>  White Box Testing－－白盒测试</p>
												<p>  根据软件内部的工作原理分析来进行测试。</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 10:32 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试应遵循的八条原则</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20729.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 03:08:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20729.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20729.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20729.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20729.html</trackback:ping><description><![CDATA[软件测试应遵循的八条原则
<p>  软件测试，从不同的角度出发会派生出两种不同的测试原则。从用户的角度出发，就是希望通过软件测试能充分暴露软件中存在的问题和缺陷；从开发者的角度出发，就是希望测试能表明软件产品不存在错误，已经正确地实现了用户的需求。</p><p>  中国软件评测中心的测试原则，就是从用户和开发者的角度出发进行软件产品测试的。</p><p>  为了达到上述的原则，需要注意以下几点：</p><p>  1.应当把“尽早和不断地测试”作为开发者的座右铭。</p><p>  2.程序员应该避免检查自己的程序，测试工作应该由独立的专业的软件测试机构来完成。</p><p>  3.设计测试用例时，应该考虑到合法的输入和不合法的输入，以及各种边界条件，特殊情况下要制造极端状态和意外状态，比如网络异常中断、电源断电等情况。</p><p>  4.一定要注意测试中的错误集中发生现象，这和程序员的编程水平和习惯有很大的关系。</p><p>  5.对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误，一定要有一个B来确认，严重的错误可以召开评审会进行讨论和分析。</p><p>  6.制定严格的测试计划，并把测试时间安排得尽量宽松，不要希望在极短的时间内完成一个高水平的测试。</p><p>  7.回归测试的关联性一定要引起充分的注意，修改一个错误而引起更多错误出现的现象并不少见。</p><p>  8.妥善保存一切测试过程文档，意义是不言而喻的，测试的重现性往往要靠测试文档</p><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20729.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 11:08 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试的十大原则</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20724.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 02:43:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20724.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20724.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20724.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20724.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="TEXT-INDENT: 27pt; LINE-HEIGHT: 110%">
				<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体">
						<font size="2">
								<font style="COLOR: rgb(153,153,153); BACKGROUND-COLOR: rgb(255,255,255)">原</font>则是最重要的，方法应该在这个原则指导下进行。软件测试的基本原则是站在用户的角度，对产品进行全面测试，</font>
				</span>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 27pt; LINE-HEIGHT: 110%">
				<font size="2">
						<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体">尽早、尽可能多地发现</span>
						<span lang="EN-US" style="LINE-HEIGHT: 110%; FONT-FAMILY: Arial">Bug, </span>
						<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体">并负责跟踪和分析产品中的问题，对不足之处提出质疑和改进意见。</span>
				</font>
		</p>
		<p class="MsoNormal" style="TEXT-INDENT: 27pt; LINE-HEIGHT: 110%">
				<font size="2">
						<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体">零缺陷(<span style="FONT-FAMILY: Arial">Zero-Bug</span>)</span>
						<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体"> 是一种理念，足够好（</span>
						<span lang="EN-US" style="LINE-HEIGHT: 110%; FONT-FAMILY: Arial">Good-Enough</span>
						<span style="LINE-HEIGHT: 110%; FONT-FAMILY: 宋体">）是测试的基本原则。</span>
						<span lang="EN-US" style="LINE-HEIGHT: 110%; FONT-FAMILY: Arial">
								<?XML:NAMESPACE PREFIX = O /?>
								<o:p>
								</o:p>
						</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 1.2pt 60pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 120%; TEXT-ALIGN: left" align="left">
				<font size="2">
						<span style="FONT-FAMILY: 宋体">在软件测试过程中，应注意和遵循的具体原则，可以概括为十大项：</span>
				</font>
				<br />
		</p>
		<ol>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">所有测试的标准都是建立在用户需求之上</span>。正如我们所知，软件测试的目标就是验证产品的一致性和确认产品是否满足客户的需求，所以测试人员要始终站在用户的角度去看问题、去判断软件缺陷的影响，系统中最严重的错误是那些导致程序无法满足用户需求的缺陷。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">软件测试必须基于“质量第一”的思想去开展各项工作</span>，当时间和质量冲突时，时间要服从质量。质量的理念和文化（如零缺陷的“第一次就把事情做对”）同样是软件测试工作的基础。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">事先定义好产品的质量标准</span>。有了质量标准，才能依据测试的结果对产品的质量进行正确的分析和评估，例如，进行性能测试前，应定义好产品性能的相关的各种指标。同样，测试用例应确定预期输出结果，如果无法确定测试结果，则无法进行校验。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">软件项目一启动，软件测试也就是开始</span>，而不是等程序写完，才开始进行测试。在代码完成之前，测试人员要参与需求分析、系统或程序设计的审查工作，而且要准备测试计划、测试用例、测试脚本和测试环境，测试计划可以在需求模型一完成就开始，详细的测试用例定义可以在设计模型被确定后开始。应当把“尽早和不断地测试”作为测试人员的座右铭。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">穷举测试是不可能的</span>。甚至一个大小适度的程序，其路径排列的数量也非常大，因此，在测试中不可能运行路径的每一种组合，然而，充分覆盖程序逻辑，并确保程序设计中使用的所有条件是有可能的。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">第三方进行测试会更客观，更有效。</span>程序员应避免测试自己的程序，为达到最佳的效果，应由第三方来进行测试。测试是带有 ”挑剔性” 的行为，心理状态是测试自己程序的障碍。同时对于需求规格说明的理解产生的错误也很难在程序员本人测试时被发现。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">软件测试计划是做好软件测试工作的前提。</span>所以在进行实际测试之前，应制定良好的、切实可行的测试计划并严格执行，特别要确定测试策略和测试目标。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">测试用例是设计出来的，不是写出来的，</span>所以要根据测试的目的，采用相应的方法去设计测试用例，从而提高测试的效率，更多地发现错误，提高程序的可靠性。除了检查程序是否做了应该做的事，还要看程序是否做了不该做的事；不仅应选用合理的输入数据，对于非法的输入也要设计测试用例进行测试。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">不可将测试用例置之度外，排除随意性。</span>特别是对于做了修改之后的程序进行重新测试时，如不严格执行测试用例，将有可能忽略由修改错误而引起的大量的新错误。所以，回归测试的关联性也应引起充分的注意，有相当一部分最终发现的错误是在早期测试结果中遗漏的。 </font>
				</li>
				<li>
						<font size="2">
								<span style="FONT-WEIGHT: bold">对发现错误较多的程序段，应进行更深入的测试。</span>一般来说，一段程序中已发现的错误数越多，其中存在的错误概率也就越大。错误集中发生的现象，可能和程序员的编程水平和习惯有很大的关系。 </font>
				</li>
		</ol>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 10:43 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20724.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《测试之道》</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20723.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 02:19:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20723.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20723.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20723.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20723.html</trackback:ping><description><![CDATA[
		<div class="style7" align="center">
				<span style="FONT-SIZE: 12pt">
						<b>《测试之道》第一篇——道可道<br /><table cellspacing="0" cellpadding="0" width="558" border="0"><tbody><tr><td valign="top" align="right" width="2%" height="10"><div align="left"></div></td><td valign="top" align="right" width="98%" bgcolor="#ffffff"><div class="daxiao14" align="left"><font size="2">1、道可道</font><div><font size="2">    老子《道德经》：道可道，非常道；名可名，非常名。</font></div><div><font size="2">    其实你一切都会，只是看你有没有悟到你的确会。<br />    说到测试，无论是专业的测试专家还是对策是一无所知的门外汉，首先要提到的肯定是“测试有什么</font></div><div><font size="2">用？”花那么多的人力物力和金钱做的测试到底是为了什么？”很多所谓的专业书籍对此讲了很多让人眼</font></div><div><font size="2">花缭乱的理论。<br />    然而其实很简单，测试就是为了让产品在交付给最终用户以后，在产品生存周期（或提供有效服务的</font></div><div><font size="2">期限以内），不让最终用户发现其所不能接受的现象。只要能不让用户发现其不能接受的一切现象，至于</font></div><div><font size="2">产品是否存在bug，用户不会关心；因此IT企业也就没有必要关心。</font></div><div><font size="2">    最后再补充一点：世界上最浩瀚的是大海，比大海更浩瀚的是天空，比天空更浩瀚的是人的心灵。</font></div><div><font size="2">    人的心灵里其实什么都知道，什么都会做。</font></div><div><font size="2">    随心所欲，不滞于物；行云流水，任意所至。独孤九剑的总则便是如此。</font></div><div align="right"><font size="2"></font> </div><div align="right"><a href="http://www.51testing.com/html/68/1862.html" target="_blank"><font color="#000000" size="2"></font></a> </div><div align="left"><font size="2">原始连接：http://flyingwind-prometheus.spaces.live.com/blog/cns!98DB77008F2FBC3A!145.entry?_c=BlogPart<br /><br /><table cellspacing="0" cellpadding="0" width="558" border="0"><tbody><tr><td valign="center" align="right" colspan="2" height="32"><div class="style7" align="center"><span style="FONT-SIZE: 12pt"><b>《测试之道》第二篇——大道如一，过犹不及</b></span></div></td></tr><tr><td valign="center" align="right" bgcolor="#000000" colspan="2" height="1"></td></tr><tr><td valign="center" align="right" colspan="2" height="20"></td></tr><tr><td valign="top" align="right" colspan="2" height="10"></td></tr><tr><td valign="top" align="right" width="2%" height="10"><div align="left"></div></td><td valign="top" align="right" width="98%" bgcolor="#ffffff"><div class="daxiao14" align="left"><font size="2">2、大道如一，过犹不及<br />    为了让bug不被用户发现，测试是不是用该做的越深入越好？不止门外汉会这样认为，即便测试业界</font><div><font size="2">的很多一些人也会这样认为。<br />    《论语》有言：子贡问，“师与商也孰贤？”子曰，“师也过，商也不及。”曰，“然则师愈与？”</font></div><div><font size="2">子曰，“过犹不及。”<br />    译为现代汉语就是：<br />　　子贡问曰，“子张和子夏哪个能干？”孔子说，“子张过头了些，子夏不够了些。”子贡说，“那么</font></div><div><font size="2">是子张强一些了？”孔子说，“过分和不及，同样都不好。”<br />    所谓大道如一，测试亦然。投入的不够，则会不能在交付给用户之前发现bug；投入的过多，则会影</font></div><div><font size="2">响收益。过犹不及，二者都不不够好的。<br />    然而把握这个度还是极难的，没有一个可量化的标准。通常可以做到的就是两害相权取其轻了，对于</font></div><div><font size="2">容忍力较强的客户，使用“不及”就可以了，用户发现了bug，召回产品打个补丁再重新发布就行了。</font></div><div><font size="2">“XX产品存在重大隐患，被XX厂商召回”这样的新闻怕是在国内并不少见吧，其他行业如此，IT业能例外</font></div><div><font size="2">乎？对于重要的客户，就不得不采用“过”的方式了。尤其一些需要“算政治账，不要算经济账”的项目</font></div><div><font size="2">上更是如此了。</font></div><div><font size="2"></font> </div></div></td></tr></tbody></table><table cellspacing="0" cellpadding="0" width="558" border="0"><tbody><tr><td valign="center" align="right" colspan="2" height="32"><div class="style7" align="center"><span style="FONT-SIZE: 12pt"><b>《测试之道》第三篇——吴钩霜雪明</b></span></div></td></tr><tr><td valign="center" align="right" bgcolor="#000000" colspan="2" height="1"></td></tr><tr><td valign="center" align="right" colspan="2" height="20"></td></tr><tr><td valign="top" align="right" colspan="2" height="10"></td></tr><tr><td valign="top" align="right" width="2%" height="10"><div align="left"></div></td><td valign="top" align="right" width="98%" bgcolor="#ffffff"><div class="daxiao14" align="left"><font size="2">3、吴钩霜雪明<br />    李白《侠客行》：赵客缦胡缨，吴钩霜雪明。银鞍照白马，飒沓如流星。十步杀一人，千里不留行。</font><div><font size="2">事了拂衣去，深藏身与名。闲过信陵饮，脱剑膝前横。将炙啖朱亥，持觞劝侯嬴。三杯吐然诺，五岳倒为</font></div><div><font size="2">轻。眼花耳热后，意气素霓生。救赵挥金槌，邯郸先震惊。千秋二壮士，煊赫大梁城。纵死侠骨香，不惭</font></div><div><font size="2">世上英。谁能书閤下，白首太玄经。<br />    各个待测试的目标系统就是世间各个芸芸众生，测试工程师(TE)就是IT业的侠客。TE离不开测试用例</font></div><div><font size="2">(TC)就如同侠客离不开剑。无剑不成侠；无合格的测试用例没法做好测试。<br />    测试十大原则第二条：测试用例必须有明确的预置条件、操作步骤以及与之对应的预期结果。<br />    IT业界的人员流动，那是相当快的。A先生设计了测试方案，到写TC的时候可能A先生已经另谋高就，</font></div><div><font size="2">换成B先生在做了，再等到测试执行的时候可能B先生也远走高飞，必须让没有任何测试经验的C同学来做</font></div><div><font size="2">了。<br />    这时候如果TC写的不是妇孺皆能看懂，C同学十之八九无法顺利执行。后面最有可能的结果是什么？<br />    不言而喻。<br />    不良的TC导致糟糕的测试执行（C同学职业道德如果不是很好，甚至可能故意漏测一些TC，反正这些</font></div><div><font size="2">TC具体的执行没有人懂，C同学不必承担责任），糟糕的测试执行导致三个结果：其一，不能按计划的方</font></div><div><font size="2">案验证重要功能导致bug没有在用户面前“躲”起来，进一步企业不论经济还是声誉都受到损害；其二，C</font></div><div><font size="2">同学为了保证发现足够的bug，于是乎一定会专心致志于寻找一些诸如单词拼写错误，界面错误之类的细</font></div><div><font size="2">枝末节问题，给coding的工程师们带来一种印象：他们做测试的什么也不会……；其三，在版本不断更新</font></div><div><font size="2">的过程中，TC肯定需要不断维护，不断进行相应更新，不良的TC导致C同学没有真正去运行这些TC，也就</font></div><div><font size="2">无从发现这些TC的问题了，从而不良的TC一直被保留到产品发布，然后这些不良的TC又被下一个产品所继</font></div><div><font size="2">承……继续这些恶性的循环。<br />    TC如剑。十年磨一剑。花时间细致地写好TC并不是浪费时间和精力。<br /></font></div><div><font size="2"><br /><table cellspacing="0" cellpadding="0" width="558" border="0"><tbody><tr><td valign="center" align="right" colspan="2" height="32"><div class="style7" align="center"><span style="FONT-SIZE: 12pt"><b>《测试之道》第四篇——胡马大宛名</b></span></div></td></tr><tr><td valign="center" align="right" bgcolor="#000000" colspan="2" height="1"></td></tr><tr><td valign="center" align="right" colspan="2" height="20"><div align="center"> </div></td></tr><tr><td valign="top" align="right" colspan="2" height="10"></td></tr><tr><td valign="top" align="right" width="2%" height="10"><div align="left"></div></td><td valign="top" align="right" width="98%" bgcolor="#ffffff"><div class="daxiao14" align="left"><font size="2">4、胡马大宛名<br />    上回书说到TE如侠。侠客离不开剑，也离不开马。就好比郭靖有了汗血宝马，想去哪就去哪，从来不</font><div><font size="2">必担心路程问题；而胡斐追捕南霸天雷老虎，没有宝马良驹，从广东一直追到北京才算完。侠客离不开马</font></div><div><font size="2">，尤其需要骐骥骅骝，千里良驹。<br />    杜甫《房兵曹胡马》：胡马大宛名，锋棱瘦骨成。竹批双耳峻，风入四蹄轻。所向无空阔，真堪托死</font></div><div><font size="2">生。骁腾有如此，万里可横行。<br />    然则对于TE而言，能够“风入四蹄轻”的千里马何在呢？<br />    人的精力总是有限的，即便再伟大的TE，对于无穷无尽的测试任务，也总会有感到疲惫不堪，难以为</font></div><div><font size="2">继的时候。这不是因为TE本身功力不够，也不是因为TE掌中剑（TC）不好，而是缺少了一匹良骥。人力有</font></div><div><font size="2">时而尽，只有非人力的才可持久；因此这良骥便是且只能是自动化测试（Automation testing）。<br />    虽然《荀子·劝学》有云：骐骥一跃，不能十步；驽马十驾，功在不舍。然而完全由机器所执行的自</font></div><div><font size="2">动化测试，不论骐骥还是驽马，全都能够做到功在不舍。因此这时候TE如果只是埋头编写自动化代码便有</font></div><div><font size="2">失明智了。<br />    TE可以针对每一条TC编写一段测试代码，然后通过执行这段代码完成对测试目标内容的覆盖；此为驽</font></div><div><font size="2">马的方法，虽然劳而有功，然而工程浩大，且成本不菲，后续项目的继承性也难以保证。<br />    TE还可以先创建框架，从测试需求分析开始，与coding的CMM的流程同步，采用迭代的方法渐增完成</font></div><div><font size="2">测试代码；“随风潜入夜，润物细无声。”当测试执行开始的时候，测试代码的架构已经完成，只需对细</font></div><div><font size="2">节进行后续维护即可。<br />    然而还有更可取的方式：TE不要针对每个测试例编码，而是每个STEP编写更小的一段代码。不同的测</font></div><div><font size="2">试例有可能使用相同的STEP。这种等价于STEP的每一段小的代码（记为cell）可以用STEP的简述进行封装</font></div><div><font size="2">。例如BS结构的web页面，第一步通常是登录，登录之后跳转到首页。可以采用如下封装：<br />    login {<br />        /*input username &amp; password*/<br />            input_username "xxxxxx";<br />            input_password "xxxxxx";<br />        /*check*/<br />            if (get_new page "//main.htm")<br />                output "step xxx is pass"<br />            else <br />                output "step xxx is fail"<br />    }<br />若干个此种简易封装的函数(例如完成了login,download_source,edit_source,upload_source等)完成之</font></div><div><font size="2">后，TE对于某个测试例（step1：登录xx网站；step2：下载xx文件；step3：编辑刚才下载的xx文件；</font></div><div><font size="2">step4：把编辑过的xx文件再上传回xx网站。）可以如下编写：<br />    login;<br />    download_source;<br />    edit_source;<br />    upload_source;<br />对于使用函数编写测试代码的TE而言，完全不是在编码，只是写一篇简单至极的短文。如果测试例的管理</font></div><div><font size="2">工具足够强大，甚至可以自动组装函数。至于今后的类似项目，同样可以直接使用这些函数；如果测试例</font></div><div><font size="2">的管理工具足够强大，甚至可以第一次编写函数之后，一切的测试代码都自动生成。<br />    只不过到那时，说不好TE是完全被解放了，还是完全被淘汰了。就好似汽车的出现代替了千里马，而</font></div><div><font size="2">火器的出现淘汰了剑，剑与马都失去了价值的那一天，侠客也就消失了。</font></div><div><font size="2"></font> </div></div></td></tr></tbody></table></font></div></div></td></tr></tbody></table><br /></font></div></div></td></tr></tbody></table></b>
				</span>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 10:19 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试员的职责</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 02:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20721.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20721.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20721.html</trackback:ping><description><![CDATA[
		<font size="2">企业各岗位都制定了明确的职责，测试员的职责任何IT企业都有。这里只是从观念的角度谈一谈测试员的职责，供制定或修订具体的职责时参考。<br /><br />　　很高兴地看到测试员在企业中的地位日见增长，这一方面得力于软件工程规范化的落实，另一方面也是测试员的工作成绩提高了这一岗位的重要性。但还应该看到，对于大多数企业而言，测试员仍处在从企业的边缘人向主体群落融入的过程中。在这一漫长的过程中，有许多困惑和许多误解。建立一个企业的测试文化，是澄清这些困惑和误解的重要途径。</font>
		<p class="main">
				<font size="2">　　一个基本的也是最有分歧的问题就是：测试文化应是服务型还是控制型？我认为较好的测试文化应是服务型的。有的企业将测试文化定位为控制型，即测试员对最终产品的质量负责，对质量过程负责，甚至批准或拒绝产品的发布。事实上，测试员不应有也不应期望拥有这些控制权利，应将不合理地赋予的这些权利分离出去：1）质量的过程控制应由QA负责，因为，最终产品的质量是设计与开发出来的，而不是测试出来的；2）批准或拒绝产品的发布更有应是企业高层的职责，不应是测试部门更不是测试员的职责。测试部门或测试员应明确自已的角色定位，努力培养服务型测试文化，在服务意识的指导下，努力做了自已的本职工作。</font>
		</p>
		<p class="main">
				<font size="2">　　既然测试文化定位为服务型，那么，对测试员的职责就可以从如下方面来描述：</font>
		</p>
		<p class="main">
				<font size="2">　　为高层提供服务：即测试部门将产品的测试报告提供给高层，由高层作出有关决策。测试报告应包含高层希望了解的产品情况：错误发现率、错误改正率、问题收敛趋势，等等。</font>
		</p>
		<p class="main">
				<font size="2">　　为项目经理提供服务：向项目经理提供的测试报告应满足项目经理关注的需求，这些需求包括：产品的功能有哪些未满足、性能方面有哪些问题、哪些问题已与程序员沟通，但未达成一致意见，需要提交高层仲裁，等等。</font>
		</p>
		<p class="main">
				<font size="2">　　为QA提供服务：测试人员参与质量管理活动应该是服务性质的，即他不是去主导质量管理活动，而是为质量管理活动提供服务支持。测试人员通过测试报告，利用事实和数据来反映产品目前的质量情况，为QA的工作提供依据。</font>
		</p>
		<p class="main">
				<font size="2">　　为程序员提供服务：测试员要同程序员交朋友，向程序员及时反馈具体的程序问题，并与程序员共同探讨。一方面，测试员通常比程序员更了解业务领域，因此，他能从业务员的视角来检测产品的功能；另一方面，测试员通过测试用例能发现程序员不易想到的问题；再一方面，测试员从用户（操作员）的角度所进行的随机测试，也是检查产品的可用性。这些方面的测试情况，应及时反馈给程序员，以便进行及时修改。同时，测试员也要从程序员角度考虑问题，并获取相关程序的文档资料，使得测试员编制的测试用例更切合测试的重点、难点以及关注点。必要时，测试员也应了解程序员所使用的开发语言，这对于进行程序的白盒测试尤为重要。</font>
		</p>
		<p class="main">
				<font size="2">　　为市场推广人员提供服务：产品最终是要投放市场的，在产品的投产前，市场推广人员必须了解产品的优缺点和与同类产品对比的特色，从而有利于组织产品的广告宣传，以及应对媒体的挑剔与非难。总之，在市场推介活动中，市场推广人员应充分了解产品的相关信息，这些信息的主要来源就是测试报告。</font>
		</p>
		<p class="main">
				<font size="2">　　综上所述，测试人员的职责就是通过测试报告向项目的主要涉众传达产品的信息，即他是作为一个重要的信息源，为质量体系的运作提供到位的服务。</font>
		</p>
		<p class="main">
				<font size="2">　　从形式来看，测试报告是测试人员的工作成果，因此，测试人员的职责可以围绕着“测试报告”来描述——这里的“测试报告”是广义的，包括测试员的所有的报告（含非正式的口头报告）。例如：</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的前期工作：包括测试计划、测试案例、测试过程、信息收集。<br />描述“测试报告”的信息管理：通常使用测试管理工具，它对测试中的问题进行收集、流转和跟进或督办，并提供分析与统计功能。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的撰写：要注意不同的涉众需要不同的信息，即需要不同的测试报告。如，高层可能只需要一些统计信息或问题的收敛情况，而程序员可能需要一些非正式的、直接的、及时的反馈意见。因此，对不同类型的“测试报告”可能有不同的模板或样例，测试报告的编写能力应是测试员的基本功之一。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的报告流程，测试报告（正式的或非正式的）的报告流程应清楚明白，特别是问题报告应形成闭环。</font>
		</p>
		<p class="main">
				<font size="2">　　描述“测试报告”的管理：测试报告应作为企业的重要信息加以保存、管理，并作为历史数据供以后参考和比较。<br /><br />　　测试员的职责的描述形式可以是多种多样，如何描述并不重要，重要的是应通过职责的描述，体现企业的测试文化，努力营造一个好的测试文化是我们所关心的。</font>
		</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20721.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 10:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20721.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试过程管理实践</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20632.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Sat, 16 Dec 2006 11:38:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20632.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20632.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20632.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20632.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="left">
				<b>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">摘要</span>
				</b>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">
						<br />
						<br />    随着测试技术的蓬勃发展，测试过程的管理显得犹为重要，过程管理已成为测试成功的重要保证。经过多年努力，测试专家提出了许多测试过程模型，包括V模型、W模型、H模型等等。这些模型定义了测试活动的流程和方法，为测试管理工作提供了指导。但这些模型各有长短，并没有哪种模型能够完全适合于所有的测试项目，在实际测试中应该吸取各模型的长处，归纳出合适的测试理念。“尽早测试”、“全面测试”、“全过程测试”和“独立、迭代的测试”是从各模型中提炼出来的四个理念，这些思想在实际测试项目中得到了应用并收到了良好的效果。在运用这些理念指导测试的同时，测试组应不断关注于基于度量和分析的过程的改进活动，不断提高测试管理水平，更好的提高测试效率、降低测试成本。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="left">
				<b>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">关键词</span>
				</b>
				<b>
						<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">
								<br />
						</span>
				</b>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">
						<br />测试过程模型 测试管理理念 可持续改进<br />  <br /></span>
				<b>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">引言</span>
				</b>
				<b>
						<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">
								<br />
								<br />
						</span>
				</b>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">    1963年，在美国发生了这样一件事：编程人员把一个FORTRAN程序的循环语句DO 5 I=1，3误写为DO 5 I=1.3。一点之差导致飞往火星的火箭爆炸，造成1000多万美元的损失。这种情况的发生，迫使人们考虑在软件投入使用之前必须进行彻底的测试。今天，在软件比较发达的国家，软件测试已经成为一个独立的产业，软件公司纷纷建立独立的测试队伍研究测试技术并开展测试工作。中国的软件测试起步较晚，但随着我国软件产业的蓬勃发展以及人们对软件质量的重视，软件测试正在成为一个新兴的产业。近两年来，国内新成立专业性测试机构10余家，一批批专业的软件测试人员正涌现出来。每年国内都有大量的测试技术交流会议举办，有大量的测试研究论文在专业刊物上发表。在测试技术发展的同时，测试过程的管理显得犹为重要。一个成功的测试项目，离不开对测试过程科学的组织和监控，过程管理已成为测试成功的重要保证。<br /><br />1 测试过程概述<br /><br />1．1 软件测试过程概述<br /><br />    软件测试过程是一种抽象的模型，用于定义软件测试的流程和方法。众所周知，开发过程的质量决定了软件的质量，同样的，测试过程的质量将直接影响测试结果的准确性和有效性。软件测试过程和软件开发过程一样，都遵循软件工程原理，遵循管理学原理。<br />    随着测试过程管理的发展，软件测试专家通过实践总结出了很多很好的测试过程模型。这些模型将测试活动进行了抽象，并与开发活动有机的进行了结合，是测试过程管理的重要参考依据。<br /><br />1．2 软件测试过程模型介绍<br /><br />Ｖ模型<br /><br />    V模型最早是由Paul Rook在２０世纪８０年代后期提出的，旨在改进软件开发的效率和效果。Ｖ模型反映出了测试活动与分析设计活动的关系。在图1-1中，从左到右描述了基本的开发过程和测试行为，非常明确的标注了测试过程中存在的不同类型的测试，并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系。<br /><br /><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">                              <a href="http://www.51testing.com/ddimg/uploadimg/20060317/133637482.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> </v:shapetype></span></a></span></span> <v:shape id="_x0000_i1025" style="WIDTH: 286.5pt; HEIGHT: 169.5pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133637482.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/04/clip_image001.jpg"><span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><a href="http://www.51testing.com/ddimg/uploadimg/20060317/133637482.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 286.5pt; HEIGHT: 169.5pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133637482.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/04/clip_image001.jpg"></v:imagedata></v:shape></span></a></span></v:imagedata></v:shape><br /><br /><br />图1-1　软件测试V模型<br /><br />    V模型指出，单元和集成测试应检测程序的执行是否满足软件设计的要求；系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标；验收测试确定软件的实现是否满足用户需要或合同的要求。<br />但V模型存在一定的局限性，它仅仅把测试作为在编码之后的一个阶段，是针对程序进行的寻找错误的活动，而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。<br /><br />Ｗ模型<br /><br />    W模型由Evolutif公司公司提出，相对于V模型，W模型增加了软件各开发阶段中应同步进行的验证和确认活动。如图1-2所示，W模型由两个V字型模型组成，分别代表测试与开发过程，图中明确表示出了测试与开发的并行关系。<br />    W模型强调：测试伴随着整个软件开发周期，而且测试的对象不仅仅是程序，需求、设计等同样要测试，也就是说，测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如，需求分析完成后，测试人员就应该参与到对需求的验证和确认活动中，以尽早地找出缺陷所在。同时，对需求的测试也有利于及时了解项目难度和测试风险，及早制定应对措施，这将显著减少总体测试时间，加快项目进度。<br />    但W模型也存在局限性。在W模型中，需求、设计、编码等活动被视为串行的，同时，测试和开发活动也保持着一种线性的前后关系，上一阶段完全结束，才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况，W模型并不能解除测试管理面临着困惑。<br /><br /><a href="http://www.51testing.com/ddimg/uploadimg/20060317/133717183.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shape id="_x0000_i1027" style="WIDTH: 425.25pt; HEIGHT: 246pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133717183.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/03/clip_image002.jpg"><font size="3"></font></v:imagedata></v:shape></span></a>  <br /><br />图1-2　软件测试W模型<br /><br />Ｈ模型<br /><br />    V模型和W模型均存在一些不妥之处。如前所述，它们都把软件的开发视为需求、设计、编码等一系列串行的活动，而事实上，这些活动在大部分时间内是可以交叉进行的，所以，相应的测试之间也不存在严格的次序关系。同时，各层次的测试（单元测试、集成测试、系统测试等）也存在反复触发、迭代的关系。<br />为了解决以上问题，有专家提出了H模型。它将测试活动完全独立出来，形成了一个完全独立的流程，将测试准备活动和测试执行活动清晰地体现出来，如图1-3所示。<br /><br /><v:shape id="_x0000_i1025" style="WIDTH: 0.75pt; HEIGHT: 0.75pt" alt="" type="#_x0000_t75"></v:shape><a href="http://www.51testing.com/ddimg/uploadimg/20060317/133756316.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shape id="_x0000_i1026" style="WIDTH: 354pt; HEIGHT: 156pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133756316.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/03/clip_image004.jpg"><font size="3"></font></v:imagedata></v:shape></span></a>  <br />图1-3　软件测试H模型<br /><br />    这个示意图仅仅演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其他流程可以是任意的开发流程。例如，设计流程或编码流程。也就是说，只要测试条件成熟了，测试准备活动完成了，测试执行活动就可以（或者说需要）进行了。<br /> <br />    H模型揭示了一个原理：软件测试是一个独立的流程，贯穿产品整个生命周期，与其他流程并发地进行。H模型指出软件测试要尽早准备，尽早执行。不同的测试活动可以是按照某个次序先后进行的，但也可能是反复的，只要某个测试达到准备就绪点，测试执行活动就可以开展。<br /><br />其他模型<br /><br />    除上述几种常见模型外，业界还流传着其他几种模型，例如X模型、前置测试模型等。X模型提出针对单独的程序片段进行相互分离的编码和测试，此后通过频繁的交接，通过集成最终合成为可执行的程序。前置测试模型体现了开发与测试的结合，要求对每一个交付内容进行测试。这些模型都针对其他模型的缺点提出了一些修正意见，但本身也可能存在一些不周到的地方。所以在测试过程管理中，正确选取过程模型是一个关键问题。<br /><br />1．3 软件测试过程模型选取策略<br /><br />    前面介绍的测试过程模型中，V模型强调了在整个项目开发中需要经历的不同的测试级别，但忽视了测试的对象不应该仅仅是程序。而W模型在这一点上进行了补充，明确指出应该对需求、设计进行测试。但是V模型和W模型都没有将一个完整的测试过程抽象出来，成为一个独立的流程，这并不适合当前软件开发中广泛应用的迭代模型。H模型则明确指出测试的独立性，也就是说只要测试条件成熟了，就可以开展测试。<br /><br />    在实际测试工作中我们应该尽可能地去应用各模型中对项目有实用价值的方面，不能强行的为使用模型而使用模型。在测试实践中，我们采用的方法是：以W模型作为框架，及早的、全面的开展测试。同时灵活运用H模型独立测试的思想，在达到恰当的就绪点时就应该开展独立的测试工作，同时将测试工作进行迭代，最终保证完成测试目标。<br /><br />2 测试过程管理理念<br /><br />    生命周期模型为我们提供了软件测试的流程和方法，为测试过程管理提供了依据。但实际的测试工作是复杂而烦琐的，可能不会有哪种模型完全适用于某项测试工作。所以，我们应该从不同的模型中抽象出符合实际现状的测试过程管理理念，依据这些理念来策划测试过程，以不变应万变。当然测试管理牵涉的范围非常的广泛，包括过程定义、人力资源管理、风险管理等等，本节仅介绍几条从过程模型中提炼出来的，对实际测试有指导意义的管理理念。<br /><br />2．1 尽早测试<br /><br />    “尽早测试”是从W模型中抽象出来的理念。我们说测试并不是在代码编写完成之后才开展的工作，测试与开发是两个相互依存的并行的过程，测试活动在开发活动的前期已经开展。<br />    “尽早测试”包含两方面的含义：第一，测试人员早期参与软件项目，及时开展测试的准备工作，包括编写测试计划、制定测试方案以及准备测试用例；第二，尽早的开展测试执行工作，一旦代码模块完成就应该及时开展单元测试，一旦代码模块被集成成为相对独立的子系统，便可以开展集成测试，一旦有BUILD提交，便可以开展系统测试工作。<br />    由于及早的开展了测试准备工作，测试人员能够于早期了解测试的难度、预测测试的风险，从而有效提高了测试效率，规避测试风险。由于及早的开展测试执行工作，测试人员尽早的发现软件缺陷，大大降低了BUG修复成本。但是需要注意，“尽早测试”并非盲目的提前测试活动，测试活动开展的前提是达到必须的测试就绪点。<br /><br />2．2 全面测试<br /><br />    软件是程序、数据和文档的集合，那么对软件进行测试，就不仅仅是对程序的测试，还应包括软件“副产品”的“全面测试”，这是W模型中一个重要的思想。需求文档、设计文档作为软件的阶段性产品，直接影响到软件的质量。阶段产品质量是软件质量的量的积累，不能把握这些阶段产品的质量将导致最终软件质量的不可控。<br />    “全面测试”包含两层含义：第一，对软件的所有产品进行全面的测试，包括需求、设计文档，代码，用户文档等等。第二，软件开发及测试人员（有时包括用户）全面的参与到测试工作中，例如对需求的验证和确认活动，就需要开发、测试及用户的全面参与，毕竟测试活动并不仅仅是保证软件运行正确，同时还要保证软件满足了用户的需求。<br />    “全面测试”有助于全方位把握软件质量，尽最大可能的排除造成软件质量问题的因素，从而保证软件满足质量需求。<br /><br />2．3 全过程测试<br /><br />    在W模型中充分体现的另一个理念就是“全过程测试”。双V字过程图形象的表明了软件开发与软件测试的紧密结合，这就说明软件开发和测试过程会彼此影响，这就要求测试人员对开发和测试的全过程进行充分的关注。<br />    “全过程测试”包含两层含义：第一，测试人员要充分关注开发过程，对开发过程的各种变化及时做出响应。例如开发进度的调整可能会引起测试进度及测试策略的调整，需求的变更会影响到测试的执行等等。第二，测试人员要对测试的全过程进行全程的跟踪，例如建立完善的度量与分析机制，通过对自身过程的度量，及时了解过程信息，调整测试策略。<br />    “全过程测试”有助于及时应对项目变化，降低测试风险。同时对测试过程的度量与分析也有助于把握测试过程，调整测试策略，便于测试过程的改进。<br /><br />2．4 独立的、迭代的测试<br /><br />    我们知道，软件开发瀑布模型只是一种理想状况。为适应不同的需要，人们在软件开发过程中摸索出了如螺旋、迭代等诸多模型，这些中需求、设计、编码工作可能重叠并反复进行的，这时的测试工作将也是迭代和反复的。如果不能将测试从开发中抽象出来进行管理，势必使测试管理陷入困境。<br />    软件测试与软件开发是紧密结合的，但并不代表测试是依附于开发的一个过程，测试活动是独立的。这正是H模型所主导的思想。“独立的、迭代的测试”着重强调了测试的就绪点，也就是说，只要测试条件成熟，测试准备活动完成，测试的执行活动就可以开展。<br /><br />    所以，我们在遵循尽早测试、全面测试、全过程测试理念的同时，应当将测试过程从开发过程中适当的抽象出来，作为一个独立的过程进行管理。时刻把握独立的、迭代测试的理念，减小因开发模型的繁杂给测试管理工作带来的不便。对于软件过程中不同阶段的产品和不同的测试类型，只要测试准备工作就绪，就可以及时开展测试工作，把握产品质量。<br /><br />3 测试过程管理实践<br /><br />    本节以一个实际项目系统测试过程（不对单元测试和集成测试过程进行分析）的几个关键过程管理行为为例，来阐述上节中提出的测试理念。在一个构件化ERP项目中，由于前期需求不明确，开发周期相对较长，为了对项目进行更好的跟踪和管理，项目采用增量和迭代模型进行开发。整个项目开发共分三个阶段完成：第一阶段实现进销存的简单的功能和工作流；第二阶段：实现固定资产管理、财务管理，并完善第一阶段的进销存功能；第三阶段：增加办公自动化的管理（OA）。该项目每一阶段工作是对上一阶段成果的一次迭代完善，同时将新功能进行了一次叠加。<br /><br />3．1 策划测试过程<br /><br />    依据传统的方法，将系统测试作为软件开发的一个阶段，系统测试执行工作将在三个阶段完成后开展，很明显，这样做不利于BUG的及时暴露。有些缺陷可能会埋藏至后期发现，这时的修复成本将大大提高。我们依据“独立和迭代”的测试理念，在本系统中，对测试过程进行独立的策划，找出测试准备就绪点，在就绪点及时开展测试。该系统的三个阶段具有相对的独立性，在每一阶段完成所提交的阶段产品具有相对的独立性，可以作为系统测试准备的就绪点。故而，在该系统开发过程中，系统测试组计划开展三阶段的系统测试，每个阶段系统测试具有不同的侧重点，目的在于更好的配合开发工作尽早发现软件BUG，降低软件成本。软件开发与系统测试过程的关系如图3-1所示。<br />    实践证明，这种做法起到了预期的效果，与开发过程紧密结合而又相对独立的测试过程，有效的于早期发现了许多系统缺陷，降低了开发成本，同时也使基于复杂开发模型的测试管理工作更加清晰明了。<br />  <a href="http://www.51testing.com/ddimg/uploadimg/20060317/133826345.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shape id="_x0000_i1029" style="WIDTH: 351pt; HEIGHT: 180pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133826345.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/03/clip_image005.png"><font size="3"></font></v:imagedata></v:shape></span></a><br />3．2 把握需求<br /><br />    在本系统开发过程中，需求的获取和完善贯穿每个阶段。对需求的把握很大程度上决定了软件测试是否能够成功。系统测试不仅仅确认软件是否正确实现功能，同时还要确认软件是否满足用户的需要。依据“尽早测试”和“全面测试”原则，在需求的获取阶段，测试人员参与到了对需求的讨论之中。测试人员与开发人员及用户一起讨论需求的完善性与正确性，同时从可测试性角度为需求文档提出建议。这些建议对开发人员来说，是从一个全新的思维角度提出的约束。同时，测试组结合前期对项目的把握，很容易制定出了完善的测试计划和方案，将各阶段产品的测试方法及进度、人员安排进行了策划，使整个项目的进展有条不紊。<br />实践证明，测试人员早期参与需求的获取和分析中，有助于加深测试人员对需求的把握和理解，同时也大大促进需求文档的质量。在需求人员把握需求的同时，于早期制定项目计划和方案，及早准备测试活动，大大提高了测试效率。<br /><br />3．3 变更控制<br /><br />    变更控制体现的是“全过程测试”理念。在软件开发过程中，变更往往是不可避免的，变更也是造成软件风险的重要因素。在本系统测试中，仅第一阶段就发生了7次需求变更，调整了两次进度计划。依据“全过程测试”理念，测试组密切关注开发过程，跟随进度计划的变更调整测试策略，依据需求的变更及时补充和完善测试用例。由于充分的测试准备工作，在测试执行过程中，没有废弃一个测试用例，测试的进度并没有因为变更而受到过多影响。<br /><br />3．4 度量与分析<br /><br />    对测试过程的度量与分析同样体现的“全过程测试”理念。对测试过程的度量有利于及时把握项目情况，对过程数据进行分析，很容易发现优势劣势，找出需要改进的地方，及时调整测试策略。<br />    在ERP项目中，我们在测试过程中对不同阶段的BUG数量进行了度量，并分析测试执行是否充分。如图3-2所示，通过分析我们得出：相同时间间隔内发现的BUG数量呈收敛状态，测试是充分的。在BUG数量收敛的状态下结束细测是恰当的。<br /><a href="http://www.51testing.com/ddimg/uploadimg/20060317/133903793.jpg" target="_blank"><span style="FONT-SIZE: 9pt; COLOR: black; TEXT-DECORATION: none; text-underline: none"><v:shape id="_x0000_i1030" style="WIDTH: 345pt; HEIGHT: 122.25pt" o:button="t" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.51testing.com/ddimg/uploadimg/20060317/133903793.jpg" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msoclip1/03/clip_image007.png"><font size="3"></font></v:imagedata></v:shape></span></a> <br />图3-2　软件开发与系统测试关系图<br /><br />    测试中，我们对不同功能点的测试数据覆盖率和发现问题数进行度量，以便分析测试用例的充分度与BUG发现率之间的关系。如表3-1所示，对类似模块进行对比发现：某一功能点上所覆盖的测试数据组越多，BUG的用例发现率越高。如果再结合工作量、用例执行时间等因素进行统计分析，便可以找到适合实际情况的测试用例书写粒度，从而帮助测试人员判断测试成本和收益间的最佳平衡点。<br /><br />表3-1 测试数据覆盖率与BUG发现率对应表<o:p></o:p></span>
		</p>
		<table style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 436.6pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing="0" cellpadding="0" width="582" border="1">
				<tbody>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent" valign="top" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模块名称</span>
												</b>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">功能点数</span>
												</b>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">测试数据数</span>
												</b>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">测试数据覆盖率</span>
												</b>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt" valign="top" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">BUG的用例发现率（）</span>
												</b>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" valign="top" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模块<span lang="EN-US">AA<o:p></o:p></span></span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">6个</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">75组</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">12.5组/每功能点</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">40% （6/15）<o:p></o:p></span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" valign="top" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模块<span lang="EN-US">BB<o:p></o:p></span></span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">30个</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">96组</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3.3组/每功能点</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">17% （7/42）<o:p></o:p></span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模块<span lang="EN-US">CC</span></span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">15个</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">87组</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">5.1组/每功能点</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">18% （5/28）<o:p></o:p></span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">模块<span lang="EN-US">DD</span></span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">16个</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">46组</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2.8组/每功能点</span>
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">
														<o:p>
														</o:p>
												</span>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="bottom" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
												<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Arial Unicode MS'; mso-font-kerning: 0pt">23% （5/22）<o:p></o:p></span>
										</p>
								</td>
						</tr>
						<tr>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 101.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid windowtext .5pt" valign="top" width="135">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">…<o:p></o:p></span>
												</b>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 55.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="75">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">…<o:p></o:p></span>
												</b>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 72.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="96">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: .05pt" align="left">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">
																<span style="mso-tab-count: 1">    </span>…<o:p></o:p></span>
												</b>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 95.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="127">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">…<o:p></o:p></span>
												</b>
										</p>
								</td>
								<td style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #d4d0c8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #d4d0c8; WIDTH: 112pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 0.5pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" valign="top" width="149">
										<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align="center">
												<b>
														<span lang="EN-US" style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">...<o:p></o:p></span>
												</b>
										</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 13.5pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="left">
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">
						<br />注：通过统计可以得出测试数据与BUG发现率之间的关系，便于及时调整测试用例编写策略。<o:p></o:p></span>
		</p>
		<span lang="EN-US" style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">    所有这些度量都是对测试全过程进行跟踪的结果，是及时调整测试策略的依据。对测试过程的度量与分析能有效的提高了测试效率，降低了测试风险。同时，度量与分析也是软件测试过程可持续改进的基本。<br /><br />4 测试过程可持续改进<br /><br />    测试技术发展到今天，已经存在诸多可供参考的测试过程管理思想和理念。但信息技术发展一日千里，新技术不断涌现，这就注定测试过程也需要不断的改进。我们提倡基于度量与分析的可持续过程改进方法（本文不做详细论述）。在这种方法中，对现状的度量被制度化，并作为过程改进的基础。组织可以自定义需要度量的过程数据，将收集来的数据加以分析，以找出需要改进的因素。在不断的改进中，同步的调整需要度量的过程数据，使度量与分析始终为了过程改进服务，而过程改进也包含对度量和分析的改进。<br />    掌握了基于度量和分析的可持续过程改进方法，测试过程管理将能够不断完善，测试活动将能够始终处于优化状态。</span>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-16 19:38 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/16/20632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目角色定位实例</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20580.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 13:22:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20580.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20580.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20580.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20580.html</trackback:ping><description><![CDATA[
		<p align="center">
				<b>
						<span>项目角色定位实例</span>
				</b>
				<b>
				</b>
		</p>
		<br />
		<br />  
<p align="left"><span>笔者最近在与印度一家通过了</span><span>CMM4</span><span>级评估的软件公司（以下简称</span><span>A</span><span>公司）进行合作的过程中，较为详细地了解了他们有关项目管理的一些详细情况，更深刻地感受到了项目管理的规范化与企业软件质量保障之间的密切关系。下面想着重从软件企业的构架，软件项目计划、项目管理、项目经理的职责等方面对印度软件的项目管理及我国软件质量保障应注意的问题进行一些经验总结，供业内人士参考。</span><span><br /> <br /></span><span>　　</span><span>1.</span><span>软件企业的组织结构</span><span></span></p><p align="left"><span>　　</span><span>(1)A</span><span>公司结构</span><span></span></p><p align="left"><span>　　图</span><span>1</span><span>是</span><span>A</span><span>公司的组织结构图，同国内公司差异较大的部门有</span><span>QA</span><span>、</span><span>SSG</span><span>和人力资源部门。</span><span></span></p><p align="center"><span><br /><br /></span><span>图</span><span>1 </span></p><p align="left"><span>　　</span><span>* A</span><span>公司中，</span><span>QA(Quality Assure)</span><span>部门与研发部门独立，负责监督流程的执行。</span><span>QA</span><span>同时负责领导与研发部门组成的联合工作组，制定公司流程。</span><span><br /></span><span>　　</span><span>* SSG(System Support Group)</span><span>类似我们的</span><span>IT</span><span>部门，负责公司所有计算机软件和硬件资源的分配和管理。所有的办公环境和开发</span><span>/</span><span>实验室环境由</span><span>SSG</span><span>负责安装和维护，计算机资源属于</span><span>SSG</span><span>，由各个项目向</span><span>SSG</span><span>提出需求，项目结束后，设备需要交还给</span><span>SSG</span><span>。个人和项目组没有固定的软件和硬件资源。</span><span>SSG</span><span>是与研发平行的部门。</span><span><br /></span><span>　　</span><span>* </span><span>人力资源部门负责公司的人力资源管理，并维护员工的技能数据库。项目开始时，项目组向人力资源申请人力，向</span><span>SSG</span><span>申请计算机硬件和软件。项目结束时需要释放计算机资源给</span><span>SSG</span><span>，释放人力资源到人力资源池，并同时更新员工的技能数据库。研发部门的人力资源由研发总负责人和其助手分配</span><span>(</span><span>类似我国各公司的人力资源部</span><span>)</span><span>。</span><span></span></p><p align="left"><span>　　</span><span>(2)</span><span>项目组结构</span><span></span></p><p align="left"><span>　　</span><span>1) A</span><span>公司对项目组进行独立核算，项目具体负责人为</span><span>PC(Project Coordinator)</span><span>，负责项目计划和执行，对项目具体成员进行分工。在每个阶段的结束会议上</span><span>(</span><span>如概要设计结束</span><span>)</span><span>，</span><span>PC</span><span>要接受</span><span>QC(Quality Coordinator)</span><span>的审查。除了</span><span>PC</span><span>与</span><span>QC</span><span>的接口外，所有其他外部接口都由</span><span>EM(Engineer Manager)</span><span>完成，</span><span>EM</span><span>负责与客户打交道，向</span><span>SSG</span><span>、人力资源要求资源，与其他项目组协调进度。</span><span><br /> <br /></span><span>　　</span><span>2) </span><span>汇报关系为</span><span>: <br /></span><span>　　</span><span>Team Member-&gt;Team Leader-&gt;PC-&gt;EM-&gt;</span><span>研发总负责人。</span><span></span></p><p align="left"><span>　　</span><span>3) </span><span>印度工程师分为</span><span>7</span><span>级，半年一次考评，即半年有一次升级机会。</span><span><br /></span><span>　　</span><span>1</span><span>级</span><span>:Software Engineer</span><span>，刚毕业的本科生和研究生。</span><span><br /></span><span>　　</span><span>2</span><span>级</span><span>:Senior Software Engineer</span><span>。</span><span><br /></span><span>　　</span><span>3</span><span>级</span><span>:Project Leader</span><span>。</span><span><br /></span><span>　　</span><span>4</span><span>级</span><span>:Project Manager</span><span>。</span><span><br /></span><span>　　</span><span>5</span><span>级</span><span>:Senior Project Manager</span><span>。</span><span><br /></span><span>　　</span><span>3</span><span>级可以成为</span><span>PC</span><span>，</span><span>4</span><span>级可以成为</span><span>EM</span><span>。刚开始平均</span><span>2</span><span>年升一级，越往后升职越慢。</span><span></span></p><p align="left"><span>　　</span><span>A</span><span>公司规定，一人最多可以同时兼任两个项目的</span><span>PC</span><span>，</span><span>EM</span><span>管理的项目没有限制。</span><span></span></p><p align="left"><span>　　</span><span>A</span><span>公司通常的项目组为</span><span>4</span><span>到</span><span>5</span><span>人，最多不超过</span><span>10</span><span>人。</span><span></span></p><p align="left"><span>　　以上是</span><span>A</span><span>公司（同时也是印度大多数规范化的软件公司）的组织结构和项目组结构。</span></p><p align="left"><span>　</span><span><span>2.</span></span><span>项目计划</span><span></span></p><p align="left"><span>　　凡事预则立，不预则废。这里的</span><span>“</span><span>预</span><span>”</span><span>就是指计划。对于软件企业，计划的重要性是不言而喻的。让我们先看看</span><span>A</span><span>公司的项目计划是如何制定的</span><span>:</span><span>在</span><span>A</span><span>公司，项目开始之前必须先估计项目的规模（以代码行数来衡量）</span><span>;</span><span>然后制定项目计划。通常时间为</span><span>2</span><span>～</span><span>3</span><span>周，已知的最长有</span><span>5</span><span>周。</span><span>EM</span><span>负责制定项目</span><span> EWP(Engineer Work Paper)</span><span>，其中定义了项目需要的人力和计算机资源，由相关部门同意，并报研发总负责人批准后才能开始项目。</span><span></span></p><p align="left"><span>　　项目的正式开始时间由项目组的</span><span>Kickoff Meeting</span><span>算起，</span><span>Closeout Meeting</span><span>结束。</span><span></span></p><p align="left"><span>　　如果我们的软件企业都能像</span><span>A</span><span>公司这样，在作计划时能考虑到每一个细节，不是仓促做出决定，而是由所有的相关部门共同对产品计划进行反复研究、制定、讨论、修改，最终形成一套系统、严密、具有很强的可执行性的计划。计划一旦形成，就严格按照计划去执行，而不受某个人、某件事的影响，那么就不仅能够减少大量资源的浪费，产品的质量也得到了保障。</span><span></span></p><p align="left"><span>　　因此，对计划的高度重视、周密制定、严格执行是企业有效保障产品质量的一个重要环节。</span><span></span></p><p align="left"><span>　　</span><span>3.</span><span>项目管理</span><span></span></p><p align="left"><span>　　当企业构架了合理的组织结构并制定了缜密的计划后，就进入了产品的开发阶段。在这个阶段中，项目管理起了重要作用，它所涉及的环节相当具体复杂，下面先介绍一下</span><span>A</span><span>公司在项目管理上的具体细节：</span><span></span></p><p align="left"><span>　　</span><span>(1)</span><span>开发阶段和项目周期</span><span><br /></span><span>　　开发阶段比较明显，注重各阶段应完成的功能，对本阶段应完成的工作不能留到下一阶段。</span><span><br /> <br /></span><span>　　</span><span>(2)</span><span>流程</span><span></span></p><p align="left"><span>　　</span><span>* A</span><span>公司对流程比对项目更重视。</span><span><br /></span><span>　　</span><span>* </span><span>软件开发流程非常规范和系统化，其流程的可执行性很高，并且能在实践过程中不断改进。</span><span>A</span><span>公司的流程已覆盖到了一个项目研发的所有方面，包括从最开始的意向到最后软件的版本发布</span><span>(release)</span><span>，都有相应的流程规定，基本上已形成一种工业化的软件开发。</span><span><br /></span><span>　　</span><span>* </span><span>人和流程是保证项目成功的两个最关键因素。由好的人按好的流程进行项目开发，才能最大限度地保证项目的成功。一个好的流程可以保证差的人做出来的东西不至于太差，但不能确保做出精品。通过流程可以实现一种规范化、流水线化、工业化的软件开发。</span><span></span></p><p align="left"><span>　　</span><span>(3)</span><span>计划</span><span></span></p><p align="left"><span>　　</span><span>1) </span><span>计划详细、周到。</span><span></span></p><p align="left"><span>　　</span><span>2) </span><span>流程中明确定义开发阶段。</span><span><br /> <br /></span><span>　　</span><span>3) </span><span>每个阶段都列出了该阶段的各项活动，并详细描述每项活动的属性</span><span>: <br /></span><span>　　</span><span>* </span><span>进入条件，输入</span><span>; <br /></span><span>　　</span><span>* </span><span>验证方法</span><span>; <br /></span><span>　　</span><span>* </span><span>结束条件，输出。</span><span></span></p><p align="left"><span>　　</span><span>4)</span><span>每个阶段结束都要召开阶段结束会议。前一个阶段结束才能进入下一阶段。</span><span></span></p><p align="left"><span>　　</span><span>5)</span><span>计划中每个活动都比较具体，每个活动的时间以天（半天）为单位。计划包括了开展质量控制活动的时间。</span><span></span></p><p align="left"><span>　　</span><span>(4)Review </span></p><p align="left"><span>　　按印度公司流程，一般把</span><span>Review</span><span>和测试作为保证软件质量两个主要手段。测试的重要性就不需说明了，而</span><span>Review</span><span>则是一个非常简单有效并能尽早发现软件中错误的方法，可以说，任何交付物都要经</span><span>Review</span><span>后才能进行基线化。目前</span><span>A</span><span>公司有很详细全面、可执行性很高的</span><span>Review</span><span>流程和各种交付物的</span><span>Review Checklist</span><span>。</span><span></span></p><p align="left"><span>　　在印度软件企业，现有这么一句口号：凡事有计划，凡事必</span><span>review</span><span>。</span><span></span></p><p align="left"><span>　　</span><span>(5)QA </span></p><p align="left"><span>　　</span><span>QC</span><span>（质量经理）作为质量保证部门（</span><span>SQA</span><span>）的代表，监督和保证项目的进展遵循</span><span>QMS</span><span>各项流程和模板，并且收集项目中发现的一些问题和解决方法以优化流程。</span><span></span></p><p align="left"><span>　　</span><span>(6)</span><span>度量数据</span><span></span></p><p align="left"><span>　　</span><span>CMM</span><span>中比较强调用数据说话，对项目过程中基本上所有的数据都会有记录，最后把收集的数据提交质量保证部门进行分析，以改进流程。</span><span>A</span><span>公司的项目经理和质量经理很重视项目中的数据收集，包括各种</span><span>Review</span><span>数据、测试数据以及项目组员每天的活动数据等。项目经理也要维护一个项目档案，在这个项目档案中可以说包含了项目开发过程中所有的产出、开发活动、管理活动等的记录。可以这么说，有了这个项目档案，你就可以完全了解这个项目的开发过程。</span><span></span></p><p align="left"><span>　　</span><span>(7)</span><span>团队精神</span><span></span></p><p align="left"><span>　　印度公司都比较强调团队精神、合作精神，应该说，其流程本质上就要求员工之间的互相协调和理解。相对而言，印度员工的合作精神和协调精神都比我国员工要好得多。</span></p><p align="left"><span>　　</span><span>(8)</span><span>培训</span><span></span></p><p align="left"><span>　　印度公司都比较强调培训，一般有专门的培训部门进行协调。在新员工进入公司后都会有公司流程和其他一些公司普遍章程的培训，以保证员工对流程的理解和执行。对于具体项目，项目经理在制定项目计划时就会在项目计划中提出所有的培训需求，包括技术上的培训和其他所需的培训。</span><span></span></p><p align="left"><span>　　</span><span>(9)</span><span>配置管理</span><span><br /></span><span>　　在项目正式开展前，项目经理就要制定配置管理计划，并且指定配置管理员建立起配置管理库，按配置流程严格进行配置管理。在配置流程中也详细提供了对更改的控制，没有经过批准的更改请求是绝对不能进行的。</span><span><br /></span><span>　　</span><span>(10)</span><span>记录</span><span></span></p><p align="left"><span>　　记录及时、充分、比较准确。这些记录包括</span><span>:</span><span>重要的邮件、会议纪要、审核记录、缺陷报告、测试报告。</span><span><br /> <br /></span><span>　　</span><span>1)</span><span>与客户和其他项目组的所有往来必须邮件记录。</span><span></span></p><p align="left"><span>　　</span><span>2)</span><span>对所有的活动都有一个跟踪落实的过程，比如对所有的</span><span>Review</span><span>记录和更改请求都会有一个状态标识，标识其当前状态，通过跟踪其状态来监督其落实。</span><span></span></p><p align="left"><span>　　</span><span>3)</span><span>对所有的活动，包括对文档和代码的更改都会有一个历史记录。</span><span></span></p><p align="left"><span>　　</span><span>4)</span><span>记录比较准确、比较客观。</span><span></span></p><p align="left"><span>　　</span><span>5)</span><span>许多记录都是通过定量的数值记录，强调以数据说话（</span><span>CMM4</span><span>级的重点就是量化管理）。</span><span></span></p><p align="left"><span>　　以上是</span><span>A</span><span>公司在项目管理中所涉及到的一些主要环节，很值得国内的软件企业在制定项目管理规划时借鉴。除此之外，我国的软件企业在产品开发管理的过程中，还易出现以下几个方面的问题</span><span>: </span></p><p align="left"><span>　　</span><span>1)</span><span>需求说明差</span><span>─</span><span>需求不清楚、不完整、太概括、或者不可测试，都会造成问题。</span><span></span></p><p align="left"><span>　　</span><span>2)</span><span>不切实际的时间表</span><span>─</span><span>如果在很短的时间里要求做许多事，出现错误是不可避免的。</span><span></span></p><p align="left"><span>　　</span><span>3)</span><span>测试不充分</span><span>─</span><span>只能根据客户意见或系统崩溃来判断系统的质量。</span><span></span></p><p align="left"><span>　　</span><span>4)</span><span>不断增加功能</span><span>─</span><span>在开发正在进行过程中要求增加许多新的功能。这是常见的问题。</span><span></span></p><p align="left"><span>　　</span><span>5)</span><span>交流问题</span><span>─</span><span>如果开发人员对客户的要求不了解，或者客户由不恰当的期望，必然会导致错误。</span><span><br /> <br /></span><span>　　这些问题的出现，将会对软件质量的保证产生不良影响，针对上述问题并结合</span><span>A</span><span>公司在项目管理方面的经验，笔者提出一些相应的解决方法，以供参考：</span><span></span></p><p align="left"><span>　　</span><span>1)</span><span>可靠的需求</span><span>─</span><span>应当有一个经各方一致同意的、清楚的、完整的、详细的、整体的、可实现的、可测试的需求。为帮助确定需求，可使用模型</span><span> (prototypes)</span><span>。</span><span></span></p><p align="left"><span>　　</span><span>2</span><span>）合理的时间表</span><span>――</span><span>为计划、设计、测试、改错、再测试、变更、以及编制文档留出足够的时间。不应使用突击的办法来完成项目。</span><span></span></p><p align="left"><span>　　</span><span>3)</span><span>适当测试</span><span>─</span><span>尽早开始测试；每次改错或变更后，都应重新测试。项目计划中要为测试和改错留出足够时间。</span><span></span></p><p align="left"><span>　　</span><span>4)</span><span>尽可能坚持最初的需求</span><span>─</span><span>一旦开发工作开始，要准备防止修改需求和新增功能，要说明这样做的后果。如果必须进行变更，必须在时间表上有相应的反映。如果可能，在设计阶段使用快速的模型，以便使客户了解将会得到的东西。这将会使他们对他们的需求有较高的信心，减少以后的变更。</span><span></span></p><p align="left"><span>　　</span><span>5)</span><span>沟通</span><span>――</span><span>在适当时机进行预排和检查</span><span>;</span><span>充分利用团组通信工具</span><span>―</span><span>电子邮件、群件</span><span>(groupware)</span><span>、网络故障跟踪工具、变更管理工具、以及因特网的功能。要确保文件是可用的和最新的。优选电子版文档，避免纸介质文档</span><span>:</span><span>进行远距离联合作业及协作</span><span>;</span><span>尽早使用模型，使客户的预想表达清楚。</span><span></span></p><p align="left"><span>　　</span><span>4.PC</span><span>（项目经理）</span><span></span></p><p align="left"><span>　　项目经理是项目成败的关键人物，其对项目的成败负主要责任。因此在这里将项目经理的有关内容单独提出，以</span><span>A</span><span>公司为例详细说明</span><span>PC</span><span>在整个产品研发过程中所扮演的角色，希望能对国内软件企业的项目经理有所启示。</span><span></span></p><p align="left"><span>　　（</span><span>1)</span><span>在</span><span>A</span><span>公司，按流程在一个项目正式开展之前，项目经理需要完成：</span><span></span></p><p align="left"><span>　　</span><span>* </span><span>项目计划</span><span>(Project Plan):</span><span>在此描述整个项目所应完成的交付物、项目时间表、培训需求、资源需求、质量保证计划以及过程和交付物的定量质量目标等。</span><span></span></p><p align="left"><span>　　</span><span>* </span><span>项目配置管理计划</span><span>(Project Configuration Plan):</span><span>在此指定配置管理员，描述项目配置项列表、配置管理库、版本管理计划等等。</span><span></span></p><p align="left"><span>　　</span><span>*</span><span>项目过程手册</span><span>(Process Handbook):</span><span>在此描述本项目所采取的裁剪后的生命周期模型和流程。</span><span></span></p><p align="left"><span>　　（</span><span>2</span><span>）在项目开发过程中，项目经理需非常了解项目进度，进行工作任务细化、具体计划和安排项目成员工作任务等工作。对突发事件项目经理需能及时合理地进行协调。</span><span></span></p><p align="left"><span>　　（</span><span>3)</span><span>总的说来，</span><span>PC</span><span>安排工作有这么几个特点</span><span>: </span></p><p align="left"><span>　　</span><span>a.PC</span><span>对软件开发具有丰富的经验，了解软件开发的普遍流程，了解各个阶段所需完成的工作，这是安排好项目组成员工作的前提，在</span><span>A</span><span>公司对</span><span>PC</span><span>的整体素质要求非常高。</span><span></span></p><p align="left"><span>　　</span><span>b.</span><span>在项目正式开展前，</span><span>PC</span><span>准备项目计划文档，在项目计划中包含了项目进度时间表，但此时间表比较粗，只能给出各个阶段和各个子阶段的起始结束日期。对各个阶段和各个子阶段的详细工作安排和各项工作责任人只能在项目开展工程中根据项目实际情况进行安排，一般是在每周项目组例会上进行本周详细工作安排。</span><span><br /> <br /></span><span>　　</span><span>c.PC</span><span>对工作安排往往精确到天，有时甚至精确到小时，要做到这一点，需要</span><span>: </span></p><p align="left"><span>　　</span><span>* PC</span><span>对本项目进展非常了解。了解渠道通常是每周组员的状态报告和直接与组员接触了解，这也需项目组成员能如实汇报工作。</span><span></span></p><p align="left"><span>　　</span><span>* </span><span>对现阶段或本周所需完成的工作非常了解。知道现在该做什么，并且能把各项工作进行合理细致地划分，因为各个分解的工作比较细致，因此能相对精确地评估出这些工作完成所需的时间。</span><span></span></p><p align="left"><span>　　</span><span>* PC</span><span>对项目组员的能力比较了解，安排工作时能做到有的放矢。当安排的员工对工作不熟悉时，会指定相应的组员进行协助。</span><span></span></p><p align="left"><span>　　</span><span>* PC</span><span>对组员的工作安排都比较细致饱满。一般不会出现有些员工有事干，有些员工没事干的情况，当出现这种情况或员工提前完成工作时，</span><span>PC</span><span>就会进行相应的协调。</span><span></span></p><p align="left"><span>　　</span><span>d.PC</span><span>在项目组例会上的工作安排一般只限于本周或甚至是过后的二、三天，一般不会太长，对长时间工作的安排容易失去精确并且不易控制。相对而言，短时间的工作安排就比较精确而且容易控制，并且能不断根据完成的工作进行调整。当然，这就要求</span><span>PC</span><span>能根据项目计划中的项目时间表进行整体进度的把握。</span></p><p align="left"><span>　　</span><span>e.</span><span>项目组例会一般一周一次（时间不能太长），但必要时（如组员工作已完成或其他事情），也可在中途召开项目会议进行工作安排，一般时间都比较短（十几分钟左右，一般不超过半小时，以免浪费时间），总之，当</span><span>PC</span><span>觉得需要时，就会召开项目会议。</span><span></span></p><p align="left"><span>　　</span><span>f.</span><span>当项目组出现意外事件或影响项目团结的事件时，</span><span>PC</span><span>能及时合理协调，解决项目组内的不和谐气氛。</span><span><br /> <br /></span><span>　　</span><span>g.PC</span><span>善于鼓励手下，发挥员工的潜能，</span><span>PC</span><span>往往会赞扬很好地完成了工作的组员。</span><span><br /> <br /></span><span>　　从上面可以看出，对</span><span>PC</span><span>的能力（包括技术和管理能力）要求是非常高的，我国的软件企业往往只重视</span><span>PC</span><span>的技术能力，但事实上，一个只精通技术的人往往不能成为一个合格的领导者，</span><span></span><span>笔者认为对</span><span>PC</span><span>而言，首先要求他能够比他的下属看得更远一步，顺利时不盲目乐观，遇到挫折时不茫然失措，使整个团队始终保持高昂的士气。</span></p><p> </p><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-15 21:22 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试的组织与管理</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20578.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 13:21:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20578.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20578.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20578.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20578.html</trackback:ping><description><![CDATA[软件测试的组织与管理<br /><br /><span class="new">作为软件开发的重要环节，软件测试越来越受到人们的重视。随着软件开发规模的增大、复杂程度的增加，以寻找软件中的错误为目的的测试工作就显得更加困难。然而，为了尽可能多地找出程序中的错误，生产出高质量的软件产品，加强对测试工作的组织和管理就显得尤为重要。<br /></span><p class="new">　　从软件的生存周期看，测试往往指对程序的测试，这样做的优点是被测对象明确，测试的可操作性相对较强。但是，由于测试的依据是规格说明书、设计文档和使用说明书，如果设计有错误，测试的质量就难以保证。即使测试后发现是设计的错误，这时，修改的代价是相当昂贵的。因此，较理想的做法应该是对软件的开发过程，按软件工程各阶段形成的结果，分别进行严格的审查。软件的生命周期可用图1的流程表示。<br /></p><p class="new">　　为了确保软件的质量，对图1的过程应进行严格的管理。虽然测试是在实现且经验证后进行的，实际上，测试的准备工作在分析和设计阶段就开始了。 </p><p class="new"><strong>1．测试的过程及组织</strong></p><p class="new">　　当设计工作完成以后，就应该着手测试的准备工作了，一般来讲，由一位对整个系统设计熟悉的设计人员编写测试大纲，明确测试的内容和测试通过的准则，设计完整合理的测试用例，以便系统实现后进行全面测试。<br /></p><p class="new">　　在实现组将所开发的程序经验证后，提交测试组，由测试负责人组织测试，测试一般可按下列方式组织： <br /></p><p class="new">　　(1)首先，测试人员要仔细阅读有关资料，包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则，全面熟悉系统，编写测试计划，设计测试用例，作好测试前的准备工作。<br /></p><p class="new">　　(2)为了保证测试的质量，将测试过程分成几个阶段，即：代码审查、单元测试、集成测试和验收测试。<br /></p><p class="new">　　(3)代码会审：<br />　　代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长，2～3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上，召开代码会审会，程序员逐句讲解程序的逻辑，并展开热烈的讨论甚至争议，以揭示错误的关键所在。实践表明，程序员在讲解过程中能发现许多自己原来没有发现的错误，而讨论和争议则进一步促使了问题的暴露。例如，对某个局部性小问题修改方法的讨论，可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题，导致对需求定义的重定义、重设计验证，大大改善了软件的质量。<br /></p><p class="new">　　(4)单元测试：<br />　　单元测试集中在检查软件设计的最小单位—模块上，通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况，以及编码的错误。由于模块规模小、功能单一、逻辑简单，测试人员有可能通过模块说明书和源程序，清楚地了解该模块的I/O条件和模块的逻辑结构，采用结构测试（白盒法）的用例，尽可能达到彻底测试，然后辅之以功能测试（黑盒法）的用例，使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础。<br /></p><p class="new">　　(5)集成测试：<br />　　集成测试是将模块按照设计要求组装起来同时进行测试，主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失；一个模块与另一个模块可能有由于疏忽的问题而造成有害影响；把子功能组合起来可能不产生预期的主功能；个别看起来是可以接受的误差可能积累到不能接受的程度；全程数据结构可能有错误等。 <br /></p><p class="new">　　(6)验收测试：<br />　　验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后，已经按照设计把所有的模块组装成一个完整的软件系统，接口错误也已经基本排除了，接着就应该进一步验证软件的有效性，这就是验收测试的任务，即软件的功能和性能如同用户所合理期待的那样。<br /></p><p class="new">　　经过上述的测试过程对软件进行测试后，软件基本满足开发的要求，测试宣告结束，经验收后，将软件提交用户。</p><p class="new"><strong>2．测试方法的应用</strong></p><p class="new">　　集成测试及其后的测试阶段，一般采用黑盒方法。其策略包括?/p&gt; 
</p><p class="new">　　(1)用边值分析法和（或）等价分类法提出基本的测试用例；<br />　　(2)用猜测法补充新的测试用例；<br />　　(3)如果在程序的功能说明中含有输入条件的组合，宜在一开始就用因果图法，然后再按以上（1）、（2）两步进行。<br /></p><p class="new">　　单元测试的设计策略稍有不同。因为在为模块设计程序用例时，可以直接参考模块的源程序。所以单元测试的策略，总是把白盒法和黑盒法结合运用。具体做法有两种：<br /></p><p class="new">　　a、先仿照上述步骤用黑盒法提出一组基本的测试用例，然后用白盒法作验证。如果发现用黑盒法产生的测试用例未能满足所需的覆盖标准，就用白盒法增补新的测试用例来满足它们。覆盖的标准应该根据模块的具体情况确定。对可靠性要求较高的模块，通常要满足条件组合覆盖或路径覆盖标准。 <br /></p><p class="new">　　b、先用白盒法分析模块的逻辑结构，提出一批测试用例，然后根据模块的功能用黑盒法进行补充。</p><p class="new"><strong>3．测试的人员组织 </strong></p><p class="new">　　为了保证软件的开发质量，软件测试应贯穿于软件定义与开发的整个过程。因此，对分析、设计和实现等各阶段所得到的结果，包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此，测试人员的组织也应是分阶段的。</p><p class="new">(1)软件的设计和实现都是基于需求分析规格说明进行的。</p><p class="new">　　需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量，应对其进行严格的审查。审查小组由下列人员组成： <br />　　组长：1人<br />　　成员：包括系统分析员，软件开发管理者，软件设计、开发和测试人员和用户</p><p class="new">(2)设计评审：<br /></p><p class="new">　　软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价，同时利用关系数据库的规范化理论对数据库模式进行审查。评审小组由下列人员组成：<br />　　组长：1人<br />　　成员：包括系统分析员、软件设计人员、测试负责人员各一人。</p><p class="new">(3)程序的测试：</p><p class="new">　　软件测试。是整个软件开发过程中交付用户使用前的最后阶段，是软件质量保证的关键。软件测试在软件生存周期中横跨两个阶段：通常在编写出每一个模块之后，就对它进行必要的测试（称为单元测试）。编码与单元测试属于软件生存周期中的同一阶段。该阶段的测试工作，由编程组内部人员进行交叉测试（避免编程人员测试自己的程序）。这一阶段结束后，进入软件生存周期的测试阶段，对软件系统进行各种综合测试。测试工作由专门的测试组完成，测试组设组长一名，负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和编程经验的专业人员组成，人数根据具体情况可多可少，一般3～5人为宜。</p><p class="new"><strong>4．软件测试文件 </strong></p><p class="new">　　软件测试文件描述要执行的软件测试及测试的结果。由于软件测试是一个很复杂的过程，同时也是设计软件开发其它一些阶段的工作，对于保证软件的质量和它的运行有着重要意义，必须把对它们的要求、过程及测试结果以正式的文件形式写出。测试文件的编写是测试工作规范化的一个组成部分。<br /></p><p class="new">　　测试文件不只在测试阶段才考虑，它在软件开发的需求分析阶段就开始着手，因为测试文件与用户有着密切的关系。在设计阶段的一些设计方案也应在测试文件中得到反映，以利于设计的检验。测试文件对于测试阶段工作的指导与评价作用更是非常明显的。需要特别指出的是，在已开发的软件投入运行的维护阶段，常常还要进行再测试或回归测试，这时仍须用到测试文件。</p><p><span class="new"><font class="title" color="#0000ff">(1)测试文件的类型</font></span></p><p class="new">　　根据测试文件所起的作用不同，通常把测试文件分成两类，即测试计划和测试分析报告。测试计划详细规定测试的要求，包括测试的目的和内容、方法和步骤，以及测试的准则等。由于要测试的内容可能涉及到软件的需求和软件的设计，因此必须及早开始测试计划的编写工作。不应在着手测试时，才开始考虑测试计划。通常，测试计划的编写从需求分析阶段开始，到软件设计阶段结束时完成。测试报告用来对测试结果的分析说明，经过测试后，证实了软件具有的能力，以及它的缺陷和限制，并给出评价的结论性意见，这些意见即是对软件质量的评价，又是决定该软件能否交付用户使用的依据。由于要反映测试工作的情况，自然要在测试阶段内编写。</p><p class="new"><font class="title" color="#0000ff">(2)测试文件的使用</font></p><p class="new">　　测试文件的重要性表现在以下几个方面：<br /></p><p class="new">　　a、验证需求的正确性：测试文件中规定了用以验证软件需求的测试条件，研究这些测试条件对弄清用户需求的意图是十分有益的，<br /></p><p class="new">　　b、检验测试资源：测试计划不仅要用文件的形式把测试过程规定下来，还应说明测试工作必不可少的资源，进而检验这些资源是否可以得到，即它的可用性如何。如果某个测试计划已经编写出来，但所需资源仍未落实，那就必须及早解决。 <br /></p><p class="new">　　c、明确任务的风险：有了测试计划，就可以弄清楚测试可以做什么，不能做什么。了解测试任务的风险有助于对潜伏的可能出现的问题事先作好思想上和物质上的准备。<br /></p><p class="new">　　d、生成测试用例：测试用例的好坏决定着测试工作的效率，选择合适的测试用例是作好测试工作的关键。在测试文件编制过程中，按规定的要求精心设计测试用例有重要的意义。<br /></p><p class="new">　　e、评价测试结果：测试文件包括测试用例，即若干测试数据及对应的预期测试结果。完成测试后，将测试结果与预期的结果进行比较，便可对已进行的测试提出评价意见。<br /></p><p class="new">　　f、再测试：测试文件规定的和说明的内容对维护阶段由于各种原因的需求进行再测试时，是非常有用的。<br />　　g、决定测试的有效性：完成测试后，把测试结果写入文件，这对分析测试的有效性，甚至整个软件的可用性提供了依据。同时还可以证实有关方面的结论。</p><p class="new"><font class="title" color="#0000ff">(3)测试文件的编制</font></p><p class="new">　　在软件的需求分析阶段，就开始测试文件的编制工作，各种测试文件的编写应按一定的格式进行。<br /></p><img src ="http://www.cnitblog.com/szdlinxie/aggbug/20578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-15 21:21 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件测试过程的度量</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20579.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 15 Dec 2006 13:21:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20579.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20579.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20579.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20579.html</trackback:ping><description><![CDATA[
		<p class="style1">软件测试过程的度量<br /><br /></p>
		<p>1）测试度量的作用（－）<br />　　 A:为制定测试计划时提供依据<br />　　　 需要多长时间?　需要什么物质条件？　 需要多少人，什么素质的人？ 在规定的时间内能完成到什么程度？<br />　　　　哪些模块及功能需要重点关注？ 测试工作量占整个项目的比例？ 测试结束后我们能达到什么样的目标 ？等等<br />( 这些数据是我们在项目启动过程中，制定测试计划，尤其在规划资源的过程中，一些必要的参考值。不同项目可能会有其特殊性，但从总体上看，他们还是有一些规律可寻的，过去的经验数据可以作为一个大概估算，如果项目经验丰富，那么可以从历史数据中找出和新项目 类似的情况，以能更为准确的完成计划。 )<br />　　B： 提高测试流程可控性 <br />　　　　提高测试效率和质量<br />　　　　提高测试人员的成就感 </p>
		<p>2)在测试哪个过程做度量<br />（产品早期的市场评估、测试策略分析、可测试性需求分析、测试工具分析、用例设计阶段、执行阶段和 FOA 阶段）<br />我们需要在测试的几个关键阶段做度量，它们分别是：用例设计阶段、执行阶段和 FOA 阶段。测试用例设计阶段包括测试方案的最终确定、测试工具的设计、测试用例编写等，测试执行阶段很明显，即我们测试的各个过程，如集成测试、系统测试、性能测试、回归测试等，也包括开发人员完成的单元测试的度量工作。 FOA 阶段是检验测试质量的第一步，通过 FOA 我们可以获得很多为产品质量做贡献的度量，这也是体现测试价值的度量。看起来几乎包括了测试过程的全部。其实这里包括的只是测试的具体工作阶段。</p>
		<p>3）测试度量的内容<br />两种度量类型：<br />　　　 A： 项目度量：规模、测试工作量、测试进度、测试生产率<br />　　　 B： 质量度量：缺陷率（阶段）、缺陷排除率、可靠性等 <br />四个基本度量项：规模、工作量、进度、缺陷</p>
		<p>4) 测试用例设计阶段的度量 <br /><strong>　　　</strong>A：规模 ：测试方案数量、测试用例数量、测试工具设计数量、测试用例/人月<br />　　　 B： 工作量 ：文档的草稿编写工作量、评审前阅读工作量、评审工作量 、修改工作量 <br />　　　C： 进度 ：每件具体工作的计划开始结束时间、实际开始结束时间、计划工时数、实际工时数、计划完成率<br />　　　 D： 缺陷 ：评审过程中出现的错误数量、缺陷数量，级别</p>
		<p>5）测试执行阶段的度量：<br />? 测试用例执行率　　　　　　　? 测试用例通过率 <br />? 测试用例问题发现率　　　　　? BUG数量<br />? BUG级别统计　　　　　　　　　? BUG分布统计（模块）<br />? BUG分布统计（阶段）　　　　　? BUG密度 <br />? BUG关闭率　　　　　 　　　　? 人均BUG发现效率 <br />? 测试用例执行工作量项目　　　? 回归测试执行工作量 <br />? 发布文档数量　　　　　　　　? 发布文档缺陷数量、级别<br />? 现场发现的BUG数量　　　　　　? 回归测试现场BUG的工作量<br />? 版本发布过程中的验证周期　　? 版本发布过程中的验证工作量 <br />? 测试用例覆盖率　　　　　　　? 功能的用户关注度 <br />? 需求变化程度 　</p>
		<p>6）测试的度量为项目实施做的贡献<br /></p>
		<p class="style1">
		</p>
		<table width="521" border="1">
				<tbody>
						<tr>
								<td width="29">度量项 </td>
								<td width="119">含义</td>
								<td width="351">目的与意义</td>
						</tr>
						<tr>
								<td>测试生产率</td>
								<td>单位时间所测试的代码量、或者单位时间执行测试用例的数量 </td>
								<td>一个团队的测试能力 </td>
						</tr>
						<tr>
								<td>工作量变化率 </td>
								<td>实际花费工作量相对于估计工作量的偏差百分比 </td>
								<td>提高估计技能、避免过载分配任务 </td>
						</tr>
						<tr>
								<td>测试进度变化率 </td>
								<td>项目实际测试进度相对于计划进度的偏差百分比 </td>
								<td>监控项目以便适时采取纠正措施 </td>
						</tr>
						<tr>
								<td>工作量 </td>
								<td>测试所做的工作小时数 </td>
								<td>测试为整个项目贡献的工作量 </td>
						</tr>
						<tr>
								<td>缺陷密度 </td>
								<td>千行代码发现的缺陷数，千个功能发现的缺陷数 </td>
								<td>用于度量被测试系统的可靠性 </td>
						</tr>
						<tr>
								<td>测试问题的严重性 </td>
								<td>测试发现问题的严重性分布 </td>
								<td>用于确定目前被测试系统的可靠性 </td>
						</tr>
						<tr>
								<td>测试用例的问题发现效率 </td>
								<td>单个测试用例发现问题的数量 </td>
								<td>用于度量测试用例的有效性 </td>
						</tr>
						<tr>
								<td>测试用例覆盖率 </td>
								<td>需求覆盖率、功能点覆盖率、代码覆盖率等 </td>
								<td>度量测试的充分性 </td>
						</tr>
						<tr>
								<td>问题遗漏率 </td>
								<td>发布后市场反馈问题数/产品问题总数目 </td>
								<td>衡量内部测试质量 </td>
						</tr>
						<tr>
								<td>COQ</td>
								<td> </td>
								<td>为提升测试质量所付出的工作量 </td>
						</tr>
						<tr>
								<td>COPQ </td>
								<td> </td>
								<td>为不好的质量付出的代价 </td>
						</tr>
				</tbody>
		</table>
		<p>7)由谁来做度量<br /><img height="274" alt="" src="http://www.cnblogs.com/images/cnblogs_com/mayingbao/dl.jpg" width="569" border="0" /><br /><img height="221" alt="" src="http://www.cnblogs.com/images/cnblogs_com/mayingbao/dl01.jpg" width="589" border="0" /><br /><img height="257" alt="" src="http://www.cnblogs.com/images/cnblogs_com/mayingbao/dl02.jpg" width="580" border="0" /></p>
		<p>8)怎样做度量?<br />PDCA方法：<br />　　　　　第一步：Plan 　　（ 计划、设置标竿） ( 计划－－制定我们想要达到的目标) <br />　　　　　第二步：do　　　　（执行）(日报－－记录数据)( 周报－－汇总数据，给出度量结果)<br />　　　　　第三步：check　　（ 检查和标竿有什么差距） (周例会－－针对度量结果，作出下一步工作建议)<br />　　　　　第四步：action　　（改进过程)( 阶段总结－－子系统、集成、系统测试等各测试阶段结束后做度量评估，为后续工<br />　　　　　　　　　　　　　　　　　　　　 作做出指导)<br />　　　　　第五步:return to plan <br /></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-15 21:21 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/15/20579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>