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

第3章 软件测试方法--基于模型的测试方法(功能图、模糊测试) 文章目录3.6.1功能图方法3.6.2 模糊测试方法 基于模型的测试 (MBT, Model-based testing):通过构建能够正确描述被测软件系统功能特性的模型,然后基于这个模型产生测试用例并执行这些测试用例的过程。 步骤: 为被测试系统(SUT)建模 基于模型产生测试用例 将抽象的测试具体化使测试用例具有可执行性 执行测试 分析测试结果 3.6.1功能图方法 每个程序的功能通常由静态说明和动态说明组成:   静态说明描述了输入条件和输出条件之间的对应关系;   动态说明描述了输入数据的次序 阅读详情

模型测试系统是zstack-woodpecker中的一个子项目。通过有限状态机和行为选择策略,它可以产生随机的API操作,一直运行下去,直到遇到一个缺陷或者预定义的退出条件。ZStack依赖模型测试去测试真实世界中难以遇到的边界用例,在测试覆盖度方面补充集成测试和系统测试。

概述

测试覆盖率是一个判断一个测试系统品质的重要指示器。常规测试方法论,例如单元测试,集成测试,系统测试,都是由人类逻辑思考构建的,难以覆盖软件中的边界场景。这个问题在IaaS软件中变得更加明显,因为管理不同的子系统会导致极为复杂的场景。

ZStack通过引入基于模型的测试来解决这个问题。它可以产生由随机API组合构成的场景,会持续运行知道遇到预定义的退出条件或者找到一个缺陷。作为机器驱动的测试,基于模型的测试可以克服人类逻辑思考的缺陷来执行一些,看起来反人类逻辑,但是API完全正确的测试,帮助发现难以被人类主导的测试发现的边界问题。

一个例子可以帮助理解这个思想。基于模型的测试系统通常在执行大约200个API后暴露一个bug,在调试后,我们找到最小重现这个问题的序列是:

  1. 创建一个VM

  2. 关闭这个VM

  3. 为这个VM的根云盘创建一个云盘快照

  4. 从这个VM的根云盘创建一个新的数据云盘快照

  5. 销毁这个VM

  6. 创建一个新的数据云盘,使用4中的模板

  7. 从6中的数据云盘创建一个新的云盘快照

这个操作序列显然是反逻辑的,我们相信没有测试者会写一个集成测试用例或者系统测试用例这么做。这就是机器思考闪光的地方,因为它没有人类的感情,会做人类感觉不合理的事情。在找到这个bug之后,我们生成了一个回归测试为以后保障这个问题。

基于模型的测试系统

基于模型的测试系统,因为由机器驱动,也被称为机器人测试。当这个系统运行时,它从一个模型(在下面几节中也被称为阶段)移

【Python Web自动化】07_行为驱动测试模型 行为驱动(Behave Driven Development)测试,是一种敏捷的开发方法,通常应用在自动化测试中,通过使用自然描述语言确定自动化脚本。 GitHub代码commits id:268f10f #!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File : register_user.py @Time : 2... 阅读详情

相关推荐

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

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

阿星君 481

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

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

任杰的博客 6027

【ZStack】自动化测试系统2——系统测试

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

阿星君 428

zstack(四)zstack架构简介

本篇简单介绍一下zstack的架构设计。现在的zstack加入了一个新的模块woodpecher,用于自动化测试。由于本人对这块没有研究过,这里先不讲这个。

任杰的博客 6248

基于模型的测试(MBT)和SpecExplorer

十多年来,Microsoft在其内部开发流程中成功应用了基于模型的测试(MBT)。事实证明,对于各种内部和外部软件产品而言,MBT是非常成功的方法。这些年来,这种方法采用得越来越多。 要生成高质量的软件,需要在测试阶段进行大量的工作,这可能是软件开发过程中成本最高、工作量最大的部分。 从最简单的功能黑盒测试到重量级的方法,包括定理证明程序以及形式化需求说明,有很多方法可以提高测试可靠性和效率。 但是,测试并不总是能达到必要的细致程度,经常缺乏规范和方法体系。 十多年来,Microsoft在其内部开发流程中成功应用了基于模型的测试(MBT)。 事实证明,对于各种内部和外部软件产

什么是基于模型的测试?

基于模型的测试属于软件测试领域的一种测试方法。MBT步骤如下: 常规测试一般是由人来设计几个特定的测试场景,然后断言测试结果。测试用例固定。缺少不确定性。基于模型的测试(Model-basedTesting)是需要实现一个模型,然后制定行为和行为之间的关系以及行为和系统的关系(有限状态机),然后测试系统根据被测系统的状态、之前设置的限制条件和策略来生成很多用例(每执行一次生成的用例会不同),测试结果受一系列操作的影响,可以产生不确定性,更有可能发现一些想不到的很深路径下的BUG。 基于模型的测试主要包括以下部分: 1、模型程序(ModelProgram):在这里定义被测系统的可以被

AP发票批量付款程序(WEB ADI)

CREATE OR REPLACE PACKAGE MEW_AP_BATCH_PAYMENTS_PKG IS   PROCEDURE MAIN(P_BATCH_ID          NUMBER                 ,P_ORG_ID            NUMBER                 ,P_BANK_ACCOUNT_NAME VARCHAR2

储藏室 5052

STM32平台中ARM架构向量表配置:手把手教程

深入讲解STM32平台下arm架构的向量表配置方法,结合实际操作步骤,帮助开发者掌握中断向量的定位与初始化,提升嵌入式系统开发效率。

weixin_42514540的博客 802

【算法】图解A* 搜索算法

A* 算法是启发式搜索算法,是根据Dijkstra算法改进而来。 问题引入 如下图所示,S为起始(start)节点,G为目标(goal)节点。 节点之间连线是两点的路径长度,如A到E的路径长度c(A,E) = 9。 节点旁的h值时当前节点到达目标节点(G)的预估值,如h(A)=15, 表示从当前点A到达目标点G的估计路径长度为15,此处h(x)即为启发函数,启发函数的设计有很多方法,具体可......

zhuhua造轮子的博客 4万+

GBASE南大通用GBase 8s数据库-从零开始的手动安装与实例配置指南

本文详细介绍了GBASE南大通用GBase 8s数据库的手动安装与实例配置全过程,包括环境准备、用户创建、安装包准备、实例创建、环境变量配置等关键步骤。通过实战经验分享和常见问题解决方案,帮助用户快速掌握GBase 8s数据库的安装与配置技巧,确保数据库稳定运行。

weixin_29209825的博客 455

IDEA集成selenium自动化测试(Java+Selenuim+testNG+Maven)

文章目录写在前面01 | 新建Maven项目02 | idea集成Selenium03 | 写在前面 因为软件测试的需求和博主比较经常使用Java,于是,想在Idea中集成selenuim,用Java编写测试代码,因此有了这篇文章来记录一下过程。 资源指路: java使用selenium实现模拟浏览器操作API大全 模拟登录 TestNG入门教程 感谢上面博客的大佬。 01 | 新建Maven项目 不使用骨架创建,直接点击左侧Maven,然后一路next即可。 02 | idea集成Sele

aLinxi的博客 8280

HAL库移植实战:解决‘HAL_StatusTypeDef‘未定义报错的3个关键步骤

本文针对STM32开发中从标准库向HAL库移植时常见的'HAL_StatusTypeDef'未定义报错,提供了三个关键解决步骤:首先确保正确包含头文件入口,其次检查并配置模块使能宏,最后注意避免与标准库的同名结构体混用。文章通过实战案例解析了HAL库的模块化设计理念,帮助开发者高效解决混合编程中的编译问题。

book8的博客 209

源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。

qq_43893755的博客 3369

扣子Coze触发器使用指南:实现工作流定时执行的完整教程

Coze平台触发器功能详解:定时触发器配置指南 摘要:Coze平台的触发器是实现自动化任务的核心组件,其中定时触发器能够按预设时间自动执行工作流。本指南介绍了定时触发器的配置方法,包括每日、每周、每月及Cron表达式等多种时间设置方式,以及如何关联工作流执行具体任务。文章还提供了健身提醒等实用案例,并涵盖了触发器调试、发布及常见问题解决方案。通过合理配置定时触发器,用户可以轻松实现各类自动化任务,如定时发送消息、数据采集等,大幅提升工作效率。

互联网架构师笔记 1927

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: ZStack--虚拟路由网络服务提供模块
下一篇: ZStack--网络模型1:L2和L3网络
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值