测试术语和常见问题

2.1         测试术语和常见问题

对于测试人员而言,软件测试的一些概念就像算术中的“加、减、乘、除”一样,应该认真学习。本节主要介绍一些软件测试中常见的术语以及测试工作中经常遇到的一些问题,为后面深入地学习后面的内容打好基础。

1、 什么是软件测试?

IEEE1983年提出了软件测试的定义:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。”

2、 测试的目的是什么?

测试的目的是为了发现尽可能多的缺陷。虽然这个观念很容易让人接受,但是却很难落实到实际工作中,因为测试的目的常常被定位为为“证明软件没有问题”。

正确理解测试的目的十分重要。如果认为测试的目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地设计很多不易暴露错误的测试示例,这些测试用例恰恰证明软件实现了预期功能,这样的测试是不真实的。成功的测试在于发现了迄今尚未发现的缺陷,测试人员的职责是设计这样的测试用例——它能有效地揭示潜伏在软件里的缺陷。

3、 软件缺陷定义是什么?

(美)RonPatton在著作《软件测试》中把符合下列五个规则的问题称为缺陷:

1.  软件未达到产品说明书表明的功能;

2.  软件出现了产品说明书指明不会出现的错误;

3.  软件功能超出产品说明书指明范围;

4.  软件未达到产品说明书虽未指出但应达到的目标;

5.  软件测试员认为软件难于理解、不易使用、运行速度缓慢,或者最终用户认为不好。

在软件开发过程中,软件测试的任务就是致力于发现上面的问题。

4、 缺陷是谁“生产”的?

这是一个“老生常谈”的问题,尤其在追究一些质量问题责任地时候。常常听测试人员抱怨:“这些模块简直是垃圾!不值得测试!浪费我的时间!”,开发人员则抱怨:“重要的问题发现不了,却成天盯着那些无关痛痒的小问题,还不如自己去测试!”。

不符合用户要求的都可以称之为缺陷,因此缺陷的来源主要有两类:一类是没有正确理解用户需求,由系统需求或者分析人员设计出来的缺陷,这类缺陷主要由设计人员“生产”;另外一类是程序开发人员没有按照设计要求进行开发或者编写的代码存在错误而引起的缺陷,这类缺陷由程序开发人员“生产”。

对于那些开发流程不规范的组织,通常开发人员会完成测试前的大部分工作。在这种环境下,几乎没有什么设计文档,软件开发主要按照程序设计人员的“大脑”来进行,这个时候的缺陷则主要由开发人员“生产”。

2-1详细的描述了软件设计与用户需求的巨大差异,通过图2-1也很容易发现为什么现实中会有大量的应用软件不能更好地帮助用户实现预期目标的真正原因。

因为测试人员没有写过一行代码,所以测试人员不是缺陷的“生产”者,但这是否意味着测试人员可以在一旁“幸灾乐祸呢”?事实恰好相反,测试人员与缺陷关系更加密切,他们是“缺陷的缺陷”的制造者。所谓“缺陷的缺陷”,主要指测试人员提交的“不是缺陷”的缺陷,即测试人员没有正确理解需求,从而提交了根本“不是缺陷”的缺陷,这种缺陷也是测试人员经常受到指责的重要原因。

关于上面的抱怨,测试和开发双方都需要摆正心态:因为实际双方都在不停的“生产”缺陷,只是创造的方式不同罢了。

2-1开发出的软件与用户实际需求的差异

 

5、 缺陷产生的原因是什么?

在上个问题中,已经介绍了设计人员、开发人员、测试人员都会“生产”软件缺陷。在实际工作中,缺陷产生的方式更是层出不穷,原因也是多种多样。例如开发人员去接杯水,碰巧和另外一个接水的同事聊了几句,结果回到工位时忘记了要在某个判断语句追加此前已经想好的一个判断条件,这无疑会产生一个缺陷。因此很难一下子把缺陷产生的原因全部列举出来,下面只是一些引起缺陷的典型原因:

1)开发人员不太了解需求,不清楚应该“做什么”和“不做什么”,常常做不合需求的事情,因此产生了缺陷;

2)软件系统越来越复杂,开发人员不太可能精通所有的技术。如果不能正确地掌握新的技术或者知识,可能会产生缺陷;

3)技术文档普遍编写的很差,甚至文档本身就有缺陷,导致使用者产生更多的缺陷;

4)软件需求、设计报告、程序经常发生变更,每次变更都可能产生新的缺陷;

5)任何人在编程时都可能犯错误,导致程序中有缺陷;

6)技术人员常处于进度的压力之下,不能静心思考也很容易产生缺陷,尤其是在“Deadline”临近之际,频繁的加班使开发人员疲于应付进度,也更容易写出包含缺陷的代码;

7)很多开发人员过于自信,喜欢说“没问题”,因此对于一些代码不进行认真的调试,这也是一些缺陷产生的原因;

8)频繁的拷贝代码也会把缺陷随之复制到新的程序中,尤其是复制其它团队成员的代码更容易使一些缺陷隐藏在程序中。

6、 软件的质量应该由什么人来负责?

对于一些开发管理混乱或者测试刚刚起步的组织,产品质量一发生问题,习惯上会归咎于测试小组,认为测试人员没有测试好产品,所以才产生了那么多的缺陷。

对于开发管理规范一些或者测试体系已经建立一定时间的组织,如果客户投诉产品质量问题,则往往开发人员与测试人员会一起接受处罚。这种处理方式多少会让测试人员心理稍稍平衡一些。

追根溯源,软件发生质量问题实际是项目管理不规范引起的。因此,如果要追究责任的话,软件质量问题的责任应该由整个团队来承担。只有提高整个团队的开发水平,才能提高质量。

此外,也应该认识到软件发现问题是正常的现象,很少有软件实现了零缺陷,即使微软也不例外。作为团队领导,应该具体问题具体分析,不要老是考虑如何惩罚自己的员工。

7、 什么是软件测试管理?

测试管理是一个很难定义的概念,包含的内容很多,通俗的讲就是以正确的方式对公司的测试工作进行管理,而“正确的方式”就是在工作中的不断摸索和改进后的管理方式,探索并发现这些方式也是测试管理的重要任务之一。

在软件测试过程中,进行的一系列计划、沟通协调、进度监控等工作构成了测试管理的基本要素,软件测试管理还要评估风险、规划资源、不断提高团队的能力,最终形成一个高效的团队来完成质量的管理。

本章主要讨论测试管理的一些基础知识,为进一步的深入测试管理工作打好基础。

8、 软件测试管理的任务是什么?

大多数用户能够接受软件的“不完美”,即接受软件存在一定的缺陷。但是用户对缺陷的接受是有“度”的,数据丢失、系统不稳定、功能性错误都是不可忍受的,测试管理需要掌握这个“度”,控制好产品的质量,在测试实施过程中选择正确的策略,最终使自己的产品能够为用户所接受。

如果对产品进行完全测试,通常会需要非常高的成本,乃至耽误进度和失去市场。因此“完全测试”在实际中对于多数项目是不现实的。例如微软的Windows操作系统,从新产品发布就开始不停地打补丁——修复潜在的缺陷。虽然大家对微软的Windows操作系统颇多微辞,但是微软的Windows操作系统已经得到了广大用户的认可。诸如微软如此实力的公司也不会进行“完全测试”,而是尽快去抢占市场,获得回报后再去不断改进产品的质量来满足用户的需求。

可见,测试管理的目标是在质量、进度、成本三者之间做出平衡,使产品能够满足符合客户需求。

 

在一些特殊的行业中,它们的软件产品是不允许发生错误的。例如航天、银行、医药等领域的软件产品,通常需要进行较全面的测试。这些领域的软件产品在质量方面往往投入更大些,但是测试管理工作在本质上仍然是平衡质量、进度、成本三者关系。

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值