ZStack——自动化测试系统2:系统测试

【ZStack】自动化测试系统2——系统测试 ZStack的系统测试系统在真实的硬件环境中运行测试用例;像集成测试一样,这个系统测试也是全自动的,而且覆盖的层面包括:功能性测试、压力测试、性能测试。 概述 虽然集成测试系统,如我们在ZStack—自动化测试系统1:集成测试中所介绍的,强大到可以暴露开发过程中大多数的缺陷,也是有着固有的弱点的。首先,由于测试用例使用模拟器,它们不能测试真实场景,比如在一个物理的KVM主机上创建一个VM。第二,集成测试用例主要关注一个简单的场景,在一个简单的人造的环境中;举个例子,还是创建VM的这个用例,它可能只部署一 阅读详情

ZStack的系统测试系统在真实的硬件环境中运行测试用例;像集成测试一样,这个系统测试也是全自动的,而且覆盖的层面包括:功能性测试、压力测试、性能测试。

概述

虽然集成测试系统,如我们在ZStack—自动化测试系统1:集成测试中所介绍的,强大到可以暴露开发过程中大多数的缺陷,也是有着固有的弱点的。首先,由于测试用例使用模拟器,它们不能测试真实场景,比如在一个物理的KVM主机上创建一个VM。第二,集成测试用例主要关注一个简单的场景,在一个简单的人造的环境中;举个例子,还是创建VM的这个用例,它可能只部署一个最小的环境,包括一个主机和一个L3网络,仅仅用于满足创建一个VM的需求。这些弱点,然而也是深思熟虑过的,因为我们想要开发人员能够在他们开发新特性时快速和容易地写测试用例,这是一个我们必须采取的权衡。

系统测试,目标在于测试整个软件,在一个真实的、复杂的环境中,很自然地补充集成测试。ZStack的系统测试系统被设计用于以下两个目标:

  1. 复杂的场景:这些场景应该比真实世界的使用场景更复杂,以测试软件的极限。举个例子,挂载和卸载磁盘的测试用例应该持续地、重复地对虚拟机执行,以一种非常快,人类无法手动做到的方式。

  2. 易于编写和维护测试用例:就像集成测试系统,系统测试系统接管了大多数无聊重复的任务,让测试人员有效率地写测试用例。

这个系统测试系统是一个Python项目,命名为zstack-woodpecker,由以下三个部分组成:

  1. 测试框架:一个测试框架,管理所有的测试用例,以及提供必须的库和工具。

  2. 环境部署工具:一个工具,用于从XML配置文件部署一个环境;它非常类似于集成测试系统的部署器。

  3. 模块化测试用例:测试用例是高度模块化的,而且覆盖了:功能测试、性能测试和压力测试。

系统测试

在这里插入图片描述

ck-woodpecker完全由我们自己创建;在决定重新造这个轮子之前,我们试过了流行的Python测试框架,像nose,然后最终选择了创造一个新的工具,用以最大化地满足我们的目标。

套件配置

类似所有的其他测试框架,一个zstack-woodpecker中的测试套件是以suite setup开始,以suite teardown结束,在其中有一些测试用例。这里的suite setup和suite teardown是两个特殊的测试用例,suite setup负责准备后续的测试用例所需的环境,suite teardown负责在所有测试用例结束之后清理这个环境。一个典型的测试套件配置文件看起来像:

在这里插入图片描述

敏锐的读者可能会注意到一些参数是在其他的测试框架中看不到的。

第一个是timeout;每一个测试用例可以定义自己的超时时间,如果在这段时间内不能完成,它将被在最终的结果里被标记成超时。

第二个是repeat,允许你在测试套件中指定这个用例应该被执行多少次。

第三个,也是杀手级的参数是parallel,允许测试人员设定这个套件的并行级别;这是一个使得zstack-woodpecker运行测试用例非常快的关键特性;在上面这个例子中,parallel被设置成8,这意味着将有至多8个用例在同时运行;这不只是加速运行测试用例,也创造了一个复杂的场景,模拟许多用户在共享同一个环境时执行不同的任务。然而,不是所有的用例都可以被同时执行;在我们的例子中,用例test_delete_l2.py将会删除被其他用例依赖的L2网络,所以在其他用例执行时,它不能被执行;这就是第四个参数noparallel发挥作用的地方;一旦它被设置成true,这个用例将会单独被执行,不会有其他用例可以同时运行。

命令行工具

zstest.py是一个命令行工具,用于帮助测试人员控制测试框架,执行任务,像启动测试套件,列出测试用例,等等。zstest.py提供了丰富的选项帮助测试人员简化他们的工作。这些选项中的一些,用于在我们的日常测试中,特别有用,列在了下面。

测试人员可以通过选项-l获取可用的测试用例,例如:./zstest.py -l

它将会展示如下的结果:

在这里插入图片描述

测试套件名,是测试用例的第一级文件夹的名称;例如,在上图中你看到了大量的用例以basic开头(例如:basic/test_reboot_vm.py),是的,basic就是这个测试套件的名字。测试人员可以通过选项-s启动一个套件,使用套件名的全称或者部分都行,只要它是独一无二的,例如:./zstest.py -s basic 或 ./zstest.py -s ba

在这里插入图片描述

测试人员也可以选择性地执行测试用例,通过使用它们的名字或者ID,已经选项-c;例如:./zstest.py
-c 1,6 或 ./zstest.py -c suite_setup,test_add_volume.py

记住,你需要运行suite
setup的用例:suite_setup.py作为第一个用例,除非你已经这么做了。

由于一个测试套件将会执行所有的测试用例,清理环境,发出一个结果报告,测试人员有时可能想要停止测试套件,并在一个用例失败时保持环境,这样他们就可以深入查看失败结果并调试;选项-n和-S就是为此准备的;-n指示测试框架不要清理环境,-S要求跳过没有被执行的用例;例如:./zstest.py -s
virtualrouter -n -S

另外,选项-b可以拉取最新的源代码并构建一个全新的zstack.war,这在Nightly测试中特别有用,这种测试被假定为测试最新的代码:./zstest.py -s virtualrouter -b

一旦所有的测试用例完成,一个报告将会被生成并被打印到屏幕上:

在这里插入图片描述

测试框架将会保存所有的日志,并直接输出每一个失败日志的绝对路径,如果存在的话。为了在一般的日志中记录更多的细节,有一种特殊的日志action log,用于记录每一个API调用;因为这是一个完全纯粹关于API的日志,我们可以容易地找到一个失败的根本来源,而不用被测试框架的日志分散注意力。另外,它是一种重要的工具,可以自动地生成一个新的用例用于重现失败,这是一个我们所使用的魔法武器,用于在基于模型的测试(每个用例都随机地执行各种API)中调试失败。你可以在ZStack–自动化测试系统3:基于模型的测试中找到细节。Action log的片段如下:

在这里插入图片描述

环境部署工具

类似于集成测试,对每一个测试用例来说,准备环境是频繁且重复的任务;例如,用于测试创建虚拟机的用例需要去配置独立的资源,像zone,cluster,host等等。Zstack-woodpecker调用zstack-cli,这个ZStack的命令行工具去从一个XML配置文件部署测试环境。例如:zstack-cli -d zstack-env.xml

这里的XML配置文件的格式类似于集成测试所用的,一个片段看起来像这样:

在这里插入图片描述

部署工具通常在运行任何用例前被suite setup调用,测试人员可以在XML配置文件中通过以$符号开头来定义变量,然后在一个独立的配置文件中解析。通过这种方式,这个XML配置文件像模板一个工作,可以产生不同的环境。配置文件的例子如下:

在这里插入图片描述

注意:正如你可能会猜测的,这个工具可以被管理员用于从一个XML配置文件部署一个云环境;更进一步,管理员们做相反的事情,将一个云环境写入到一个XML配置文件,通过zstack-cli -D xml-file-name.

对于性能和压力测试,环境通常需要大量的资源,例如100个zone,1000个cluster。为了避免手动在配置文件中重复1000行,我们引入了一个属性duplication,用于帮助创建重复的资源。例如:

在这里插入图片描述

这段不翻译了。

模块化的测试用例

在系统测试中测试用例可以被高度模块化。每一个用例本质上执行以下三步:

  1. 创建要被测试的资源

  2. 验证结果

  3. 清理环境

Zstack-woodpecker 本身提供一个完整的库用于帮助测试人员调度这些活动。API也很好地被封装在一个,从zstack源代码自动生成的库中。测试人员不需要去写任何的原生的API调用。检查器,用于验证测试结果,也已为每一个资源创建;例如,VM检查器,云盘检查器。测试人员可以很容易地调用这些检查器去验证他们创建的资源,而不需写成顿成吨的代码。如果当前检查器不能满足某些场景,测试人员也能创建自己的检查器,并作为插件放入测试框架。

一段测试用例看起来像:

在这里插入图片描述

像集成测试一样,测试人员可以仅以十几行便写出一个测试用例。模块化不只是帮助简化测试用例的编写,也为基于模型的测试构建了一个坚实的基础,下篇文章我们会详细讨论。

总结

在这篇文章中,我们引入了我们的系统测试系统。通过执行比现实世界的用例更复杂的测试,系统测试可以给我们更多的自信,关于ZStack在真实的硬件环境中的表现。使得我们可以快速进化成一个成熟的产品。

ZStack——自动化测试系统3:基于模型的测试 模型测试系统是zstack-woodpecker中的一个子项目。通过有限状态机和行为选择策略,它可以产生随机的API操作,一直运行下去,直到遇到一个缺陷或者预定义的退出条件。ZStack依赖模型测试去测试真实世界中难以遇到的边界用例,在测试覆盖度方面补充集成测试和系统测试。 概述 测试覆盖率是一个判断一个测试系统品质的重要指示器。常规测试方法论,例如单元测试,集成测试,系统测试,都是由人类逻辑思考... 阅读详情

相关推荐

【ZStack】自动化测试系统3——基于模型的测试

模型测试系统是zstack-woodpecker中的一个子项目。通过有限状态机和行为选择策略,它可以产生随机的API操作,一直运行下去,直到遇到一个缺陷或者预定义的退出条件。ZStack依赖模型测试去测试真实世界中难以遇到的边界用例,在测试覆盖度方面补充集成测试和系统测试。 概述 测试覆盖率是一个判断一个测试系统品质的重要指示器。常规测试方法论,例如单元测试,集成测试,系统测试,都是由人类逻辑思考构建的,难以覆盖软件中的边界场景。这个问题在IaaS软件中变得更加明显,因为管理不同的子系统会导致极为复杂的

阿星君 481

ZStack——自动化测试系统1:集成测试

   测试,对于一个IaaS软件的可靠性、成熟度和可维护性而言,是一个重要的因素.测试在ZStack中是全自动的。这个自动化测试系统包括了三个部分:集成测试,系统测试,基于模块的测试。其中集成测试构建于Junit之上,使用了模拟器。通过这个集成测试系统提供的各种各样的功能,开发人员可以快速的写出测试用例,用于验证一个新特性或者一个缺陷修复。    概述    这个关键因素,在构建一个可靠的、成熟的...

V_WOD123的博客 3860

做了几年“斜杠青年”,我在ZStack立志做国产云计算的研发

我在ZStack立志做国产云计算的研发

zstack_org的博客 690

软件测试之自动化测试

软件测试之自动化测试

chenchenchencl的博客 6058

如何学习自动化测试?

自动化测试是一个非常广泛的技术,要想深入精通到更行各业,需要至少5年的钻研才能精通,所以有着足够的技术纵深。熟练到一定级别,甚至做上技术总监也不是没有可能。所以自动化测试是广大测试新手弯道超车老测试的好机会。 本帖不仅给大家介绍自动化测试,更会提供大量学习自动化工具的平台,所以还等什么,赶紧看点赞收藏这个帖子吧,值得反复看。 “如何学习自动化”,这个题目综合性很强,比较难hold住,接下来我将按照自动化的三大构成来给大家展开,希望能对大家有用。 自动化构成: 自动化测试在当前市场上应用非常广泛...

程序员小濠 922

ZStack(三)-zstack代码结构简介

本篇主要介绍一下ZStack开源版本的代码组成,简单介绍各个目录代码的作用。 从最新的官网上看,现在zstack项目有四部分组成,包括zstack、zstack-dashboard、zstack-utility、zstack-woodpecker

任杰的博客 6027

一文带你全面了解什么是自动化测试?

软件测试是软件开发过程中一个必不可少的环节。传统的软件测试方式通常是手动测试,即由专业的测试人员通过手动操作软件应用程序来验证其功能和性能。然而,这种方式存在许多缺点,例如时间耗费、测试结果不稳定、测试覆盖率不够高等。为了解决这些问题,自动化测试逐渐成为了主流的测试方式。自动化测试是通过使用特定的测试工具和框架来自动化执行软件测试任务的方法。它可以代替手动测试,提高测试效率和准确性,同时也可以支持更高的测试覆盖率和更全面的测试内容。

MXB_1220的博客 8351

3款主流AIGC模型部署方案对比:本地、云端与混合架构的成本与性能分析

本文对比分析了3种主流AIGC模型部署方案(本地、云端与混合架构)的成本与性能差异,帮助企业在预算、性能和维护复杂度之间找到最佳平衡点。通过实际案例和详细数据,展示了不同部署方式在延迟、扩展性、数据隐私等方面的优劣势,为技术决策者提供实用参考。

weixin_33158887的博客 373

The Automation Testing System 2: System Testing

ZStack's system testing system runs test cases in real hardware environment; like integration testing, the system testing is full automated and covers aspects of functional tests, stress tests, and

zstack_org的博客 1513

基于Hadoop生态的大数据异常检测平台搭建

批处理:用Spark MLlib的LOF(局部异常因子,适合高密度数据)、(单类支持向量机,适合高维数据);流处理:用Flink ML的(实时聚类,检测离群点)、ADWIN(自适应滑动窗口,处理概念漂移)。数据层:用Flume/Kafka采集数据,HDFS存储,Hive管理元数据;计算层:用Spark处理离线批数据,Flink处理实时流数据;算法层:用孤立森林(批)、3σ原则(流)检测异常;可视化层:用Grafana做仪表盘,Prometheus+Alertmanager报警。这个平台能处理。

软件工程实践的博客 934

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

自动化测试详解【实战总结/建议收藏】

1、把人的操作转化成脚本或机器执行,通过一套流程性的测试用例,由脚本或机器按照测试用例的执行步骤对其进行自动操作,输出结果,然后进行结果分析。2、自动化测试往往通过一些测试工具或框架,来自动执行的,编写自动化测试用例,来模拟手工测试。3、自动化测试能极大的节省人力、时间和硬件资源,提高测试效率。自动化测试技术现在是做测试的必备技能了,现在越来越卷的互联网行业,只有不断的学习才能让我们立于不败之地。

HUA6911的博客 1108

避坑指南:LISFLOOD-FP模型数据单位、参数文件与results文件夹结果解析全攻略

本文详细解析了LISFLOOD-FP洪水模拟模型的关键应用环节,包括数据单位校验、参数文件优化及结果文件解读与可视化。特别针对常见的单位混淆问题,提供了从DEM到边界条件的全面校验方法,并深入剖析了.par参数文件的配置技巧,帮助用户避免模型崩溃和结果失真。

weixin_42533622的博客 237

2024年全网最全最细最流行的自动化测试工具有哪些?

随着测试工程师技能和工资待遇的提升,甚至有一部分的开发人员开始转入测试岗位,跨入自动化领域的测试攻城狮越来越多。在自动化测试领域,自动化工具肯定占据了核心的位置。本文总结了常用的测试自动化工具和框架,这些工具和框架有助于更好地定位自己,以跟上软件测试的发展趋势。

m0_68405758的博客 3143

RexUniNLU零样本通用自然语言理解:nlp_deberta_rex-uninlu_chinese-base模型实战解析

本文深入解析了RexUniNLU零样本通用自然语言理解模型(nlp_deberta_rex-uninlu_chinese-base)的实战应用。通过详细的环境配置、模型加载及实战案例,展示了该模型在零样本场景下的强大能力,如实体识别和复杂关系抽取,显著提升NLP任务效率。

weixin_29088655的博客 251

NS3入门教程 以及 NS3 IEEE 802.15.7 CSMA/CA仿真代码

本文初衷 当我发现我必须要做NS3网络仿真的时候,我内心是拒绝的,一方面NS3完全没接触过,另一方面,C++语言接触也不是太多,感觉工作量好大。但是,真的是不做不行了。然后,我就到网上查一些关于NS3的仿真内容,入门什么的,感觉真的是好混乱啊,这个东西没有一个明确的教程,都是一些杂乱的优快云和技术博客,看起来十分混乱,而且有些现成的代码都是好多好多年前的,让人很难受。所以,我就写了本文,希望...

逆水行舟,不进则退 6739

如何从0开始搭建公司自动化测试框架?一文4个步骤教你成功搭建

搭建的自动化测试框架要包括API测试,UI测试,APP测试三类。以上三类其实可以简化为两类,那就是:

测试官 1639

AWR1843+DCA1000通过mmwave studio采集数据遇到的问题及解决方法

确保DCA1000的拨钮拨在了RADAR_5V_IN一边,这代表DCA1000通过与其相连的雷达板子供电,如果拨到了DC_JACK5V_IN一边,表示DCA1000用单独的电源供电。

qq_50974341的博客 4165

【灵魂配图】用一分钟了解自动化测试

灵魂配图

kami_ochin_akane的博客 448

Python自动化脚本:模拟鼠标键盘保持电脑在线状态

在计算机自动化领域,模拟用户输入是一项基础且实用的技术,其核心原理是通过程序生成鼠标或键盘事件来与操作系统交互。这项技术的价值在于能够自动化重复性操作,提升工作效率,并解决特定场景下的系统交互问题。PyAutoGUI作为Python生态中广泛使用的自动化库,封装了跨平台的底层API调用,为开发者提供了简洁统一的接口来实现输入模拟。在实际工程实践中,这类技术常应用于自动化测试、远程办公辅助、数据抓取等场景,帮助用户保持系统活跃状态,防止因无操作导致的锁屏或休眠中断任务。通过合理配置移动间隔和随机化模式,可以更

weixin_28713299的博客 578

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

系统自动化测试及其应用

我曾参与某大型电商平台订单管理系统的研发与测试工作,在该项目中担任测试架构师,负责系统测试的整体规划与自动化测试体系的搭建。该系统是一个典型的分布式微服务架构,涵盖订单创建、支付处理、库存扣减、物流跟踪、售后管理等核心业务模块,日均处理订单量超过百万级。系统上线后需要持续迭代,每两周发布一个版本,每次迭代涉及多个微服务的代码变更和功能更新。在项目初期,系统测试主要依赖手工执行,测试团队面临三个突出问题:一是回归测试工作量大,每次版本发布前需要花费3—5天时间完成全量回归;

ai_coder_ai的博客 209

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

自动化测试实战 - 博客系统自动化测试

自动化测试实战 - 基于博客系统的自动化实战

2401_83595513的博客 1011

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: ZStack——自动化测试系统1:集成测试
下一篇: ZStack--查询API
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值