爱飞 发表于 2015-1-16 22:15:05

ASP网页设计为Web使用程序创立测试用例的办法

ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。web|程序|创立您是不是正在寻觅一种把主动测试手艺使用到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代码

1publicclassHttpUnitTest{2publicstaticvoidmain(String[]args){3try{4WebConversationwc=newWebConversation();5WebRequestrequest=newGetMethodWebRequest("http://httpunit.sourceforge.net/index.html");6wc.setProxyServer("your.proxy.com",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中的代码用your.proxy.com(第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("http://httpunit.sourceforge.net");7getTestContext().setProxyName("webproxy.watson.ibm.com");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类的主要办法另外一个主要的类是net.sourceforge.jwebunit.TestContext。它为测试创立高低文。能够用这个类来处置像cookie、会话和受权之类的信息。表2显现了这个类的一些主要办法:


表2.net.sourceforge.jwebunit.TestContext类的主要办法
下载jWebUnit,在Eclipse中设置jWebUnit

JWebUnit是用纯Java代码完成的,以是能够以JAR文件的情势取得它(请参阅参考材料,从中取得下载链接)。在完成下载以后,请按以下步骤在Eclipse平台上设置JWebUnit库:

把下载的文件jwebunit-1.2.zip开释光临时目次中(假定是C:        emp)。

在Eclipse中创立新Java项目,将其定名为jWebUnit。

右击PackageExplorer视图中的jWebUnit项目,然后选择Properties。

单击JavaBuildPath。单击Libraries标签中的AddExternalJARs。

扫瞄到C:        empjwebunit-1.2lib目次,选择这个目次中的一切JAR文件。

单击OK。

如今能够在Eclipse中的jWebUnit项面前目今开辟jWebUnit测试用例了。构建示例使用程序

如今就能够检察jWebUnitAPI的实践使用了。我将带您研讨一个示例使用程序,匡助您更好地舆解jWebUnit的真正能力。这个使用程序是一个测试用例,用于翻开一个Google搜刮页面并搜刮文本HttpUnit。使用程序必要测试以了局景:

翻开Google主页http://www.google.com。

断定该页包括一个名为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;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("http://www.google.com");getTestContext().setProxyName("proxy.host.com");getTestContext().setProxyPort(80);}
清单5把基础URL设置为http://www.google.com。这意味着测试用例的启动是相对这个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:        emp中,那末就要把源文件和类文件放在C:        empcomjweb        est中,而setclasspth.bat则放在C:        emp中。

编纂setclasspath.bat:设置JAR_BASE指向包括一切必须JAR文件的目次。比方,假如在C:        emp中开释jwebunit-1.2.zip文件,那末将JAR_BASE设置为C:        empjwebunit-1.2lib。

翻开命令行提醒符,切换到C:        emp目次。

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

用命令javacom.jweb.test.GoogleTest"HttpUnitHome"运转使用程序。

示例输入

在实行了测试用例以后,会在命令行输入一个测试用例呈报。假如测试失利,呈报看起来如清单7中所示:

清单7.带有断言失利的输入

C:        emp>javacom.jweb.test.GoogleTest"HttpUnitHwee".FTime:5.338Therewas1failure:1)testSearch(com.jweb.test.GoogleTest)junit.framework.AssertionFailedError:Linkwithtextnotfoundinresponse.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.NativeMethodAccessorImpl.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(UnknownSource)atcom.jweb.test.GoogleTest.main(GoogleTest.java:19)FAILURES!!!Testsrun:1,Failures:1,Errors:0
正如在清单7中能够看到的,能够用HttpUnitHwee作为参数来实行测试用例。这个测试用例碰到断言的中央会失利,由于了局页面中不包括带有这个文本的链接。由此也就发生了junit.framework.AssertionFailedError。

清单8实行时用HttpUnitHome作为参数。测试用例找到一个带有这个文本的链接,以是测试经由过程了:

清单8.乐成测试的输入

C:        emp>javacom.jweb.test.GoogleTest"HttpUnitHome".Time:6.991OK(1test)
停止语

本文经由过程会商jWebUnit框架的一些凸起特征和最主要的类,先容怎样用它创立简便的测试用例,让您对jWebUnit框架有一个熟悉。jWebUnit另有更多特征能够用在测试用例中。它撑持测试Web页面中的链接行数。能够对字符串、表大概带有指定标签的表单输出元素是不是存在于页面长进行断言。别的,jWebUnit还能够处置cookie(比方断言存在某个cookie、删除cookie等。)测试能够对某个文本以后呈现的特定文本的链接举行单击。假如想为Web使用程序构建快而无效的测试用例,jWebUnit多是您最好的伴侣。缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全

因胸联盟 发表于 2015-1-19 06:01:32

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

灵魂腐蚀 发表于 2015-1-25 18:11:47

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

兰色精灵 发表于 2015-2-3 12:46:04

学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。

蒙在股里 发表于 2015-2-9 01:47:15

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

只想知道 发表于 2015-2-26 17:49:13

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

透明 发表于 2015-3-8 16:27:44

多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。

活着的死人 发表于 2015-3-22 20:22:13

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
页: [1]
查看完整版本: ASP网页设计为Web使用程序创立测试用例的办法