软件测试论文.docx

上传人:b****3 文档编号:4681768 上传时间:2022-12-07 格式:DOCX 页数:24 大小:970.92KB
下载 相关 举报
软件测试论文.docx_第1页
第1页 / 共24页
软件测试论文.docx_第2页
第2页 / 共24页
软件测试论文.docx_第3页
第3页 / 共24页
软件测试论文.docx_第4页
第4页 / 共24页
软件测试论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

软件测试论文.docx

《软件测试论文.docx》由会员分享,可在线阅读,更多相关《软件测试论文.docx(24页珍藏版)》请在冰豆网上搜索。

软件测试论文.docx

软件测试论文

《软件质量与测试基础》期末论文

 

姓名:

梁文琦

学号:

12110125120

班级:

12计算机(专升本)

日期:

2013-10-26

目录

1.AutoRunner工具简介3

2.AutoRunner工具的安装5

3.AutoRunner工具的测试过程7

3.1创建项目7

3.2录制脚本8

3.3对象库11

3.3脚本回放13

3.4回放日志查看14

3.5注意事项16

4.测试用例与执行18

4.1创建用例18

4.2设置检查点24

5.使用AUTORUNNER的体会27

1.AutoRunner工具简介

AutoRunner是黑盒测试工具,可以用来执行重复的手工测试。

主要用于:

功能测试、回归测试等工作的自动化。

它采用数据驱动和参数化的理念,通过录制用户对被测系统的操作,生成自动化脚本,然后让计算机执行自动化脚本,达到提高测试效率,降低人工测试成本。

自动化测试是当今测试发展的方向,能够帮助软件开发团队实现:

●节省测试时间

自动测试通过执行测试脚本来实现测试自动化,单个脚本的执行速度比人工执行快10倍以上,能够为我们节省大量的测试时间,我们不必为了测试时间的deadline而加班加点。

●24小时执行

通过24小时执行模式,实现夜间执行模式,实现夜间自动执行,从而达到“每日构建测试”的目标,可以即使发现每天出现的缺陷。

项目经理及时获取项目质量数据,掌握项目进展情况。

●降低成本

自动化测试不需要人员来执行测试用例,因此可以节省大量的执行成本。

对测试人员而言,不需要发布新版本带来的加班。

对于整个产品开发团队,只使用很少的测试人员就可以达到高质量的产品,获得大量成本的节省。

产品可以对以下类型对象进行GUI功能性测试:

1Windows类型对象,一般为用C++/Delphi/VB/VFP/PB/.NetForm等技术开发的桌面程序。

2IE网页对象,一般性的网站,比如大的门户类网站。

3Java对象,一般为用AWT/Swing/SWT等技术开发的桌面程序。

4Flex对象,网页的内容是用Flex开发的。

5Silverlight对象,网页的内容是用Silverlight开发的。

6WPF对象,一般为用WPF技术开发的桌面程序。

7QT对象,一般为用QT技术开发的桌面程序。

系统要求:

windows(32位/64位)2000/xp/vista/2003/7/2008

2.AutoRunner工具的安装

1.进入网站注册账户,注册之后登录即可下AutoRunner,如图2-1所示

图2-1

2.双击安装图示,按照提示安装完成,在安装的过程中由于本软件要录制网页脚本,因而加入了必需的网页插件,在安装插件时有些杀毒软件会出现拦截提示,这是正常现象,放行即可安装,如果禁止则不能正常录制网页脚本,如图2-2,2-3所示

图2-2

图2-3

3.AutoRunner工具的测试过程

3.1创建项目

打开安装好的AutoRunner工具,打开之后因为第一个运行,需要指定一个工作空间给它。

好了之后软件界面如3-1所示。

图3-1

点击菜单文件-新建-项目,打开编辑项目界面,输入项目名称,点击确定,在项目资源管理下会出现新建的项目。

如图3-2,3-3所示

图3-2

图3-3

3.2录制脚本

点击项目test1单击右键-新建脚本,脚本取名clac,目的是测试系统自带的计算器程序,如图3-4所示

图3-4

打开系统自带的计算器程序,点击autorunner上的红色录制按钮

开始录制,此时屏幕的右下角会出现一个录制跟踪器。

如图3-5,3-6,3-7所示

图3-5

图3-6

图3-7

例如录制一个计算器9/3=3的脚本。

如图3-8所示

图3-8

在录制好脚本后,在项目目录下会存在如下几个文件。

如下图所示

第一个为脚本文件,保存了脚本编辑器中的脚本;第二个为参数表文件,是一个excel表格,所有的参数化数据都将被保存到这里,当然在我们没用到参数化时,此文件中无数据。

第三个为对象库文件,是一个xml格式,前面我们看到的对象库信息会被保存到这里,对象库可以进行编辑,编辑后也会被保存下来。

上面的三个文件都可以在软件中修改,不建议在软件外编辑。

3.3对象库

对象库中保存了所有对象的详细信息,不同对象的信息都不完全相同,在回放时就是根据这些属性来准确找到对应窗口中的控件,使之响应相应的动作。

对于Windows程序来说某一个对象的属性包含如下内容。

Java程序对象的属性包含如下内容。

网页对象的属性包含如下内容。

3.3脚本回放

回放脚本的过程,实质是对先前的录入动作的一次重复操作,只是这个过程是根据录入的脚本自动完成的。

对于回放来说,不管是回放Windows程序脚本还是Java程序脚本还是IE程序脚本都基本相同。

下面就以先前录入的计算器脚本为例,介绍一下回放操作及注意事项。

点击菜单【执行】→【开始执行】或者点击工具栏的回放按钮,此时软件进入回放阶段,界面会被隐藏,回放的结果会在输出窗口中显示,如回放成功会有如下信息输出。

如图3-9所示

图3-9

如果回放之前将计算器窗口关闭,回放后会有如下信息输出,提示执行window动作时,计算器窗口对象没有找到。

如图3-10所示

图3-10

如果回放之前在对象库中将等号的属性信息删除,回放后会有如下信息输出,提示回放clickControl动作时,等号对象在对象库中没有发现。

如图3-11所示

图3-11

3.4回放日志查看

当执行完脚本后,系统保存执行结果到工作目录,此时系统自动弹出执行结果查看窗口,在该窗口用户可更友好地查看执行的结果信息。

日志中需要体现检查点信息,含检查点名。

执行结果查看界面以独立窗口形式展示,窗口以HTML的形式用列表显示对象的执行结果。

例如:

执行test1项目下的clac.bsh脚本,如图3-12所示

图3-12

执行完毕后,在AutoRunner的工作空间,保存了相对应的和脚本名字相同的文件名的*.logd文件。

例如图3-13所示

图3-13

通过菜单工具,来进行日志查看操作.如图3-14所示。

图3-14

3.5注意事项

1、回放时必须要将待回放的脚本打开,否则回放菜单和工具栏的回放按钮将不可用。

2、在编辑器中打开了多个脚本时,应确保待回放的脚本是当前编辑的脚本。

3、回放时一定要将各项状态置于录制时的初始状态,否则回放可能会失败。

4、在回放的过程中不要再操作鼠标和键盘,直至回放完成,否则回放可能会失败。

5、如果回放的脚本被手工修改过一定要及时保存,否则修改过或是被注释掉的动作在回放时会得不到体现。

6、对于回放Java程序脚本,如果控件中带有滚动条(比如树控件、列表控件等),在控件中的元素不可见的情况下对元素执行的操作可能会失败。

7、在回放时可能录制下的脚本并不能完全满足要求,比如脚本命令参数化、跨脚本回放,校验脚本、修改对象库权重等等,此时就得手动修改脚本

4.测试用例与执行

4.1创建用例

创建网站注册用户加用户登录功能。

点击录制按钮创建要录制的脚本,脚本代码如下:

ar.startApplication("C:

\\ProgramFiles\\InternetExplorer\\IEXPLORE.EXE","http:

//localhost:

6717/Default1.aspx");//调用系统函数startApplication,自动执行打开浏览器并添加网站参数。

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("INPUT_submit_注册",16,6,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_text_txtUserzcname",38,6,"left");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_text_txtUserzcname","xiaohong");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_password_txtUserzcpassword",22,2,"left");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_password_txtUserzcpassword","123456");

ar.inputKey("Tab");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("TEXTAREA_txtbeizhu","");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setState("INPUT_checkbox_ckboxlist_1","true");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.inputKey("Tab");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_submit_提交",25,7,"left");

ar.window("#32770_MicrosoftInternetExplorer").clickControl("#32770",127,16,"left");

ar.window("#32770_MicrosoftInternetExplorer").clickControl("Button_确定",41,12,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("A_商城首页",23,8,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("INPUT_text_ContentPlaceHolder1_txtUsername",34,9,"left");

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").setValue("INPUT_text_ContentPlaceHolder1_txtUsername","xiaohong");

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("INPUT_password_ContentPlaceHolder1_txtPassword",10,6,"left");

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").setValue("INPUT_password_ContentPlaceHolder1_txtPassword","123456");

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("INPUT_submit_登录",11,16,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("A_注销",7,6,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

现在进行测试回放,确定软件是否正常运行。

如下是软件回放后的日志文件。

根据日志报告,现在对测试脚本回放的操作都是成功的。

下面我们把用户注册进行参数化,让软件根据我们给定的几组用户去注册,一方面是学会如何使用该软件的参数化,一方面测试我们给定的几组用户是否有效,例如我给了一下3组数据。

 

测试方式

输入值

预期结果

实际结果

黑盒测试

用户名:

aaaaaa

密码:

aaaaaa

注册成功

注册成功

黑盒测试

用户名:

bbbbbb

密码:

bbbbbb

注册成功

注册成功

黑盒测试

用户名:

aaaaaa

密码:

aaaaaa

注册失败

注册成功

现在对上面的测试脚本进行改造,使用参数化对该用例进行测试

首先使用的是for循环函数,该函数如下

for(ParameterDatapd:

ar.getParameterDataList("zhuce.xls")/*.subList(0,3)*/)

{

//ar.parameterData=pd;//ar.parameterData可用于脚本之间传递参数

}

Pd表示的是参数集的对象,我们使用系统函数getFrom(“”)方法对Pd中的参数进行获取.

现在把注册的脚本放入for循环的语句中,这样就实现了对每个用户注册进行循环,代码如下:

for(ParameterDatapd:

ar.getParameterDataList("zhuce.xls")/*.subList(0,3)*/)

{

//ar.parameterData=pd;//ar.parameterData可用于脚本之间传递参数

ar.window("IEFrame_http:

//localhost:

6717/Default1.aspx-WindowsInternetExplorer").clickControl("INPUT_submit_注册",16,6,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_text_txtUserzcname",38,6,"left");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_text_txtUserzcname","xiaohong");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_password_txtUserzcpassword",22,2,"left");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_password_txtUserzcpassword","123456");

ar.inputKey("Tab");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("TEXTAREA_txtbeizhu","");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setState("INPUT_checkbox_ckboxlist_1","true");

ar.inputKey("Tab");

ar.inputKey("Tab");

ar.inputKey("Tab");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("INPUT_submit_提交",25,7,"left");

ar.window("#32770_MicrosoftInternetExplorer").clickControl("#32770",127,16,"left");

ar.window("#32770_MicrosoftInternetExplorer").clickControl("Button_确定",41,12,"left");

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

//ar.//IEisloadingweb.Wait...

//ar.//IEhasloadedweb.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").clickControl("A_商城首页",23,8,"left");

}

现在对用户输入框和密码输入框实现参数化.主要代码就2句.

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_text_txtUserzcname","xiaohong");

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_password_txtUserzcpassword","123456");

现在对这2句进行改造,改造如下

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_text_txtUserzcname",pd.getFrom("username"));

ar.window("IEFrame_http:

//localhost:

6717/regiser.aspx-WindowsInternetExplorer").setValue("INPUT_password_txtUserzcpassword",pd.getFrom("password"));

现在改造都完成了,开始测试脚本了.最终脚本运行日志如下

测试结果显示都是正确的,说明这3个用户都注册成功了,但是与我们的测试用例的预期结果不相同,得出结论注册这一块有问题,没有对用户进行判别,已注册的用户名还是能注册.

4.2设置检查点

创建校验消息框的检查点,使用的系统函数是checkMessageBox命令。

如检查注册时是否有检查用户名重名。

在正确的程序里如果输入了已注册的用户名应该提示该用户已存在,如果是在错误的程序里(假如没有对用户作检测)那得出的结论应该都是注册成功的。

主要方法如下:

ar.checkMessageBox("#32770_MicrosoftInternetExplorer","已存在该用户");

脚本代码如下:

ar.startApplication("C:

\\ProgramFiles\\InternetExplorer\\IEXPLORE.EXE","http:

//localhost:

6717/Default1.aspx");

//ar.//IEisloadingweb.Wait...

//

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1