Mini-Mesos:一个Mesos的测试基础框架

简介: 本文讲的是Mini-Mesos:一个Mesos的测试基础框架,【编者的话】Mini-Mesos建立在思科Intercloud服务与Container Solutions服务合作的基础上,它是基于 Apache License 2.0版本下的开源项目。
本文讲的是Mini-Mesos:一个Mesos的测试基础框架 【编者的话】Mini-Mesos建立在思科Intercloud服务与Container Solutions服务合作的基础上,它是基于 Apache License 2.0版本下的开源项目。本文主要介绍了在容器解决方案与极限编程(XP)之间所存在的一些联系,以及如何在发展集容器化应用和Mesos框架的同时还开展TDD的核心XP实践和持续集成,介绍了用于构建Mesos框架的测试工具Mini-Mesos。

大多数人知道我是通过极限编程(XP)和XP相关的东西如:面向对象编程,测试驱动开发,测试数据管理和高效系统构建。对于一些人来说,我们所做的工作在容器解决方案和XP之间的联系似乎很弱或根本不存在。但是,仔细想一想,你会发现这两者之间的联系是很强的。

极限编程所讲都是关于缩短反馈回路的,这里是典型的洋葱图:
XP-feedback.gif

Don Wells, 2001, via  wikipedia .

反馈回路在XP中是非常重要的,因为该方法试图帮助开发团队更快地响应客户的需求。这就是为什么,尽管面向对象(或面向组件)的开发并非XP中明确的组成部分,但它是重要的,因为设计良好的对象可以快速地重新组合以服务于新的客户需求。这就是为什么重构和测试驱动开发是XP的必要组成部分。

重构和测试驱动开发

重构是在不改变功能的情况下改进代码。如果没有配套的测试来确保代码以相同的方式运行,这样做是非常危险的。

测试驱动开发(TDD)是关于设计的。由于先写测试样例,我们不得不考虑我们的接口和对象之间的相互作用。在 Steve Freeman 和 Nat Pryce的大力推广下,对于不断成长的面向对象系统来说,使用模拟对象的TDD是一个非常好的方法。

TDD的一个很大的副作用是,你将剩下一套像样的测试用例,这就意味着你可以在或多或少的安全状态下重构代码。 (一旦测试用例写定,测试套件就是一种安全网和检查的集合,以确保一切都或多或少地如重构之前一样工作)。

测试基础设施

正如使用TDD一样,我们很多人过去通常为基础设施编写测试用例。比如,我过去通常编写测试用例来ping通所有的数据库、消息系统以及确保支付系统正常运行等。我们这样做有两个原因。首先,如果出现问题,测试套件将会指向问题所在之处,测试用例用来诊断问题。其次,我们这样做是因为我们经常无法控制基础设施,这些测试帮我们向监控staging、pre-prodoction和生产环境的运维团队传递信息。

云端

一旦云技术开始变得普遍,我们就不得不思考,如何在不破坏我们过去习以为常的紧密反馈循环的情况下向云端部署。换句话说,我们必须仔细考虑如何部署,测试和重构我们基于云的系统。这确实是很重要的,比如我们如何启动云端的虚拟机,然后根据新的用户需求来更新它?我们如何在本地来重建云端来解决任何基础设施的问题?

Mesos

随着云技术以及我们所构建的一系列解决方案的发展,一年前,Apache Mesos闯入我们的生活,该工具使我们能够更有效地利用我们的硬件。对于拥有大量的计算资源的客户来说,这是很重要的,因为使用Apache Mesos确实可以给他们节省大笔资金。(关于Mesos好处更加详细的解释可以在容器解决方案的网站上,Phil Winder所撰写的一篇 文章 中找到)。

那么,对于我们来说,一旦Mesos的时代来临,一个新的问题将会出现:我们如何在发展集容器化应用和Mesos框架的同时还开展TDD的核心XP实践和持续集成?

引入Mini-Mesos

容器解决方案提供了两个关键的服务。一方面,它们能够在生产环境中顺利部署和管理应用。另一方面,他们提供应用开发。因此,我们必须拿出一些工具来帮助应用程序开发和基础设施设计。

迅速解决操作性问题的一种方法是重现在你笔记本中的完整的开发环境,Docker组件只需一小步便可实现。不幸的是,它不具有对Mesos的任何支持,这就意味着我们必须建立自己的Mesos集群,并部署到Docker中,然后手动运行我们的测试,这可能需要几分钟,而对于较复杂的框架,可能需要几十分钟。因此,XP提供的反馈回路被彻底摧毁。我们意识到我们不得不创造自己的测试工具,用于构建Mesos框架。我们称这种工具Mini-Mesos。

Mini-Mesos有三个主要特点:
  • 它允许开发人员在他们的本地机器上启动Mesos集群,来完成他们正在开发的任何框架。
  • 它具有以编程方式操作集群的API。我们称之为“容器API。”
  • 它具有用于查询集群状态的API。我们称之为“集群状态API。”这个API可以让我们获得集群的状态以运行自动化测试。

由于这些特征,首先我们能够构建自己的容器化应用程序和Mesos框架的测试,这提高了设计并使得我们能够进行快速重构。因为我们可以实例化集群,运行测试套件,并在几秒钟内摧毁它,所以我们有一个快速的开发周期;也就是说,在确认我们最近的改变之前,我们并没有部署到真正的云端,或者引入我们的代码。

总之,Mini-Mesos使我们在开发应用和框架时能够利用我们最喜爱的开发方法:极限编程。 

总结

1998年,我还是一个学生,我用Java的反射库瞎搞出一个测试运行器用来寻找以“test”开头的方法,后来,我发现了JUnit的,可能当时我傻笑着想竟然让我偶然发现了一个好方法。

那时候,我们需要构建自己的工具来实践XP,现在也是如此。我们要打造工具以便允许我们针对云端来实践XP。Mini-Mesos就是一个让我们能够做到这一点的工具。这是一个新东西,现在已经在我们的工具之列,它几乎包含了Apache的Mesos,Hashicorp的Terraform,各种CI工具,当然也包括JUnit。总之,这些新的工具和旧的经典工具正在为分布式系统的发展提供新的SDK基石。

有关Mini-Mesos如何使用的例子,请参见 Git 上的Mesos/ ElasticSearch项目,更多详情参见 Mini-Mesos

原文链接:Mini-Mesos: What’s a Nice XPer Doing in a Company Like This?(翻译:李加庆

原文发布时间为:2015-10-12
本文作者:YiGagyeong 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:Mini-Mesos:一个Mesos的测试基础框架
目录
相关文章
|
15天前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
9天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
30 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
9天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
21 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
12天前
|
Web App开发 设计模式 测试技术
自动化测试框架的搭建与实践
【10月更文挑战第5天】本文将引导你理解自动化测试框架的重要性,并通过实际操作案例,展示如何从零开始搭建一个自动化测试框架。文章不仅涵盖理论,还提供具体的代码示例和操作步骤,确保读者能够获得实用技能,提升软件质量保障的效率和效果。
|
14天前
|
Web App开发 敏捷开发 Java
自动化测试框架的选择与应用
【10月更文挑战第4天】在软件开发的海洋中,自动化测试如同一艘航船,帮助开发者们快速穿越测试的波涛。选择适合项目的自动化测试框架,是确保航行顺利的关键。本文将探讨如何根据项目需求选择合适的自动化测试框架,并分享一些实用的代码示例,助你启航。
|
14天前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
【10月更文挑战第3天】在软件开发的海洋里,自动化测试犹如一艘航船,引领着项目向着质量的彼岸航行。本文将揭开自动化测试框架的神秘面纱,从理论到实践,深入浅出地探讨如何构建和运用这一工具,确保软件产品的稳定性和可靠性。我们将通过一个实际案例,展示自动化测试框架的搭建过程,以及它如何在提高测试效率、减少人力成本等方面发挥巨大作用。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的知识和启示。
|
16天前
|
敏捷开发 jenkins 测试技术
自动化测试框架的设计与实践
【10月更文挑战第2天】在软件开发周期中,测试阶段扮演着至关重要的角色。随着敏捷开发和持续集成的流行,自动化测试已成为确保软件质量和加快交付速度的关键工具。本文将深入探讨自动化测试框架的设计原则、组件选择、以及实现过程。通过实际案例分析,我们不仅展示了如何构建一个健壮的自动化测试框架,还讨论了如何克服常见问题,并提出了优化策略,以帮助读者更好地理解自动化测试的价值和实施细节。
|
17天前
|
敏捷开发 测试技术 持续交付
自动化测试框架的选择与应用
在软件开发的海洋中,自动化测试犹如一座灯塔,指引着质量保证的方向。本文将探讨如何根据项目需求选择适合的自动化测试框架,以及在实际工作中如何有效应用这些框架来提升软件质量和开发效率。我们将从框架的基本概念出发,逐步深入到框架选择的标准,最后通过实际案例分析,展示自动化测试框架的应用效果。
|
20天前
|
敏捷开发 测试技术 持续交付
探索自动化测试框架的设计与实现
【9月更文挑战第36天】在软件开发的海洋中,自动化测试如同一艘能够带领我们高效航行的帆船。本文将引导你理解自动化测试框架的核心概念,并通过一个简化的例子展示如何搭建自己的测试框架。我们将一同揭开自动化测试的神秘面纱,让你从新手成长为能够独立设计和实现测试框架的高手。
|
1月前
|
数据可视化 数据管理 测试技术
聊聊自动化测试框架
关于自动化测试框架的一些理解和思考总结,就是上面这些内容,提到的一些框架组件可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激
48 4
聊聊自动化测试框架