GraphWalker就是一个基于测试模型的用例生成工具。它主要应用于FSM, EFSM模型。可以用来它可以直接读取FSM, EFSM图形模型、json模型、生成测试用例。
要了解GraphWalker首先要了解MBT是什么。
MBT中文名称为基于模型的测试, 基于模型的测试属于软件测试领域的一种测试方法。MBT步骤如下:首先由被测系统(SUT, system under test )的一些(通常是功能)方面描述,构建出被测系统的模型。再根据模型或模型中的一部分部分生成测试用例。进而进行软件测试。
模型的目的就是用来为构造测试用例而进行的被测系统描述。
在构造模型的这个阶段就可以已经发现许多问题。
高度抽象
模型还包括被测系统的预期输出。
设计模型
测试模型
前置后置条件模型: Pre and post condition models (State based, OCL)
基于转换的模型: Transition based models (FSM, EFSM)
随机模型:Stochastic models (Markov chains)
数据流模型: Data-flowmodels(Lustre)
语法
行为
一个测试模型可以由箭头和节点组成如下图所示。
一个箭头,代表了一次测试动作;
一个节点,代表一次测试验证。
目的:
指导测试用例生成器( test generation)如何生成用例。
模型中的目标(结束条件)
覆盖准则(路径生成准则)
状态覆盖
转换覆盖
随机行走
覆盖引导
按模型及测试需求选择来生成测试用例。GraphWalker就是完成这部分工作的一个开源的java工具。
从测试套件到可执行级别,可以自己实现插件完成这部分功能。将测试用例转化成可执行脚本。
Test execution
执行测试,并比较预期结果。
GraphWalker就是一个基于测试模型的用例生成工具,完成上图中Test generation的工作。给出一个测试模型及测试需求选择,GraphWalker能生成相应测试路径。由这个测试路径,可以用来执行你的测试脚本。它主要应用于FSM, EFSM模型。可以用来它可以直接读取FSM, EFSM图形模型、json模型、生成测试用例。
模型的目的是表达被测系统的预期行为。为此,我们使用有向图,其中顶点(或节点)表示一些期望的状态,并且边(弧,箭头,过渡)表示为了实现期望的状态需要做的任何动作。
例如,让我们来看一个需要验证的网站,然后才能访问网站内容。使用有向图设计测试可能如下所示:
顶点表示我们想要检查的预期状态。在任何实现代码/测试中,你可以通过断言或者数据校验改结果。
一个顶点称为节点,通常表示为一个框。
GraphWalker不在乎顶点的颜色或形状。
表示从一个顶点到另一个顶点的方法。这是为了达到下一个状态需要做的任何动作。它可以选择一些菜单选项,单击按钮等测试动作。
GraphWalker只接受单向有向边(箭头)。
GraphWalker不关心边有什么颜色或宽度。
start顶点不是必需的。
如果使用,则必须有1个(且只有1个)顶点名称为:start.
从start顶点出发只能有1个边。
start顶点不会包括在任何生成的测试路径中,它只表示一个开始位。
名称是第一个单词,位于标签中边或顶点的第一行。
标签是点或边上的所有文字描述。
守卫guard是一种只与边相关的机制。他们的角色与if语句相同,并且使边有资格或者没有资格被访问。
守卫guard是一个用方括号括起来的JavaScript条件表达式只有一个。
[loggedIn == true]
上面意味着如果属性loggedIn等于true,则边是可访问的。
动作是仅与边相关联的机制。这是我们要在模型中执行的JavaScript代码。它放在正斜杠之后。Action可以有多个,每个语句必须以分号结尾。
/loggedIn=false; rememberMe=true;
action是动作代码,它的执行结果将作为数据传递给守卫。
示例:
此示例说明Action和Guard如何工作。
让我们从Start顶点开始:
e_Init/validLogin=false;rememberMe=false;
边缘的名称是e_Init,后跟一个正斜杠,表示从该点开始直到行尾的文本是[action]代码。该操作初始化2个属性:validLogin和rememberMe。
当我们走过上边缘时,我们到达v_ClientNotRunning顶点。这个顶点有2个边沿,都有Guards。由于validLogin和rememberMe在这一点上被初始化为false,因此只有一个边可以用于步行:边e_StartClient具有顶点v_LoginPrompted作为目的地。
假如,我们已经遍历边e_ToggleRememberMe和e_ValidPremiumCredentials,并再次到达顶点v_ClientNotRunning
文章浏览阅读9k次。现在的模拟发送请求插件很多比如老外的postman等,但亲测咱们国内的 ApiPost 更好用一些,因为它不仅可以模拟发送get、post、delete、put请求,还可以导出文档,支持团队协作也是它的特色。另外老外的思维跟我们还是有些鸿沟,相对来说ApiPost的中文界面更适合国内的程序员。今天来分享如何使用ApiPost发送各种请求。1、下载ApiPost官方提供chrome插件、window客户端、mac客户端下载,最好在ApiPost的官网下载。不过个人建议安装客户端。使用更灵活。亲自试了下_在线http
文章浏览阅读449次。精选30+云产品,助力企业轻松上云!>>> Hado..._hadoop1.0和2.0项目结构
文章浏览阅读270次。首先是安装ROS,我所用的ubuntu16.04,所安装的ROS是kinetic版本,安装请参考:ubuntu16.04安装ROS1.管理环境变量在前面的安装过程中,配置亮环境,此时来查看ROS环境是否配置成功:export | grep ROS植入命令之后会出现如下信息:如果没有就需要重新输入添加环境变量的命令。2.创建ROS工作空间通过创建ros工作站,也..._接下来首先source一下新生成的setup.*sh文件:
文章浏览阅读5.4k次,点赞16次,收藏171次。一、Lattice(Frenet)二、EM三、Opt(OSQP)/IPOPT汇总四、Hybrid A*/圆弧Lattice以上算法结合感知决策等框架,是否能覆盖大多数场景?L2/L4,辅助驾驶、矿区、环卫、Robotaxi、泊车、无人接驳车、农用、Robobus、物流配送、Robotruck新势力、Tier1、计算平台?工业界的仿真、量产、数据?..._apollo古月居
文章浏览阅读731次。先简单介绍一下矩阵乘法求斐波那契数列的原理f(n) 是第n项的值。f(1)= 1; f(2) =1;f(n)= f(n-1) + (n-2)下面的介绍是我从网上查到了,收益匪浅。分两步推导: 问题的求解就变成的解决,而幂的求可用二分法来求。二分法可用递归和非递归来求:下面是代码:定义矩阵struct matrix //定义2*2的矩阵&nb_矩阵乘法算波拉契法吗
文章浏览阅读3.3w次,点赞5次,收藏10次。报错信息如下[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)主要是下面两种连接邮件服务器的误操作引起的(是否开启了TLS)smtplib.SMTP(self.host, self.port, timeout=300) 【TLS 禁用时使用】或smtplib.SMTP_SSL(self.host, self...._ssl.sslerror: [ssl: wrong_version_number] wrong version number (_ssl.c:1056)
文章浏览阅读1.3k次。一、单机模式就是安装一个redis,启动起来,业务调用即可有什么问题?单机故障 容量瓶颈 QPS瓶颈只适合一些性能不高、可靠性不用太强的业务系统。二、主从复制模式可以解决单机模式的单机故障问题外,还有好处:读写分离 容灾备份假设我们要搭建1主2从,分别是6379、6380、6381端口6379主节点redis.conf配置文件不需要动,只把6380、6381两个从节点redis.conf配置文件增加一行(配置主节点的ip端口)slaveof 127.0.0_redis 6379 6380
文章浏览阅读2.3w次,点赞36次,收藏102次。一、我们发现ACM的latex模板中会有ACM Reference Format信息,如下:投稿时,可以使用如下的方法将其去掉,在 \documentclass[sigconf]{acmart}下面直接添加这几行即可去掉\settopmatter{printacmref=false} % Removes citation information below abstract\re..._settopmatter
文章浏览阅读2.5k次。1.最外层div加上 -webkit-overflow-scrolling属性,解决ios滑动不流畅.div {-webkit-overflow-scrolling: touch;}2.外层div里面的所有元素添加 -webkit-transform: translateZ(0px)属性,解决滑动时出现的空白(即图片不显示).div > * {-webkit-transform:..._ios h5 卡
文章浏览阅读1.1k次。numpy.random.seed, torch.manual_seed使用_args.seed % 2**32
文章浏览阅读1.1k次。原文:http://mobile.51cto.com/aprogram-387591.htm/**_android 将assert文件写入sd卡中
文章浏览阅读434次。属性动画是3.0推出的新特性,和View动画不同,他对对象进行了扩展,属性动画可以对任何对象做动画.在Animator框架中使用最多的就是AnimatorSet和ObjectAnimator配合,使用ObjectAnimator进行更精细化控制,只控制一个对象的属性值,使用多个ObjectAnimator组合到AnimatorSet中形成一个动画. 在这里说明,动画默认的时间间隔是300ms,默认_android 属性动画 缩放代码