现在的位置: 首页 > 综合 > 正文

单元测试

2012年09月09日 ⁄ 综合 ⁄ 共 1130字 ⁄ 字号 评论关闭

 

目标

        尽早发现问题、尽快解决。软件测试就是用有限的时间来发现尽可能多的问题,而单元测试的目标是测试对象(类、函数等),是否满足自身声称的外部说明条件与遵守其内部约束。

 

理论

        软件测试可分为单元测试和集成测试二大部分,二者的区别在于单元测试是开发人员自己测试,集成测试则是交给单独的测试部门(QA)来完成。

        单元测试可以使用测试工具编写(如:NUnit、CPPUnit、 JUnit等,工具的作用仅是帮助你更加方便的完成工作),也可以纯手工编写。单元测试的手段和形式并不重要,目标和结果才是最重要的。在开发期间,应始终保证提交代码的同时提交单元测试代码。由于单元测试代码的维护成本很高,所以,应至少保证对核心功能(类和函数)进行有效的单元测试。

        集成测试是将通过单元测试的模块组合成可用的软件发给公司质量控制部门进行全面的测试,利用版本控制工具及时对返回的错误进行修改,如此反复,直到基本没有什么大的问题为止。整个测试阶段,始终坚持在时间允许的范围内设计尽可能多的测试用例进行测试,至少要覆盖常用的输入数据,对于难于解决或时间不足以解决的问题,保留测试用例(测试数据),便于问题重现。

 

单元测试方法

        白盒测试是依赖于实现的,在帮助开发人员排除低层次的程序错误方面是有效的。白盒测试对于确保高质量组件来说是必要的,但不是充分的(白盒测试对需求和规范无能为力)。黑盒测试由需求和规范来驱动,对于大多数情况来说是独立于实现的。开发时往往趋向于用白盒测试来保证可靠性和覆盖度。但是,也可以使用黑盒测试来检验软件的需求和规范。也就是说,依赖于实现的白盒测试可以用作内部测试,而黑盒测试可以用做外部测试。

        单元测试理论上为白盒测试法,但一样可以采用黑盒测试法(等价类划分和边界值分析)来完成。不管是黑盒测试、还是白盒测试,软件测试本身就存在一个缺陷,即测试的不完全与不彻底性。任何程序只能进行少量(相对于穷举的巨大数量而言)有限的测试,在未发现错误时,并不能说明程序没有问题。

        为简化单元测试,通常可以使用黑盒测试的混合体。即设计一组有效类数据、设计一组无效类数据、设计一组边界值分析数据,对相应数据产生的结果进行比较,如果同预期结果相匹配为测试通过,否则为测试失败。

 

对象自测方法

        在编程时习惯性的加入对象自测代码,将会彻底测试大多数的使用路径,可以有效的减少单元测试代码编写的复杂度。同时,由于对象自测是内嵌到代码中的,所以也意味着减少了单元测试代码的维护成本。例如:为不变式(任何情况下都不会改变的值或对象)增加断言语句(assert),在重要路径中进行调用来判断对错。

抱歉!评论已关闭.