自动化测试:Autorunner的使用

news2024/11/29 4:25:53

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

from 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 tk

from 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_wage

    elif work_hours <= 50:

        return 40 * hourly_wage + (work_hours - 40) * 1.5 * hourly_wage

    else:

        return 40 * hourly_wage + 10 * 1.5 * hourly_wage + (work_hours - 50) * 3 * hourly_wage

root.mainloop()

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

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

相关文章

[java]集合类stream的相关操作

1.对list中的map进行分组 下面例子中&#xff0c;根据高度height属性进行分组 List<Map<String, Float>>originalList new ArrayList<>();originalList.add(new HashMap<String,Float>() {{put("lng", 180.0f);put("lat",90f);…

Eclipse使用TFS(Team Foundation Server) 超详细

Eclipse使用TFS 1、什么是TFS2、TFS和Git的区别3、签出代码4、签入代码4.1、签出以进行编辑4.2、修改本地代码4.3、签入挂起的更改4.4、签入 如果不能 签入挂起的更改&#xff0c;则先 签出以进行编辑如果 签入挂起的更改不可选中&#xff0c;则 如下操作 1、什么是TFS Team F…

阿里云使用域名访问部署网站【2024 详细版】

目录 一、注册域名 1.创建信息模板 2.查询注册域名 二、域名设置 1.SSL证书 2.域名解析 3.宝塔设置 一、注册域名 1.创建信息模板 点击右上角【三】-【域名】-【信息模板】-【创建信息模板】- 填写信息 模板分为个人和企业两种&#xff0c;根据情况进行创建即可&…

c++ 里构造函数的形参与数据成员的同名问题

如题&#xff0c;这时&#xff0c;或许在 java 里&#xff0c;会报语法错误。但在 c vs2019 开了 c20语法规范。这不再是错误。这样的好处是解决了咱们的起变量名的麻烦&#xff1a;重名现在已不是错误&#xff0c;编译器可以解决了。测试如下&#xff1a; 我们看看 c 编译器是…

揭秘!速卖通、敦煌网、国际站出单背后的黑科技:自养号测评技术

在竞争激烈的跨境电商平台上&#xff0c;如亚马逊、速卖通、Lazada、Shopee、敦煌网、Temu、Shein、美客多和阿里国际等&#xff0c;稳定出单成为每位卖家共同追求的目标。为了实现这一目标&#xff0c;卖家需要从产品选择、运营策略和客户服务等多个维度进行全面考量&#xff…

【C语言】13.指针与数组的关系

一、数组名的理解 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&arr[0] %p\n", &arr[0]);printf("arr %p\n", arr);return 0; }通过上述代码输出结果我们发现结果相同&#xff0c;因此我们得出结论&a…

电脑开机后出现Aptio Setup Utility 处理方法

电脑开机后出现Aptio Setup Utility怎么处理 Aptio Setup Utility界面的原因&#xff1a; 这是由于 bios设置与真实的硬件情况不匹配硬盘故障找不到可启动的硬盘情况 我的问题是找不到可启动的硬盘情况 解决方式如下&#xff1a; 进入如下界面了&#xff0c;选择Boot选项…

SAP_ABAP模块-记录第三方通过Webservice调用SAP接口时的问题

一、业务背景&#xff1a; 最近SAP有个货物移动的接口需要优化&#xff0c;之前与第三方销售管理平台对接&#xff0c;一直都没有问题的&#xff0c;但是现在SAP这边优化后&#xff0c;然后对方平台的开发同事说&#xff0c;调用不成功&#xff0c;报错了&#xff0c;最开始一直…

vue3 antdv RadioButton默认值选择问题处理

1、先上官方文档&#xff1a; Ant Design Vue — An enterprise-class UI components based on Ant Design and Vue.js 官方代码&#xff1a; <template><div><div><a-radio-group v-model:value"value1"><a-radio-button value"a…

添加右键菜单(以git为例)

1、打开注册表编辑器 打开系统注册表&#xff0c;使用组合键“Win R”输入“regedit”。 依次展开”HKEY_CLASSES_ROOT\Directory\Background\shell”。 2、新建右键菜单项 在[Background]下找到“shell”如果没有则新建项shell&#xff0c;接着在“shell”下右键-新建项名…

M12单端I/O预铸法兰插座A-code

M12单端I/O预铸法兰插座A-code概述 M12单端I/O预铸连接器A-code是一种常用于工业自动化领域的连接器件&#xff0c;主要用于传感器和执行器之间的信号传输。它的设计遵循国际标准IEC 61076-2-101&#xff0c;具有良好的防水防尘性能&#xff0c;通常达到IP67的保护等级。M12连…

kettle无法启动问题_PENTAHO_JAVA_HOME

1&#xff0c;遇到spoon.bat启动报错&#xff1a;先增加pause看清错误信息 1.1&#xff0c;错误信息 1.2&#xff0c;因为本地安装jdk1.6无法支持现有版本kettle。只能手动执行kettle调用的java路径&#xff1b;如下 系统--高级系统设置--高级--环境变量 启动成功

Day 29:1600. 王位继承顺序

Leetcode1600. 王位继承顺序 一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点&#xff0c;这个家庭里有人出生也有人死亡。 这个王国有一个明确规定的王位继承顺序&#xff0c;第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) &#xff0c;给…

java内存溢出堆栈分析

一、背景 java应用系统内存溢出导致服务不可用&#xff0c;可手动生成dump文件或添加配置参数生成文件&#xff0c;进行dump文件分析定位具体内存OOM的原因&#xff0c;并优化修复。 二、JProfile分析 分析工具下载 https://download.csdn.net/download/xinpz/89463963 三、…

【案例分析:基于 Python 的几种神经网络构建 一维的和二维的全介质和金属SPR 材料的光谱预测与逆向设计】

案例分析&#xff1a;传播相位与几何相位超构单元仿真与器件库提取与二维超构透镜设计与传播光场仿真 案例分析&#xff1a; 片上的超构单元仿真与光学参数提取 案例分析&#xff1a;基于粒子群方法的耦合器设计 案例分析&#xff1a;基于 Python 的几种神经网络构建 一维的和二…

硫化物固态电解质在全固态锂电池制造领域发展潜力大

硫化物固态电解质在全固态锂电池制造领域发展潜力大 固态电解质主要包括氧化物、硫化物、聚合物等类型。氧化物固态电解质由于研发难度相对较低&#xff0c;是目前主流技术路线。硫化物固态电解质研发难度较高&#xff0c;但性能优异&#xff0c;特别适合制造全固态锂电池&…

【秋招刷题打卡】Day01-自定义排序

Day01-自定排序 前言 给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦&#xff0c;详细介绍 >笔试刷题陪伴小屋-打卡赢价值丰厚奖励 < ⏰小屋将在每日上午发放打卡题目&#xff0c;包括&#xff1a; 一道该算法的模版题 (主要以力扣&#xff0c;牛客&#xff0c;acwin…

信息学奥赛初赛天天练-31-CSP-J2022基础题-指针、数组、链表、进制转换、深度优先搜索、广度优先搜索、双栈实现队列应用

PDF文档公众号回复关键字:20240621 2022 CSP-J 选择题 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 3.运行以下代码片段的行为是 ( ) int x 101; int y 201; int * p &x; int * q &y;…

【Golang - 90天从新手到大师】Day09 - string

系列文章合集 Golang - 90天从新手到大师 String 一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据&#xff0c;但是通常是用来包含人类可读的文本。 len()返回字符串字节数目&#xff08;不是rune数&#xff09;。 通过索引可以访问某个字节值&#xff0c;0…

数据仓库 基础教程

数据仓库 基础教程 1. 数据仓库概述 数据仓库(Data Warehouse,简称DW或者DWH)是通过集成来自多个异构数据源的数据来构建的。它支持分析报告、结构化和/或特别查询和决策制定。本教程采用循序渐进的方法来解释数据仓库的所有必要概念。 “数据仓库”一词最早是由Bill Inmon在1…