快捷搜索:

C/C++单元测试问答(摘要)

《C/C++单元测试问答》提出了一些新的、颇有实用意义的单元测试思路,为了方便涉猎,笔者收拾了这篇择要,完备内容请浏览http://www.KaileSoft.cn。

为什么要进行单元测试?

单元测试包管局部代码的质量

单元测试改善项目代码的整体布局

单元测试低落测试、掩护进级的资源

单元测试使开拓历程适应频繁变更的需求

单元测试有助于提升法度榜样员的能力

由谁进行测试?开拓部门照样测试部门?

应该由开拓部门进行单元测试!

由测试部门进行单元测试的问题:价值高,人手不够,延误了测试部门对其他测试的筹备事情。

由开拓部门进行单元测试的问题:担心影响开拓进度,法度榜样员不习气做单元测试,测试自己编写的代码,难于包管测试的效果。

无论由哪个部门做单元测试,都要面对一些问题,但开拓部门所面对的问题可以借助对象来办理,而由测试部门进行单元测试,要么无法真正实施,要么价值昂贵。

由测试部门进行单元测试为什么资源昂贵?

需多次重复理解法度榜样

反复沟通必要大年夜量光阴资源

晦气于发挥单元测试对代码布局的约束机制

延误测试部门对其他测试的筹备事情

纵然测试部门人手富裕,仅仅从效益来斟酌,也不应该由测试部门进行单元测试。假如测试部门原先就人力不富裕(进行单元测试的职员需具备编码能力),勉强由测试部门进行单元测试,结果每每是----没有结果。

由开拓部门进行单元测试能包管测试效果吗?

法度榜样员测试自己编写的代码,每每只斟酌“正常状况”,这当然会影响测试效果。但假如所用的单元测试对象能够统计各类白盒覆盖率,就能反省测试效果。当然,只做到这一点照样不敷的,由于白盒覆盖具有逾后逾难的特征,达到必然的覆盖率后,覆盖率的提升会很艰苦。假如测试对象功能足够强大年夜,能供给对象赞助用户快速地设计测试用例,达到完备的白盒覆盖,那么测试效果就能获得完全的包管。

实际上,假如没有充分的统计数据,没有达到足够的测试完备性,那么由谁做单元测试,效果都不能包管。

边编码边测试会影响编码进度吗?

传统的单元测试是很费时辛勤的事情,主要光阴耗损在于:编写测试代码、设计测试用例,假如开拓对象能自动天生测试代码,并且具有快速设计测试用例的功能,那么测试费时就很少;另一方面,假如测试对象还能供给数据,赞助法度榜样员收拾编程思路、快速发明差错,更高效地调试,那么就能大年夜量前进开拓效率,抵销测试所耗损的光阴,不只不会影响编码进度,以致加快编码进度。

实施单元测试必要改变开拓流程吗?

边开拓边测试,单元测试是编码行径而不是测试行径,测试代码看作是项目代码的一部分,法度榜样员提交产品代码时也要提交测试代码和测试申报,其他流程可以不作任何改变。

另一方面,在充分单元测试的根基上,因为具有高质量的局部代码,优越的整体代码布局,包管了代码的可扩展性和可复用性,同时,自动回归测试支持对代码的频繁改动而不用担心引入新的差错,是以,开拓流程自然会变得敏捷,可以适应频繁变更的需求,使系统阐发、架构设计和后期测试的压力减轻,自然而有效地改进了开拓流程。

单元测试测试哪些代码?

单元测试平日不测试很简单的代码,一样平常也不测试“界限代码”。很简单的代码轻易理解,例如Get/Set函数,这里解释一下“界限代码”。“界限代码”是指用于与外部系统交互的代码,例如用于处置惩罚用户界面的代码。数据库、文件、收集都可以看作是外部系统,用于读写数据库或文件、或造访收集的代码也可以看作是“界限代码”,这类代码应该自力出来,可以进行单元测试,但对这些代码的单元测试平日不能自动验证预期输出,而是必要人工不雅察。编程时,不要把通俗代码与“界限代码”混在一路,例如,不要把各类运算直接写在界面类中,做到了这一点,绝大年夜多半代码都可以进行单元测试。

实际事情中,单元测试能实现什么程度的测试覆盖?

单元测试的最低要求是100%语句覆盖,这个覆盖率照样不敷的,最好实现多种覆盖的组合,对照抱负的覆盖率组合是:100%的语句、前提、分支、路径覆盖,别的,测试对象最好还能自动天生界限测试用例捕捉未处置惩罚特殊输入形成的差错。在达到这种覆盖之后,残留的编码差错可以险些说没有了(设计方面的差错除外,这些属于集成或系统测试的范畴)。

单元测试若何改善项目代码的整体布局?

具有优越整体布局的代码,应该相符“低耦合”的特点,即具有“可测性”。测试不具有“可测性”的代码时一样平常会孕育发生编译差错,或者必要打桩才能测试,从而将问题裸露出来。发明问题后,重构代码、打消欠妥耦合一样平常不难,这种简单的重构将有效地改善代码的整体布局。

我盼望依附全自动的对象来完成单元测试,这一设法主见现实吗?

完全自动化是一个美妙的希望,但因为单元测试的基础特点,完全自动化的单元测试是不现实的。

与其他不合,单元测试是“隔离”的测试,要求代码具有可测性,一个项目以致一个文件中,难免会有一些影响可测性的代码,编译到这些代码时经常会孕育发生编译差错,是以,全自动的单元测试对象每每只能测试小部分代码,纵然应用某种技巧手段樊篱掉落编译差错,也得不偿掉,由于同时也樊篱掉落了改善代码整体布局的宝贵时机。假如采纳自底向上的要领,一个一个文件测试,测试一个文件前,先将该文件加入测试工程并编译,没有编译差错时再测试,这样可以及时发明并打消欠妥耦合,使代码具有可测性,这种非全自动的要领,可以测试绝大年夜多半代码,也包管了代码具有优越的整体布局。

另一方面,主要由测试对象自动天生测试用例来进行测试每每没有实际意义,由于测试对象无法自动懂得法度榜样的功能,是以,自动测试用例平日只能发明非常之类的极度差错,大年夜多半一样平常差错都是无法发明的。测试对象最紧张的不是自动天生测试用例,而是能供给快速建立和编辑测试用例的对象。

假如由开拓部门实施单元测试,那么测试部门要做哪些事情?

推动、组织单元测试的实施。单元测试既然叫做“测试”,开拓部门经常熟识不到其紧张性和需要性,必要由测试部门推动和帮忙组织实施。

拟订单元测试规范,培训单元测试技巧。

反省、审核单元测试结果,包管单元测试的有效性。

您可能还会对下面的文章感兴趣: