使用服务虚拟化改善开发者协作

摘要:
传统模拟的问题在于,它们是在代码级别编写的,而且它们是专门为使用正在开发的功能而设计的。因此,每次需要执行此功能时,都必须创建一个新的mock。因此,发生的情况是,单个团队成员经常创建与坐在他们旁边的人相同的模拟。一旦开发人员创建了一个模拟,协作就变得具有挑战性。当我与这些开发人员交流时,我发现存在大约20个相同的模拟。共享虚拟服务不同于模拟。虚拟服务是高度可共享的,内部模块也可以重用。

使用服务虚拟化改善开发者协作第1张

对于一个开发人员来说,没有什么比不断地从头开始重建事物更令人沮丧的了。面向对象设计的一个核心原则是能够为每一项工作创建一个对象或一个可参考的点,所以你永远不必重复自己。

尽管有这个核心原则,但当涉及到模拟时,开发人员经常发现自己在不断地重复同样的过程。

但为什么呢?当开发人员在编写应用程序代码时,他们经常与相同的外部API进行通信,并以不同的方式对同一服务进行相同的调用。传统的mock的问题在于,它们是在代码层面编写的,而且它们是专门为与正在开发的功能一起工作而设计的。因此,每次需要行使该功能时,都必须创建一个新的mock

在使用传统的mock框架时,很难共享已经创建的mock,不仅因为可能不知道它们存在于代码库中的什么位置,而且也很难理解一个特定的mock是与哪个需求绑定的。因此,最终发生的情况是,个别团队成员经常创建与坐在他们旁边的人相同的mock。这简直是在浪费开发者的精力和时间。

我的mock在哪里?

一旦开发人员创建了一个mock,协作也变得很有挑战性。因为没有一个神奇的仪表板存在,你可以在那里发布关于已经创建的模拟的通知,让团队了解情况。

我最近有一家医疗机构的客户,该机构将模拟作为一种常见的开发实践,他们有一个服务提供商总是离线,这使得它成为模拟的常见目标。因此,各个开发人员都在自己的代码库中为它做了一个模拟界面。它们都略有不同,但达到了同样的目的。当我与这些开发者沟通时,我发现大约有20个相同的mock存在。这甚至也让他们感到惊讶。当被问及重复工作的问题时,他们的回答,却是语气沉稳,并不完全出乎意料。“我们太忙了,没时间沟通

听起来很熟悉?(我希望我在这里有一个实际统计的数据能让你感觉好一些)

但模拟是必要的,正如任何开发人员或测试人员会解释的那样,因为你在进行开发时需要有能力将自己与其他世界脱钩。模拟是一种用可保护的环境来包围你的应用程序的方法——但这个解决方案有其固有的挑战,包括:

  • 从头开始重建每一个mock是很乏味的,而且浪费时间
  • 试图发现现有的模拟是困难的
  • Mocks的存在是没有目的的——它们不与特定的API挂钩,也不能重复使用
  • 大家虽然需要合作,但忙于沟通,无暇顾及

进入:服务虚拟化。通过这种测试实践,你可以简化模拟的过程,并创建一个可重用的虚拟服务库,共享核心功能。所以你可以停止反复创建虚拟服务。

使用服务虚拟化

我们来看一个例子。比方说,有一个现有的服务,通过接收一个传入的账号,为这个人提供身份信息,并返回一个响应,同时需要开发一个新的虚拟服务,在这个服务中,根据账号,返回财务细节。

通过服务虚拟化,在创建新的虚拟服务时,可以利用原有服务的很多内容。唯一能将两个服务分开的是模式和数据。而随着企业建立越来越多的虚拟服务,他们可以重用的工件库也会变得更大。这就解决了最初不得不反复创建相同虚拟服务的挑战。

共享虚拟服务

mock不同,虚拟服务具有高度的可共享性,内部模块也可以重复使用。虚拟服务或pva文件可以以XML的形式存储,并且可以很容易地检查到源码控制中。如果服务模拟特定API的特定功能,你可以在源码控制中搜索工件,或者更容易在共享虚拟化服务器上搜索。随着团队对服务虚拟化使用的增长,他们可以利用现有的服务器共享功能,直接将自己的桌面连接到服务器上搜索自己需要的工件,直接拉到自己的桌面上,并立即开始使用。这就解决了发现已经创建的虚拟服务并立即访问的难题。

捆绑虚拟服务

Parasoft Virtualize还提供了一个从常见的虚拟化用例建立的私有和公共构件市场。这使你可以快速启动并在整个组织中建立一个内部知识库,以简化未来虚拟服务的创建。当你开始利用虚拟服务时,你可以轻松地将该虚拟服务与其初始 API 命名惯例或通过描述或标记联系在一起。

然后,你的开发伙伴可以直接在 Web 浏览器中搜索为他们想要模拟的 API 所创建的任何虚拟资产,并准确地看到已创建的虚拟资产,并立即部署到他们的桌面

使用服务虚拟化改善开发者协作第2张

这就解决了将虚拟服务与其特定的API和要求联系在一起的挑战。

与虚拟服务协作

最后,鉴于以上所有的解决方案,你的团队可以建立一个可持续的工作流程,让开发人员和测试人员在意识到需要模拟时有选择。他们不必花时间来回奔波,而是可以在Parasoft生态系统中查询适合他们特定需求的mock,如果存在一个,他们可以立即获得它。如果没有,他们可以创建一个虚拟服务,团队可以重复使用,并且未来任何需要它的人都可以发现。这就解决了相关协作的难题。

那么现在该怎么办呢?

开始与你的虚拟基础设施进行协作,你可以通过开始下载来走出第一步——资产可以检查到源控制,推广到共享团队服务器,并上传到你团队的私人市场。祝你虚拟化愉快!

免责声明:文章转载自《使用服务虚拟化改善开发者协作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于Redis的Spring cache 缓存介绍AWS远程登录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker搭建YAPI服务

使用 Docker 构建 Yapi 1、启动 MongoDB docker run -d --name mongo-yapi mongo 2、获取 Yapi 镜像,版本信息可在 阿里云镜像仓库 查看 docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi 3、初始化 Yapi 数据库索引及管理...

【百度地图API】JS版本的常见问题

【新手必读】API常见问题 1、请问如何将我的店铺标注在百度地图上?我是否可以做区域代理?在百度地图上标注是否免费? 答复: 这里只负责API的技术咨询,不解决任何地图标注问题。在百度地图上标注自己公司,即气泡标注业务。该业务已外包给青岛亿搜,不属于API技术范畴。全国商户的标注需求,请致电:合作伙伴“青岛亿搜网络科技有限公司”咨询。联系电话:0532-6...

mock的使用及取消,node模仿本地请求:为了解决前后端分离,用户后台没写完接口的情况下

借鉴:https://www.jianshu.com/p/dd23a6547114 1、说到这里还有一种是配置node模拟本地请求 (1)node模拟本地请求: 补充一下 【1】首先在根目录下建一个data.json,用来存放一些返回数据,名字随便取好了 [2]在webpack.dev.conf.js文件里 在这个const portfinder...

QQ一键登录功能的实现过程

QQ登录的思路: 当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断 if(已经有openId){ 跳转到登陆后的页面。 }else if(没有openId){ 跳转到注册页面->然后绑定->跳转到登陆后的页面...

mockito使用

mockito学习资料: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html http://blog.csdn.net/sdyy321/article/details/38757135 ​ 1、验证行为是否发生 1 2 3 4 5 6 7 8 @Test public vo...

Windows平台Python编程必会模块之pywin32

在Windows平台上,从原来使用C/C++编写原生EXE程序,到使用Python编写一些常用脚本程序,成熟的模块的使用使得编程效率大大提高了。 不过,python模块虽多,也不可能满足开发者的所有需求。而且,模块为了便于使用,通常都封装过度,有些功能无法灵活使用,必须直接调用Windows API来实现。 要完成这一目标,有两种办法,一种是使用C编写Py...