IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 基于JUnit的单元测试技术 -> 正文阅读

[开发测试]基于JUnit的单元测试技术


Part 1 概述及相关概念


敏捷开发与测试

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方式开发软件。
在项目初期,把一个大项目分为多个相互联系但也可独立运行的小项目,并分别完成。
测试和质保(QA)贯穿整个项目周期,一些过程更是提出了“在编写软件之前先编写测试”(测试优先)的概念。

在敏捷开发中,测试是开发的一部分,敏捷开发强调不同层次的自动化测试。
测试金字塔见下图,
越底层的测试,如单元测试,成本更低,效率更高,缺陷更容易定位。越高层的测试,越能反映真实需求。

单元测试

单元测试是对软件基本组成单元/模块进行的测试,又称为模块测试。重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决。

概述

单元测试中多采用白盒测试和黑盒测试相结合的方法,既关注单元功能,又关注程序模块的逻辑结构。
单元测试的内容包括:单元功能测试、模块接口测试、数据流测试、逻辑路径测试等。

单元测试用例设计

每个测试用例应包含4个关键元素:

  • 被测单元模块初始状态声明,即测试用例的开始状态。
  • 被测单元的输入,包括被测单元读入的任何外部数据。
  • 测试用例实际测试的代码。
  • 测试用例的期望输出结果(应在测试进行前在测试说明中定义)。

测试用例设计技术

(1)黑盒测试:使用单元接口和功能描述,不需了解被测单元的内部结构。目的主要是检查功能是否实现或遗漏;检查人机交互是否有错;性能等其他特性要求是否满足等。

(2)白盒测试:使用被测单元内部如何工作的信息。目的主要是保证一个模块中所有的独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。

(3)灰盒测试:借助于源代码和测试工具,通过黑盒和白盒测试相结合的方法进行测试的技术。


Part 2 JUnit


简介

JUnit 是一个Java的单元测试框架
由Kent Beck(极限编程创始人)和Erich Gamma(《设计模式》作者)建立,是xUnit家族中最为成功的一个。

所有的单元测试框架应该遵循3条规则:

  • 每个单元测试必须独立于其他单元测试而运行。
  • 框架必须以单项测试为单位来检测和报告错误。
  • 必须易于定义要运行哪些单元测试。

JUnit 的安装在IDEA环境下很简单,放一个链接 IDEA的 JUnit 的安装与运用

用 JUnit 编写测试代码

JUnit 在4.0版本之前和之后发生了很大改动,技术上从新不从旧,这部分主要对 JUnit 4.x 版本进行说明。

JUnit 4.x 框架相对于 JUnit 3.x 而言,
最明显的特性是引入JDK 1.5后的annotation(注解),
使得定义测试用例及方法不像 JUnit 3.x 一样死板。

  • JUnit 4.x 中任意一个(有声明测试方法的)普通类都可以当做测试用例,而不再要求测试用例一定要继承TestCase类。
  • 声明测试方法时,不再要求测试方法的名称一定要用“test”开头,而是用注解 @Test 来声明。
  • 同理,还有注解 @Before 和 @After, @BeforeClass 和 @AfterClass。
  • 测试用例中,相关方法的执行顺序为:@BeforeClass → @Before → @Test → @After → @Before → @Test →@After → @AfterClass

@Before 方法进行一些固件的准备工作。 @After 方法进行一些固件的善后工作。
@BeforeClass 方法在所有的测试方法运行之前调用的一个方法,进行一些开销高昂的初始化操作如:连接数据库,它的方法必须是static的。 @AfterClass 方法在所有的测试方法运行之后调用的一个方法,如:关闭数据库连接,它的方法也必须是static的。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-16 11:36:27  更:2021-07-16 11:37:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 12:50:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码