写点什么

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

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

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

关注

评论

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

软件快速交付真的需要以安全为代价吗?

华为云开发者联盟

云计算 敏捷 安全 后端 开发

攻防演练中的防守基石——全方位监控

穿过生命散发芬芳

6月月更 攻防演练

解题元宇宙,网络游戏中的多元通信方案

融云 RongCloud

固态存储厂商忆联加入龙蜥社区,共建开源新生态

OpenAnolis小助手

开源 龙蜥社区 CLA 忆联 固态硬盘

Freedom自由协议质押挖矿系统开发

开发微hkkf5566

华为云AOM 2.0版本发布

华为云开发者联盟

运维 华为云 自动化运维 AOM

在线文本数字识别列表求和工具

入门小站

工具

从一个被应用商店坑了的BUG说起

IT蜗壳-Tango

自动化测试 IT蜗壳教学 6月月更

如何使用物联网低代码平台进行服务管理?

AIRIOT

低代码 物联网 低代码开发平台 低代码平台

“造车”,腾讯抄了华为后路

科技新知

我的远程办公初体验 | 社区征文

6个核桃

初夏征文

消息队列 RabbitMQ 遇上可观测--业务链路可视化

阿里巴巴云原生

阿里云 云原生 RabbitMQ 消息队列

小暑至,盛夏始,7月月更活动伴随着盛夏走来啦!

InfoQ写作社区官方

热门活动 7月月更

洞见科技作为「唯一」隐私计算数商,「首批」入驻长三角数据要素流通服务平台

洞见科技

函数计算异步任务能力介绍 - 任务触发去重

Serverless Devs

消息队列 异步执行

细说GaussDB(DWS)复杂多样的资源负载管理手段

华为云开发者联盟

数据库 并发 CPU管控

jfinal中如何使用过滤器监控Druid监听SQL执行?

华为云开发者联盟

sql 开发

linux之ClamAV杀毒软件安装配置

入门小站

Linux

小迈科技 X Hologres:高可用的百亿级广告实时数仓建设

阿里云大数据AI技术

sql 大数据 分布式计算

第八届“互联网+”大赛 | 云原生赛道邀你来挑战

阿里巴巴云原生

阿里云 云原生 大赛

Java Agent 踩坑之 appendToSystemClassLoaderSearch 问题

阿里巴巴云原生

Java 阿里云 云原生

小程序容器是什么技术?能助力物联网企业红海突围?

Speedoooo

小程序 物联网 IoT 小程序容器

DevCloud加持下的青软,让教育“智”上云端

华为云开发者联盟

云计算 软件 后端 开发 教育

福昕软件受邀亮相2022先进制造业数智发展论坛

联营汇聚

微博评论高性能高可用架构设计(架构实战营 模块五作业)

Gor

“授权同意”落地压力大?隐私计算提供一种可能的合规“技术解”

Jessica@数牍

隐私保护 数据安全 隐私计算 授权同意 数据处理合规

从居家办公中感悟适配器模式 | 社区征文

云小梦

JavaScript 初夏征文

在线SQL转CSV工具

入门小站

工具

国内酒店交易DDD应用与实践——理论篇

Qunar技术沙龙

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