软件缺陷的产生主要是由软件产品的特点和开发过程决定的,如软件的需求经常不够明确,而且需求变化频繁,开发人员不太了解软件需求,不清楚应该“做什么”和“不做什么”,常常做不合需求的事情,产生的问题最多。同时,软件竞争非常厉害,技术日新月异,使用新的技术,也容易产生问题。而且对于不少软件企业,“争取时间上取胜”常常是其主要市场竞争策略之一,实现新功能、很酷的功能,被认为比质量更为重要,导致日程安排很紧,需求分析、设计等投入的时间和精力远远不够,也是产生软件错误的主要原因之一。
软件错误产生的原因可能还有其他一些原因,例如,软件设计文档不清楚,文档本身就存在错误,导致使用者产生更多的错误。还有沟通上的问题、开发人员的态度问题以及项目管理问题等。《微软开发者成功之路(之一)》概括为有以下七项主要原因:
● 项目期限的压力
● 产品的复杂度
● 沟通不良
● 开发人员的疲劳、压力或受到干扰
● 缺乏足够的知识、技能和经验
● 不了解客户的需求
● 缺乏动力
这些原因,会引起下列主要领域的主要错误(缺陷):
需求规格说明书(Requirement Specification or Functional Specification )包含错误的需求、或漏掉一些需求, 或没有准确表达客户所需要的内容;
需求规格说明书中有些功能不可能或无法实现的;
系统设计(System Design)中的不合理性;
程序设计中的错误、程序代码中的问题,包括错误的算法、复杂的逻辑等。
若能及早排除软件开发中的错误,有效的减少后期工作的麻烦,就可以尽可能的避免付出高昂的代价,从而大大提高系统开发过程的效率。
软件测试的目标,就是为了更快、更早地将软件产品或软件系统中所存在的各种问题找出来,并促进开发各类人员尽快地解决问题,最终及时地向客户提供一个高质量的软件产品,使软件系统更好地满足用户的需求,同时满足软件组织自身的要求:
1. 用户的需求
● 能正常使用全部所需要的功能
● 功能强大,而且界面美观、易用、好用
● 内容健康,有益于生活和工作
● 用户的数据安全、受保护和兼容
● 及时得到新的产品或得到更完美的软件服务
● 软件可靠性很高,使用软件服务没有时间障碍