写点什么

云时代下的测试过程和技术

  • 2013-08-07
  • 本文字数:2176 字

    阅读完需:约 7 分钟

越来越多的公司把应用和产品部署到云平台上,而测试是软件开发生命周期的一个不可或缺的部分。云技术所提供的弹性和资源自动配置可以改进测试过程,与此同时,云计算的复杂性也对测试提出了挑战,资深技术专家 John Rhoton表达了自己对云平台下测试思想和技术改进的看法。

对于集成测试,John 认为在云中运行很有吸引力:

对于复杂的应用程序,在本地运行所有测试可能变成一项单调乏味且耗时的任务。在云中部署应用程序并进行测试可节省大量时间和本地开发资源。随着测试范围的增加,SDK 与 PaaS 供应商提供的实际云计算环境之间的区别会变得更加明显。具体来讲,如果应用程序拥有复杂的工作流,那么本地测试仅能覆盖实际工作流和数据的一小部分。

云计算的另一个优势是将创新应用到用户的速度。在高度集成的持续部署环境中,只需不到一天,一个特性或修复程序就能执行软件开发生命周期 中的所有步骤。因此,可以快速且频繁地部署新的生产版本,甚至一天可部署多次。

持续集成 (CI) 执行一个连续应用质量控制的过程,从而频繁应用各个较小的工作部分。持续集成旨在完成所有开发后替换应用质量控制的传统实践,从而帮助提高软件质量,缩短交付软件所需的时间。

如果是自动化的,定期(夜间)构建版本的实现并不困难。一个简单的命令应该就能构建系统;举例而言,make 等构建工具已存在多年。其他最新的工具,比如 Apache Ant、Apache Maven、MSBuild 或 IBM Rational Build Forge 常常用在 CI 环境中。自动化的构建应包含部署到一个类似生产的环境中。

在许多情况下,构建脚本不仅编译二进制文件,还会生成文档、网页、统计信息和分发媒体。理想情况下,构建至少还会自行执行部分测试。 用于 CI、测试和发布的流行工具使开发人员能更轻松地将更改集成到项目中,用户能更轻松地获得最新的构建版本。这些工具包括 CruiseControl 和 Hudson,以及 IBM Rational Team Concert 和 Microsoft Team Foundation Server 等商用工具。

John 指出,试机(staging)是一个更加高级的测试阶段,通常在一个与生产环境非常相似的环境中运行。试机不仅对所有功能执行测试,还执行负载测试;此过程应让客户了解,以便在最终产品发布之前获得他们的认可。应用程序变得更加复杂时,常常有必要引入多个试机和测试级别。一些任务关键型环境拥有多达 7 个不同的环境,涵盖从开发到生产的整个过程。每个环境离实际的生产环境更近一步。

云计算有可能大大加快这一趋势。由于可以按需触发实例,所以拥有多个不同的变体来并行测试多个选项的成本很低。如果需要将一个有效系统回滚到以前的版本,云可能也很有用。云中的试机包括使用一个代表性的数据集运行应用程序代码。试机应用程序的实际技术将依赖于所使用的平台。对于构建于基础架构服务之上的自定义平台,比如 Amazon Elastic Compute Cloud (Amazon EC2)、Rackspace 或 GoGrid,开发人员可确定整个试机操作。这非常简单,只需使用生产环境的一个复制实例,并使用不同的域名运行即可。

他举了两个云平台的例子:

  • 在类似 Google App Engine 这样的环境中,此过程包括以主要生产应用程序 ID 下的不同版本来运行应用程序。该工作流将处理位于生产数据存储区中的数据集。因此,如果旧生产环境与新的应用程序试机版本之间存在不同的数据表示形式,则有必要处理与这些表示形式相关的任何潜在的数据存储模式问题。
  • Windows Azure 为应用程序提供了一个独立的试机环境。Azure Service Management Portal 提供了两个环境,一个用于生产环境,一个用于试机环境,而且除了用于调用的 URL 外,这两个环境基本上相同。因此,可以全面测试试机环境,直到确信该环境已准备好部署到生产环境,且不会影响生产环境。

生产环境部署是软件开发生命周期的最后一个阶段。部署必须能够扩展以满足整个用户群的需求,而且应做到基本上没有错误,因为支持可能需要很高的成本。执行平台通常包含一组运行时环境(比如 Java Virtual Machine、Python 或 PHP)和编程语言。该平台可能还提供了一组库函数、数据存储工具和集成机制(比如排队系统),用于与其他内部和外部的模块通信。John 认为发行期间要考虑的两个主要因素是:

  • 部署是否已成功完成。假设在试机阶段对软件执行了广泛的测试,那么主要目标就是确保部署过程本身会保持服务的完整性。因此,在部署用户可见的主要服务之前,一定要使用非关键型服务来测试复制并公开软件的流程。
  • 在过渡期间尽可能减少服务中断。关心的是应用程序在上线期间的宕机。在一些云环境(比如 Google 或 Azure)中,只要对部署进行了良好规划,就可以实现零宕机时间和无生产中断的部署。在其他情况下,部署的规模应尽可能小,以最大限度减少生产中断的任何可能性。

John 举例说,一些云 SDK 提供了很好的工具来自动化部署。这些工具的优势是消除了部署不完整的风险,而且也可加速部署流程,进而最大限度减少宕机时间。例如,Google App Engine 的 SDK 中有一个部署工具,可用于使用一个不同的应用程序 ID 或版本将应用程序从 SDK 迁移到一个测试环境,或者使用应用程序的不同版本迁移到试机和生产环境。使用 Azure,只需要请求一次本地升级,或者使用服务控制台交换试机和生产插槽的虚拟 IP 地址。类似地,对于基础架构服务,通常只需更新域名系统条目,以在新部署的服务准备好时指向它。

InfoQ 的读者对云计算时代下测试技术的改进有何实践经验,欢迎发表自己的看法。

2013-08-07 10:262366
用户头像

发布了 501 篇内容, 共 284.7 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

OpenHarmony移植案例: build lite源码分析之hb命令__entry__.py

华为云开发者联盟

鸿蒙 芯片 华为云 源代码 企业号十月 PK 榜

共筑使能千行百业的数字底座 | HDC 2022松湖对话顺利召开

OpenHarmony开发者

OpenHarmony

React的5种高级模式

夏天的味道123

React

浅谈:数字资产永续合约交易所开发有什么好处?

W13902449729

合约交易所开发 区块链交易所开发

假如面试官要你手写一个promise

helloworld1024fd

JavaScript

想会用synchronized锁,先掌握底层核心原理

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

动手实践丨使用华为云IoT边缘体验“边云协同”

华为云开发者联盟

云计算 华为云 企业号十月 PK 榜

阿里云E-HPC+i4p大内存实例,加速寻因生物单细胞数据分析效率

阿里云弹性计算

HPC

react源码中的hooks

flyzz177

React

走进 Orca 架构及技术世界

KaiwuDB

数据库·

CIO们开始将软件供应链升级为安全优先级top

SEAL安全

DevOps 开源软件 软件供应链 SBOM 软件供应链安全

从华泰证券年报看数字化转型的平台化趋势

王和全

数字化转型 数字化 华泰证券 平台化

聊聊前端开发中的 Ghost Design 设计思路

汪子熙

前端开发 angular web开发 SAP 11月月更

美团前端常考手写面试题(边面边更)

helloworld1024fd

JavaScript

React组件复用的发展史

夏天的味道123

React

阿里云Imagine Computing创新技术大赛正式开启!

阿里云CloudImagine

阿里云 技术大赛

React组件复用的技巧

夏天的味道123

React

一种基于Prompt的通用信息抽取(UIE)框架

阿里技术

深度学习 信息抽取

Oracle、MySQL等数据库故障处理优质文章分享 | 10月文章汇总

墨天轮

MySQL 数据库 oracle 性能优化 故障恢复

重磅!涛思数据发布TDengine PI连接器

TDengine

数据库 tdengine 时序数据库

元宇宙场景技术实践|实现“虚拟人”自由

ZEGO即构

React核心工作原理

xiaofeng

React

音视频开发进阶|第六讲:色彩和色彩空间·下篇

ZEGO即构

音视频开发 色彩

React组件设计模式-纯组件,函数组件,高阶组件

xiaofeng

React

React性能优化的8种方式

xiaofeng

React

react源码中的生命周期和事件系统

flyzz177

React

react源码中的协调与调度

flyzz177

React

一本书,带你走出Spring新手村

博文视点Broadview

深入浅出分布式,阿里大牛手写《分布式核心原理》Github一夜爆火

Java永远的神

分布式 程序人生 分布式计算 分布式系统 分布式存储

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

最近面试经常被问到的js手写题

helloworld1024fd

JavaScript

云时代下的测试过程和技术_服务革新_崔康_InfoQ精选文章