Questions tagged «integration»

9
您如何扩展集成测试?
我正在研究用于扩展我们当前产品上不断增加的集成测试数量的技术和策略,以便使它们(人类)能够成为我们开发和CI流程的一部分。 在大约200多个集成测试中,我们已经达到1小时的标准以完成完整的测试运行(在台式机上运行),这对开发人员在常规推送过程中容忍运行整个套件的能力产生了负面影响。这正影响着积极地去管教他们创造良好的动机。我们只对关键的场景进行前后集成测试,并且我们使用的环境可以反映生产,该环境是在每次测试运行时从头开始构建的。 由于运行需要时间,因此无论测试运行有多集中,都会造成严重的反馈循环和许多浪费的周期,等待机器完成测试运行。别介意对流程和进度,理智和可持续性造成更大的负面影响。 我们希望在该产品开始变慢之前进行10倍以上的集成测试(虽然还不知道,但似乎还没有开始使用功能)。我认为在某些时候,我们必须合理地期望要进行几百或几千个集成测试。 明确地说,要防止这种情况成为关于单元测试和集成测试的讨论(永远不要交易)。我们正在使用TDD进行单元测试,并在该产品中进行集成测试。实际上,我们在服务体系结构的各个层进行集成测试,这对我们有意义,因为我们需要验证在将体系结构中的模式更改为其他领域时,我们在何处引入重大更改。系统。 关于我们的技术栈的一些知识。我们目前正在(CPU和内存密集型)仿真环境上进行测试,以从头到尾运行我们的测试。由组成noSql后端(ATS)的Azure REST Web服务组成。我们通过在Azure桌面模拟器+ IISExpress中运行来模拟生产环境。每台开发机仅限于一个模拟器和一个本地后端存储库。 我们也有一个基于云的CI,它可以在相同的仿真环境中运行相同的测试,并且与我们当前的CI提供程序一起在云中进行测试所花费的时间是其两倍(2小时以上)。就硬件性能而言,我们已经达到了云CI提供程序SLA的极限,并且超出了他们在测试运行时间上的允许范围。为了公平起见,他们的规格还不错,但显然是内部脏台式机的一半。 我们正在使用一种测试策略,为每个逻辑测试组重建数据存储,并预加载测试数据。在全面确保数据完整性的同时,这对每个测试增加了5-15%的影响。因此,我们认为在产品开发的这一点上优化该测试策略几乎无济于事。 总而言之,它的缺点是:尽管我们可以优化每个测试的吞吐量(即使每个测试的吞吐量提高多达30%-50%),但在不久的将来,我们仍然无法通过数百个测试有效地扩展规模。现在1小时甚至还远远超出了人类可以忍受的范围,我们需要在整个过程中进行一定程度的改进以使其可持续。 因此,我正在研究可以采用哪些技术和策略来大大减少测试时间。 编写更少的测试不是一种选择。让我们不要在这个线程中争论那个。 尽管价格昂贵,但绝对可以选择使用更快的硬件。 无疑,在并行环境中在单独的硬件上运行测试/方案组也是肯定的选择。 围绕正在开发的功能和场景创建测试分组是合理的,但最终无法证明完整的覆盖范围或对系统不受更改影响的信心。 从技术上讲,可以在云规模的暂存环境中运行而不是在台式机模拟器中运行,尽管我们开始将部署时间添加到测试运行中(在测试运行开始时每个部署时间大约20分钟以部署内容)。 将系统的组件分成独立的逻辑部分在一定程度上是合理的,但是由于组件之间的干扰预计会随着时间而增加,因此我们认为在此方面的里程有限。(即,更改是无效的,可能会以意想不到的方式影响其他人,这在系统逐步开发时经常发生) 我想看看其他人在这个领域使用什么策略(和工具)。 (我必须相信其他人在使用某些技术集时可能会遇到这种困难。) [更新:2016年12月16日:我们最终在CI并行测试上投入了更多资金,以讨论结果:http://www.mindkin.co.nz/blog/2015/12/16/16-jobs]

1
API网关和ESB之间的区别?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我工作的公司正在评估一些中间件解决方案,以解决网络服务的治理,计量和安全问题。当前,我们正在为此目的使用企业服务总线(ESB),但是管理层中的一些帅哥决定他们将部署一些API管理中间件。 我对这些API管理(又称API网关)解决方案进行了一些研究,但找不到它们与实际ESB之间的区别。我评估了Mule,WSO2,Oracle等的一些白皮书,但是两种产品提供的功能似乎几乎相同。问题是,ESB无法做到的API管理能做什么,反之亦然?通过替换API网关的ESB,可以为IT基础架构增加什么价值?

4
在不同项目之间共享类或接口
我一直在寻找SO或此处的一些答案,但是没有任何结果,这就是为什么我要问你。 假设我有两个不同的项目-例如应用程序的服务器部分和客户端部分。我正在开发自己的部分,而我的朋友正在制作第二部分。但是我们两个都应该使用一些通用接口,例如Useror AccountInfo或ChangableAccount...,以确保兼容性。例如,如果客户端将用户数据发送到服务器,则服务器应在同一类上运行。接口等也是如此。此外,如果公共接口中有任何更改,则两个项目都应根据新情况调整其代码。 我现在看到的唯一解决方案是,创建一个额外的项目,在其中定义所有常见的事物。我们和我的朋友应该将此项目添加为对主项目(客户端或服务器)的依赖项。共享项目可以通过某些版本控制系统进行管理,因此我们始终处于最新状态。 您还建议什么其他解决方案?在专业应用中如何解决此类问题?

5
服务在SOA中共享数据库是不好的做法吗?
我最近一直在阅读Hohpe和Woolf的企业集成模式,Thomas Erl的一些关于SOA的书,以及观看Udi Dahan等人的各种视频和播客。在CQRS和事件驱动系统上。 我工作场所中的系统耦合度很高。尽管理论上每个系统都有其自己的数据库,但是它们之间有很多连接。实际上,这意味着所有系统都使用一个庞大的数据库。例如,只有一张客户数据表。 我读过的大部分内容似乎都建议对数据进行非规范化处理,以便每个系统仅使用其数据库,并且使用消息传递将对一个系统的任何更新传播到所有其他系统。 我认为这是在SOA中强制执行边界的一种方法-每个服务都应该有自己的数据库,但是我读到以下内容: /programming/4019902/soa-joining-data-across-multiple-services 这表明这是错误的做法。 隔离数据库似乎是解耦系统的一种好方法,但是现在我有点困惑。这是一条好路吗?是否曾经建议过在SOA服务,DDD绑定上下文,应用程序等上隔离数据库?

14
如何使新团队成员了解该项目的最新动态?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我们将为软件团队雇用1-2名新工程师(由3名开发人员和1名测试人员组成)。 将他们整合到团队中的步骤是什么? 我的想法是: 阅读文档(编码标准,我们使用的开发方法学中的文档) 让他们阅读现有代码 给他们分配一些简单的任务 最后,让他们负责代码部分 我们还能做什么? 该项目在医疗领域(超声系统),已经进行了5年。我们每年发布一次,当我们要增加1-2名工程师时,我们将完成一个发布。 该项目处于维护阶段(重构旧代码,并添加新功能)。事情几乎按计划进行(或多或少)。
12 team  integration 

3
在Git中使用测试分支
我们有一个人(我们叫他Ted)负责测试新功能和错误修复。 我们正在使用Git和GitHub。master应该/始终可以部署,并且development是我们提交/合并新功能或错误修复的地方,但前提是经过Ted测试之后。 该项目使用PHP。 我希望测试过程如下: 开发人员想要开发新功能(例如,问题跟踪程序中Ted记录的功能/错误#123),因此他origin/development进入development了自己的本地存储库,并issue-123从那里创建了一个新分支(比如)。 对工作感到满意后,他承诺并将其新分支推至origin。 Ted连接到test.ourproject.com/choose-branch并看到分支上的列表,origin然后选择打开issue-123(应该可以通过网页进行操作)。然后test.ourproject.com,他继续进行测试,在Web应用程序之外进行测试(他真的很无情),在与开发人员反复交流之后,他对该功能感到满意。 特德告诉他可以合并开发issue-123到development上origin。 冲洗并重复。 第三步,我可以破解一些可以完成工作的东西(显示和切换特定页面上的分支),但是我觉得我所描述的是非常普遍的模式。 所以我的问题是: 这是分支的良好/可持续/可维护的工作流程吗?您是否可以通过引用此工作流程中其他项目的一些示例来备份您的答案?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.