一.软件测试的定义
1.软件测试的目标应该服从于软件项目的目标,软件测试通过更高效的方法和工具,提高软件开发的效率和质量
2.在规定的条件下,对软件进行审核、运行、评估,验证软件系统是否满足需求规格说明书
3.预防、发现、跟踪软件缺陷,提高产品质量
4.软件测试通过技术手段,更早、更快、更多的发现软件缺陷,从而降低这些缺陷后期可能会给软件带来的风险
二.软件测试的思维
1.软件测试只能证明软件缺陷的存在,而不是为了证明软件没有缺陷
2.软件测试绝不能证明软件100%没有缺陷,即使经过了最严格的测试,仍然可能还有深层次的缺陷隐藏在软件当中
3.测试的越早,发现问题后解决的成本越小
4.评审---头脑风暴---交叉测试
5.成功的测试在于发现了迄今为止尚未被发现的缺陷 >>>(座右铭,追求)
三.软件测试的原则
1.任何的测试都应该追溯到用户需求
2.测试工作是有计划的,应该尽早的开展测试工作 >>> 测试计划
3.应尽量避免测试自己开发的程序
4.“彻底的测试”难以成为现实,要考虑时间、费用的限制,不允许无休止的测试
5.测试设计和测试执行应该进行分离
6.软件缺陷具有免疫性,应尽可能采用多种方法和数据对软件进行测试
四.全程软件质量保障
1.决定软件质量的关键因素有需求分析、设计和实现等,测试是贯穿于上述过程的一种检查手段
2.测试是提高软件质量最直接的手段,但不是全部,软件开发周期中的各个环节都会影响到软件的质量
3.测试能提高软件的质量,但是提高质量不能完全依赖测试
五.如何进行高效的测试
1.通过一些持续集成的手段,尽早的开展测试活动,还可以加入自动化技术,通过不断、反复的测试发现更多的缺陷
2.测试可以做到对缺陷的预防
3.测试需要对缺陷进行检查
4.一个高质量的软件并不是测试出来的,而是设计和开发出来的
六.软件测试与软件缺陷
1.软件缺陷被测试工程师和开发工程师们统称BUG
2.软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户需求,甚至有可能破坏或泄露用户的重要数据
3.虽然软件测试是为了消灭软件缺陷,但是迄今为止,还没有一种有效的软件缺陷检测机制可以完全达到这个目标
七.为什么软件缺陷无法完全消除
1.软件运行环境的多种多样
2.逻辑关系复杂
3.多种多样的数据结构等因素
4.在软件开发的各个环节都可能把软件缺陷引入系统中
80-20原则:80%的缺陷聚集在20%的模块中,经常出错的模块修复后还会经常出错
软件测试流程:需求分析---制定测试计划---编写测试用例---执行测试---撰写测试报告---消除软件缺陷---完成测试
(测试需求-测试计划-测试设计-测试实施-测试执行-测试报告-测试完成)
八.测试启动准则
同时满足以下条件,允许开始测试
1》测试计划已经制定并且通过审批
2》测试用例已经编写并且通过审批
3》被测试对象已经开发完毕并等待测试
九.测试何时结束
1.基于测试用例的规则:写满多少多少条用例
2.基于“测试期缺陷密度”的规则:5天总BUG数小于多少个,没有严重BUG
3.基于“运行期缺陷密度”的规则
十.测试完成准则
1.对于非严格系统可以采用“基于测试用例”的准则,且同时满足以下条件:
①功能性测试用例通过率达到100%
②非功能性测试通过率达到90%时(非强制,根据公司部门的要求来)
2.对于严格系统,应当补充“基于测试期缺陷密度”的规则:
③n天内“测试期缺陷密度”全部低于某个值m
十一.软件测试的需求、类型、阶段、策略
1.软件模型V模型:需求分析---概要设计---详细设计---编码---单元测试---集成测试---系统测试---验收测试
2.软件测试的对象:
①软件是由文档、数据、程序组成的
②测试应该是对文档、数据以及程序进行的测试
60%以上的软件错误并不是程序错误,而是分析和设计错误
测试概念扩大化,提倡软件全生命周期测试的理念
3.软件测试的阶段:
单元测试、集成测试、系统测试、验收测试是“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想
①单元测试:粒度最小、一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”,测试依据为“开发设计文档”
②集成测试:介于单元测试和黑盒测试之间,起到“桥梁”作用,一般由开发小组采用白盒加黑盒的方式来测试,既要验证设计又要验证需求,测试依据为“开发设计文档”,“需求文档书说明书”
③系统测试:粒度最大,一般由独立的测试小组采用黑盒方式来测试,主要测试系统是否符合需求,测试依据为“需求规格说明书”
④验收测试:与系统测试非常相似,主要区别在于测试人员不同,验收测试由用户执行
ALPHA和BETA测试