单元测试之道Java版——读书笔记
单元测试知道Java版读书笔记
首先我们必须要知道我们所写的代码,它的功能是什么,如果我们不了解代码的行为,那么也就无从测试。
我们测试的目的,是为了我们整个程序架构的稳定,代码其实就是欧文要实现功能的底层基础,如果说前一步做错了,那么可能后面所做的都是无用功。所以好的单元测试能让我们缩短工作时间
通过编译只能代表你的语法和逻辑是正确的,但是不能代表你的程序能解决所有遇到的问题。
所谓的代码正确,是具有时效性的,它只能代表你在当前这个时间点能够满足用户的需求,但是客户的需求总是在变化的,所以我们需要时刻接受来自客户的反馈,然后实时更新,对于“正确”的定义可能是在不断变化的。
在单元测试中,有一个强调的部分是边界条件,书中举了求最大值的例子,找边界条件是做单元测试中最有价值的工作之一,因为bug一般出现在边界上,所以我们需要对于边界条件着重考虑。而且不光的是数据的边界条件,还有硬件的条件和用户使用的边界条件。
Right-BICEP原则:
Right-结果是否正确
B-是否所有的边界条件都是正确的
I-能查一下反向关联吗?
c-能用其他的手段交叉检查一下结果吗?
E-能否可以强制错误条件的发生
P-是否满足性能的要求
如果时间充足的话,我觉得还是穷举可能更好,并且考虑数据爆内存空间和时间。
Mock对象
mock对象是真实对象在调试期的替代品
如何用mock:
1、使用一个接口来描述这个对象
2、为产品代码实现这个接口
3、以测试为目的,在mock对象中实现这个接口
单元测试之道Java版——读书笔记的更多相关文章
- 《单元测试之道Java版》的读书笔记
总览 第2章 首个单元测试 第3章 使用JUnit编写测试 3.1 构建单元测试 3.2 JUnit的各种断言 3.3 JUnit框架 4. 测试什么? 5.CORRECT(正确的)边界条件 6.使用 ...
- 补习系列(8)-springboot 单元测试之道
目录 目标 一.About 单元测试 二.About Junit 三.SpringBoot-单元测试 项目依赖 测试样例 四.Mock测试 五.最后 目标 了解 单元测试的背景 了解如何 利用 spr ...
- java effective 读书笔记
java effective 读书笔记 []创建和销毁对象 静态工厂方法 就是“封装了底层 暴露出一个访问接口 ” 门面模式 多参数时 用构建器,就是用个内部类 再让内部类提供构造好的对象 枚举 si ...
- Linux设备驱动程序 第三版 读书笔记(一)
Linux设备驱动程序 第三版 读书笔记(一) Bob Zhang 2017.08.25 编写基本的Hello World模块 #include <linux/init.h> #inclu ...
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- Primer C++第五版 读书笔记(一)
Primer C++第五版 读书笔记(一) (如有侵权请通知本人,将第一时间删文) 1.1-2.2 章节 关于C++变量初始化: 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义 ...
- Java并发读书笔记:线程安全与互斥同步
目录 导致线程不安全的原因 什么是线程安全 不可变 绝对线程安全 相对线程安全 线程兼容 线程对立 互斥同步实现线程安全 synchronized内置锁 锁即对象 是否要释放锁 实现原理 啥是重进入? ...
- [转载]单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而又忐忑的心情点击界面上的 ...
- 单元测试之道(使用NUnit)
首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上 ...
随机推荐
- SpringMVC-12-SSM回顾与总结
12.SSM回顾与总结
- MATLAB 编译器的使用
MATLAB 编译器的使用MATLAB 编译器(相应命令为 mcc)可生成独立应用程序.库.COM 对象.Excel 插件,218 MATLAB 实用教程它根据目标类型生成合适的包装器文件.包装器文件 ...
- ScheduledExecutorService定时任务学习
scheduleAtFixedRate :每隔Xs执行任务 scheduleWithFixedDelay :上轮任务结束后的Xs后执行下次任务 如下是测试代码,就是at和with方法不同 public ...
- RabbitMQ安装、集群搭建、概念解析
RabbitMQ安装.集群搭建.概念解析 基本概念 为什么会产生MQ 1.解耦:采用异步方式实现业务需求达到解耦的目的. 2.缓冲流量,削峰填谷: 问:为什么会有流量冲击? 答:采用"直接调 ...
- 分布式服务(RPC)+分布式消息队列(MQ)面试题精选
分布式系统(distributed system)是建立在网络之上的软件系统.正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性.因此,网络和分布式系统之间的区别更多的在于高层软件(特别是 ...
- ubuntu桌面版修改屏幕刷新率之后无法进入桌面(一直卡在输入密码的界面)的解决办法
deb https://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiversedeb-src https://mir ...
- 浅谈Java多线程
线程与进程 什么是进程? 当一个程序进入内存中运行起来它就变为一个进程.因此,进程就是一个处于运行状态的程序.同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位. 什么是线程? 线程是进 ...
- Spring属性注入(set方式、构造函数方式、p名称空间、spel、复杂类型)
1.set注入方式 (1)注入的为值类型(八大数据类型)的数据 配置文件: <?xml version="1.0" encoding="UTF-8"?&g ...
- 自定义带边框TextView--边框粗细不一的问题
自定义带边框TextView 给textview加边框 最low的做法.textview外层套一层布局,然后给布局加边框样式(这么弱的做法,不能这么干) 自定义控件 canvas.drawLines ...
- c++ 在window下创建窗口的基本步骤
1. WinMain 函数的定义: 2. 创建一个窗口 2.1 设计一个窗口类 WNDCLASS 2.2 注册窗口类 2.3 创建窗口 2.4 显示及更新窗口 3. 进行消息循环 BOOL GetMe ...