当前位置: 首页 > 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…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...