自动化测试: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()

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gitblit git pycharm 新建版本库及push备忘

在终端l中输入ssh,如果有消息弹出说明安装成功。 // 在任意路径打开GIT BASH,执行以下命令,期间所有询问可以直接Enter跳过 ssh-keygen -t rsa -C "注册Gitlab的邮箱" “”之内可以任何文字,备注提示作用。 设置用户名和邮箱 已经设置的可以检查一下。 #设置用…

Unity的渲染管线

渲染管线 概念 Unity的渲染管线是在图形学渲染管线的基础上&#xff0c;加上了高度可配置可扩展的框架&#xff0c;允许开发者自定义渲染流程。 渲染管线&#xff08;渲染流水线&#xff09;概述&#xff1a;将数据分阶段的变为屏幕图像的过程。 数据指的是模型、光源和摄像…

利用LabVIEW和机器学习实现无规律物体识别

针对变化无规律的物体识别&#xff0c;LabVIEW结合机器学习算法提供了一种高效的解决方案。介绍如何使用LabVIEW编程实现此功能&#xff0c;包括所需工具包、算法选择和实现步骤&#xff0c;帮助开发者在无规律的复杂环境中实现高精度的物体识别。 1. 项目概述 无规律物体的识…

『FPGA通信接口』LVDS接口(2)硬件设计

文章目录 1.LVDS原理2.xilinx器件对于LVDS的支持3.LVDS信号PCB布线要求4.传送门 1.LVDS原理 如上图所LVDS的工作原理示意图&#xff0c;其Driver驱动器由一个恒流源是LVDS发送端&#xff08;通常为 3.5mA&#xff09;驱动一对差分信号线组成。驱动状态会翻转就产生正负电压的变…

全球与中国汽车加热器市场:增长趋势、竞争格局与前景展望

汽车加热器是指安装在车辆上提供温暖和调节车厢温度的装置&#xff0c;确保乘客在各种天气条件下的舒适度。这些加热器在寒冷天气下为窗户除霜、防止起雾和保持居住者舒适的环境方面发挥着至关重要的作用。此外&#xff0c;智慧加热控制和预测演算法的不断整合正在引起全球汽车…

【面试干货】抽象类的意义与应用

【面试干货】抽象类的意义与应用 1、为其他子类提供一个公共的类型2、封装子类中重复定义的内容3、定义抽象方法&#xff0c;子类虽然有不同的实现&#xff0c;但是定义时一致的4、示例代码 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在…

STM32硬件接口I2C应用(基于FT6336)

目录 概述 1 硬件介绍 1.1 ST7796-LCD 1.2 MCU IO与LCD PIN对应关系 1.3 MCU IO与Touch PIN对应关系 2 FT6336的寄存器 2.1 FT6336寄存器列表 2.2 寄存器功能介绍 3 STM32Cube控制配置I2C 3.1 软硬件版本信息 3.2 I2C参数配置 3.3 使用STM32Cube产生工程 4 HAL库…

C#修改 EXE 文件图标和 winForm 窗口图标

修改 EXE 文件图标 1.准备好图片&#xff0c;转换为 Icon 图片&#xff1b; 2.右键工程&#xff0c;选择属性&#xff1b; 3.选择 Icon 图标即可&#xff1b; 4.重新生成可执行文件&#xff0c;查看。 修改 winForm 窗口图标 1.选中 winForm &#xff0c;查看属性&#x…

你好,复变函数1.0

输入时用后缀&#xff0c;开头空格 #include <easyx.h> #include <stdio.h> #define PI 3.141592653589793 #define E 2.718281828459045 #define K (1.0 / 256.0) #define K_1 256.0 //#define LINE//决定函数是用线画还是用点画 struct C {double i;double r;…

Unity3d 游戏暂停(timeScale=0)引起的deltaTime关联的系列问题解决

问题描述 游戏暂停的功能是通过设置timeScale0实现的&#xff0c;不过在暂停游戏的时候&#xff0c;需要对角色进行预览和设置&#xff0c;为了实现这个功能&#xff0c;是通过鼠标控制相机的操作&#xff0c;为了使相机的操作丝滑&#xff0c;获取鼠标操作系数乘以Time.delta…

网络编程(TCP协议,UDP协议)

目录 网络编程三要素 IP IPv4 InetAddress类 端口号 协议 UDP协议 UDP协议发送数据 UDP协议接收数据 UDP的三种通信方式(代码实现) TCP协议 TCP通信程序 三次握手和四次挥手 练习 1、客户端:多次发送数据服务器:接收多次接收数据&#xff0c;并打印 2、客户端…

技术分享 | 基于 API 解析的 Python 爬虫

最近各大高校纷纷翻拍 Coincidence 抖肩舞&#xff0c;需要对这种流行现象进行数据分析。数据分析首先需要有数据&#xff0c;本文介绍了爬取 B 站相应视频的评论、弹幕、播放量、点赞数等数据的方法。爬虫有多种实现方法&#xff0c;大型的网络爬虫多基于成熟的爬虫框架&#…

SpringCloud 基于Nacos和Eureka 实现双注册双订阅

一、使用场景/原因 过渡期迁移: 当系统从一个服务注册中心迁移到另一个时&#xff0c;例如从 Eureka 迁移到 Nacos&#xff0c;可以在过渡期内同时使用两个注册中心&#xff0c;确保服务平稳迁移&#xff0c;逐步过渡&#xff0c;避免一次性切换带来的风险。 兼容性考虑: 不同的…

这款跨界的软件也是非常强大!更快, 更轻, 更丝滑!

在网络世界中&#xff0c;一个好的浏览器就像一艘快速的帆船&#xff0c;帮助我们更快地到达目的地。迅雷浏览器正是这样一艘帆船&#xff0c;它不仅能够快速地带领我们浏览信息&#xff0c;还能提供安全的下载体验&#xff0c;让我们的网络生活更加丰富多彩。 迅雷浏览器&…

Python | Leetcode Python题解之第172题阶乘后的零

题目&#xff1a; 题解&#xff1a; class Solution:def trailingZeroes(self, n: int) -> int:ans 0while n:n // 5ans nreturn ans

AI播客下载:Machine Learning Street Talk(AI机器学习)

该频道由 Tim Scarfe 博士、Yannic Kilcher 博士和 Keith Duggar 博士管理。 他们做了出色的工作&#xff0c;对每个节目进行了彻底的研究&#xff0c;并与机器学习行业中一些受过最高教育、最全面的嘉宾进行了双向对话。 每一集都会教授一些新内容&#xff0c;并且提供未经过滤…

VMware Workstation安装Windows Server2019系统详细操作步骤

虚拟机版本 VMware Workstation 16 Prp 16.2.5 build-20904516 实现操作 创建虚拟机 创建新的虚拟机 自定义->下一步 默认即可&#xff0c;下一步 稍后安装操作系统->下一步 按照图下所示选择好系统->下一步 设置好虚拟机名称和位置->下一步 默认即可&#xff0…

基于uni-app和图鸟UI的智慧农业综合管控平台小程序技术实践

摘要&#xff1a; 随着信息化技术的飞速发展&#xff0c;智慧农业已成为推动农业现代化、提升农业生产效率的重要手段。本文介绍了一款基于uni-app框架和图鸟UI设计的智慧农业综合管控平台小程序&#xff0c;该平台整合了传感器控制、农业数据监测、设施管控、农业新闻传播以及…

Qt源码阅读笔记:初步了解QtCore模块目录结构

Qt框架是一个跨平台的C应用程序框架&#xff0c;广泛用于开发图形用户界面程序以及用于无界面后台操作的工具和服务器。它由多个模块组成&#xff0c;其中QtCore模块提供了核心的非GUI功能。 QtCore 提供了元对象系统&#xff0c;扩展了c 在元对象系统的基础上&#xff0c;qt又…

Redis—Hash数据类型及其常用命令详解

文章目录 Redis概述Hash类型Hash类型常用命令1 HSET&#xff1a;添加或者修改hash类型key的field的值2 HGET &#xff1a;获取一个hash类型key的field的值3 HMSET&#xff1a;批量添加多个hash类型key的field的值4 HMGET&#xff1a;批量获取多个hash类型key的field的值5 HGETA…