两个测试模型:
一:软件测试V模型:从上到下是一个开发模型,从下到上是一个测试模型(V模型也是瀑布模型的一个变种)
需求分析--->计划---->设计---->编码----->测试
用户需求 验收测试 需求分析与系统 系统测试 概要设计 集成测试 详细设计 单元测试 编码
1)概要设计:设计整体的架构和框架
2)详细设计:模块和模块之间的详细设计
3)单元测试和集成测试通常都是由我们的开发人员进行的
优点:
V模型左边的测试每一个阶段是右边的开发每一个阶段一一对应,左边的每一个阶段是右边每一个阶段测试的依据,更好地描述了这些测试阶段和开发阶段的对应关系,比较清晰,明显
缺点:
1)测试介入太晚,会失去前期错误及时纠正的这样一个阶段,不能很好地适应需求变化的项目,每一个阶段是单一串行执行,无法应用到敏捷开发
2)前期出现的问题,后面才会发现,测试在编码后面,丢失掉及时解决bug的最佳时机,左边的每一个阶段和右边每一个阶段对应的,测试介入的比较晚
3)测试预留出足够的时间,否则问题是会暴露给线上用户
二.软件测试W模型:
W模型增加了软件开发阶段应该同步进行的验证和确认活动,在我们的需求分析完成之后,测试人员就应该参与到对需求的验证和确认活动中,早早地找到问题所在,同时对需求的测试也有利于及时了解项目难度和测试风险,及早的制定应对措施,显著减少总体测试时间,加快项目进度,测试介入比较早,前期的风险可以比较早的发现,快速的纠正
优点:
1)测试从需求阶段就开始介入了,项目风险在早期就能够被发现,项目风险一遗漏的概率还是比较小的
2)两个V迭代了一起,用户需求阶段,测试阶段就开始进行介入了,验证了各个阶段的合理性,更好的保证软件的质量,前期的缺点可以及时地发现;
缺点:
1)前一个阶段或者步骤完成之后,后一个阶段或者步骤才可以开始进行执行,每一个阶段性比较强
2)开发模型和测试模型也在保持着一种前后的线性关系(比如说我们的需求分析完成之后,咱们才可以做验收测试准备,需求分析和系统设计完成之后,才为系统测试做准备,编码之后才可以进行测试);
3)也是一个重文档,重过程,所以他是不支持敏捷开发模型的
4)不能很好地适应需求变化的项目
黑盒测试工程师:把代码看成一个黑匣子,只关心输入和输出结果之间的一个关系
白盒测试工程师:把代码看成一个百匣子,可以看到代码的本身,针对代码进行测试,发现可能会存在缺陷的情况
比如说举个例子:我们需要对QQ账号进行测试,要求QQ账号的长度范围是0-10
1)但是假设我此时我输入的QQ账号长度是2,5,8,此时软件功能没有任何问题
2)但是在代码中,假设变量是$message
if($message==4) return;
3)此时开发的代码就是有问题的,因为此时如果说输入了字符长度是4,那么就会跳出循环,出现BUG