对每个方法都应该有单元测试,而且是一对多的关系。除了对预期功能对方法进行单元测试,还需要验证各种输入,及数据量大,并发量大时针对这个方法的单元测试* 测试哪些内容Right-BICEP* RIGHT 是否是自己预想的正确结果* B(boundary) 边界条件 CORRECT*Conformance 一致性 是否是期望的入参,比如处理邮箱,那么期望的是入参将是一个正确格式的邮箱,如果不是,该如何处理*Ordering 有序性*Range 区间性, 索引下标, 角度不能超过360,可以将原生类型放到类里面,通过类初始化原生变量的值前加限制*Reference 引用耦合性 前条件 后条件*Existence 存在性 判空操作*Cardinality 基数性*Time 时间性 并发问题* I 反向测试 ,比如求数的平方根,那么将结果相乘后再和原来的数对比,或者插入之后搜索是否和插入的结果一致* C 交叉检查使用另一种算法求出结果 对比是否相等,相当于算法中使用暴力解法的答案和优化后的结果的答案做对比来确认优化结果是正确的* E 强制产生错误条件, 资源 环境问题,比如内存满,磁盘满,cpu耗尽。网络中断* P 性能特性 确保性能曲线能趋于平稳,而不是一直增长, 少量数据可以正常 运行,大量呢?巨量呢?*** 使用Mock对象* 1. 简单的替换 :比如 获取当前时间时,我们可以根据需要替换成未来的需要的时间* 2. Mock对象 :*① 创建一个 接口*②产品代码 依赖这个接口, 我们创建一个实现了这个接口的产品对象*③测试这个产品代码的时候,我们创建一个mock对象实现这个接口,从而自定义数据* 3. 测试Servlet: servlet自带的mock request对象和response对象* 4. EasyMock对象: MockControl** 好的测试所具有的的品质 A-TRIP* A(Automatic) 自动化* T(Thorough) 彻底的* R(Repeatable) 可重复的* I(Independent) 独立的* P(Professional) 专业的