`
javalinjx
  • 浏览: 85734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Junit 学习笔记

阅读更多

上周空闲,看完了《单元测试之道》,这里对自己的学习做个小结,以便以后查阅:

 

 

一般原则:
测试任何可能失败的地方。
测试任何已经失败的地方。
对于新加的代码,在被证明正确之前,都可能是有问题的。
至少编写和产品代码一样多的测试代码。
针对每次编译都做局部测试。
签入代码之前做全局测试。
需要回答的问题:
我如何知道代码运行是否正确呢?
我要如何对它进行测试?
还有哪些方面可能会发生错误?
这个问题是否会在其他的地方出现呢?
测试哪些方面 :使用junit 测试的6个方面,统称为:Right-BICEP:
Right --- 结果是否正确?
B --- 是否所有的边界条件都是正确?
I --- 能查一下反向关联吗?
C --- 能用其他手段交叉检查一下结果吗?
E --- 你是否可以强制错误条件发生?
P --- 是否满足性能要求?
编写测试用例原则,correct边界条件:
conformance (一致性)-- 值 是否和预期的一致。
Ordering(顺序性)--一组值是该有序或者无序的。
Range(区间性)--值是否位于合理的最小值和最大值之内。
Reference(引用 、耦合性)--代码是否引用了一些不在代码本身控制范围之内的外部资源。
Existence(存在性)--值是否存在(例如,是否是非null,非0,在一个集合中等等)。
Cardinatity(基数性)--是否恰好有足够的值?
Time(相对或者绝对的时间性)--所有事情的发生是否是有序的?是否是在正确的时刻?是否恰好及时?
环境方面的因素:
内存耗光。
磁盘用满。
时钟出问题。
网络不可用或者有问题。
系统过载。
调色板颜色数目有限。
显示分辨率过高或者过低。
0-1-n 原则
Mock对象:
真实对象具有不可确定的行为(产生不可预测的结果,如股票行情)
真实对象很难被创建
真实对象的某些行为很难触发(如网络错误)。
真实对象令程序的运行速度很慢。
真实对象有(或者是)用户界面。
测试需要询问真实对象它是如何被调用的(例如,测试可能需要验证某个回调函数是否被调用了)。
真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍问题)。
借助于mock对象,我们就可以解决上面提到的所有问题。在使用mock对象进行测试的时候,总共有3个步骤,分别是:
1. 使用一个接口来描述这个对象。
2. 为产品代码实现这个接口。
3. 以测试为目的,在mock对象中实现这个接口。
mock提供了所有系统功能的现成接口,所以在更多的时候,人们可能(也许吧)会使用它而不是直接调用诸如System.currentTimeMillis()这样的东西,而是躲在接口背后拥有了控制一切行为的能力。
这就是mock对象的全部;伪装出真实世界的某些部分,使你可以集中精力测试好自己编写的代码。让我们接下来看看更加复杂的例子吧。
好的测试是一个A-TPIP:
1. 自动化 (Automatic).  调用测试自动化和检查结果自动化。
2. 彻底的 (Thorough).
3. 可重复 (Repeatable).
4. 独立的 (Independent).
5. 专业的 (Professional).
在你发现bug时,所需要做的就是以下四个步骤:
1.验明bug;
2.编写一个将失败的测试来证明bug的存在。
3.修正代码,让测试通过。
4.验证所有的测试仍然可以通过(也就是,你没有在修补的时候损坏其他的测试)。
测试的频率:
1.编写新的函数    编译并运行本地的单元测试。
2.修正bug    运行测试来让bug现形;修并再次运行单元测试。
3.每次成功编译之后   运行本地的单元测试。
4.每次对版本控制的签入   运行所有的模块或者系统的单元测试。
5. 持续不断地   应当有一台专门的机器来运行完整的构建和测试。每次都应该从头开始,并且整天自动运行(要么是周期性的,要么是每当有版本控制的签入行为的时候)
编码和评审以这样的顺序进行:
1. 编写test case 和/或测试代码。
2. 评审test case 和/或测试代码。
3. 经评审修改test case 和/或测试代码。
4. 编写能通过所有测试的产品代码。
5. 评审产品代码和测试代码。
6. 在每次评审后,修改测试代码和产品代码。
在某些机器上测试失败:
这究竟是为什么呢?这些机器之间有什么区别呢?
比较明显的答案可能是下面这些资源的差异:操作系统版本号、运行库、java运行引擎、数据库驱动等。
统一使用junit 方法的setup 和 tearDown方法。

 

1
5
分享到:
评论

相关推荐

    Junit学习笔记~

    Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~

    JUnit学习笔记

    NULL 博文链接:https://greatjone.iteye.com/blog/1161009

    Junit学习笔记

    Junit学习笔记和课件,欢迎学习爱好者下载资源,共同学习。。

    JUnit学习笔记JUnit学习笔记JUnit学习笔记

    JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人员做单元测试之用。当前版本4.1,可以从www.junit.org网站上获得。与早期的JUnit 3相比,...

    JUnit学习笔记之NetBeans入门篇

    JUnit学习笔记之NetBeans入门篇,一句话好东西

    JUnit3.X和4.X学习记录及用例

    JUnit学习笔记及练习用例,主要分为JUnit3.8.2和JUnit4.8.1两个版本。

    junit个人学习笔记

    现在的版本都4.3.1,3.8.1的感觉好象不好找,虽然www.junit.org能够找到,但对我们这种英语不好的来说,还是不好找,再说了,现在好多的教程都是以3.8.1来写的,所以在这里把我找到的3.8.1传上来供大家以后下载 博文链接:...

    Junit良葛格学习笔记

    Junit良葛格学习笔记,喜欢的下啊!!!

    Junit学习.rar

    中间有各种Junit文档,Junit各种操作手册!3.8--4.9。还有本人学习的笔记。绝对值得下载。

    JUnit4学习笔记

    JUnit4是JUnit框架有史以来的最大改进,其主要目标便是利用Java5的Annotation特性简化测试用例的编写。 先简单解释一下什么是Annotation,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也...

    Junit4学习笔记—入门篇.pdf

    以一个简单的DEMO介绍如何在Eclipse下使用JUnit4。供初次接触JUnit的同学学习

    Junit 4.0 学习笔记

    NULL 博文链接:https://thisliy.iteye.com/blog/786293

    林信良java学习笔记

    林信良学习笔记(内容):ajax学习笔记,算法学习笔记,计算机图形学,C++学习笔记,设计模式,Hibernate学习笔记,Java学习笔记,JSF,JSP/Servlet,JUnit,Spring,Struts等

    Selenium+Eclipse+Junit+TestNG自动化学习笔记

    Selenium+Eclipse+Junit+TestNG自动化学习笔记

    JUnit知识点滴集合笔记

    JUnit知识点滴集合笔记,这个包里面包括了好几篇文档,一定会让你对JUNIT有一个全新的认识。 JUnit 4 抢先看.doc JUnit in java 真正的测试用例实战.doc JUnit起步.doc junit实现过程.doc JUnit中如何测试异常.doc ...

    Junit In Action 学习笔记----下载不扣分,回帖加1分,童叟无欺,欢迎下载

    第一部分:Junit精粹 第1章:带着你为一个简单的对象创建测试。在此过程中介绍了单元测试的好处,理念,和方法。 随着测试越来越复杂,我们把用junit创建更好的测试方案来展现。 第2章:进一步深入研究了Junit的...

    SpringBoot 学习笔记+完整教程

    * 集成 Junit 单元测试 * 读取系统环境变量 * 使用自定义 properties * 改变默认包扫᧿ * 自定义启动 Banner * 导入 spring XML 配置文件 * 热部署 * 监控和管理生产环境 * starter 详解 * 依赖的版本 * 文件上传 * ...

    《良葛格Java JDK 5.0学习笔记》.rar

    Java JDK 5.0学习笔记 1至6章及附录A和附录B 包含java特性、java学习方法、网络资源汇总、jdk下载和安装、path与CLASSPATH的设置、java基本语法、关于对象的认识、数组、字符串(String类))、Ant简介、JUnit简介。 ...

Global site tag (gtag.js) - Google Analytics