为Web应用程序创建测试用例_第1页
为Web应用程序创建测试用例_第2页
为Web应用程序创建测试用例_第3页
为Web应用程序创建测试用例_第4页
为Web应用程序创建测试用例_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第第页为Web应用程序创建测试用例为Web应用程序创建测试用例

发表于:2023-09-21来源::点击数:标签:webWebWEB应用程序

您是否正在寻找一种把自动测试技术应用到Web开发中的方法?那么不用再找了!jWebUnit就是为Web应用程序创建测试用例的一个开源框架,它可以容易地插入到大多数JavaIDE中。通过使用一个示例应用程序,描述了生成简洁测试用例的详细步骤,软件工程

您是否正在寻找一种把自动测试技术应用到Web开发中的方法?那么不用再找了!jWebUnit就是为Web应用程序创建测试用例的一个开源框架,它可以容易地插入到大多数JavaIDE中。通过使用一个示例应用程序,描述了生成简洁测试用例的详细步骤,软件工程师AmitTuli对jWebUnit进行了介绍。自动测试可以节省重复执行相同测试步骤的时间和精力。本文将介绍jWebUnit,这是一组Java类,用于为Web应用程序开发测试用例。jWebUnit是一个开源项目,可以在BSD许可下免费获得。我将介绍如何下载jWebUnit库、配置Eclipse平台来开发jWebUnit测试用例,以及如何构建一个示例测试用例。

jWebUnit简介

jWebUnit以HttpUnit(一个进行Web应用程序自动测试的Java库)和JUnit单元测试框架为基础(请参阅参考资料)。jWebUnit提供了导航Web应用程序的高级API,并组合了一组断言,用它们来验证链接导航、表单输入项和提交、表格内容以及其他典型商务Web应用程序特性的正确性。jWebUnit以JAR文件形式提供的,可以很容易地将它插入大多数IDE中,jWebUnit也包含其他必要的库。

用HttpUnit进行测试

对Web应用程序自动进行测试意味着跳过Web浏览器,通过程序来处理Web站点。首先,我要介绍HttpUnit(JWebUnit的构建块之一)是如何简化这项工作的。HttpUnit可以模拟帧、javascript、页面重定向cookie,等等。在将HttpUnit用于JUnit时,它可以迅速地对Web站点的功能进行验证。

清单1显示了一个用HttpUnit编写的测试用例,它试图单击HttpUnit主页上的“Cookbook”链接:

清单1.单击HttpUnit主页上Cookbook链接的HttpUnit代码

clearcase/"target="_blank">ccccccborder=1>1publicclassHttpUnitTest{2publicstaticvoidmain(String[]args){3try{4WebConversationwc=newWebConversation();5WebRequestrequest=newGetMethodWebRequest("/index.html");6wc.setProxyServer("",80);7WebResponseresponse=wc.getResponse(request);8WebLinkhttpunitLink=response.getFirstMatchingLink(WebLink.MATCH_CONTAINED_TEXT,"Cookbook");9response=httpunitLink.click();10System.out.println("Testsuccessful!!");11}catch(Exceptione){12System.err.println("Exception:"e);13}14}15}清单1中的代码用(第6行)连接Internet。如果存在直接Internet连接,那么可以把这个语句解释掉。第8行的语句在页面中搜索包含文本Cookbook的Web链接。第9行的语句用于单击这个链接。如果找到链接,那么用户会看到TestSuccessful!!这条消息。

用jWebUnit进行的测试更简单

清单2的测试用例用jWebUnitAPI执行和清单1相同的任务:

清单2.单击HttpUnit主页上Cookbook链接的jWebUnit代码

1publicclassJWebUnitTestextendsWebTestCase{2publicstaticvoidmain(String[]args){3junit.textui.TestRunner.run(newTestSuite(JWebUnitTest.class));4}5publicvoidsetUp(){6getTestContext().setBaseUrl("");7getTestContext().setProxyName("");8getTestContext().setProxyPort(8080);9}10publicvoidtestSearch(){11beginAt("/index.html");12clickLinkWithText("Cookbook");13}14}如果没注意清单2中特定于JUnit的代码,那么您可以看到,测试用例现在变得相当整洁、简练。需要查看的重要的行是第6行、第11行和第12行。在第6行,基本URL被设置到HttpUnit的主页中。第11行用相对路径/index.html连接站点。第12行用于单击页面上具有文本Cookbook的链接。如果链接有效,那么JUnit会报告成功;否则,JUnit会报告异常。

jWebUnitAPI:进一步观察

每个jWebUnit测试的核心都是net.sourceforge.jwebunit.WebTestCase类,它代表测试用例。每个测试用例都必须是从这个类扩展而来。(net.sourceforge.jwebunit.WebTestCase类本身则是从junit.framework.TestCase类扩展而来的,它在JUnit中代表测试用例。)表1描述了这个类的一些常用方法:

表1.net.sourceforge.jwebunit.WebTestCase类的重要方法

方法说明publicTestContextgetTestContext()得到测试用例的上下文。可以用它访问像地区、基本URL和cookie之类的项目publicvoidbeginAt(StringrelativeURL)在相对于基本URL的URL处开始对话publicvoidsetWorkingForm(StringnameOrId)与指定的表单开始交互。如果当前页面只有一个表单,就不需要调用这个方法protectedvoidsubmit()提交表单??等同于单击表单的提交按钮publicvoidgotoFrame(StringframeName)激活命名帧另一个重要的类是net.sourceforge.jwebunit.TestContext。它为测试创建上下文。可以用这个类来处理像cookie、会话和授权之类的信息。表2显示了这个类的一些重要方法:

表2.net.sourceforge.jwebunit.TestContext类的重要方法

方法说明publicvoidaddCookie(Stringname,Stringvalue)向测试上下文中添加cookie。在HttpUnitDialog开始时,添加的cookie被设置到WebConversation上publicvoidsetResourceBundleName(Stringname)为测试上下文设置一个使用的资源绑定。用于按照WebTester中的键查找期望的值publicvoidsetProxyName(StringproxyName)为测试上下文设置代理服务器名称publicvoidsetBaseUrl(Stringurl)为测试上下文设置基本URL下载jWebUnit,在Eclipse中配置jWebUnit

jWebUnit是用纯Java代码实现的,所以可以以JAR文件的形式获得它(请参阅参考资料,从中获得下载链接)。在完成下载之后,请按以下步骤在Eclipse平台上配置jWebUnit库:

把下载的文件jwebunit-1.2.zip释放到临时目录中(假设是C:\temp)。在Eclipse中创建新Java项目,将其命名为jWebUnit。右击PackageExplorer视图中的jWebUnit项目,然后选择Properties。单击JavaBuildPath。单击Libraries标签中的AddExternalJARs。浏览到C:\temp\jwebunit-1.2\lib目录,选择这个目录中的所有JAR文件。单击OK。现在可以在Eclipse中的jWebUnit项目下开发jWebUnit测试用例了。

构建示例应用程序

现在就可以查看jWebUnitAPI的实际应用了。我将带您研究一个示例应用程序,帮助您更好地理解jWebUnit的真正威力。这个应用程序是一个测试用例,用于打开一个Google搜索页面并搜索文本HttpUnit。应用程序需要测试以下场景:

打开Google主页。

确定该页包含一个名为q的表单元素。(在Google的主页上,名为q的文本框是接受用户查询输入的文本框。)应用程序用这个元素输入搜索参数。

在搜索文本框中输入字符串HttpUnitHome,并提交表单。

获得结果页,并确定该页面包含的链接中包含文本HttpUnitHome。

单击包含文本HttpUnitHome的链接。现在测试场景已经就绪,可以编写Java应用程序,用jWebUnit实现这些需求了。

第一步是声明一个从WebTestCase扩展而来的类,如清单3所示:

清单3.声明测试用例类

publicclassGoogleTestextendsWebTestCase{staticStringsearchLink="";}正如我在前面提到过的,jWebUnit要求每个测试用例都是从WebTestCase中扩展而来的。searchLink保存传入的搜索参数。这个值以命令行参数的形式传递给测试用例。

下一步是声明入口点??main()方法,如清单4所示:

清单4.main()方法

publicstaticvoidmain(String[]args){searchLink=args[0];junit.textui.TestRunner.run(newTestSuite(GoogleTest.class));}main()方法调用junit.textui.TestRunner.run()执行JTest测试用例。因为需要运行GoogleTest测试用例,所以,作为参数传递给run()方法的测试套件采用GoogleTest.class作为参数。

接下来,JTest调用setUp()方法来设置基本URL和代理,如清单5所示:

清单5.设置

publicvoidsetUp(){getTestContext().setBaseUrl("");getTestContext().setProxyName("");getTestContext().setProxyPort(80);}清单5把基本URL设置为。这意味着测试用例的启动是相对于这个URL的。下面两个语句设置连接到Internet的代理主机和代理端口。如果是直接连接到Internet,那么可以忽略代理设置语句。

现在开始浏览站点并输入搜索参数。清单6显示了访问Web页面,然后测试所有场景的代码:

清单6.测试所有场景

publicvoidtestSearch(){beginAt("/");assertFormElementPresent("q");setFormElement("q","HttpUnit");submit("btnG");assertLinkPresentWithText(searchLink);clickLinkWithText(searchLink);}清单6的代码连接到基本URL,并相对于/开始浏览。然后它断定页面中包含一个名为q的表单元素??q是Google主页上查询输入文本框的名称。下一条语句用值HttpUnit设置名为q的文本框。再下一条语言提交表单上名为btnG的提交按钮。(在Google的主页上,名为btnG的按钮是标签为GoogleSearch的按钮。)表单是在这个对话中提交的,下一页列出搜索结果。在结果页面上,代码首先检查是否有一个链接的文本是HttpUnitHome。如果该链接不存在,那么测试就以AssertionFailedError失败。如果该链接存在,则测试执行的下一个操作是单击链接。

运行示例应用程序

现在把示例应用程序投入使用当中:

下载示例应用程序j-webunitsample.jar(请参阅下载)。

在一个目录中解压缩j-webunitsample.jar。例如,如果把它释放到C:\temp中,那么就要把源文件和类文件放在C:\temp\com\jweb\test中,而setclasspth.bat则放在C:\temp中。

编辑setclasspath.bat:设置JAR_BASE指向包含所有必需JAR文件的目录。例如,如果在C:\temp中释放jwebunit-1.2.zip文件,那么将JAR_BASE设置为C:\temp\jwebunit-1.2\lib。

打开命令行提示符,切换到C:\temp目录。

执行setclasspath.bat。这会设置执行测试用例所需的CLASSPATH。

用命令javacom.jweb.test.GoogleTest"HttpUnitHome"运行应用程序。示例输出

在执行了测试用例之后,会在命令行输出一个测试用例报告。如果测试失败,报告看起来如清单7中所示:

清单7.带有断言失败的输出

C:\tempjavacom.jweb.test.GoogleTest"HttpUnitHwee".FTime:5.338Therewas1failure:1)testSearch(com.jweb.test.GoogleTest)junit.framework.AssertionFailedError:Linkwithtext[HttpUnitHwee]notfoundinresponse.atnet.sourceforge.jwebunit.WebTester.assertLinkPresentWithText(WebTester.java:618)atnet.sourceforge.jwebunit.WebTestCase.assertLinkPresentWithText(WebTestCase.java:244)atcom.jweb.test.GoogleTest.testSearch(GoogleTest.java:36)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAcc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论