写点什么

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

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

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

关注

评论

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

Musl libc 库成功适配到 openEuler Embedded,推动欧拉嵌入式生态发展

openEuler

Linux 操作系统 嵌入式 openEuler risc-v

深度解析如何通过财务共享建设助推企业数智化转型

用友BIP

财务共享

最佳实践:基于vite3的monorepo前端工程搭建 | 京东云技术团队

京东科技开发者

前端 vite Monorepo lodash vue3 vite 企业号 5 月 PK 榜

Mac电脑上的系统监控工具:iStat Menus 中文激活版

真大的脸盆

Mac Mac 软件 系统监控

通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

Serverless Devs

了不起的互联网老男孩,在创业路上不掉队

HarmonyOS SDK

HMS Core

AIGC背后的技术分析 | 通过EBG学习概念cup

TiAmo

机器学习 AIGC 解释学习

【实践篇】手把手教你落地DDD | 京东云技术团队

京东科技开发者

DDD Archetype 企业号 5 月 PK 榜 三层架构

Python压缩JS文件,重点是 slimit

华为云开发者联盟

Python 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

除了运行、休眠…进程居然还有僵尸、孤儿状态

华为云开发者联盟

Linux 开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

亿级 GPS 数据如何实现高效存储和查询?不同类型数据库选型分析

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine taosdata

OpenAI如何让ChatGPT遵守了伦理道德的底线

陈磊@Criss

数字化转型,低代码开发真的靠谱?

引迈信息

低代码 数字化 JNPF

喜报!云智慧王海虎荣获中国信通院突出贡献专家奖

云智慧AIOps社区

大前端 低代码 数据可视化

“Fabarta 数据血缘治理解决方案”荣获“2023 鑫智奖”双料奖项

Fabarta

数据挖掘 数据分析 数据治理 图智能 血缘治理

离线版Gerber查看器+PCB/PCBA检测神器新功能!

华秋PCB

工具 电路 元器件 PCB PCB设计

架构实战营 模块1作业

吴俊

架构实战营

全球化企业应如何统筹规划财务共享中心?

用友BIP

财务共享

软件测试 | 软件危机的几个体现

测吧(北京)科技有限公司

测试

软件测试/测试开发丨学习笔记之接口自动化测试

测试人

程序员 软件测试 自动化测试 接口测试 测试开发

Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法 | 京东云技术团队

京东科技开发者

flutter 企业号 5 月 PK 榜 MediaQuery rebuild

新手系列 I 如何使用 TDesign 轻松开发项目,秘诀都在这里

TDesign

#开源项目 项目搭建

软件测试/测试开发丨学习笔记之用户端App自动化测试

测试人

程序员 软件测试 自动化测试 测试开发 app自动化测试

市场规模超百亿 低代码与传统IT开发有何不同

力软低代码开发平台

校园共享电动车发展现状及未来趋势

共享电单车厂家

共享电动车厂家 校园共享电单车 校内共享电动车

携手共创开源新格局|2023开放原子全球开源峰会将于6月11日在京隆重开幕

开放原子开源基金会

大数据 开源 开放原子开源基金会 开放原子全球开源峰会 开放原子

Tomcat处理http请求之源码分析 | 京东云技术团队

京东科技开发者

tomcat container HTTP 企业号 5 月 PK 榜

文件传输只是第一步,文件同步和备份的关键是

镭速

让初学者读懂代码的入门书

博文视点Broadview

GaussDB(DWS)迁移实践丨row_number输出结果不一致

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

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