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

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

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

一、单元测试

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

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

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

二、自动化单元测试

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

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

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

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

【作者简介】叶岚

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

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

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

相关文章

Zongsoft.Data 发布公告

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

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

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

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

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

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

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

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

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

深入理解二叉搜索树

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

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

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

王炸吐血整理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年了,再…

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

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

从AppDomain迁移到AssemblyLoadContext

AssemblyLoadContext基本上AssemblyLoadContext是AppDomain的继承者,它提供相同而且更多的功能-除了安全边界(隔离)。最小的安全边界是进程,因此你将需要使用进程间通信来正确隔离数据和代码执行。官网文档中提到Appdomain已经过时…

【.NET Core 3.0】小技巧 || 原生DI一对多注入

本文是一个技巧文章,内容很短,但是被提问的频率很高,所以记录下来,以待大家不时之需。以下的代码,是通过原生的依赖注入来讲解的,其他的第三方框架,可以自己自定义扩展,效果是一样的…

大话数据结构学习笔记二:算法

一 算法定义 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 二 算法的特性: 1 输入输出:算法具有零个或者多个输入,至少有一个或者多个输出。 2 有穷性&…

ASP.NET Core 3.0 gRPC 身份认证和授权

一.开头聊骚本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文。本文主要讲 ASP.NET Core 本身的认证授权和gRPC接入,认证方式采用目前主流的 JWT 结合 IdentityServer4。二.服务端配置我们…

ASP.NET Core中使用MediatR实现命令和中介者模式

作者:依乐祝原文地址:https://www.cnblogs.com/yilezhu/p/9866068.html在本文中,我将解释命令模式,以及如何利用基于命令模式的第三方库来实现它们,以及如何在ASP.NET Core中使用它来解决我们的问题并使代码简洁。因此…

使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由

路由机制会把一个请求的URI映射到一个Controller上面的Action,所以当你发送一个HTTP请求的时候,MVC框架会解析这个请求的URI,并尝试着把它映射到一个Controller上面的Action。两个路由中间件在ASP.NET Core 3.x里面,建议使用Endpo…

EFCore批量操作,你真的清楚吗

背景EntityFramework Core有许多新的特性,其中一个重要特性便是批量操作。批量操作意味着不需要为每次Insert/Update/Delete操作发送单独的命令,而是在一次SQL请求中发送批量组合指令。EFCore批量操作实践批处理是期待已久的功能,社区多次提出…

asp.net core 自定义 Policy 替换 AllowAnonymous 的行为

asp.net core 自定义 Policy 替换 AllowAnonymous 的行为Intro最近对我们的服务进行了改造,原本内部服务在内部可以匿名调用,现在增加了限制,通过 identity server 来管理 api 和 client,网关和需要访问api的客户端或api服务相互调…