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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 跟我学c++中级篇工具应用——单元测试 -> 正文阅读

[开发测试]跟我学c++中级篇工具应用——单元测试

一、单元测试

单元测试是最基本的测试,一般来说,它是由设计开发人员来做的,或者直白一点是由程序员展开的。它属于白盒测试。它并没有什么官方权威的定义,通常认为是对软件中最小单元及单元之间的相关逻辑进行的测试。这个最小单元就比较难于定义,到底是一个类,一个函数,一组函数,一个功能模块还是什么?所以就需要开发人员有较高的抽象能力。这也是TDD(测试驱动开发)开发的一个缘由,这里不展开什么是TDD。
单元测试的特点在于,它的输入参数和输出结果是稳定、可控的。它可以明确基础单元的基础逻辑和功能的鲁棒性,提高软件质量,降低后期测试的压力并尽早的发现解决Bug。
而随着技术的进步,又出现了现代单元测试,其一方面模糊最小单元的粒度,另一方面在单元测试时引入框架进行黑盒测试,从而满足全自动运行的最小单元级别的软件测试。
其实无论是哪种,都是为了把基础打牢,这才是根本。“基础不牢,地动山摇”。
单元测试有几个基本的要求:
1、异常测试尽量覆盖全面。
2、增加断言控制,并设置相关显示结果提示。
3、提高测试代码设计能力。
4、尽量降低软件耦合,提高单元测试数量。
5、测试代码尽可能重用。
6、争取引入TDD。

二、GTest的基本应用

单元测试的框架(当然,从更宏观的角度看,还可能含有一些自动化的工具相关框架,这里仅指单元测试)有很多,比较常见的有xUnit系列,如JUnit,JMeter等。在C/C++中,常用的有Boost Test,CppUnit,TestNgpp和谷歌的gtest框架。这次主要介绍Gtest,其它的有兴趣可以自己查阅相关的资料,都比较好用,不用有什么担心。
看一个gtest的基本应用:
先看一下源码Demo:

int Add(const int & e)
{
  if (e < 0)
  {
    return -1;
  }
  vec.emplace_back(e);
  return 0;
}

再看一下测试代码:

TEST(AddTest, testNP)
{
EXPECT_EQ(-1, Add(-100));
EXPECT_EQ(0, Add(100));
}

从软件工程和技术架构师的角度来说,单元一定要有,必须要有,肯定要有。但实际情况,得看上峰的眼色,具体就不展开了。

三、总结

单元测试的优势在于可回归性和随时可以进行,相比其它测试,简单明了。同时,编写清晰完整的单元测试本身就是一份软件代码的开发和说明文档,由此看来,单元测试的重要性非同一般。特别是文章开头提到的TDD,更是一种思想上的升华。可惜的是,在国内,能够认真真正贯彻并编写单元测试的公司基本上是没有。什么原因,大家都清楚,没有讨论的必要。尽管如此,还是建议大家有时间的情况下,尽量编写一个单元测试,这样,就会有一个从应用者来看待自己代码的一个角度来发现自己代码问题的算途径,至于能不能发现,尽人事,安天命。
后面的文章会继续展开对gtest应用的介绍!
在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:48:24  更:2021-10-11 17:48:34 
 
开发: 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年11日历 -2024/11/18 2:29:42-

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