前言
随着分布式技术栈逐渐成熟,近几年业界采用微服务架构设计的系统和领域越来越多,包括金融、电商、直播、物流、营销、采购、制造等,有互联网领域,也有传统领域。
博主在这里给大家整理了包括但不限于:JAVA基础和进阶类、Spring、Spring boot、Spring MVC、MyBatis、MySQL、JVM等各种资料有,免费分享给各位进群的小伙伴
正题
我们如何在测试中消除非决定论?
非确定性测试(NDT)基本上是不可靠的测试。所以,有时可能会发生它们通过,显然有时它们也可能会失败。当它们失败时,它们会重新运行通过。
从测试中删除非确定性的一些方法如下:
1、 隔离
2、 异步
3、 远程服务
4、 隔离
5、 时间
6、 资源泄漏
Mock 或 Stub 有什么区别?
存根
· 一个有助于运行测试的虚拟对象。
· 在某些可以硬编码的条件下提供固定行为。
· 永远不会测试存根的任何其他行为。
例如,对于空堆栈,您可以创建一个只为 empty()方法 返回 true 的存根。因此,这并不关心堆栈中是否存在元素。
嘲笑
· 一个虚拟对象,其中最初设置了某些属性。
· 此对象的行为取决于 set 属性。
· 也可以测试对象的行为。
例如,对于 Customer 对象,您可以通过设置名称和年龄来模拟它。您可以将 age设置为 12,然后测试 isAdult()方法,该方法将在年龄大于 18 时返回 true。因此,您的 Mock Customer 对象适用于指定的条件。
您对 Mike Cohn 的测试金字塔了解多少?
Mike Cohn 提供了一个名为 Test Pyramid 的模型。这描述了软件开发所需的自动化测试类型。
根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试级别,但应大于端到端级别。
Docker 的目的是什么?
Docker 提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一起。
因此,这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它被称为 Docker 容器!
什么是金丝雀释放?
Canary Releasing 是一种降低在生产中引入新软件版本的风险的技术。这是通过将变更缓慢地推广到一小部分用户,然后将其发布到整个基础架构,即将其提供给每个人来完成的。
什么是持续集成(CI)?
持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员通过在每个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。
什么是持续监测?
持续监控深入监控覆盖范围,从浏览器内前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。
架构师在微服务架构中的角色是什么?
微服务架构中的架构师扮演以下角色:
· 决定整个软件系统的布局。
· 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。
· 与开发人员共同编写代码,了解日常生活中面临的挑战。
· 为开发微服务的团队提供某些工具和技术的建议。
· 提供技术治理,以便技术开发团队遵循微服务原则。
我们可以用微服务创建状态机吗?
我们知道拥有自己的数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。
例如,我们可以定义 Order 微服务。订单可以具有不同的状态。Order 状态的转换可以是 Order 微服务中的独立事件。
什么是微服务中的反应性扩展?
Reactive Extensions 也称为 Rx。这是一种设计方法,我们通过调用多个服务来收集结果,然后编译组合响应。这些调用可以是同步或异步,阻塞或非阻塞。Rx是分布式系统中非常流行的工具,与传统流程相反。
结尾
博主在这里给大家发个福利~
以下是部分资料截图(所有资料均已整合成文档,pdf压缩打包处理)。