生成式AI领域的最新成果都在这里!抢 QCon 展区门票 了解详情
写点什么

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

  • 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:261801
用户头像

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

关注

评论

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

工赋开发者社区 | 何谓智能工厂?国内外智能工厂建设的现状分析

工赋开发者社区

华为许超:伙伴成功,才有华为企业业务成功

脑极体

华为

iOS MachineLearning 系列(16)—— 几个常用的图片分类CoreML模型

珲少

OPPO关停自研芯片公司哲库,这对行业将产生什么影响?

福大大架构师每日一题

芯片 福大大

C语言编程-环境设置

攻城狮Wayne

C语言 环境搭建 三周年连更

如何在OpenJ9场景下使用Arthas

骑牛上青山

Java JVM Arthas openj9

软件测试/测试开发丨学习笔记之Allure2测试报告

测试人

Python 软件测试 自动化测试 测试开发 Allure

如何获得高并发经验?看这篇文章就够了

Java永远的神

程序员 系统设计 高并发 架构师 java面试

背靠香港影视集团星光文化,StarNFT问世了

EOSdreamer111

背靠香港影视集团星光文化,StarNFT问世了

股市老人

我通过 tensorflow 预测了博客的粉丝数

北桥苏

人工智能 深度学习 tensorflow

理解 K8s 多集群(上):构建成熟可扩展云平台的核心要素

张旭海

k8s 多云 K8s 多集群管理

理解 K8s 多集群(下):解决方案对比与演进趋势

张旭海

k8s 多云 K8s 多集群管理

Python潮流周刊#1:如何系统地自学Python?

Python猫

Python

测试写代码的好处

FunTester

Charles(HTTP代理服务器)注册安装教程

Rose

Charles注册码 Charles下载 HTTP代理服务器

PS 2023中文一键安装版 Photoshop永久使用

Rose

Photoshop 2023中文版 photoshop下载 PS2023下载 PS 2023破解

香港影视集团星光文化旗下 NFT 发售平台——StarNFT 上线

BlockChain先知

Django笔记二十七之数据库函数之文本函数

Hunter熊

Python django 文本函数 concat substr

超级独角兽 Databricks 的崛起之路

CnosDB

时序数据库 开源社区 CnosDB Databricks

阿里架构师总结的互联网面试必问Java八股文进阶手册,堪称面试前必看系列

开心学Java

Java 编程 面试 java面试 八股文

我的网站中了马!

北桥苏

php thinkphp 网站开发

ElasticSearch中文分词和模糊查询

北桥苏

php elasticsearch

Prompt learning 教学[技巧篇]:通过增加示例、引导词、特殊符号指令等方式让chatgpt输出更好的答案

汀丶人工智能

人工智能 自然语言处理 ChatGPT prompt learning

C++中的可移植性和跨平台开发

小万哥

CleanMyMac X专业的Mac清理工具,一次激活,永久使用

Rose

CleanMyMac下载 CleanMyMac v4.13.4 Mac清理优化工具 苹果电脑系统清理软件

XMind思维导图安装教程XMind 2023最新版下载

Rose

XMind教程 XMind思维导图 XMind2023下载 XMind2023新功能 XMind如何使用

SecureCRT v9.3.2最新版 激活安装教程

Rose

SSH工具 SecureCRT下载 SecureCRT激活版 SecureCRT许可证

绝~ 阿里内部“Java进阶必备宝典”,理论到实战,一键通关

程序知音

Java java架构 Java进阶 后端技术

MySQL中使用group_concat()函数进行分组排序

源字节1号

开源 软件开发 小程序开发

如何使用Go语言实现软件设计中的‘对扩展开放、修改关闭’原则

Jack

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