软件测试总结(1)

一:软件测试基本概念

1.什么是软件测试?
测试产品的功能是否与预期的结果相同、是否满足客户的需要,寻找软件的bug,验证软件功能的正确性
2.软件测试的目的:(证明、检测、预防)
20世纪60年代:证明软件能工作,评估系统的风险承受能力
20世纪70年代中期:发现缺陷、错误和系统不足的地方
20世纪90年代:提供预防和减少可能存在的错误信息,并提早确定可以解决这些问题的途径
如今:
1)软件测试不仅仅是寻找出错误,而且要通过分析错误产生的原因,和错误可能发展的趋势,帮项目管理者发现当前软件在开发过程中存在的缺陷,以便及时改进
2)设计出有效的测试方法
3)没有发现错误的测试也是有价值的,完整的测试也是评估软件质量的一种方法
综上:软件测试是为了尽可能提早的发现问题或者缺陷来提高软件产品的质量
3.测试与调试的区别(从3个维度上来讨论)
1)参与人员不同:测试是由测试人员和开发人员一同完成,而调试是由开发人员完成
2)目的不同:测试时发现程序中的缺陷,而调试是解决程序中的问题
3)执行的阶段不同:测试一直贯穿与软件开发的生命周期,而调试主要在开发阶段。
4.软件测试的原则:
1)所有的测试要追溯到用户的需求(一切从用户的角度出发)
2)测试应该尽早的介入:如果早期的开发中就存在缺陷,那么越到后期,缺陷就会被放大,所以测试人员要尽早的并且不断地进行软件测试,以提高软件的质量,降低软件开发的成本
3)测试无法穷举:想要控制测试的工作量就要制定好测试方案,应根据优先级、测试成本以及风险分析来确定测试的关注点,以替代穷举,提高测试的覆盖率
4)比main开发者自测:程序员可能会对需求产生错误的理解,且自己设计的代码是很难被自己发现缺陷,所以应有独立的测试小组或者第三方来完成测试
5)群集现象:对方先错误或者缺陷较多的模块应该进行反复的测试
6)杀虫剂悖论:如果测试被反复使用,发现缺陷的能力就会越来越差,所以为了避免这种现象,测试用例需要进行定期的评审和修改,不断地增加新的不同的测试用例,进而发现更多的缺陷。作为专业的测试人员来说,一定要具备逆向思维的能力。
7)不存在缺陷的谬论:即使有的软件在测试过程中可能并未发现问题,也不能证明软件或者系统是完全正确的,因为测试只能用来证明软件存在缺陷,不能证明软件不存在缺陷,比如不能满足用户的期望,也是一种缺陷
8)测试活动依赖于测试背景:针对不同的测试活动,测试的策略和方法在选取上也是有所不同的。
综上:所以在测试中应该严格谨慎的按照需求文档或者原则的指导下进行测试活动,软件的测试原则有利于测试人员进行高质量的测试,尽早的发现缺陷,并负责分析、跟踪问题,对存在的问题和不足提出质疑,从而持续改进测试过程
**5.软件的生命周期:**需求分析------>计划------>设计------->编码------->测试--------->运行维护
6.开发模型
1)瀑布模型
2)螺旋模型
3)增量、迭代
4)敏捷开发
7.软件测试模型:
1)V模型:(RAD:快速应用开发)通过开发和测试同时进行的方式来缩短开发周期,提高开发效率
描述了基本的开发过程和测试行为,V模型的价值在于他强调软件开发的协作和速度,反映测试活动和分析设计的关系,并清除的描述了软件开发和测试阶段的对应关系
缺点:它将测试过程作为在需求分析、概要设计、详细设计以及编码之后的一个阶段,主要针对寻找错误,忽略了测试活动对需求的凡汐,系统设计等活动的验证和确认,如果需求分析前期产生的错误要到后期才能发现。
适用范围:适用于项目比较小,周期比较短的项目。随着软件行业的发展,业务规模不断地扩大,研发模型的不断改革,该模型已逐步被淘汰
软件测试总结(1)
2)W模型:是在V模型的基础上演变而来的,增加了软件开发各阶段中同步进行的验证和确认活动,W模型由两个V构成,分别代表开发和测试过程,它明确了开发和测试的并行关系
优点:验证和确认是在模型的实施过程中进行的,具体的说,就是验证是否做了正确的事情和确认是否把事情正确的做了。遵循了测试的原则,即在开发的过程中,测试人员一直在跟进,参与到对需求文档的验证和确认的过程中,以尽早的发现缺陷所在
缺点:需求、设计、编码等活动被视为串行,同时测试和开发活动也一直保持着一种线性的前后关系,商议阶段结束后,才可进行下一阶段的工作,这样就无法支持迭代模型
8.软件缺陷:(常常有被称作bug)
1)缺陷的标准定义:
从产品内部看,指软件开发或者维护过程中存在的错误、毛病等各种问题
从产品的外部看:是指系统中所需要实现某种功能的失效或违背
2)缺陷的种类
a)遗漏:规定或预期的需求未体现在产品中
b)错误:可能在设计阶段产生了错误,也有可能是在实现阶段编码引入的错误
c)冗余:按需求规格说明,未涉及的需求被实现了。造成该现象的原因有可能是开发人员的画蛇添足
d)不满意:如果用户对产品不满意也成为缺陷,简单的说产品越复杂,用户使用的要求也越开越多
3)缺陷的描述
a)发现问题的版本
b)发现问题的环境
c)错误重现的步骤
d)预期行为的描述
e)错误行为的描述
f)不要把多个bug放在一起