当前位置: 首页 > news >正文

自动化测试: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循环,脚本中的循环语法参考javafor 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程序,测试用例通过弱健壮等价类测试用例设计法得到。

实验步骤:

  1. 弱健壮等价类测试用例设计法设计测试用例,得到测试用例表。

测试用例ID

a

b

c

预期输出

T1

3

4

5

一般三角形

T2

1

2

3

不能构成三角形!

T3

3

3

3

等边三角形

T4

-3

4

5

参数不合法!

T5

3

2

2

等腰三角形

  1. 用Autorunner测试该GUI程序,得到测试结果,填写软件缺陷报告。(软件缺陷报告格式同实验2)

测试用例运行结果:

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

简单软件缺陷报告:

测试模块:

对三角形求面积使用Autorunner自动测试方法进行测试

开 发 者:

测 试 员:

测试日期:

2024.6.18

软件缺陷列表

缺陷ID

缺陷详细信息

BUG1

BUG2

BUG3

BUG4

2、对于工资计算问题(见实验5 任务1),设计相应的GUI程序,用文本框接受输入和输出,输入为:工作时间,小时工资,输出为:月工资。

用Autorunner测试该GUI程序,测试用例通过逻辑覆盖法中的判定覆盖标准得到。

实验步骤:

  1. 弱健壮等价类测试用例设计法设计测试用例,得到测试用例表。

编号

hour

money

预期输出

T1

60

100

8500.00元

T2

30

50

1500.00元

T3

45

60

2850.00元

T4

60

70

5950.00元

  1. 用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的使用

自动化测试&#xff1a;Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…...

时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测&#xff1b; 2.多变量时间序列数据集&#xff08;负荷数据集&#xff09;&#xff0c;采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…...

软考 系统架构设计师系列知识点之杂项集萃(42)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;41&#xff09; 第67题 Windows操作系统在图形界面处理方面采用的核心架构风格是&#xff08; &#xff09;风格。Java语言宣传的“一次编写&#xff0c;到处运行”的特性&#xff0c;从架构风格…...

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&#xff1a;稀疏词汇和扩展模型 4 实验5 结论 发布时间&#xff08;2021&#xff09; 标题&#xff1a;稀疏词汇 扩展模型 摘要 稀疏的优点&#xf…...

DockerHub 镜像加速

Docker Hub 作为目前全球最大的容器镜像仓库&#xff0c;为开发者提供了丰富的资源。Docker Hub 是目前最大的容器镜像社区&#xff0c;DokcerHub的不能使用,导致在docker下pull镜像无法下载,安装kubernetes镜像也受到影响,下面请看解决方式。 1.加速原理 Docker下载加速的原理…...

Oracle 迁移 Mysql

-- Oracle->MySQL -- 使用时改一下where条件的owner和table_name -- 字段数据类型映射时会将Oracle中的浮点NUMBER转换为decimal(65,8)定点数 -- 可以识别主键约束、非空约束&#xff0c;但无法识别外键约束、唯一约束、自定义check -- 对于Oracle字符串长度为4000的&#x…...

vue3父子组件通信

一&#xff0c;父传子——defineProps 方法&#xff1a; 在父组件的模板中使用子组件标签&#xff0c;并且给标签自定义属性和属性名&#xff0c;即通过v-bind绑定数值&#xff0c;而后传给子组件&#xff1b;子组件则通过defineProps接收使用。 父组件&#xff1a; <tem…...

CSS中使用应用在伪元素中的计数器属性counter-increment

在CSS中&#xff0c;counter-increment 是一个用于递增计数器值的属性。它通常与 counter-reset 和 content 属性一起使用&#xff0c;以在文档中的特定位置&#xff08;如列表项、标题等&#xff09;插入自动生成的数字或符号。 counter-increment 基本用法&#xff1a; 使…...

【SkiaSharp绘图08】SKPaint方法:自动换行、是否乱码、字符偏移、边界、截距、文本轮廓、测量文本

文章目录 SKPaint方法BreakText 计算指定宽度内可绘制的字符个数ContainsGlyphs字体是否包含文本字符(是否会乱码)GetGlyphOffsets 字符偏移量GetGlyphPositions 偏移坐标GetGlyphWidths 每个字符的宽度与边界GetHorizontalTextIntercepts 轮廓截距GetPositionedTextIntercepts…...

深入理解Servlet Filter及其限流实践

引言 在Java Servlet技术中&#xff0c;Filter是一个拦截器&#xff0c;它允许开发者在请求到达目标资源之前或响应发送给客户端之后&#xff0c;对请求或响应进行拦截和处理。这种机制为实现诸如身份验证、日志记录、请求修改等功能提供了极大的灵活性。 Filter基础 Filter…...

使用cv2对视频指定区域进行去噪

视频去噪其实和图象一样&#xff0c;只是需要现将视频截成图片&#xff0c;在对图片进行去噪&#xff0c;将去噪的图片在合成视频就行。可以利用cv2.imread()、imwrite()等轻松实现。 去噪步骤 1、视频逐帧读成图片 2、图片指定区域批量去噪 2、去噪后的图片写入视频 1、视频逐…...

AI在创造还是毁掉音乐?

AI对音乐产业的影响是复杂而多维的&#xff0c;既有创造性的贡献也存在潜在的挑战。我们可以从以下几个角度来分析这个问题&#xff1a; ### 创造性贡献 1. **音乐创作**&#xff1a;AI可以帮助音乐家创作新的旋律和和声&#xff0c;甚至生成完整的音乐作品。例如&#xff0c…...

【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实现哈夫曼编码

前言 哈夫曼编码是一种经典的无损数据压缩算法&#xff0c;它通过赋予出现频率较高的字符较短的编码&#xff0c;出现频率较低的字符较长的编码&#xff0c;从而实现压缩效果。这篇博客将详细讲解如何使用Java实现哈夫曼编码&#xff0c;包括哈夫曼编码的原理、具体实现步骤以…...

IDEA、PyCharm等基于IntelliJ平台的IDE汉化方式

PyCharm 或者 IDEA 等编辑器是比较常用的&#xff0c;默认是英文界面&#xff0c;有些同学用着不方便&#xff0c;想要汉化版本的&#xff0c;但官方没有这个设置项&#xff0c;不过可以通过插件的方式进行设置。 方式1&#xff1a;插件安装 1、打开设置 File->Settings&a…...

visual studio 创建c++项目

目录 环境准备&#xff1a;安装 visual studiovisual studio 创建c项目Tips&#xff1a;新建cpp文件注释与取消注释代码 其他初学者使用Visual Studio开发C和C时常遇到的3个坑 环境准备&#xff1a;安装 visual studio 官网&#xff1a;https://visualstudio.microsoft.com/zh…...

MGV电源维修KUKA机器人电源模块PH2003-4840

MGV电源维修 库卡电源模块维修 机器人电源模块维修 库卡控制器维修 KUKA电源维修 库卡机器人KUKA主机维修 KUKA驱动器模块维修 机械行业维修&#xff1a;西门子系统、法那克系统、沙迪克、FIDIA、天田、阿玛达、友嘉、大宇系统&#xff1b;数控冲床、剪板机、折弯机等品牌数控…...

设置浏览器互不干扰

目录 一、查看浏览器文件路径 二、 其他盘新建文件夹Cache 三、以管理员运行CMD 四、执行命令 一、查看浏览器文件路径 chrome://version/ 二、 其他盘新建文件夹Cache D:\chrome\Cache 三、以管理员运行CMD 四、执行命令 Mklink /d "C:\Users\Lenovo\AppData\Loca…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...