本文为作者在使用Junit做单元测试时测试计划中的一部分,在这里共享出来,希望大家多指教。
测试策略
1、 类测试阶段
确保类实例满足类的设计描述;
测试驱动:使用Junit实现独立的测试类;
类的实例方法没有和任何类交互的确保覆盖100%;
先测试没有交互的类,然后逐步组合测试;
使用Code Coverage工具进行类代码覆盖测试;
类测试用例确定方法之一:根据前置和后置状态确定测试用例(前置条件中可指定输入值,包括常见值和边界值,来增加测试用例的测试覆盖率),根据前置和后置条件的不同组合方式产生不同的测试用例具体测试方法体;
类测试用例确定方法之二:根据代码确定测试用例。所有Public声明的方法都需要被测试(确定的);Protected和Frendly声明的方法有所选择的被测试(模糊的);所有Private声明的方法都被禁止测试(确定的)。
类测试用例确定方法之三:根据状态转换确定测试用例。
用例命名方式:1、根据用例方法命令;2、根据前置条件和后置状态命名。
尽量使测试代码不依赖于数据(不要因为外部数据不同而产生不同结果)。
进行语句覆盖率分析。
2、 功能确认与接口测试测试阶段
用例按照需求描述(软件概要设计说明书和详细设计说明书)确定,再编写测试代码来满足需求描述的功能;
验证程序和详细设计说明的一致性;
功能确认与接口测试范围:单元接口、局部数据结构、重要的执行路径、错误处理的路径、影响上述几点的边界条件
先是简单功能验证测试,通过后再进行该功能的复合功能测试;
简单功能测试都通过则进行条件组合搭配测试,路径覆盖测试;
测试边界条件:未初始化、Null值、大小值、临界值、初始值等;
检验每个软件单元模块能否正确的实现其功能,满足其性能和接口要求;
单元测试中测试每个单元模块,集成测试中进一步把单元组装成部件并测试其正确性;
进行逻辑覆盖率分析。
3、 性能与效率测试阶段
单个功能运行时间分析;
选取典型测试用例使用JUnitPerf工具多线程持续运行观察运行情况;
单个函数的性能分析、函数的调用频率分析、代码执行频率分析、响应时间、并发性;
在源代码的入口与出口进行插桩,然后收集时间数据来测量代码的运行时间与调用次数;
针对影响性能的代码段作优化处理;
4、 内存分析
内存分配未成功,却使用了它
内存分配虽然成功,但是尚未初始化引用它
内存分配成功并且已经初始化,但操作越过了内存的边界
忘记了释放内存,造成内存泄露
释放了内存却继续使用它
使用全局测试工具分析(OptimizeIt,Jprobe等)