我目前正在启动一个新项目,我们希望使用可重用的组件和服务来开发一个新系统。
我们目前的30+系统都有共同的元素,但目前我们孤立地开发每个系统,因此感觉我们经常重复代码,当然,我们有30+独立的代码库来维护和支持。
我们想要做的是创建一个使用共享组件的通用平台,以实现新集合的快速开发,重用代码和重用自动化测试,并减少需要维护的代码库。
到目前为止,我们的想法是,我们将为特定模块提供一个公共代码库,例如用户管理和安全系统访问,这些模块可以由它们自己的通用web模块、API和上下文组成。这将创建一个通用的代码包。
然后,我们可以部署这些不同的组件/包来构建一个新系统,以节省一遍又一遍地编写相同模块的代码,因此,如果新系统需要管理用户,您可以获得用户管理包,然后启动它来执行您所需的操作。但是,因为我们有30+系统,所以我们将为每个集合多次部署组件。我们还认识到,一些系统将需要独特的功能,因此有可能为系统特定需求向通用模块添加扩展,或者选择不使用一个通用模块而创建一个新模块,而使用其余的通用组件。
例如,如果我们有4个组成系统A、B、C和D的通用组件,则可以部署这些组件来创建以下系统设置:
系统1- A、B、C和D(满意所有通用组件)
System 2- Aa、B、C和D(扩展组件A以包括特定功能)
系统3- A、E、C和F(不能重用组件B和D,因此可以创建特定的组件,但仍然可以重用组件A和C)
这给我带来了一些问题,因为我需要能够测试这个平台和每个系统,以确保它工作,这是我第一次遇到必须测试这样的设置。
我在Mircroservices和如何测试它们方面做了一些阅读,但这些通常只针对一个使用微服务的系统,我们正在研究具有不同配置的多个系统。
到目前为止,我的想法使我相信,对于将被不同集合利用的通用组件,我可以在基础代码级别创建自动化测试,然后这些测试将确认通用功能,因此没有必要为每个组件重新测试这些功能,可能需要在部署后进行手动检测。然后,在每个系统级别,可以添加额外的自动化测试,以检查可能创建的特定功能。
理想情况下,我希望设置某种类型的测试平台,以便如果对核心组件(如用户管理)进行更改,则可以触发核心级别的所有自动测试,然后触发将共享该组件的所有系统的所有特定系统测试,以确保任何更改不会影响核心功能或对特定系统产生连锁反应。则需要进行快速的手动检查。我热衷于尝试消除每次更改共享组件时检查30+系统的大量手动测试开销。
我们以敏捷的方式工作,对于我们当前的项目,我们有一个强大的持续集成过程,所以当开发人员签入一些代码(Visual Studio)时,这会触发CI构建(TeamCity / Octopus),它将运行所有的单元测试,假设所有这些测试都通过,这将触发一个集成构建,它将运行我的QA自动化测试,这是在API级运行的测试和使用SpecFlow和PhantomJS或Selenium Webdriver的网络测试的混合。我们希望保持这种框架的位置,以保持快速反馈循环。
这一切在理论上听起来都很棒,但我正在努力将一些东西付诸实践,并创建一个合理的测试策略来涵盖这种系统设置。
因此,我真正希望的是,有人在过去遇到过类似的事情,并对解决这一问题的最佳方法有想法,并证明了这些方法是有效的。
我热衷于更好地理解如何设置测试平台/ rig来帮助所有系统的持续集成,考虑到每个系统可能看起来不同,但有共享的代码。
您认为对博客/白皮书等有帮助的任何想法或链接都将不胜感激!
发布于 2014-10-07 15:48:15
你的方法非常好,因为很快我就会面临和你一样的问题--到目前为止我可以给你我的想法。我很确定
创建了一个完善的测试策略来覆盖这种系统的设置
不能挤在一个帖子里。因此,总体情况看起来是这样的(对我来说)--你正处于Enterprise application integration过程的中间,测试的基本基础将是Data migration。也许您需要考虑Service-oriented architecture的概念
使用共享组件的
通用平台
因为它将使您能够将应用程序功能作为服务提供给其他应用程序。在这里,间接的好处是SOA极大地简化了测试。服务是自治的、无状态的,具有完全文档化的接口,并且与实现的横切关注点分离。像这样的或efficiently testing SOA资源有很多。
https://stackoverflow.com/questions/26218391
复制相似问题