首页
学习
活动
专区
圈层
工具
发布

TW洞见 | 胡凯:Mock不是测试的银弹

开发者编写高质量测试的征途上可谓布满荆棘,数据库、中间件、不同的文件系统等复杂外部系统的存在,令开发者在编写、运行测试时觉得苦恼异常。...).changes(start, end); will(returnValue(stdout)); }});//设置perforce对象的行为,令其返回设定好的stdout...是在真实环境下运行Perforce命令行所采集的标准输出(stdout)样本, 通过mock perforce对象,我们可以轻易的控制changes方法的返回值,让验证解析逻辑的正确性变得非常容易,采用...开发者对API的了解不够、被模拟对象的行为发生变化(重构、添加新功能等修改等都可能引起被被模拟对象的行为变化)都可能导致错误假设(与真实对象行为 不一致),错误假设会悄无声息的引入缺陷并留下非法测试。...经历了一段时间的摸索,这个问题的答案渐渐清晰起来了,真实环境的测试之所以痛 苦,很大程度上是由于我们在多进程、多线程的环境下对编写测试没有经验,不了解如何合理的使用资源(所谓的资源可能是文件、数据库中的记录

2.2K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Google 为什么把几十亿行代码放在一个库

    谷歌最早使用 CVS 进行代码管理,1999年改为 Perforce。那时是一台 Perforce 主机,加上各种缓存机。 当时,全公司的代码就在一个仓库里面,后来一直沿用这种做法。...由于规模不断增长,Perforce 已经无法满足需求,谷歌就开始使用自己开发的版本管理系统 Piper。...简化的依赖管理 如果你是库文件或者 API 的作者,因为所有人的代码都在一个库里面,所以很容易找到依赖你的所有下游代码。每当代码变动,所有依赖你的代码都会自动构建。...而且,API的作者也很容易发现,别人怎么使用他的API。 原子性变动 由于每次代码变动所导致的影响,都在一个仓库里面,所以都属于原子性的变动。因此,很容易撤销,或者预先测试它所造成的影响。...单一代码仓库的缺点 单一代码仓库的主要缺点是,所有工具都必须自己写,因为市场上没有能够管理这种规模的代码仓库的软件。

    1.2K10

    谷歌的代码管理

    一、概况 谷歌最早使用 CVS 进行代码管理,1999年改为 Perforce。那时是一台 Perforce 主机,加上各种缓存机。 当时,全公司的代码就在一个仓库里面,后来一直沿用这种做法。...由于规模不断增长,Perforce 已经无法满足需求,谷歌就开始使用自己开发的版本管理系统 Piper。...(3)简化的依赖管理 如果你是库文件或者 API 的作者,因为所有人的代码都在一个库里面,所以很容易找到依赖你的所有下游代码。 每当代码变动,所有依赖你的代码都会自动构建。...而且,API的作者也很容易发现,别人怎么使用他的API。 (4)原子性变动 由于每次代码变动所导致的影响,都在一个仓库里面,所以都属于原子性的变动。因此,很容易撤销,或者预先测试它所造成的影响。...四、缺点 单一代码仓库的主要缺点是,所有工具都必须自己写,因为市场上没有能够管理这种规模的代码仓库的软件。 五、总结 单一代码仓库,适合提倡透明开放的大型软件公司,不适合小公司和有大量私密代码的公司。

    1.3K70

    Google 为什么把几十亿行代码放在一个库

    那时是一台 Perforce 主机,加上各种缓存机。 当时,全公司的代码就在一个仓库里面,后来一直沿用这种做法。...由于规模不断增长,Perforce 已经无法满足需求,谷歌就开始使用自己开发的版本管理系统 Piper。...(3)简化的依赖管理 如果你是库文件或者 API 的作者,因为所有人的代码都在一个库里面,所以很容易找到依赖你的所有下游代码。 每当代码变动,所有依赖你的代码都会自动构建。...而且,API的作者也很容易发现,别人怎么使用他的API。 (4)原子性变动 由于每次代码变动所导致的影响,都在一个仓库里面,所以都属于原子性的变动。因此,很容易撤销,或者预先测试它所造成的影响。...单一代码仓库的缺点 单一代码仓库的主要缺点是,所有工具都必须自己写,因为市场上没有能够管理这种规模的代码仓库的软件。

    1.2K50

    Google 为什么把几十亿行代码放在一个库

    那时是一台 Perforce 主机,加上各种缓存机。 当时,全公司的代码就在一个仓库里面,后来一直沿用这种做法。...由于规模不断增长,Perforce 已经无法满足需求,谷歌就开始使用自己开发的版本管理系统 Piper。...(3)简化的依赖管理 如果你是库文件或者 API 的作者,因为所有人的代码都在一个库里面,所以很容易找到依赖你的所有下游代码。 每当代码变动,所有依赖你的代码都会自动构建。...而且,API的作者也很容易发现,别人怎么使用他的API。 (4)原子性变动 由于每次代码变动所导致的影响,都在一个仓库里面,所以都属于原子性的变动。因此,很容易撤销,或者预先测试它所造成的影响。...单一代码仓库的缺点 单一代码仓库的主要缺点是,所有工具都必须自己写,因为市场上没有能够管理这种规模的代码仓库的软件。

    1.2K10

    谷歌的代码管理

    一、概况 谷歌最早使用 CVS 进行代码管理,1999年改为 Perforce。那时是一台 Perforce 主机,加上各种缓存机。 当时,全公司的代码就在一个仓库里面,后来一直沿用这种做法。...由于规模不断增长,Perforce 已经无法满足需求,谷歌就开始使用自己开发的版本管理系统 Piper。...(3)简化的依赖管理 如果你是库文件或者 API 的作者,因为所有人的代码都在一个库里面,所以很容易找到依赖你的所有下游代码。 每当代码变动,所有依赖你的代码都会自动构建。...而且,API的作者也很容易发现,别人怎么使用他的API。 (4)原子性变动 由于每次代码变动所导致的影响,都在一个仓库里面,所以都属于原子性的变动。因此,很容易撤销,或者预先测试它所造成的影响。...四、缺点 单一代码仓库的主要缺点是,所有工具都必须自己写,因为市场上没有能够管理这种规模的代码仓库的软件。

    1.2K80

    1.3 起步 - Git 基础

    概念上来区分,其它大部分系统以文件变更列表的方式存储信息。...这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。 Figure 1-4....为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。 Figure 1-5....比如,用 Perforce,你没有连接服务器时几乎不能做什么事;用 Subversion 和 CVS,你能修改文件,但不能向数据库提交修改(因为你的本地数据库离线了)。...这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。

    82860

    Perforce 收购 Puppet

    开发者工具制造商Perforce Software Inc.近日收购了Puppet Inc.,后者为公司企业提供用于自动化管理其信息技术基础设施的软件。 Perforce今天早上宣布了这笔交易。...这宗收购的财务条款并没有披露。 总部位于明尼阿波利斯的Perforce提供一系列软件产品,旨在帮助应用程序开发团队提高生产力。...该公司的产品可用于处理诸多任务,比如管理含有应用程序的代码文件,比如在部署到生产环境之前测试更新版。...Perforce还为更专门化的任务提供工具,比如检查和排除在超级计算机上运行的工作负载中出现的缺陷。 相较之下,总部位于波特兰的Puppet开发一款大受欢迎的同名IT基础设施自动化平台。...这家初创公司的创收之道是,销售提供开源版本未包含的额外功能的商业版本。在被Perforce收购之际,Puppet今天还透露其商业产品业务和专业服务业务的年总收入超过了1亿美元。

    60520

    Git基础知识(一)

    Git的特点 直接记录快照,而非差异比较 概念上来区分,其它大部分系统以文件变更列表的方式存储信息....这类系统(CVS、Subversion、Perforce、Bazaar等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。 Git 更像是把数据看作是对小型文件系统的一组快照。...比如,用 Perforce,你没有连接服务器时几乎不能做什么事;用 Subversion和CVS,你能修改 文件,但不能向数据库提交修改(因为你的本地数据库离线了)。...这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。...: README.md) 下面返回正题,学习Edit the file,使用编辑器修改一下README.md文件 ?

    72530

    聊聊用于构建微服务的工具和技术

    架构组件可以大致分为1)API网关,2)负载平衡器,3)服务发现,4)服务,以及5)数据库/缓存。本文章讨论了不同组织正在使用的技术栈,大家可以作为参考。...除了体系结构文档外,如果服务公开API,则有Swagger,Apiary和ReDoc等工具可以帮助我们自动生成文档。 开发:开发过程与任何其他类型的应用程序开发类似。...有像Nexus和Artifactory这样的开源工具用于存储生成的文件。为了使构建和测试自动化,我们需要使用像Jenkins或Bamboo这样的自动化工具。...Crucible是Atlassian另一个支持VCS的流行工具,如Git,svn,CVS,Perforce等。Gerrit和Phabricator 是许多免费/开源代码审查工具中的两个。...这篇文章描述了其中的几个。 持续集成和持续交付(CI / CD):CI和CD是实现微服务取得成功的关键要求。没有一个好的CI / CD流程,我们将无法实现微服务承诺的敏捷性。

    1.8K60

    对比PPT、Word、Excel,表格对比工具,支持图片,文件,对比文件夹等。

    image1、不仅仅可以对比文件夹、文件列表;2、还可以对比图片、Excel;3、支持文件合并;4、支持对比多个文件Beyond Compare:功能最全面的对比工具1、支持文件夹、文件、FTP站点的比较...实测教程软件主页可以看到一个简单的界面,直接上手没有任何难度,对于新手非常友好。22查看不同,当文件夹中有不同的文件时,暗黄色的就是。image不同的文件,提示非常明显。...Code Compare 是一个比较工具,比较和合并不同的文件和文件夹。Code Compare 与所有流行的 源代码管理系统:TFS、SVN、Git、Mercurial 和 Perforce。...它支持集成在源代码版本控制工具中,如:SVN、 Git、 TFS、Mercurial和Perforce等这些版本控制工具。...imageTextDiff的核心功能主要包括:文件比较:能够展示两个文本文件之间的差异。

    1.8K10

    基于 IntelliJ 的 IDE 功能路线图出来了,终于要支持中文!

    将 IDE 用作通用编辑器 随着最近启动性能的提高,基于 IntelliJ 的 IDE 作为轻量级文本编辑器的可能性变得更加合理,因此开发团队现在正在构建一种专用模式来编辑非项目文件。...在这种模式下,IDE 将更像一个简单的文本编辑器,它将以更快的速度打开、不会存储任何项目配置,并且它将使用与常规文本编辑器相同的工作流来创建、打开和保存文件。 ?...IntelliJ 平台中的 Git 集成是在与其它版本控制集成(例如 Subversion 和 Perforce)相同的框架上构建的,并且它采用变更列表的概念,而不是暂存区。...变更列表比暂存区更灵活,因为它们可以管理尚未准备提交的多组独立变更。通过最近增加的对在变更列表之间移动文件部分的支持,基本上涵盖了暂存区的主要用例。...计划在将来的 IDE 版本中为 Git 集成实现 Git 暂存区和变更列表两种不同的模式,开发者将能够基于变更列表选择使用当前 UI,还是使用支持暂存区但不支持变更列表的新 UI。

    50020

    【腾讯TMQ】测试管理平台大比拼

    2、构建Requirements Tree以定义全部的测试需求。 3、为需求树中的每个需求创建详细的测试需求列表。描述每一个需求,为之分配优先级,必要时添加附件。...搜索功能:强大的搜索,帮助您找到相应的数据。 灵活的扩展机制,几乎可以对禅道的任何地方进行扩展。 强大的api机制,方便与其他系统集成。...; 4、无预警制度,没有在项目脱离正常开发时自动报警; 5、没有与自动化用例关联,不可自动触发自动用例的执行。...集成了一个巨大的bug-trackers列表,如Bugzilla,JIRA,YouTrack, Mantis等等。...它可以集成几乎所有主要的缺陷跟踪工具和源代码控制工具——SVN, Perforce 和CVS。

    5.8K00

    IntelliJ 发布 2020 RoadMap,中文版终于要来了?

    将 IDE 用作通用编辑器 随着最近启动性能的提高,基于 IntelliJ 的 IDE 作为轻量级文本编辑器的可能性变得更加合理,因此开发团队现在正在构建一种专用模式来编辑非项目文件。...在这种模式下,IDE 将更像一个简单的文本编辑器,它将以更快的速度打开、不会存储任何项目配置,并且它将使用与常规文本编辑器相同的工作流来创建、打开和保存文件。 ?...IntelliJ 平台中的 Git 集成是在与其它版本控制集成(例如 Subversion 和 Perforce)相同的框架上构建的,并且它采用变更列表的概念,而不是暂存区。...变更列表比暂存区更灵活,因为它们可以管理尚未准备提交的多组独立变更。通过最近增加的对在变更列表之间移动文件部分的支持,基本上涵盖了暂存区的主要用例。...计划在将来的 IDE 版本中为 Git 集成实现 Git 暂存区和变更列表两种不同的模式,开发者将能够基于变更列表选择使用当前 UI,还是使用支持暂存区但不支持变更列表的新 UI。

    68920

    IDEA自带插件禁用,减少内存占用

    web路径 GlassFish 提供与GlassFish应用程序服务器的集成 Jakarta EE:Application Serviers 为Java EE/Jakarta EE应用程序服务器提供API...虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架 说一下Hibernate这个插件,这个插件必须要勾上,不勾上会导致mybatis里的xml文件的SQL语句关键词没有高亮显示...Git 提供与Git集成 GitHub 提供与GitHub的集成 Mercurial 允许使用Mercurial版本控制系统 Perforce Helix Core 允许使用Perforce版本控制系统...名称 描述 API Recommenders Recommenders插件补充了ML补全插件,为不同的语言提供上下文感知补全建议,应该是用不到 Bytecode Viewer 显示已编译Java类文件的字节码...类文件 Diagrams 为所有基于IntelliJ的IDE本机图表类型提供API,用不到 Eclipse Interoperability 实现与Eclipse的互操作性,用不到 EditorConfig

    3.7K30

    测试管理平台大比拼

    (2)构建Requirements Tree以定义全部的测试需求。 (3)为需求树中的每个需求创建详细的测试需求列表。描述每一个需求,为之分配优先级,必要时添加附件。...(8)搜索功能:强大的搜索,帮助您找到相应的数据。 (9)灵活的扩展机制,几乎可以对禅道的任何地方进行扩展。 (10)强大的api机制,方便与其他系统集成。...; (4)无预警制度,没有在项目脱离正常开发时自动报警; (5)没有与自动化用例关联,不可自动触发自动用例的执行。...此外,它有一个很酷的视频上传报bug的功能。集成了一个巨大的bug-trackers列表,如Bugzilla,JIRA,YouTrack,Mantis等等。...它可以集成几乎所有主要的缺陷跟踪工具和源代码控制工具——SVN,Perforce和CVS。

    6.6K91
    领券