首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从单元测试标准中学习

从单元测试标准中学习

作者头像
FunTester
发布于 2020-03-04 01:58:31
发布于 2020-03-04 01:58:31
8360
举报
文章被收录于专栏:FunTesterFunTester

单元测试是一件棘手的事情。我很确定测试人员在某个时候会抱怨开发人员没有正确地进行单元测试,导致交付的质量很差。另一方面,开发人员发现很难创建和维护单元测试用例以及维护系统的敏捷性。

毫无疑问,单元测试是SDLC的关键部分,也是迈向测试的第一步。

在这里,将讨论更多的单元测试标准,我们可以在测试和自动化中加以利用,以使其更加有效。

什么是单元测试

单元测试是一种测试形式,旨在确保应用程序的各个单元或组件按预期工作。在这种情况下,使用驱动程序对单元或组件进行独立测试。单元测试至关重要,因为它可以尽早发现缺陷,从而降低总体项目成本并确保代码稳定性。

作为测试工程师,确保单元测试是我们部署的一部分也是我们的责任。随着质量检查的角色在最近几年中不断发展,他们不仅执行功能集成测试、单元测试、系统测试,而且还积极参与单元测试。在持续集成和交付中,质量保证的作用已变得多维且更加灵活。重要的是要知道在发行版中执行了哪些单元测试以及覆盖范围是多少。单元测试的重要性,我相信每个人都很清楚。

单元测试概念

了解单元测试的核心概念很重要。单元是可以独立执行的任何实体。可以是几行代码,也可以是整个功能。最重要的是,它应该是独立的可执行代码段。

在设计自动化框架时,我们还应该将测试视为一个独立的单元,以便可以独立测试和执行测试。

单元测试涉及单元测试框架,驱动程序,模拟/假对象。它基于白盒技术进行工作,其中对条件,循环和代码覆盖范围进行了测试。

以下是一些同样适用于自动化测试的单元测试原理,让我们重新回顾一下它们:

  • 测试应该是独立的:这是基本原则,测试用例之间不应存在任何依赖关系。这很重要,因为一个测试用例的结果不应影响后续用例。在自动化中,我们应确保不存在依赖项,例如环境设置,创建共享资源的实例以及对其进行清理。
  • 测试应该是确定性的:测试应该通过或失败。如果测试失败,我们应该始终有明确的原因,并且在更正时,测试应该始终通过。
  • 测试应该明确通过/失败的情况:这是指测试应该失败时应该失败。仔细放置断言,并针对失败情况进行测试。
  • 测试应该是自我验证的:这意味着测试本身应该确定预期的输出与否。
  • 重复性:每次运行时,测试应产生相同的结果输出。这可以通过使它们孤立和独立来实现。

如何进行单元测试

单元测试需要Mock。它适用于填充要测试功能的缺失部分的模拟对象。由于其他组件仍在开发中或尚未开发,我们将需要一些代码来使这些功能看起来好用

单元测试的另一个重要组成部分是API自动化测试API提供了两个组件之间进行通信的接口。API包含业务逻辑,并且API的工作方式使其在单元测试中非常方便使用。

测试自动化与单元测试

随着越来越多的组织进入敏捷模型,测试(手动和自动化)在SDLC的初始阶段就开始了。为了加快过程自动化,必须发挥关键作用。在敏捷需求不断变化,开发仍在进行的情况下,在这种情况下,API和模拟对自动化非常有帮助。

使用模拟对象:可以使用数据模拟来加快过程,而不是依赖于实际的测试数据。当自动化测试与对象的属性而不是其功能和行为进行交互时,可以使用Mock。当应用程序与任何外部服务交互时,大多数情况下都需要模拟,但也可以在其他情况下使用模拟。

真实对象是:

  • 运行缓慢,例如:数据库访问
  • 难以触发,例如:服务器崩溃情况或网络错误。
  • 仍在开发中。
  • 不兼容或需要高成本的测试环境设置。

有各种可用于模拟的库,用于模拟的使用WireMock进行更好的集成测试Mockitopowermockeasymock

直接说一下,API更快。而且,API测试是可靠的。UI测试可能很不稳定且执行缓慢,但是API测试会通过或失败。在大多数情况下,API是在UI之前开发的,因此我们始终可以从API测试入手。

在编写集成测试和端到端测试时,API也很有用。我们始终可以将API集成到UI测试框架中以执行先决条件。API使它们更快,从而减少了测试套件的总体执行时间,从而使发布更加高效。

几乎所有的单元测试原理和技术都与自动化相关,并且自动化工程师应在需要时利用它们,而不仅仅是依靠传统的自动化方法。


  • 郑重声明:文章首发于公众号“FunTester”,禁止第三方(腾讯云除外)转载、发表。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零基础上手WebGIS+智慧校园实例(1)【html by js】
等下再更新一下1. WebGIS矢量图形的绘制(超级详细!!),2. WebGIS计算距离, 以及智慧校园实例 with 3个例子!!!!,尽情期待!!!
用户11404404
2024/12/13
3110
零基础上手WebGIS+智慧校园实例(1)【html by js】
Vue3 + TS + Leafletjs 打造企业级原神大地图-项目初步实战
Leaflet 是一个开源的 JavaScript 库,用于在 Web 页面上创建互动地图。它轻量级、高效且易于使用,非常适合进行地理信息系统(GIS)开发。
用户11190134
2024/07/01
5090
WebGIS开发框架及特点
WebGIS开发框架是用于构建基于Web的地理信息系统(GIS)应用程序的软件工具和技术的集合。它们提供了一组预先构建的组件、API和工具,简化了WebGIS应用的开发过程。
数字孪生开发
2025/02/12
2060
WebGIS开发框架及特点
一文让你彻底掌握ArcGisJS地图管理的秘密
使用ArcGisJS开发地图,首先需要引入ArcGis的Js文件和CSS文件,引入方式有两种,一种是官网JS引用,一种是本地JS引用。如下:
Kiba518
2021/08/18
8970
一文让你彻底掌握ArcGisJS地图管理的秘密
WebGIS开发框架及其特点
WebGIS(Web Geographic Information System)是基于Web技术的地理信息系统,能够通过浏览器实现地理数据的展示、分析和交互。以下是常见的WebGIS开发框架及其特点。
数字孪生开发
2024/12/31
4770
WebGIS开发框架及其特点
WebGis技术汇总
WebGIS系统通常都围绕地图进行内容表达,但并不是有地图就一定是WebGIS,所以有必要讨论下基于Web的地图API分类及应用场景。
码客说
2023/07/11
1K0
Arcgis for Javascript实现两个地图的联动
今天在看天地图的时候,有一个多时相的地图显示功能,感觉很好玩,作为技术控的我晚上十点下班到家便是快十一点了,本来应该是睡觉了,但是,激动地心情不能平静,哎,算了,本着不熬夜的程序员不是好程序员的原则,熬了会夜终于看到了想要的效果,便迫不及待的拿出来与大家分享,首先看看天地图的效果与我的效果:
牛老师讲GIS
2018/10/23
1.6K0
Arcgis for Javascript实现两个地图的联动
Vue项目使用leaflet+heatmap.js加载热力图
最近做数字工程实践涉及到大量的地图操作,刚开始跳过依赖于supermap iclient for JavaScript,但是越做深入越发现局限性太大,于是开始考虑使用开源地图库做各项操作,本文记录在vue项目中引入原生leaflet及heatmap打开地图及显示热力图的各项操作。
宋天伦
2020/07/16
5.2K0
ArcGIS API for JavaScript开发入门必读
ArcGIS API for JavaScript开发必读的一篇入门文档,文章中对ArcGIS API for JavaScript做了简单的介绍,包括学习路线、版本选择、使用流程和一些学习资源等内容,大家通过本文的阅读,相信会对ArcGIS API for JavaScript的开发有一个基础的了解,从而在后期的学习和使用中能达到事半功倍的效果。
X北辰北
2022/02/22
6.2K0
ArcGIS API for JavaScript开发入门必读
Vue3 + TS + Leafletjs 打造企业级原神大地图(高の青)
前端开发道路艰难,竞争激烈。唯有掌握稀缺技能,提升综合能力,才能杀出一条血路。下面我们将详细讲解如何使用 Vue3、TypeScript 和 Leaflet.js 打造web游戏大地图项目。我们从项目初始化开始,逐步构建一个功能完善的地图应用。
百课优用户
2024/07/03
6900
地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库
在现代前端开发中,地图应用变得越来越重要,特别是在数据可视化、地理信息系统和移动应用中。本文将详细比较四款流行的地图库:Mapbox、OpenLayers、Leaflet 和 Cesium,分析它们的特点、功能、开源情况、包体积、市场占有率、适宜人群与应用环境,并提供安装与基础使用代码示例。
watermelo37
2025/01/22
1.4K0
地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库
mapboxGL2离线化应用
mapboxGL升级到2的版本之后,用官方的引用token是必须要有的,为了能够离线使用,我们需要对源码做一定的修改后编译,本文讲述如何进行mapboxGL的离线应用。
牛老师讲GIS
2021/12/06
1.8K0
mapboxGL2离线化应用
Openlayers3中统计图的实现
在前文中讲到了在Arcgis for js中统计图的实现,在本文,讲述在Openlayers3中结合highcharts实现统计图。
牛老师讲GIS
2018/10/23
6820
Openlayers3中统计图的实现
【番外】Electron和ArcGIS API for JavaScript的开发
最近学了一些Electron.js开发桌面应用的知识,然后作为一名专业的GISer,脑海里马上想到的是,它能不能和我们的ArcGIS JS API整合呢,意思就是,用我们的ArcGIS JS API去开发桌面应用,试了下,好像可以。
X北辰北
2022/02/22
9730
【番外】Electron和ArcGIS API for JavaScript的开发
WKT转换工具terraformers
前面的文章中,提到了Arcgis中实现wkt转换为geometry,但是这种转换仅实现了简单的点(point)、线(polyline)和面(polygon)的转换,对于复杂点或者复杂多边形没有涉及,在本文讲述通过terraformers加载展示wkt。
牛老师讲GIS
2018/10/23
1.3K0
WKT转换工具terraformers
【ArcGIS JS API + eCharts系列】实现地图上二维图表的绘制
本文主要介绍使用ArcGIS JS API 4.14和eCharts 4.7.0来实现在地图上绘制二维图表中的柱状图的实现步骤。
X北辰北
2022/02/21
2.1K0
【ArcGIS JS API + eCharts系列】实现地图上二维图表的绘制
Arcgis for js,Openlayers中加载GeoJSON
在前文中,讲述了在JAVA环境下如何将shp转换为GeoJSON,在本文,分别讲述在Arcgis for js,Openlayers2和Openlayers3中加载展示GeoJSON。
牛老师讲GIS
2018/10/23
4.5K0
Arcgis for js,Openlayers中加载GeoJSON
基于高德地图开发 Web 应用
前段时间换了工作,从以前的 996 变成了现在的 965,周末有了一些空闲时间,于是就想着写一些文章和大家分享一下。思考了很久,最终确定了主题为前端高德地图的教程。
拿我格子衫来
2022/01/24
5.1K2
基于高德地图开发 Web 应用
leaflet加载天地图
leaflet是一个轻量级的并且开源的地图框架,是由esri发起的,由于其轻量、简单而被大家喜欢,本文带你学习如何在leaflet中加载天地图。
牛老师讲GIS
2018/10/23
4.5K0
OL中通过tileUrlFunction实现多底图加载
业务发展好了,肯定会有一些国际业务,会用到全球底图,但是又想国内的又想用国内的,本文就结合openlayers中的tileUrlFunction加以简单实现。
牛老师讲GIS
2021/12/06
1.4K0
OL中通过tileUrlFunction实现多底图加载
推荐阅读
相关推荐
零基础上手WebGIS+智慧校园实例(1)【html by js】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档