我的理念是想做一个专业的测试人员,必须有深厚的测试理论基础。这就是以下文章的来源---想巩固自己的学识的同时分享给同行们,也希望对新手们能有一定的帮助。
这里面的很多内容也会跟经验有关,若各位看客有自己的想法也可以提出来,互相探讨,共同成长。
在此先谢谢大家了。
本章一共包含3大内容:
1:缺陷如何影响我们的生活
2:什么是缺陷和为什么会有缺陷
3:软件测试人员是哪些人和他们的职责
下面将根据这些内容一一介绍
著名的软件错误案例
本节,作者通过展示生活里的实际例子介绍了软件缺陷如何影响我们的生活,如迪斯尼的狮子王,千年虫等,通过这些实际案例,引入了缺陷的概念------影响我们正常使用软件的问题。这里就不一一介绍了,具体的内容,大家若有兴趣,可以参考原书《软件测试-Ron Patton》。
注:这章节对于初次接触软件测试的人来说,是个很好的入门,作者通过这些例子引入了缺陷的概念,让我们对软件的缺陷有了初步的认识。
什么是缺陷
在给出标准的定义前,请各位看客思考2分钟,将自己的理解跟标准的比较一下。
经典定义如下:
1:产品没有实现产品规格说明书里提到需要实现的功能
2:产品实现了产品规格说明书里提到不需要实现的功能
3:产品实现了产品规格说明书里没提到的功能
4:产品没有实现产品规格说明书里没提,但是应该要实现的功能
5:产品很难被理解,很难使用,性能问题,或者UI问题等非功能性问题
为帮助大家的理解,在这里附上原文:
1.The software doesn't do something that the product specification says it should do.
2.The software does something that the product specification says it shouldn't do.
3.The software does something that the product specification doesn't mention.
4.The software doesn't do something that the product specification doesn't mention but should.
5.The software is difficult to understand, hard to use, slow, orin the software tester's eyeswill be viewed by the end user as just plain not right.
注:关于缺陷的定义的思考:
根据很多新手的反馈,对他们来说缺陷就是执行软件后发现与测试用例里预期输出值不一致的问题。这种情况下的缺陷的定义是非常狭隘的,只是提到了整个软件项目的开发后期里的缺陷,而实质上从项目成立的时候,缺陷就已经存在了,包括产品规格说明书。细心的人也许已经发现了,经典定义是将产品与产品规格说明进行对比,是的,经典的定义漏掉了产品规格说明书里的缺陷。所以具体来说,缺陷是指产品里不满足客户需求的任何功能。(注意:这里强调的是客户,很可能会存在萝卜青菜,各有所爱的情况)
为什么会有缺陷
关于这个内容,凡是参与过项目开发的,基本都会有自己的理解,各位可以自己回顾并整理下。在这里我根据自己的经验结合书本给个列表,抛砖引玉吧(具体的原因都有具体的解决方案,后面将会提到):
一、需求阶段引入的缺陷(这个阶段的缺陷大部分都会被遗留到用户接收测试阶段):
1: 跟客户沟通时,少理解或理解错了客户的需求
2: 需求文档不完善
3: 无需求文档(目前这种相对越来越少了)
4: 需求变更太频繁导致内部沟通不良
开发阶段引入的缺陷
1: 对需求的理解有误
2: 某天状态不好或心情不好
3: 项目太复杂
4: 需求文档不完善,沟通不良,导致
5: 项目时间太紧
6: 个人经验
二、测试阶段引入的缺陷
1: 改缺陷时考虑不全,引入了新的缺陷
2: 或者跟测试沟通不良,导致互相理解错误
三、其他无效缺陷
1: 重复的缺陷
2: 测试环境问题导致的无效缺陷(如数据库原因,网络原因等)
缺陷的成本
这个不用多说,基本都明白:缺陷发现的越晚,修复的成本越高.
软件测试人员的职责
本书给的定义是软件测试人员的目标是尽早发现缺陷,并确保缺陷得到修复
注:重点是在对尽早和得到修复上的理解和运用上。这么简短的一句话,基本包含了整个测试的精髓。
成为一个优秀软件测试人员需要具备的条件
1. 冒险家:未知的状况对他们很有诱惑力,很喜欢尝试各种各样的方式去运行软件
2. 问题处理者(troubleshooter):擅长发现软件出错的根本原因,很喜欢解谜题
3. 锲而不舍:不停地尝试,面对不能重现的问题时,总是千方百计地去重现
4. 创造性的:对测试人员来说,平淡的测试是不够充分的,他们必须想出创造性的或者疯狂的方法去发现缺陷
5. 完美主义者:他们为完美而努力,他们知道这很难,但是他们为离完美又进了一步而欢呼
6. 修正自己的判断:测试人员需要决定他们需要测什么,需要多久的测试时间,确定他们碰到的问题是否是一个缺陷(测试人员基本的常识,属于经验总结)
7. 有技巧且圆滑的:测试人员一般都是带来坏的消息,如果将程序比做开发人员的小孩,那么测试人员需要告诉开发人员说,你的小孩好丑。优秀的测试人员知道怎样能很好的跟开发人员合作。
8. 很有说服力:并不是所有的缺陷都会被修复,因此,测试人员需要很清楚的表达自己的问题,并说明为什么缺陷需要被修复,并跟踪确保缺陷得到了修复。
总结:
以上基本是属于软件测试及缺陷的相关概念,关于在实践中,如何运用这些概念,将在接下来的系列中提到。
w