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