2004-4-2 20:30
threehair
浅谈测试中的常见问题 <br /> 作者:中国软件评测中心 2002年04月10日 本文选自:赛迪网-中国计算机报<br /> <br /> 在测试过程中,一般把发现的错误bug按其严重性大致分为4类:致命错误(系统崩溃或挂起、破坏数据)、严重错误(系统不稳定、产生错误结果、菜单功能无法实现)、一般错误(在完成某一功能时出现错误,但并不影响该功能的实现)、建议项 (软件不完善或用户使用不方便之处)。 <br /><br /> 下面,我们主要对一些显而易见的、容易被开发者忽略的错误进行列举和分析。这些错误一般很容易避免和修改,但会给用户造成使用上的困难。 <br /><br /> 一、易用性问题:用户无法使用或不方便使用 <br /><br /> 1.不符合用户操作习惯。如,快捷键定义不科学、不实用,键位分布不合理、按键太多,甚至没有快捷键。 <br /><br /> 2.界面中英文混杂,界面元素参差不齐,文字显示不全。 <br /><br /> 3.无自动安装程序或安装程序不完善。 <br /><br /> 4.界面中的信息不能及时刷新,不能正确反映当前数据状态,可能误导用户,如数据库中剩余记录个数和参数设置对话框中的预设值常常显示为历史值而不是当前值。 <br /><br /> 5.提示信息意文不明或为原始的英文提示。 <br /><br /> 6.要求用户输入多余的、本来系统可以自动获取的数据。如:服务是否启动,安装后用户需要手动修改某些配置文件。 <br /><br /> 7.某一项功能的冗余操作太多。如对话框嵌套层次太多,影响用户操作。 <br /><br /> 8.不能记忆用户的设置或操作习惯,用户每次进入系统都需要重新操作初始环境。 <br /><br /> 9.对复杂的操作无联机帮助。 <br /><br /> 二、稳定性问题:影响用户正常工作 <br /><br /> 1.程序运行过程中不断申请,但没有完全释放资源,造成系统性能越来越低,并出现无规律的死机现象。 <br /><br /> 2.不能重现的错误,有些与代码中的未初始化变量有关,有些与系统不检查异常情况有关。 <br /><br /> 3.对一般性错误的屏蔽能力较差。 <br /><br /> 4.对输入数据没有进行充分并且有效的有效性检查,造成不合要求的数据进入数据库。 <br /><br /> 三、其他问题 <br /><br /> 1.用户文档问题:无标准;无新功能使用方法、无版本改动说明。没有说明文档的产品不是一个完整的产品,没有说明或没有正确说明的功能是一个没有完全实现的功能,因为用户无法用得起来。 <br /><br /> 2.兼容性问题:对硬件平台或软件平台的兼容性不好。比如:在一台计算机上可以稳定运行,而在另一台上运行就极不稳定。 <br /><br /> 3.数据接口问题:未提供一些常用文件格式的接口,如TXT文件、Word文件。 <br /><br /> 四、结语 <br /><br /> 有些问题虽然不大,但却是用户使用过程中接触最多的问题,所以我们应该更多地从用户使用的角度来设计、编码与测试。只有在各个方面表现优秀的软件,才能称之为精品。
2004-4-2 20:31
threehair
软件测试常见问题与解答 <br /> <br /> <br /> 注释:根据网络收集的资料选编 <br />Q:为什么需要将软件测试独立出来,而不是由开发者自己做?<br />A:软件测试由独立测试机构承担有许多好处。独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行。独立测试可以避免软件开发者测试自己开发的软件,由于心理学上的问题,软件开发者难以客观、有效地测试自己的软件,而找出那些因为对问题的误解而产生的错误就更加困难。独立测试还可以避免软件开发机构测试自己的软件,软件产品的开发过程受到时间、成本和质量三者的制约,当时间、成本和质量三者发生矛盾时,质量最容易被开发商所忽视,而质量对于大型的、任务关键的软件系统来说往往是至关重要的,这时,只有通过独立的测试机构才能保证质量能够得到公正而准确的测量。<br /><br />采用独立测试方式,无论在技术上还是管理上,对提高软件测试的有效性都具有重要意义。具体地,独立测试能给客户带来如下好处: <br />客观性:经济上的独立性使其工作有更充分的条件按测试要求去完成;<br /><br />专业性:软件测试是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平,保证测试质量,充分发挥测试效用的必然途径;<br /><br />权威性:由于专业优势,独立测试工作形成的测试结果更具有信服力和权威性;<br /><br />资源有保证:独立测试机构在经费、人力和计划方面更有保证,可以避免开发单位侧重软件开发而忽视软件测试不利的后果;<br /><br /><br />Q:什么是软件的“质量”?<br />A:高质量的软件是适当的、无错误的,能在预算内按时交货,满足需求/或期望,并且是可维护的。所以,质量是一个主观的术语。它取决于谁是客户以及客户对项目计划的影响。对一个软件开发项目来说,“客户”的范围很广,包括最终用户、客户所接受的测试者、与客户合同有关的官员、客户管理、开发机构的管理者/会计/测试人员/销售人员、未来的软件维护工程师、股票持有者、杂志专栏记者,等等。每一类客户对“质量”都有自己的倾向性 – 会计部门判断质量会从其收益来考虑,而最终用户则重视友好的用户界面和没有错误。<br /><br /><br />Q:什么是“软件质量保障”?<br />A:软件质量保障涉及到整个软件开发过程,包括监视和改善过程、确保任何经过认可的标准和步骤都被遵循、并且保证问题被发现和被处理。从本质上说,软件质量保障是“预防”。<br /><br /><br />Q:什么是“软件测试”?<br />A:软件测试就是在受控制的条件下对系统或应用程序进行操作并评价操作的结果。也就是说,如果用户面对着应用程序的 A 界面,在使用硬件 B 的时候做 C 操作,那么 D 结果应该出现。所谓受控制的条件应该包括正常条件和非正常条件。应该故意地去促使错误的发生,也就是事情在不该出现的时候出现或者在应该出现的时候没有出现。从本质上说,软件测试是“探测”。<br />在如何负责质量保障和软件测试的责任方面,各个机构有不同的做法。有时候,由一个小组或者个人来负责。常见的办法是项目组包括了测试人员和开发人员,他们在一起合作工作,由项目负责人来对质量保障进行总负责。这取决于该机构的大小和该机构的商务结构。<br /><br /><br />Q:为什么软件会有毛病?<br />A:交流错误或者没有进行交流:指出应用软件应当做什么和不应当做什么 (针对该应用软件的用户需求);<br />软件的复杂性:现在的应用软件十分复杂,以至于在当前的软件开发环境下,缺乏经验的人不可能理解它。窗口类型的界面、客户/服务器和分布式的应用、数据通信、巨大的关系数据库、以及应用软件规模庞大,所有这一切都造成软件/系统的复杂性呈指数型的增长。除非进行仔细的设计,使用面向对象的技术会使得项目更加复杂而不是简单;<br /><br />编程错误:和所有的人一样,程序员也会犯错误;<br /><br />需求改变:客户恐怕不明白改变需求的影响,也许是知道但依然需要变更 ── 会导致重新设计、重订工程进度表、对其他项目的影响、已完成的工作需要重做或者放弃、对硬件需求的影响等等。如果在项目中出现许多小的改变或一个大的改变,在项目各部分中出现已知或未知的相关的问题,可能会相互影响并导致出现问题。而且,不断地变更也会增加软件的复杂性,可能会导致错误的出现。这样就会影响技术人员的积极性。在一些快速变化的商业环境里,持续变更需求的影响是致命的。在这种情况下,管理者必须知道它的危险性。质量保障和测试工程师必须与此相适应,并安排持续的广泛的测试,以克服不可避免产生的问题;<br /><br />时间压力:因为有许多猜测成分,软件开发项目的进度很难安排得理想。当最后期限快到的时候,压力逐渐增大,错误随之产生;<br />-- 对质量问题的不重视;<br />-- 代码的文档质量差:糟糕的维护和修改,或者写得很差的文档,也会导致错误。在许多单位里,管理人员并不鼓励程序员把代码写得清楚、易读。事实上,恰恰相反,他们主要注意尽快完成编码,认为如果别人不明白代码,就会更安全一点 (“难写的代码必然难读”);<br />-- 软件开发工具:视觉工具、类库、编译器、编辑工具等等,都会把本身的故障引入,或者产生质量差的文档,从而导致故障的产生;<br /><br /><br />Q:与国际先进软件企业相比,中国软件企业的测试水平差在哪里?<br />A:一个重要而又明显的差距就是软件测试和软件测试人才。主要存在以下三个方面的问题:<br />(1) 认识问题:重开发、轻测试,将测试置于从属地位;没有认识到软件项目的如期完成不仅取决于开发人员,更取决于测试人员。<br />(2) 管理问题:随意化、简单化,未建立有效的、规范的测试管理体系。<br />(3) 工具问题:缺少自动化工具的支持,一般未采用软件测试管理系统。