使用 JUnit 测试 Java 应用程序 课堂笔记(三)

一.测试驱动的开发(TDD)

1.定义:先开发测试用例,再编写应用程序代码,用于驱动软件设计。

2.步骤:

  • ①创建测试场景 编写测试用例
  • ②编写应用程序代码
  • ③运行测试 若失败则重复②③ / 若成功则④ 
  • ④重构应用程序代码

3.TDD 优点:

  • 调试时间减少:代码根据定义的测试用例开发。
  • 灵活、可维护和可扩展的代码:采用此技术开发的软件是松散耦合且可轻松维护的。
  • 关键分析和设计:设计了测试场景并编写了测试用例时才开发代码。
  • 可执行文档:测试用例可由其他程序员参考,以了解代码用法及其用途。
  • 面向用户的开发:测试用 例是从用户角度编写的。

4.有效测试的准则:

  • 识别并测试方法的 边界条件,因为方法实际上是在其边界值上生成意外结果。
  • 验证 测试结果,因为还要预料得到不正确的结果。
  • 了解意外问题,借助模拟对象 模拟这些错误 并将它们注入代码。
  • 通过不同策略 交叉检查 测试用例的结果。
  • 应用程序代码应该进行良好 优化 以处理大型复杂值,并且必须始终返回准确结果。

5.有效测试的属性:

  • 自动: 单元测试应该 自动运行,并且没有任何外部依赖,所有连接和配置应该由测试完成。
  • 彻底: 测试用例应该覆盖代码的所有方面并提供 100% 的代码覆盖率。
  • 独立测试用例应该是 独立 于其他测试用例并且松散耦合的。不得对其他测试用例或者类具有任何依赖。
  • 专业测试应该符合生产 标准 并且代码应该发送给生产服务器。
  • 可重复测试用例应该是 可重复的,并且在执行时生成同样结果。

6.常见编程问题:

  • 不可忽视中断失败的测试用例
  • 如果代码处理小数值,那么应该总是使用浮点数对它进行测试
  • 避免测试用例长时间运行
  • 创建低耦合的测试用例
  • 测试应该总是生成同样结果,无论在什么机器上执行
  • 不要将任何类型的生产代码或者配置代码放到 main() 方法中

二.连续集成测试(CI)及使用 Jenkins

1.基本概念

CI 测试:应用程序将以一定的时间间隔彼此集成,以验证整体功能和稳定性。

CI 测试优点:

  • 提供便捷的单元集成 
  • 允许自动部署
  • 提供项目的运行状况报告
  • 实现独立于平台的开发
  • 提供项目的更好可视性

实现 CI 连续集成测试的工具(独立平台):

  • Hudson
  • Jenkins

一些 CI 杂谈:

  • CI 测试是一种软件开发做法,团队成员 频繁集成工作 以加速调试过程。
  • 连续集成测试方法开发的应用程序将更稳定可靠,因为应用程序的模块将 定期 进行集成。
  • CI 测试能连续集成应用程序单元并在开发的 早期阶段 识别问题。
  • CI 测试能在指定时间后 自动 部署模块。
  • CI 测试可以生成项目的 运行状况报告。
  • CI 测试提供了环境以在 不同平台上 集成和测试模块。

2.Hudson 简介

简介:Hudson 运行在 Glassfish 或 Apache Tomcat 之类的服务器上,可执行 Ant Maven 项目。

优点:可轻松安装,通过 基于WEB 的 UI 配置,跟踪 jar 文件及其版本。

执行构建后操作:

  • 生成 JUnit 测试结果报告:.xml 格式保存到指定路径。  
  • 发送电子邮件通知:向开发人员发送电子邮件通知不稳定的工作版本。

3.Jenkins 简介

  • Jenkins 起初作为 Hudson 项目开发,和 Hudson 简介基本相同,但是比 Hudson 有更多的更新和补丁。
  • 要启动 Jenkins,需要访问位于端口 8080 localhost 服务器。
  • Jenkins 能将所有模块组合到一个*储存库并将它们构建在一起。
  • 分析工作版本状态图标:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 分析工作版本稳定性图标:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 注册:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 使用 Jenkins 构建目,需要配置 JDK、Ant 和 Maven 路径:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • Jenkins 上执行 CI 测试,执行以下步骤:
  • 1. 创建新项。使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 2. 配置该项(见下图构建触发器 Build Triggers)。
  • 1+2.上面两步创建了项目,显示:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 3. 创建工作空间(在 Jenkins 安装文件夹中寻找 workspace)。
  • 4. 将文件复制到此工作空间(将 IDE 上的项目源文件复制到 Jenkins 安装处的 workspace)。
  • 常用的构建触发器是:
  • 在其他项目构建之后构建 / 定期构建:        使用 JUnit 测试 Java 应用程序 课堂笔记(三)
 
  • 不断循环构建,时间设置:使用 JUnit 测试 Java 应用程序 课堂笔记(三)
  • 默认情况下,Jenkins 抽取到当前用户的 .jenkins 文件夹。