软件缺陷的产生主要是由软件产品的特点和开发过程决定的,如软件的需求经常不够明确,而且需求变化频繁,开发人员不太了解软件需求,不清楚应该“做什么”和“不做什么”,常常做不合需求的事情,产生的问题最多。同时,软件竞争非常厉害,技术日新月异,使用新的技术,也容易产生问题。而且对于不少软件企业,“争取时间上取胜”常常是其主要市场竞争策略之一,实现新功能、很酷的功能,被认为比质量更为重要,导致日程安排很紧,需求分析、设计等投入的时间和精力远远不够,也是产生软件错误的主要原因之一。
软件错误产生的原因可能还有其他一些原因,例如,软件设计文档不清楚,文档本身就存在错误,导致使用者产生更多的错误。还有沟通上的问题、开发人员的态度问题以及项目管理问题等。《微软开发者成功之路(之一)》概括为有以下七项主要原因:
项目期限的压力
产品的复杂度
沟通不良
开发人员的疲劳、压力或受到干扰
缺乏足够的知识、技能和经验
不了解客户的需求
缺乏动力
这些原因,会引起下列主要领域的主要错误(缺陷):
需求规格说明书(Requirement Specification or Functional Specification )包含错误的需求、或漏掉一些需求, 或没有准确表达客户所需要的内容;
需求规格说明书中有些功能不可能或无法实现的;
系统设计(System Design)中的不合理性;
程序设计中的错误、程序代码中的问题,包括错误的算法、复杂的逻辑等。
若能及早排除软件开发中的错误,有效的减少后期工作的麻烦,就可以尽可能的避免付出高昂的代价,从而大大提高系统开发过程的效率。
软件测试的目标,就是为了更快、更早地将软件产品或软件系统中所存在的各种问题找出来,并促进开发各类人员尽快地解决问题,最终及时地向客户提供一个高质量的软件产品,使软件系统更好地满足用户的需求,同时满足软件组织自身的要求:
1. 用户的需求
能正常使用全部所需要的功能
功能强大,而且界面美观、易用、好用
内容健康,有益于生活和工作
用户的数据安全、受保护和兼容
及时得到新的产品或得到更完美的软件服务
软件可靠性很高,使用软件服务没有时间障碍
2. 软件企业的需求
软件质量是市场竞争的需要,质量好的软件是留住客户的最关键的手段之一,软件企业也必须依靠质量,才能立于不败之地;
高质量的软件可以大大降低“质量问题产生的成本”,增加公司的盈利;
软件已是国际化的市场,质量是进入国际市场的一个关键门坎;
容易维护、移植和扩充,以扩大市场或适应环境的变化。
这些要求的满足,最终体现在软件产品的质量上:
功能性,软件所实现的功能达到它的设计规范和满足用户需求的程度;
可用性,对于一个软件,用户学习、操作、准备输入和理解输出所作努力的程度,如安装简单方便、容易使用、界面友好,并能适用于不同特点的用户,包括对残疾人、有缺陷的人能提供产品使用的有效途径或手段;
可靠性,用户使用的根本,在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度;
性能,在指定条件下,用软件实现某种功能所需的计算机资源(包括内存大小、CPU占用时间等)的有效程度;
容量,系统的接受力、容纳或吸收的能力、或某项功能的最大量或最大限度,有时需要确定系统的特定需求的所能容纳的最大量、所能表现的最大值。如Web系统能承受多少并发用户访问、会议系统可以承受的与会人数等;
可测量性,系统某些特性可以通过一些量化的数据指标能描述其当前状态或理想状态;
可维护性,在一个运行软件中,当环境改变或软件发生错误时,进行相应修改所做努力的简易程度;
可维护性取决于理解软件、更改软件和测试软件的简易程度,可维护性与灵活性密切相关。高可维护性对于那些经历周期性更改的产品或快速开发的产品很重要。
兼容性,软件从一个计算机系统或环境移植到另一个系统或环境的容易程度,或者是一个系统和外部条件共同工作的容易程度。兼容性表现在多个方面,如系统的软件和硬件的兼容性、软件的不同版本的系统、数据的兼容性;
可扩展性,指将来功能增加、系统扩充的难易程度或能力。
预知后事如何,请读下回分解:第5回 软件测试所面对的现实
版权所有,软件测试演义® ——系列讨论的目录,见: 软件测试演义——中高级系列(序)