自动化测试:Autorunner的使用
自动化测试:Autorunner的使用
一、实验目的
1、掌握自动化测试脚本的概念。
2、初步掌握Autorunner的使用
二、Autorunner的简单使用
autoRunner使用方法
新建项目

a) 在项目管理器空白区域,右键鼠标,选择新建项目
b) 输入项目名后,点击[确定]. 在初次打开autoRunner时选择的用于存放测试文件的文件夹里会有一个以项目名称为名的文件夹,各种测试脚本,参数表都存放在这里.
新建脚本

a) 在项目名上右键鼠标,选择新建脚本
b) 输入脚本名(最好是英文和数字),点击[确定]后,在右边脚本编辑区域,会打开脚本页

录制脚本
点击工具栏 (若不能录制,先关闭Autorunner,再以管理员身份运行即可)

,或者点击菜单栏

点击开始录制后, 会弹出对话框

根据自己需要,选择是否记录击键和记录时间间隔,选好后点击[确定].
c) 点击[确定]后,开始录制测试过程,autoRunner会自动最小化,在屏幕右下打开录制过程记录窗口,此时,开始测试操作.
以windows自带计算器为例:
依次点击:开始-->所有程序-->附件-->计算器,然后进行操作
操作完成,点击 右下记录窗口 的 停止录制 按钮来结束录制.
编辑测试脚本
录制完成后,在脚本编辑区域会生成本次操作的脚本:

![]()
注:绿色字体为注释内容,运行时不会执行注释内容.
脚本内容大致解读:
① ar.window(“Scicalc_计算器”) 表示: 计算器的窗体
② clickControl(“Button_xx”) 表示: 鼠标对”Button_xx”的点击操作, Button_xx 为对象名
③ checkProperty(“axx”,”bxx”,”cxx”) 表示: 执行到这一步时,对控件 axx 的 bxx 属性的值, 用 cxx(期望值,由自己设定) 来验证. 此语句会在控制台输出 期望值,实际值和验证结果
④ ar.inputkey(“Enter”) 表示: 按下键盘上的按键 Enter
⑤ for 表示: for循环,脚本中的循环语法参考java的for each循环
⑥ ParameterData pd 表示: 循环参数列表时,当前循环次数对应的值,取值方法为调用pd对象的 getFrom(“xx”) 方法. 例如: pd.getFrom(“btnA”)
btnA是参数表中,名为 btnA这一行参数的名,循环时,依次从这一行中读取参数
b) 如果需要在脚本中增加 循环 或者 对当前步骤的某个对象的属性值进行验证,可以在脚本编辑区域,右键鼠标:
① 增加循环:
在脚本编辑区域空白处,右键鼠标,选择 循环参数列表

for(ParameterData pd : ar.getParameterDataList("first.xls") /*.subList(0, 5)*/)
{
ar.window("SciCalc_计算器").clickControl("Button_" + pd.getFrom("btnA"));
ar.window("SciCalc_计算器").clickControl("Button_" + pd.getFrom("btnB"));
}
循环语法参考 java中的 for each语法.
第一块灰色区域(ParameterData,参数对象 ),表示当前循环次数对应的参数列表的列的值
第二块灰色区域(ar.getParameterDataList("first.xls")), 表示从first.xls参数列表中读取参数. Xx.xls 是存放参数的excel表格
第三块灰色区域(/*.subList(0, 5)*/), 为注释区域,表示截取参数列表 第0位到第 5 位之前的数据
将参数表参数代入循环中:
黄色标记区域的代码是将参数表中的参数代入到脚本的循环中.核心方法就是调用参数对象的 getFrom(“”) 方法,如: pd.getFrom("btnA")) 其中,btnA是表示参数表中 名为btnA 行的 值. "Button_" + pd.getFrom("btnA") 此条语句是一个拼接字符串的语句, 将Button_ 和 参数表中的 btnA中的数值, 拼接成需要操作的对象名,如 btnA=1 时
拼接后的效果是: Button_+1
c) 增加验证
在脚本编辑区域空白处右键鼠标,选择

注意光标位置,会在光标处插入代码.
点击[校验属性]后,弹出对话框:

依次选择要校验的 对象名称, 属性名称, 和期望值后,点击确定,会在光标出增加校验的脚本代码.
图例:

ar.window("SciCalc_计算器").checkProperty("Edit", "value", "8. ");
查看对象库
在工具栏点击

,打开对象库;

这里需要查看,脚本中用到的对象,在对象库中是否都有,如果缺少,运行脚本时会出错.对象不足时,可以点击对象库左下的[增加对象]按钮,会像录制时一样,此时选择需要的对象,录制好以后停止录制.
编辑参数
在控制台标签页上点击[参数表]

,打开参数表
对参数表进行设置:

7.执行脚本
点击工具栏

,或者点击 菜单栏

,开始执行脚本.
执行开始后,autoRunner会自动最小化,程序会完整重复录制的过程.
运行结束后,在autoRunner控制台会打印出本次脚本执行情况:

autoRunner参考文件地址:
http://bbs.yunceshi.net/search.php?mod=forum&searchid=10&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=AutoRunner%BD%CC%B3%CC
AutoRunner教程-AutoRunner高级|实用|基础|入门|使用教程下载-泽众软件测试网
初期自动生成的代码:

将光标放到需要循环参数的地方,右击,选择循环参数表修改代码

上图是将:(*.txt)改为:pd.getFrom("textbox"));
Textbox是参数名。
Web程序测试脚本代码:
易备客网络版登陆功能为例:
录制后的初始脚本并且验证”用户名不存在”信息是否提示:

登陆处加进循环登陆,并且验证”用户名不存在”信息是否提示:

加进循环后参数表设置如下:

三、实验任务
以下两个任务、至少完成两个
1、对于三角问题,设计相应的GUI程序,用文本框接受输入和输出,输入为三角形的三条边,输出为:参数不合法、不能构成三角形、普通三角形、等腰三角形、等边三角形。
用Autorunner测试该GUI程序,测试用例通过弱健壮等价类测试用例设计法得到。
实验步骤:
- 弱健壮等价类测试用例设计法设计测试用例,得到测试用例表。
| 测试用例ID | a | b | c | 预期输出 |
| T1 | 3 | 4 | 5 | 一般三角形 |
| T2 | 1 | 2 | 3 | 不能构成三角形! |
| T3 | 3 | 3 | 3 | 等边三角形 |
| T4 | -3 | 4 | 5 | 参数不合法! |
| T5 | 3 | 2 | 2 | 等腰三角形 |
- 用Autorunner测试该GUI程序,得到测试结果,填写软件缺陷报告。(软件缺陷报告格式同实验2)
测试用例运行结果:





使用autorunner进行录制,得到录制脚本,执行录制脚本,得到运行结果如下


简单软件缺陷报告:
| 测试模块: | 对三角形求面积使用Autorunner自动测试方法进行测试 | 开 发 者: | |
| 测 试 员: | 测试日期: | 2024.6.18 | |
| 软件缺陷列表 | |||
| 缺陷ID | 缺陷详细信息 | ||
| BUG1 | 无 | ||
| BUG2 | 无 | ||
| BUG3 | 无 | ||
| BUG4 | 无 | ||
2、对于工资计算问题(见实验5 任务1),设计相应的GUI程序,用文本框接受输入和输出,输入为:工作时间,小时工资,输出为:月工资。
用Autorunner测试该GUI程序,测试用例通过逻辑覆盖法中的判定覆盖标准得到。
实验步骤:
- 弱健壮等价类测试用例设计法设计测试用例,得到测试用例表。
| 编号 | hour | money | 预期输出 |
| T1 | 60 | 100 | 8500.00元 |
| T2 | 30 | 50 | 1500.00元 |
| T3 | 45 | 60 | 2850.00元 |
| T4 | 60 | 70 | 5950.00元 |
- 用Autorunner测试该GUI程序,得到测试结果,填写软件缺陷报告。(软件缺陷报告格式同实验2)
测试用例运行结果:




使用autorunner进行录制,得到录制脚本,执行录制脚本,得到运行结果如下


简单软件缺陷报告:
| 测试模块: | 对工资问题使用Autorunner自动测试方法进行测试 | 开 发 者: | |
| 测 试 员: | 测试日期: | 2024.6.18 | |
| 软件缺陷列表 | |||
| 缺陷ID | 缺陷详细信息 | ||
| BUG1 | 无 | ||
| BUG2 | 无 | ||
| BUG3 | 无 | ||
| BUG4 | 无 | ||
作业1:GUI程序代码:
import tkinter as tkfrom tkinter import messagebox# 创建主窗口root = tk.Tk()root.title("三角形判断")root.geometry("400x200")root.resizable(False, False)# 创建标签和文本框用于输入三角形的三条边tk.Label(root, text="请输入三角形三条边:").pack()side1_entry = tk.Entry(root)side1_entry.pack()side2_entry = tk.Entry(root)side2_entry.pack()side3_entry = tk.Entry(root)side3_entry.pack()# 创建显示文本框用于输出结果result_label = tk.Label(root, text="")result_label.pack()# 定义判断按钮触发的函数def check_triangle_type():side1 = float(side1_entry.get())side2 = float(side2_entry.get())side3 = float(side3_entry.get())result = classify_triangle(side1, side2, side3)result_label.config(text="三角形类型: " + result)# 创建判断按钮check_button = tk.Button(root, text="开始", command=check_triangle_type)check_button.pack()def classify_triangle(side1, side2, side3):if side1 <= 0 or side2 <= 0 or side3 <= 0:return "参数错误!"elif side1 + side2 <= side3 or side1 + side3 <= side2 or side2 + side3 <= side1:return "不能构成三角形"elif side1 == side2 == side3:return "等边三角形"elif side1 == side2 or side2 == side3 or side1 == side3:return "等腰三角形"else:return "一般三角形"root.mainloop()
作业2:GUI程序代码
import tkinter as tkfrom tkinter import messagebox# 创建主窗口root = tk.Tk()root.title("工资计算器")root.geometry("400x200")root.resizable(False, False)# 创建标签和文本框用于输入月工作时间和小时工资tk.Label(root, text="输入工时:").pack()work_hours_entry = tk.Entry(root)work_hours_entry.pack()tk.Label(root, text="输入小时工资:").pack()hourly_wage_entry = tk.Entry(root)hourly_wage_entry.pack()# 创建显示文本框用于输出工资result_label = tk.Label(root, text="")result_label.pack()# 定义工资计算函数def calculate_salary():work_hours = float(work_hours_entry.get())hourly_wage = float(hourly_wage_entry.get())salary = calculate_salary_based_on_hours(work_hours, hourly_wage)result_label.config(text="工资为: $%.2f" % salary)# 创建计算按钮calculate_button = tk.Button(root, text="计算工资", command=calculate_salary)calculate_button.pack()def calculate_salary_based_on_hours(work_hours, hourly_wage):if work_hours <= 40:return work_hours * hourly_wageelif work_hours <= 50:return 40 * hourly_wage + (work_hours - 40) * 1.5 * hourly_wageelse:return 40 * hourly_wage + 10 * 1.5 * hourly_wage + (work_hours - 50) * 3 * hourly_wageroot.mainloop()
相关文章:
自动化测试:Autorunner的使用
自动化测试:Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…...
时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…...
软考 系统架构设计师系列知识点之杂项集萃(42)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(41) 第67题 Windows操作系统在图形界面处理方面采用的核心架构风格是( )风格。Java语言宣传的“一次编写,到处运行”的特性,从架构风格…...
FastBoot刷机获取root权限(Magisk)
1.首先要下载ADB、Fastboot等工具。 1.ADB、Fastboot工具 https://developer.android.com/studio/releases/platform-tools 2.安装FastBoot的USB驱动 https://developer.android.com/studio/run/oem-usb 2.下载对应的镜像 https://developers.google.com/android/images?…...
信息检索(43):SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking
SPLADE: Sparse Lexical and Expansion Model for First Stage Ranking 摘要1 引言2 相关工作3 方法3.1 SparTerm3.2 SPLADE:稀疏词汇和扩展模型 4 实验5 结论 发布时间(2021) 标题:稀疏词汇 扩展模型 摘要 稀疏的优点…...
DockerHub 镜像加速
Docker Hub 作为目前全球最大的容器镜像仓库,为开发者提供了丰富的资源。Docker Hub 是目前最大的容器镜像社区,DokcerHub的不能使用,导致在docker下pull镜像无法下载,安装kubernetes镜像也受到影响,下面请看解决方式。 1.加速原理 Docker下载加速的原理…...
Oracle 迁移 Mysql
-- Oracle->MySQL -- 使用时改一下where条件的owner和table_name -- 字段数据类型映射时会将Oracle中的浮点NUMBER转换为decimal(65,8)定点数 -- 可以识别主键约束、非空约束,但无法识别外键约束、唯一约束、自定义check -- 对于Oracle字符串长度为4000的&#x…...
vue3父子组件通信
一,父传子——defineProps 方法: 在父组件的模板中使用子组件标签,并且给标签自定义属性和属性名,即通过v-bind绑定数值,而后传给子组件;子组件则通过defineProps接收使用。 父组件: <tem…...
CSS中使用应用在伪元素中的计数器属性counter-increment
在CSS中,counter-increment 是一个用于递增计数器值的属性。它通常与 counter-reset 和 content 属性一起使用,以在文档中的特定位置(如列表项、标题等)插入自动生成的数字或符号。 counter-increment 基本用法: 使…...
【SkiaSharp绘图08】SKPaint方法:自动换行、是否乱码、字符偏移、边界、截距、文本轮廓、测量文本
文章目录 SKPaint方法BreakText 计算指定宽度内可绘制的字符个数ContainsGlyphs字体是否包含文本字符(是否会乱码)GetGlyphOffsets 字符偏移量GetGlyphPositions 偏移坐标GetGlyphWidths 每个字符的宽度与边界GetHorizontalTextIntercepts 轮廓截距GetPositionedTextIntercepts…...
深入理解Servlet Filter及其限流实践
引言 在Java Servlet技术中,Filter是一个拦截器,它允许开发者在请求到达目标资源之前或响应发送给客户端之后,对请求或响应进行拦截和处理。这种机制为实现诸如身份验证、日志记录、请求修改等功能提供了极大的灵活性。 Filter基础 Filter…...
使用cv2对视频指定区域进行去噪
视频去噪其实和图象一样,只是需要现将视频截成图片,在对图片进行去噪,将去噪的图片在合成视频就行。可以利用cv2.imread()、imwrite()等轻松实现。 去噪步骤 1、视频逐帧读成图片 2、图片指定区域批量去噪 2、去噪后的图片写入视频 1、视频逐…...
AI在创造还是毁掉音乐?
AI对音乐产业的影响是复杂而多维的,既有创造性的贡献也存在潜在的挑战。我们可以从以下几个角度来分析这个问题: ### 创造性贡献 1. **音乐创作**:AI可以帮助音乐家创作新的旋律和和声,甚至生成完整的音乐作品。例如,…...
【2023年全国青少年信息素养大赛智能算法挑战赛复赛真题卷】
目录 2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题 2023全国⻘少年信息素养⼤赛智能算法挑战复赛⼩学组真题 2023全国青少年信息素养大赛智能算法挑战赛初中组复赛真题 1. 修复机器人的对话词库错误 【题目描述】 基于人工智能技术的智能陪伴机器人的语言词库被…...
Android系统揭秘(一)-Activity启动流程(上)
public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, Activity target, Intent intent, int requestCode, Bundle options) { IApplicationThread whoThread (IApplicationThread) contextThread; … try { … int result …...
使用Java实现哈夫曼编码
前言 哈夫曼编码是一种经典的无损数据压缩算法,它通过赋予出现频率较高的字符较短的编码,出现频率较低的字符较长的编码,从而实现压缩效果。这篇博客将详细讲解如何使用Java实现哈夫曼编码,包括哈夫曼编码的原理、具体实现步骤以…...
IDEA、PyCharm等基于IntelliJ平台的IDE汉化方式
PyCharm 或者 IDEA 等编辑器是比较常用的,默认是英文界面,有些同学用着不方便,想要汉化版本的,但官方没有这个设置项,不过可以通过插件的方式进行设置。 方式1:插件安装 1、打开设置 File->Settings&a…...
visual studio 创建c++项目
目录 环境准备:安装 visual studiovisual studio 创建c项目Tips:新建cpp文件注释与取消注释代码 其他初学者使用Visual Studio开发C和C时常遇到的3个坑 环境准备:安装 visual studio 官网:https://visualstudio.microsoft.com/zh…...
MGV电源维修KUKA机器人电源模块PH2003-4840
MGV电源维修 库卡电源模块维修 机器人电源模块维修 库卡控制器维修 KUKA电源维修 库卡机器人KUKA主机维修 KUKA驱动器模块维修 机械行业维修:西门子系统、法那克系统、沙迪克、FIDIA、天田、阿玛达、友嘉、大宇系统;数控冲床、剪板机、折弯机等品牌数控…...
设置浏览器互不干扰
目录 一、查看浏览器文件路径 二、 其他盘新建文件夹Cache 三、以管理员运行CMD 四、执行命令 一、查看浏览器文件路径 chrome://version/ 二、 其他盘新建文件夹Cache D:\chrome\Cache 三、以管理员运行CMD 四、执行命令 Mklink /d "C:\Users\Lenovo\AppData\Loca…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
