【软件质量保证与测试】实验二之ACTS工具

news2024/10/7 14:27:54

索引

    • 0. 前言
    • 1. ACTS 获取
    • 2. ACTS 启动
      • 2.1 双击启动GUI
      • 2.2 终端启动GUI
      • 2.3 进入GUI
    • 3. ACTS 参数类型
      • 3.1 新建系统
      • 3.2 ACTS 添加成员
        • 3.2.1 Boolean类型
        • 3.2.2 Enum类型
        • 3.2.3 Number类型
        • 3.2.4 Range类型
        • 3.2.5 其他
    • 4. ACTS 约束
    • 5. 混合组合强度
    • 6. 参考模型
      • 6.1 设定模型
      • 6.2 参数设置
      • 6.3 约束设置
      • 6.4 混合组合强度
      • 6.5 生成测试集

0. 前言

这个ACTS工具有点小众,网络上的教程几乎是屈指可数,因此也无从借鉴只能啃英文版的用户文档,好在文档也不长也比较好定位我需要的内容。

事先声明,对于这门课我的理解很是浅显,其实就是学艺不精……很多概念太抽象了我无法理解,因此也就是就ACTS工具本身简单的说明一下,对于真正实现什么我可能做得不是很正确。

博客的前半部分(1-5)是对于软件使用的介绍,后半部分(6)是对于作业的一些提示吧,只能说是提示,因为我压根不是真正的理解我在做什么,而且不可能每个人的模型都是一样的。

鄙人不自力量的发一篇博客,在这里也算是抛砖引玉了,希望朋友们可以不吝分享自己的真知灼见,让更多人可以了解一下。

内容来自博主自己手搓、用户文档等等,仅供参考,更多内容可以查看大三下指南专栏。

1. ACTS 获取

在正式开始之前请先了解一下上面的前言部分!!!

先介绍一下这个ACTS工具:

ACTS的全称是"Automated Combinatorial Testing for Software",即软件自动组合测试。ACTS是一种自动化组合测试策略,可用于生成有效和高效的测试用例。ACTS由美国国家标准技术研究所(NIST)开发,是一种基于组合测试理论的测试技术,可以帮助测试人员减少测试用例的数量,同时保持测试覆盖率。

这个工具的官网是国外的,而且工具是通过发送邮件来获取的。

请添加图片描述

用自己的邮箱(qq、163……都可以)给kuhn@nist.gov发送一封包含自己姓名以及组织(学校)的邮件,差不多一天内就能收到回信包含了工具的谷歌云盘(Google Drive)链接。

下面附上我下载的ACTS3.2的百度网盘链接 提取码:fy2j。如果失效了就通过上述邮件方法获取吧。

压缩包中会带一个当前版本的使用说明,如:acts_user_guide_3.2.pdf,其实文档不是很长阅读起来也不是太麻烦,大多数问题在3.x的标题下解决,下面的操作也会结合用户文档。

2. ACTS 启动

用户文档第6页3 GUI Interface中提到了如何启动GUI:

There are two ways to launch the GUI. One way is to double-click the jar file, which is executable. The other way is to execute the jar file on the command prompt as follows:
java -jar acts.jar

也就是说有下面两种方法可以启动GUI

2.1 双击启动GUI

不同于其他的.exe文件,这个工具其实是一个jar包,我们用java运行这个jar包就能运行GUI。

可以看得出来下面acts_3.2.jar的打开方式是java。
在这里插入图片描述

2.2 终端启动GUI

如果通过这种方式打不开(或终端闪退),可以尝试在文件夹中右键选择在终端打开
在这里插入图片描述

然后输入java -jar acts_3.2.jar即可

当然命令中间可以加很多参数,如果感兴趣可以去看一下文档第7页。

2.3 进入GUI

通过上面任意一种方法打开ACTS的GUI可以看到下面的加载页面

[]

之后就会进入到ACTS的GUI
在这里插入图片描述

3. ACTS 参数类型

用户文档第9页3.1 Create New System中提到了这一点

The Parameters tab (Fig. 3) allows the user to specify the parameters, as well as the values of those parameters, in the new system. Currently, four parameter types are supported, Boolean, Enum, Number, and Range. Range is a convenience feature that allows multiple, consecutive integers to be input quickly. Note that parameter names cannot contain spaces. (The characters that can be contained in a parameter name are the same as those in a variable name in Java programs.)

由此可知目前支持四种参数类型Boolean, Enum, Number, and Range。并且成员名不能带空格!

3.1 新建系统

点击System->New,就能进入到新建页面。

在这里插入图片描述

我们看一下新建页面

在这里插入图片描述

3.2 ACTS 添加成员

3.2.1 Boolean类型

只有两种情况true或者false

假设有一个记住登录的选项应该选择布尔类型。

在这里插入图片描述

3.2.2 Enum类型

这个类型就相当于字符串(String)类型,支持数字以及字母符号等。

假设登录需要选择身份访客Guest、用户User以及管理员Administrator

在这里插入图片描述

3.2.3 Number类型

就是整数(int)类型,只能是整数。

假设需要键入几个ID

在这里插入图片描述

3.2.4 Range类型

那么实际上呢Range和Number的值类型其实是一样的,只是Range类型可以自动添加一段范围。

Number添加1-100需要添加100次,Range只需要添加1次。

比如以年龄作为一个例子:
在这里插入图片描述

需要注意的是,这个范围不能太大,最好是1000以内,否则会卡住。

3.2.5 其他

似乎ACTS可以自定义类型,比如自己做一个日期类型、时间类型之类的,但是我没有找到,文档似乎没有提到……这里不多做说明了,如果感兴趣可以去了解一下。

4. ACTS 约束

我说实话这里比较抽象我不是很懂,可能是我数学不太好?我都不知道约束有啥类型……

总之就是要用这个约束来限制ACTS生成的测试样例,比如说如果你想要小学生的钱不能超过10元,那就得添加年级 == "小学" => 钱 <= 10这个约束,这样生成样例的时候就不会出现是小学而且钱还超过10元的样例了。

用户文档的第11页提到了以下的内容:

The following are examples of various constraints that can be specified:

Constraint 1: (OS = “Windows”) => (Browser = “IE” || Browser = “FireFox” || Browser = “Netscape”), where OS and Browser are two parameters of type Enum. This constraint specifies that if OS is Windows, then Browser must be IE, FireFox, or Netscape.

Constraint 2: (P1 > 100) || (P2 > 100), where P1 and P2 are two parameters of type Number or Range. This constraint specifies that P1 or P2 must be greater than 100.

Constraint 3: (P1 > P2) => (P3 > P4), where P1, P2, P3, and P4 are parameters of type Number or Range. This constraint specifies that if P1 is greater than P2, then P3
must be greater than P4.

Constraint 4: (P1 = true || P2 >= 100) => (P3 = “ABC”), where P1 is a Boolean parameter, P2 is a parameter of type Number or Range, and P3 is of type Enum. This constraint specifies that if P1 is true or P2 is no less than 100, then P3 must be “ABC”.

说白了添加约束就是写如果怎么样(if)就怎么样(then)这种语句的,下面写一段伪代码吧:

如果不添加约束,生成样例时就类似于这种情况,基本上有几个成员就是几层for循环。

for 年级 ["小学","初中","高中"]{
	for 零花钱 [1-100]{
		样例 = 年级 + 零花钱
	}
}

如果添加了约束:

for 年级 ["小学","初中","高中"]{
	for 零花钱 [1-100]{
		if 年级 == "小学" && 零花钱 > 10{
			continue
		}
		样例 = 年级 + 零花钱
	}
}

很明显在添加了约束之后你的样例更加符合你的要求,并且只需要更少的样例就能覆盖你的需求。

当然上面的代码只是为了方便说明,与实际上肯定是有偏差的。

还有一点Enum声明的是字符串类型,在写约束语句的时候需要使用双引号“”

Note that parameter values that are strings (i.e., Enum type) in a constraint must be quoted in double quotes

具体都可以用哪些语句可以查阅用户文档第11页。

5. 混合组合强度

这个混合组合强度在用户文档第14页也提到了一嘴

Strength: This option specifies the strength of the test set. Currently, ACTS supports a strength value ranging from 1 to 6. If the strength is set to a number between 1 and 6, only the specified strength will be used for test generation. If the strength is set to “Mixed”, the relations specified in the system configuration (Section 3.1, Relations tab) will be used. For the Base Choice algorithm the strength will be set to 1.

然后根据它提到的Section 3.1,我们可以在用户文档第12页最后一段话和13页顶部的图片找到相关的演示。下面附上13页的演示图,可以看到给一些"关系"选择了"测试强度"(2、3)。
在这里插入图片描述

之后我们所有一切准备完全之后点击Operations->Build...

在这里插入图片描述

强度的位置选择Mixed,然后Build就可以了。

在这里插入图片描述

6. 参考模型

6.1 设定模型

在这一阶段,一定要想好可以完成任务的模型,也就是说必须要用到4种参数类型至少各一次,并且把所有的4种约束都用一次!

我觉得硬要用所有的约束就像是给自行车加装赛车发动机还要改装成八座的一样令人迷惑,当然任务得完成,就算是大炮也得加。

举个例子,模型的场景如下:

(用户类型)UserType[Enum]  = new,old,vip
(卡类型)CardType[Enum]  = flowCard,phoneCard,welfareCard
(消费)Cost[Number] = 18,28,38
(信用值)Credit[Range] = [500-1000]
(是否订阅)Subscription[Boolean] = true,false

约束大概如下(我不懂内涵是什么只能照葫芦画瓢):

  1. 新用户只能买前两种类型的卡(满足约束1)
  2. 信用值大于等于600(满足约束2)
  3. 信用值不足700只能买大于18元的卡(满足约束3)
  4. 如果订阅或者信用值大于800那么就是vip(满足约束4)
  5. 如果是vip必须订阅或者信用值大于800(为了自圆其说)

6.2 参数设置

点击System->New创建一个新的系统,记得保存……保存了以后可以通过Edit->Modify修改。
在这里插入图片描述

按照6.1所述设置参数

在这里插入图片描述

6.3 约束设置

按照6.1所述设置约束,当然不保证是对的……

其中大多数的符号和编程时意义相同;=>左边是如果(条件),右边是那么(结果);还有Enum类型一定要双引号。

如果语句有问题是无法添加到下面的。
在这里插入图片描述

6.4 混合组合强度

这个我真不知道是什么,随便分的……
在这里插入图片描述

6.5 生成测试集

Build一下啦

在这里插入图片描述

然后就产生了一大堆样例

在这里插入图片描述

在生成个图玩一下。。。
在这里插入图片描述

我觉得大概就是要最后这两张图。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win系统软件闪屏 - 解决方案

Win系统软件闪屏 - 解决方案 前言原因解决方案方法1&#xff1a;软件使用独显方法2&#xff1a;软件关闭硬件加速方法3&#xff1a;降级显卡驱动 前言 使用Win10及以上系统时&#xff0c;可能会出现频繁闪现黑屏的状态&#xff0c;下文简称闪屏。一般在使用第三方软件时&#…

【Linux】进程信号保存

前言 上篇博客我们了解了进程信号的概念和信号如何产生。 本篇我们将学习进程信号如何保存。 文章目录 前言一. 阻塞信号二. 递达动作三. 信号集四. 信号集操作函数结束语 一. 阻塞信号 首先我们需要一些预备知识 实际执行信号的处理动作称为信号递达&#xff08;Delivery&am…

可能是最有前途的国产大模型:讯飞星火认知大模型

大家好&#xff0c;我是可夫小子&#xff0c;关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加&#xff1a;keeepdance&#xff0c;备注&#xff1a;chatgpt&#xff0c;拉你进群。 昨天下午&#xff0c;科大讯飞发布了自己的大模型——星火认知大模型。在上周他们还在…

小白专用VScode从安装到入门编写_Windows_C/C++

此篇主要梳理VScode的安装、功能拓展等&#xff0c;包括与git管理和Cmake的结合 一、VScode下载二、VScode功能拓展2.1 VScode中文界面在线安装2.2 VScode中文界面离线安装2.3 鼠标滚轮调整字体大小2.4 调整编辑器界面大小2.5 Windows下VScode C/C环境配置2.5.1 MinGW编译器下载…

Illustrator如何创建Web图形与动画之实例演示?

文章目录 0.引言1.创建切片2.选择和编辑切片3.快速生成PNG元素图标 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对创建…

【Docker】docker核心概念与常用指令

目前掌握的docker处理平时工作倒是可以&#xff0c;但docker网络这块有些模棱两可&#xff0c;干脆从头整理一遍Docker。 &#x1f333;&#x1f333;【Docer篇整理】&#x1f333;&#x1f333; 篇一&#xff1a;docker核心概念与常用指令 篇二&#xff1a;镜像与docker数据卷…

【C++】vector的介绍及使用

目录 一、vector的介绍二、vector的常用接口2.1 vector的定义2.2 vector iterator的使用2.3 vector 空间增长问题2.4 vector 增删查改2.4.1.尾插和尾删2.4.2.任意位置插入和删除以及查找2.4.3.vector 的交换与遍历 2.5 vector 迭代器失效问题 一、vector的介绍 vector是表示可…

《花雕学AI》讯飞星火认知大模型的特点和优势,与ChatGPT的对比分析

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言&#xff0c;实现人机交互和智能服务。近年来&#xff0c;随着深度学习的发展&#xff0c;自然语言处理领域出现了许多创…

人人开源代码

后台源代码&#xff1a; git clone gitgitee.com:renrenio/renren-fast.git 前端源代码&#xff1a; git clone gitgitee.com:renrenio/renren-fast-vue.git 自动生成源代码&#xff1a; git clone gitgitee.com:renrenio/renren-generator.git 关于 renren-fast-vue npm npm报…

RabbitMQ --- 惰性队列、MQ集群

一、惰性队列 1.1、消息堆积问题 当生产者发送消息的速度超过了消费者处理消息的速度&#xff0c;就会导致队列中的消息堆积&#xff0c;直到队列存储消息达到上限。之后发送的消息就会成为死信&#xff0c;可能会被丢弃&#xff0c;这就是消息堆积问题。 解决消息堆积有三种…

cenos7安装wkhtmltopdf

参考&#xff1a;http://www.023dns.com/server_ECS/2190.html https://blog.csdn.net/nexttrial/article/details/125504683 在Centos7 安装wkhtmltopdf&#xff0c;把html页面转换成pdf文档。 1、安装 yum install wkhtmltopdf 2、安装之后&#xff0c;执行操作&#xff…

处理 json 和 HttpMessageConverter--文件下载-ResponseEntity --SpringMVC 文件上传

目录 处理 json 和 HttpMessageConverter 处理 JSON-ResponseBody 说明: 下面是要完成的效果 准备工作 创建json.jsp 创建Dog.java , 作为返回的数据 创建JsonHandler.java 完成测试(页面方式)和 (Postman 方式) ​编辑 处理 JSON-RequestBody 应用案例 修改 json…

Masonry使用以及源码解析(未完待续

文章目录 Masonry使用约束约束优先级 以及 intrinsicContentSize相关问题 Masonry:iOS12Masonry源码解析下面是使用make.width点语法后的全部内部调用过程&#xff1a; Masonry使用 约束 在写Masonry之前&#xff0c;我想先来聊聊约束的基础知识&#xff0c;我们首先要了解一…

igraph的layout布局

做图论的社区检测&#xff0c;需要画图显示&#xff0c;用igraph可以进行可视化。 igraph有几个布局&#xff0c;分别如下&#xff1a; layout_with_dh &#xff1a; The Davidson-Harel layout algorithm Place vertices of a graph on the plane, according to the simulat…

电脑远程控制

这里介绍2种常用的电脑远程控制方式。第一种&#xff0c;向日葵。第二种&#xff0c;QQ。 向日葵 --- 推荐 支持 Mac、Windows、Linux、iOS、Android。 Mac 版向日葵如果想让别人控制你的电脑&#xff0c;安装完向日葵以后要在 Mac 的“安全与隐私”开启几个权限才能被对方正…

node笔记_写文件(异步写入,同步写入,追加写入,流式写入)

文章目录 ⭐前言⭐写文件&#x1f496;writeFile写入写一个txt文件 &#x1f496;writeFileSync同步写入写一个txt文件 &#x1f496;appendFile 追加写入追加写入一个txt &#x1f496;createWriteStream流式写入流式写入txt ⭐ 结束 ⭐前言 大家好&#xff0c;我是yma16&…

【计算机网络】 总结复习(2)

tcp tcp 工作在传输层可靠的数据传输服务&#xff0c;确保传输数据是无损坏&#xff0c;无间隔&#xff0c;非冗余按序 一些知识点 服务端最大并发 TCP 连接数远不能达到理论上限&#xff0c;会受以下因素影响&#xff1a; 文件描述符限制&#xff0c;每个 TCP 连接都是一个文…

HTML-CSS学习笔记

day1-01.CSS的元素显示模式 元素的显示模式就是元素&#xff08;标签&#xff09;以什么方式进行展示&#xff0c;比如<div>自己占一行&#xff0c;<span>一行可以放多个。 HTML元素一般分为块元素和行内元素两种类型。 块元素 如果在p标签中放了div标签&#xff…

操作系统——存储管理方式

目录 1.分区存储管理 1-1单一连续分配 1-1-1基本原理&#xff1a; 1-1-2单一连续分区存储管理的地址变换与地址保护 1-1-3管理特点 1-2固定分区分配 1-2-1基本原理 1-2-2分区划分 1-2-3主存空间的分配与回收 1-2-4地址转换与存储保护 1-2-5管理特点 1-3动态分区分配…

软考信管高级——风险管理

风险管理内容 风险管理计划 包含的内容&#xff1a; (1)方法论 (2)角色与职责 (3)预算 (4)时间安排 (5)风险类别 (6)风险概率和影响的定义 (7)概率和影响矩阵 (8)修订的干系人承受力 (9)报告格式 (10)跟踪 风险类型和应对措施 可能遇到的风险&#xff1a; (1)需求风险;(2)技术…