一、定义单元测试和集成测试
1.什么是单元测试
单元测试是一段自动化代码,用来调用被测试的方法或类,而后验证基于该方法或类的逻辑行为的一些假设。
单元测试几乎总是用单元测试框架来写的。它写起来很顺手,运行起来不费时,它是全自动的,可信赖的,可读性强的、可维护的。
2.什么是集成测试
集成测试(integration test)意味着把两个或多个相依赖的软件模块作为一组进行测试。
缺点:存在“意外缺陷”,在代码修改后,如果不能对以前的功能运行测试,很可能会无意中破坏已有的功能。可通过“回归”处理
3.单元测试和集成测试的区别
集成测试运行多个集成到一起的代码单元,用来确认软件中应该出现的一个或多个结果;
而单元测试通常只孤立地运行和测试某一个单元
二、几个概念
1.什么是回归
“回归”是指以前好的功能,现在却出现问题了
2.什么是被测系统
单元测试是在“被测系统”(system under test,SUT)上执行的;
3.什么是遗留代码
遗留代码(legacy code),即与不再支持或制造的操作系统或其他计算机技术相关的源代码。
也有称“没有测试的代码”为遗留代码。
4.什么是逻辑代码
逻辑代码(logical code)是指任何一个小段包含逻辑的代码,尽管可能不大。只要包含一个或多个以下要素的就是逻辑代码:if语句,循环,switch或case语句,计算,或任何其他类型的判断代码。
5.什么是重构
重构(refractor)是指改变一段代码而不改变其功能。如果改变方法的名称,你就做过重构。如果曾近把一个大方法分成几个小法,那么你就重构过代码。代码依然做同样的事情,但它更容易维护、阅读、调试和变更。
三、优秀的单元测试
自动的、可重复的
容易实现的
一旦写好,将来都可使用
任何人都可运行
单击一个按钮就可运行
可以快速地运行
四、测试驱动开发
写单元测试,不仅仅是如何写,更是在开发过程中何时写,如此这般便引入了测试驱动开发
测试驱动开发的技巧
1.写一个失败测试,证明最终产品还缺少代码或功能
2.编写生成代码,满足测试的期望,使测试通过
3.重构代码