认识软件测试

一 软件测试的定义和分类

1.1 定义

  • 通俗说:软件测试就是在软件投入运行之前,对软件需求分析,设计规格说明书和编码实现的最终审查,它是软件质量保证的关键步骤。
  • IEEE给出的定义是:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。

除了上述两种定义方法之外,还有其他一些定义,这些定义并没有对错之分只是进行定义的角度不同。

这里有一个关于软件测试心里学的有意思的话题:

  • 观点一:软件测试是为了证明软件不存在错误的过程。
  • 观点二:软件测试是为了发现错误而执行程序的过程。

现在比较认同的是观点二 有兴趣的小伙伴可以看一下Glenford J.Myers提出软件测试目的。

1.2分类

在这里插入图片描述
下面进行大概说明


1.2.1按开发阶段划分


  • 1.单元测试

单元测试又叫模块测试,用于检测每个程序单元能否正确实现详细设计说明中的模块功能等。

  • 测试的最小单元是模块。
  • 单元测试需要从程序的内部结构出发来设计测试用例。
  • 2.集成测试

集成测试也叫组装测试,将进行单元测试后的程序模块采用适当的集成策略组装起来,对接口及集成后的功能进行正确性检测。

  • 集成测试过程中会形成很多临时版本,每个版本在提交时会进行冒烟测试,即对程序的主要功能进行验证
  • 3.系统测试

系统测试是对集成的硬件和软件系统进行测试,在真实或虚拟系统运行的环境下,检查完整的程序系统能否和系统正确配置,连接并满足用户需求。

  • 4.验收测试

按照项目任务或合同,供需双方签订的验收依据文档进行的整个系统的测试和评审。


1.2.2 按是否查看代码划分


  • 1.白盒测试

白盒测试也叫结构性测试或逻辑驱动测试。白盒测试基于产品的内部结构进行测试的,检查内部操作是否按规定执行。

  • 2.黑盒测试

黑盒测试也叫功能性测试或数据驱动测试。黑盒测试只要知道软件是做什么即可,即给出一些输入,能得到相应的输出即可。

  • 3.灰盒测试

介于白盒测试和黑盒测试之间,关注输出对输入的正确性,同时也关注内部表现。


1.2.3 按测试执行方式划分

  • 1.静态测试

不运行测试程序,主要实对软件的编程风格,结构逻辑等方面进行检查。

  • 2.动态测试

运行测试程序,通过输入测试用例,对其运行情况进行分析,以达到检测的目的。


1.2.4 按是否手工执行划分

  • 1.手工测试 : 由人工进行测试
  • 2.自动化测试 : 借助软件工具进行测试

1.2.5 按测试实施组织划分

  • 1.开发方测试 :由开发方进行测试
  • 2.用户测试 :在用户的应用环境下,检测和核实软件是否符合自己预期的要求。
  • 3.第三方测试 :由介于软件开发方和用户方之间的测试组织进行测试。

二 软件测试的过程模型

2.1 V模型

在这里插入图片描述
V模型从左到右描述了基本的开发过程和测试行为,并清楚的描述了测试阶段和开发过程期间各阶段的对应关系。
但在V模型中测试是在需求分析,设计和编码之后进行的,前期问题不能及时发现,会造成较大的修改成本。

2.2 W模型

在这里插入图片描述
W模型改善了V模型在编码之后进行测试的局限性,W模型将测试伴随整个软件开发周期,可以尽可能早的发现问题。V模型和W模型都是将开发和测试结合形成的模型,需要严格的指令表示商议阶段完成结束,才能正式开始下一阶段。但是实际工作中各个阶段之间并没有严格的区分,是交叉进行的,因此需要新的模型来解决这个问题。

2.3 H模型

在这里插入图片描述
H模型的出现很好的解决了上述问题,H模型将测试过程完全独立,贯穿于整个产品周期,与其他流程并发进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。

三 软件测试的原则

1.完全测试程序是不可能的

例: 测试windows计算机器中的加法功能,需要测试任意两个整数,实数的加法运算几乎是不可能完成的,输入量太大,输出量也很多。

2.软件测试是有风险的行为
例:在Windows计算器加法测试中未测试1314+520的情况,就意味着1314+520的计算结果可能出错。
对软件不能进行完全测试,而不测试又会漏掉软件缺陷这是矛盾的。测试数量越多成本越大,测试数量太少又不能很好的发现软件缺陷,因此我们要在软件测试数量和发现软件缺故障之间做出较好的平衡。
在这里插入图片描述
3.测试无法显示潜伏的软件缺陷

软件工程师可以报告已发现的软件缺陷,却无法报告潜伏的软件缺陷。

4.软件缺陷的集群现象

软件缺陷可能会成群出现,一处有问题,附近的好几处都有问题。造成该现象的原因有

  • 程序员疲倦
  • 程序员往往犯同样的错误
  • 有些小问题看似没有关系,但有可能是一个及其严重的原因造成的这些问题

5.杀虫剂怪事

软件测试的越多,其免疫能力越强。

6.并非所有的软件缺陷都能被修复

软件修复的过程是有风险,需要成本的,且软件缺陷也有等级之分,因此并不是所有的软件缺陷都能被修复。造成此现象的原因有:

  1. 没有足够的时间
  2. 不算正真的软件缺陷
  3. 修复风险太大

7.难以描述的软件缺陷

存在但尚未发现的软件缺陷不能进行修复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值