【DevOps进行时】自动化测试之单元测试

在DevOps建设中,主流的测试分层体系可以分为单元测试、接口测试和界面测试。Google曾提出一个经验法则:70%的小型测试,20%的中型测试,10%大型测试。

当然,这个比例不是确定的,不同类型的项目,测试需求也不相同:
  • 单元测试粒度最细,外部依赖少,适合开发团队快速排查错误,从而保证代码质量和异常处理; 
  • 接口测试相对界面测试成本较低,可以在标准的开发环境下运行,效益较高; 
  • 界面测试最为直观,但成本高,外部依赖多,实施起来最困难,接口测试和界面测试保证了产品的质量和数据验证。

一、单元测试

今天我们来讲讲单元测试。

  • 对于面向过程语言,单元是一个函数;
  • 对于面向对象语言,单元是一个类;
  • 如果是图形化软件,单元可能是一个窗口或者菜单。
总而言之,单元测试指人为规定的最小被测功能模块。 
缺少单元测试的项目会带来没有必要的重复工作,缺乏持续反馈机制,导致问题、压力、风险积累到后期爆发。充分的单元测试可以保证代码的质量和良好的异常处理。

根据测试内容将测试任务分为:强制性测试和推荐性测试。
  • 强制性测试包括:模块接口、局部数据结构、出错处理;
  • 推荐性测试包括:路径测试、第三方服务、数据访问层、超时测试。
  • 模块接口测试,指对通过被测模块的数据流进行测试;
  • 局部数据结构,要求检查数据类型说明、初始化、缺省值等;
  • 出错处理,指检查错误处理功能是否包含错误;
  • 路径测试,指对基本执行路径和循环进行测试,建议覆盖所有的逻辑语句;
  • 超时测试,指测试生产代码在某些情况下的运行时间是否会超过可容忍程度;
  • 数据访问层测试,指验收数据访问框架与SQL语句的联合正确性;
  • 第三方测试,指检查代码是否成功调起第三方服务。
实际开发中,要求开发人员针对生产代码必须进行强制性测试,选择进行推荐性测试,并且测试粒度达到一定要求。

二、自动化单元测试

自动化单元测试由四个关键部分组成:
  • 通过版本控制系统实现配置管理;
  • 由构建工具来管理依赖;
  • 测试框架方便测试用例编写和批量测试;
  • 通过反馈平台可以很方便的查看测试结果。

三、农行自动化单元测试实践

还在担心上手难?看看我行是如何做自动化单元测试的。

例如Java开发的项目。
  • 单元测试、打包、部署等都通过Maven的生命周期管理,测试用例的编写遵循Junit规范;
  • 项目的构建可以通过代码提交,也可以通过定时按周期触发;
  • 构建结束后在TFS上能够看到构建单元测试历史,以及单元测试代码覆盖率等信息。
今天的自动化单元测试内容就先分享到这里,接下来,还有更精彩的接口和界面自动化测试的内容分享,敬请关注!

【作者简介】叶岚

2009年加入农行,现任软件开发中心项目管理办公室质量控制组高级专员,从事测试过程管理和质量控制相关工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反转字符串中的单词 III leetcode

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Lets take LeetCode contest" 输出: "steL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单…

Zongsoft.Data 发布公告

很高兴我们的 ORM 数据访问框架(Zongsoft.Data)在历经两个 SaaS 产品的应用之后,今天正式宣布对外推广。它是一个类 GraphQL 风格的 ORM(Object/Relational Mapping) 数据访问框架。又一个轮子?在很长时间里,.NET 阵营似乎一直缺乏一个被普遍…

leetcode 旋转数组

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4] 示例 2…

使用 .NET Core模板引擎创建自定义的模板和项目

本文要点.NET CLI 包含了一个模板引擎,它可以直接利用命令行创建新项目和项目项。这就是“dotnet new”命令。默认模板集涵盖了默认控制台和基于 ASP.NET 的应用程序以及测试项目所需的基本项目和文件类型。自定义模板可以创建更加有趣或定制化的项目和项目项&#…

leetcode 岛屿的个数

给定一个由 1(陆地)和 0(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010…

.NET Core前后端分离快速开发框架(Core.3.0+AntdVue)

时间真快,转眼今年又要过去了。回想今年,依次开源发布了Colder.Fx.Net.AdminLTE(254Star)、Colder.Fx.Core.AdminLTE(335Star)、DotNettySocket(82Star)、IdHelper(47Star),这些框架及组件都是本着以实际出发,实事求是的态度&…

leetcode 两数相加

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 输入:(2 -> 4 -> 3) (5 ->…

.Net开发3年,应聘大厂惨遭淘汰,如何翻身打脸面试官?

(设计师忘记了,这里还有个双十一福利课,还能1元秒杀!)

leetcode 无重复字符的最长子串

给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。示例 2: 输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b&q…

面对金九银十铜十一你真的准备好了吗?

作者:回首笑人间,高级Java工程师一枚,热爱研究开源技术,架构师社区合伙人!前言:又是一年一度的金九银十跳槽季,回首在经历了半个月的求职奔波后,终于又能安稳的静下心来敲代码了&…

深入理解二叉搜索树

什么是二叉搜索树? 顾名思义,一颗二叉搜索树是基于二叉树来组织的,它包括许多动态集合操作(Search,MiniNum, MaxiNum, Prodecessor, Successor, Insert 和Delete等)。二叉搜索树上的基本操作所花费的时间与…

深入理解堆(最大堆,最小堆及堆排序)

基本概念: 1、完全二叉树:若二叉树的深度为h,则除第h层外,其他层的结点全部达到最大值,且第h层的所有结点都集中在左子树。 2、满二叉树:满二叉树是一种特殊的的完全二叉树,所有层的结点都是最…

区块链的实质与真伪

2019年11月03日,应邀在微信群未名大学堂进行了区块链技术及应用的音频讲座。里面提到了区块链技术的原型与起源等内容,当时群内的介绍信息如下(仅供参考):未名大学堂首期讲座讲座题目:区块链技术和应用浅析…

H.266/VVC

Versatile Video Coding (VVC) 相关网址 https://jvet.hhi.fraunhofer.de/svn/svn_VVCSoftware_VTM/ https://jvet.hhi.fraunhofer.de/ http://phenix.it-sudparis.eu/jvet/

王炸吐血整理60个Redis面试题,全网最全了

1.Redis 是一个基于内存的高性能key-value数据库。 2.Redis相比memcached有哪些优势: memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型redis的速度比memcached快很多redis可以持久化其数据3.Redis是单线程 redi…

H.266 参考软件VTM下载和安装

1、下载安装cmake ,下载地址https://cmake.org/。 安装后打开控制面板-系统-高级系统设置-环境变量-PATH-编辑-输入cmake.exe的路径即可。 2、如果你之前(HEVC)时已经下载好了SVN,直接在桌面点击右键SVNcheckout,出来…

VTM编码结构框架

VTM流程差不多就是这样子的啦,后续会继续补充,由于能力有限,如有错误,欢迎指正。在后面会进一步分析每一个函数,并分析流程的细节。

AspNetCore应用注意这一点,CTO会对你刮目相看

背景已经有很多文章记录了Web程序中采用异步编程的优势和.Net异步编程的用法, 异步编程虽然不能解决查询数据库的瓶颈, 但是利用线程切换,能最大限度的弹性利用工作线程, 提高了web服务的响应能力。????9012年了,再…

python 字符串总结

1str1 hello, world!# 通过len函数计算字符串的长度print(len(str1)) # 13# 获得字符串首字母大写的拷贝print(str1.capitalize()) # Hello, world!# 获得字符串变大写后的拷贝print(str1.upper()) # HELLO, WORLD!# 从字符串中查找子串所在位置print(str1.find(or)) # 8p…

ASP.NET Core如何限制请求频率

ASP.NET Core如何限制请求频率,为了防止恶意请求,我们往往会对接口请求的频率做限制,比如请求间隔,一段时间内请求的次数,针对部分IP做出不同的限制策略如何去限制请求频率不需要我们去实现,用上AspNetCore…