软件测试模型与等价划分法

上一篇对软件行业开发的常见模型进行了了解,并且对于常见的软件测试分类以及每一种软件测试的工作内容以及分类有
了深入的了解,接下来学习软件测试中的测试模型,以及基础的测试用例如何编写
软件测试模型

随着软件开发的发展,软件测试行业也开始逐步发展完善,经过大量的测试实践,也出现了很多常见的测试模型,针对接触到的模型--如V模型、W模型、H模型等,来看看软件测试的模型是什么样子的,与开发模型有什么不同?

V模型

V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪80年代后期提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果,在V模型出现之前,往往开发的工作会占用周期的绝大多数,导致最后上线前测试只是个收尾的工作,V模型出现后,提高了测试介入的周期和时间,使得开发和测试的过程流程化,测试的工作也专业化起来,如下:


V模型.png

从图中可以分析出V模型的优点:

1.既包含了底层的测试,如单元测试,检验了代码的质量,也包含了整体的测试,如系统测试,检测了整个系统功能的完善性

2.很明确测试的每一个阶段以及每一个分类,使得工作拆分,流程明确,使得每一步流程结束后可以进行下一步流程,当全部完成后,即完成整个系统的开发

但是,V模型也存在和优点相违背的致命缺点:

1.因为V模型的测试覆盖面很广,从单元测试到集成测试到系统测试,这部分测试很多时候都需要编写大量的测试用例来验证,遇到需求改动频繁,或者功能改动较多的情况,大量的测试用例编写会非常耗时,并且灵活度很低,细小的代码改动都需要进行用例的修改

2.因为V模型的开发阶段和测试阶段完全分开,按照顺序执行,等测试遇到问题的时候,已经到了项目的中后期,这个时候如果软件缺陷严重,甚至导致大量改动和返工,会导致上线周期推迟或者对应时间无法推出产品

W模型

由于V模型太过于单一,并且顺序性极强,导致测试团队和开发团队必定有一方资源利用不合理,而能实现阶段流程同步的W模型则是基于V模型的一大改进,此模型由Evolutif公司提出:开发一个V,测试一个V,组合而成的W模型,如下:


W模型.png

可以看出来,对比V模型,W模型属于双V模型,可以实现测试和开发完全阶段同步进行,更好的将每一个团队资源利用,所以带来的优点更加明确:

1.开发和测试周期同步,测试的工作细分化并且不仅仅针对系统和完成的产品测试,而是可以在产品设计阶段就提出测试和不合理等意见,将产品在一开始就减少可能存在的问题

2.分阶段测试,工作内容明确,并且每一个阶段接触到的测试内容不多,可以更细的发现问题,维护程序的成本和风险会减少很多,减少了程序上线等影响

但是同样的,V模型的很多问题虽然解决,W却带来了新的问题:

1.模型更加细分化,如果遇到代码迭代、需求变更频繁,依然还是会出现线性执行的情况,甚至会导致双方阶段混乱

2.W模型虽然前期对产品设计和需求设计等进行审查,但是很多公司其实并不能标配产品经理和UI设计图,所以W模型的一半测试能力很大幅度削弱,从而和V模型一般

3.技术实施很难,对于开发和测试的文档编写以及配合都是个考验,专业度要求较高

H模型

即使是W模型,其实也是两个V之间有先后顺序,一个先做完另外一个再去测试,但是有木有办法改进,使得整个流程能做到串行呢,最大的达到资源利用率?有,改进的模型--H模型来了,它将测试活动完全独立出来,形成一个完全独立的流程,同时将测试准备和测试执行也表现出来了。比如测试开始之前,测试团队会为测试准备对应的数据,针对测试的产品找到对应的准入点,判断出来是否满足执行测试的条件,而这个时候开发也在同步进行着开发、维护、迭代工作


H模型.png

H模型完成了资源合理利用,实现了串行化,带来的优点如下:

1.软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行

2.软件测试活动可以尽早准备、尽早执行,具有很强的灵活性,更多的准备和思考,可以减少测试的出错率和复用率

3.可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的

H模型带来的缺点和W模型类似:

1.要有严格的测试管理机制-因为模型很灵活,必须要定义清晰的规则和管理制度,否
则测试过程将非常难以管理

2.H模型比起其他模型对于专业性和技能要求更高,除了测试相关,还要熟悉DB和产品的细节,必要时候还需要简单查看代码逻辑

3.测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难

4.对于跨部门以及内部沟通配合要求较高,如果出现人员技能不足,导致进度滞后,或者开发和测试之间,测试与测试之间配合出现问题,如版本迭代了,测试依然使用之前产品,功能改动不说明等,会导致留下很多难以发现的隐患

测试用例定义

首先,做测试必须要编写测试用例,满足不同阶段不同类型测试使用,而测试用例则是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是指导测试工作进行的依据和对照。比如现在有个需求:有一部手机,我们来检查手机是否可用,那么我们可以先设计几个测试步骤,比如按开机键,就相当于是一组测试数据,检测是否能正常开机,如果有电,则能开机后成功使用,如果没有电则开机失败,这里的预期结果和操作则是一个简单的测试用例

等价划分法是什么

软件测试中存在很多种经典的测试用例写法,例如等价划分法,分类法,边界法,因果图,正交表,判定表法等,后续我们学习这些测试用例方法,首先我们先来了解最经典的等价划分法:

等价类划分是一种重要的、常用的黑盒测试方法,不需要考 虑程序的内部结构,只需要考虑程序的输入规格
即可。它将 不能穷举的测试过程进行合理分类,从而保证设计出来的测 试用例具有完整性和代表性

而等价划分法分为有效等价类无效等价类,其中按照了需求说明输入正常数据或者得到正常结果的情况称之为有效等价类,反之则为无效等价类

等价分类法步骤

了解了等价分类法的定义和分类,我们来看看具体的操作步骤:

1.首先在编写用例之前思考有效等价类和无效等价类的界限区分

2.有效等价类尽量覆盖所有的条件分支以及极值覆盖

3.无效等价类首先保证与有效等价类相反的情况,其次再去编写特殊情况下的结果,如特殊字符,空格等

使用分类法编写简单计算器案例的测试用例

接下来,找个案例来编写测试用例:

计算1-100的整数之和,不满足请提示:请输出1-100的整数

首先我们可以把有效等价类和无效等价类所有情况都编写在excel中,如图,每一行都包含用例编号、所属等价类、条件和结果,然后将每一种可能列上去,最后去根据当前用例的结果去操作,进行结果比对


计算1-100之和的等价划分法.png

推荐阅读更多精彩内容