测试开发——单元测试和集成测试

前面向大家介绍了黑盒测试和白盒测试,但是软件测试的方法不单单只有这两种方法,还有单元测试、系统测试、用户验收测试、集成测试、回归测试、冒烟测试、α、β、γ测试、性能测试、安全性测试等。今天要向大家介绍的是单元测试和集成测试。我们主要围绕“3W+1H”的方式来介绍。

先来看看单元测试。

单元测试

什么是单元测试?

单元测试按照字面意思的理解就是对软件最基本组成单元的测试,一般属于软件测试中最低级的测试方法。一般被测单元都是在被隔离的情况下进行单元测试的。

为什么要对软件进行单元测试?

单元测试可以验证被测代码的执行结果与设计思路的一致性。软件研发人员一般在编写代码的时候,通常会每编写一个函数或实现一个功能时都会通过反复调试来让编译通过,但这样做仅仅只是让代码没有语法上的错误,语义方面的正确性还需要进一步的验证。

单元测试可以接触软件的内部实现机制,发现在别的测试阶段难以发现的问题。软件的单元测试是初级阶段的测试,在该阶段软件产品还处于未集成的阶段。在该阶段需要对产品软件的基本组成单元的内部原理和对外接口进行必要的测试检查可以发现在其他测试阶段难以发现的问题。

单元测试可以极大地降低软件开发的成本。单元测试一般处于产品开发较早阶段,一般是由开发人员单独完成或由开发人员与测试人员合作完成。随着产品的研发越趋于完善,产品开发涉及的工作人员将会越来越多,这样不仅增加了沟通成本,而且如果在前期阶段有未处理的问题放到后期去解决,其时间成本和经济成本将是前期成本的数倍。

什么时候开始做单元测试?

产品软件的单元测试一般是在编码阶段进行的,在该阶段软件的开发团队已经给出了通过审核的设计文档,在编码阶段开发人员会预先设计好各单元模块的对外接口,然后再实现单元模块的内部代码,最后就可以对各个单元模块进行测试。

如何去做单元测试?

对于每个被测单元,测试人员要先知道每个单元的对外接口,一般是全局变量、类的公有成员、函数的形参、返回值、函数名等。测试人员通过这些对外接口分析其输入的值域,然后根据是输入的值域编写测试数据。这里常用到的黑盒测试用例设计的方法,包括等价类划分、边界值分析、语法测试等方法。
之后可以对被测单元的内部进行白盒测试,白盒测试要求测试人员去了解软件内部的实现细节、这些细节包括数据流和控制流。用到的白盒测试的方法有语句测试、分支/判定测试、条件测试、基本路径测试等。
此外,由于测试单元的相互独立性,通常需要编写驱动函数或者桩函数来模拟被测单元的调用和被调用。
这里介绍两个概念,桩模块和驱动模块。
驱动模块指的是在测试被测模块时,需要在一个模块构造一个实验数据,作为传入被测模块的输入,然后在新的模块中调用被测模块,这样的模块称为驱动模块。

桩模块指的是在测试被测模块时,被测模块可能会调用一个未完全实现的模块(或连续多个模块的调用),遇到这样的情况,测试人员可以创建一个简单地临时模块用来模拟被调用模块的部分或全部功能,这样的模块被称为桩模块。

说完单元测试,我们再来介绍一下集成测试。

集成测试

什么是集成测试?

集成测试指的是对软件产品已测试完成的单元或组件之间的接口进行测试,集成测试又称为组装测试或子系统测试。
注意区分这里的子系统测试与上面提到的系统测试,这两者的区别后面再向小伙伴们介绍,这里就不做展开说明了。

为什么要做集成测试?

集成测试可以测试出单元测试无法测出的产品缺陷单元测试只是保证了软件产品各个模块的代码正确性,各个模块之间的逻辑正确性无法得到保障,而集成测试正好可以互补单元测试的这种弊端。

集成测试结合了黑盒测试和白盒测试的特点来对被测组件进行测试在集成测试阶段,测试人员不仅需要在微观上对被测组件的内部实现进行测试,而且要在宏观上对各个组件进行测试,其他阶段的测试都是无法做到的。

集成测试可以有效地找出软件产品各个组件的兼容性问题一般情况下,软件产品开发越往后越加的困难,因为各个组件模块之间的相互作用,一直让开发人员很是头疼,但是集成测试可以有效地定位到产品模块间不兼容的地方,从而使问题更容易得到解决。

集成测试可以有效地评估集成之后的模块对原系统的影响当产品引入一个新的模块出现问题时,集成测试可以很好地为是否决定保留该模块提供可靠的参考价值。

什么时候做集成测试?

集成测试一般是被测组件完成了单元测试之后,所有组件未被集中为一个稳定的模块。测试人员可以根据被测单元的功能相近程度来确定集成顺序,直到当前所有被测单元稳定兼容之后,再去集成其他单元。

怎么做集成测试?

集成测试的方法有很多,一般包括自顶向下集成法、自底向上集成法、三明治集成法、大爆炸式集成法等。
自顶向下集成法一般是从程序顶层的模块开始集成,通常是从程序的主函数开始集成。

自底向上集成法与自顶向下集成法正好相反,是从程序的最底层的模块开始集成。

三明治集成法,顾名思义,就是从程序的两端模块开始向中间集成。

大爆炸式集成法等到系统的所有模块都完成单元测试之后,再将所有的模块放到一起做集成测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值