软件定制 成功研发:ERP系统,OA系统,CRM系统,进销存,外贸进销存销售系统,项目管理系统 

 
 

首   页  |  成功案例  |  关于我们  |  软件产品  |  软件定制  |  编程知识  |  行业知识  |  WEB开发  |  联系我们

 
     
JavaServerPages的测试技术  
 

  <p>&lt;pclass&quot;a14&quot;&gt;JavaServerPages(JSP)是Sun微系统公司JavaServlet技术的扩展,用来建立Web应用,并允许开发人员将Java代码直接嵌入到HTML的网页中。为了加速Web应用的开发,JSP将Web接口逻辑与后端的内容逻辑相分离,所以在实现同一个Web页面时,Web设计人员和Web开发人员的工作是相分离的,互不干涉。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;与其它技术相比,JSP在开发动态应用方面存在着几个明显的优势:&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;●通过JSP,开发团队的成员只需要关注与其最相关的Web页面部分。由于JSP文档看起来就像HTML文档附加了一些额外的标记一样,所以设计人员可以很容易的修改页面的布局、图形、颜色等等,而不需要具备任何Java的相关知识(或者只需要了解非常基础的Java知识)。另外,开发人员可以通过建立原始的JSP文档来很容易的对应用的流程和逻辑进行测试,而将图形设计的细节留给设计人员。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;●通过使用JSP可以使页面的表达和逻辑容易理解。清晰的JSP文档在表示HTML时并没有使用过多的其它标记,所以页面的可读性很好,我们可以很容易地通过阅读JSP文档来判断页面的结果是什么。此外,JSP并不需要通过Java代码来实现HTML的表达,所以开发人员可以将他的全部精力放在如何实现应用的逻辑上。JSP的这些特性可以满足应用快速部署的需要。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;●JSP通过一种相对简单的方式来改变应用的外观和观感(甚至将产品的一些页面移为他用)而不需要对应用的逻辑进行修改。举个例子,用户可以为WML浏览器建立一组页面而为一般的HTML浏览器建立另一组页面,然后再用XML再建立一组页面,所有的这些都不会触及需要修改应用的实际逻辑。在这种情况下,如果将已经被测试过的应用逻辑从一种版本转换到另一种版本就可以避免出现大量的错误。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;然而,由于JSP是通过混合Java和HTML(或者XML)来建立一个新的范例,所以它不仅继承了这两种语言的缺点还因为混合而产生了新的特殊的问题。本文我们将介绍一些测试的技巧来帮助读者提高JSP应用的可靠性。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;1.仔细检查参数的名字&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;对于JSP来说,因为参数名称拼写错误而带来的问题是屡见不鲜的。因为参数是通过名称调用的,所以如果名称拼写错误,程序可能就会返回一个用户并不期望的null结果。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;2.检查被请求对象是否含有所需要的参数&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;检查被请求对象是否含有所需要的参数是一个非常好的习惯。一般来说,确定的参数只会出现在固定的情况下,而不会出现在其它非设定的情况。但是,如果一些参量对你是至关重要的或者你需要知道一些问题确实发生了(例如,在测试阶段的一些问题),你出了对调用参数的地方做一些简单参数检查外还必须对一些参数没有被显式调用的地方做更多的检查。例如,在对应用进行测试时,你或许想测试一些参数,并在这些参数丢失的任何地方抛出异常。这样,我们就会及时的获得参数丢失的警告(通常情况下,我们很难检测到一些参数的丢失情况,因为我们的应用一般运行得都好像很正常)。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;为了便于这种测试,一个很好的做法就是在编写程序的时候采取一些预防措施。这些预防措施要求我们预见一些可能出现错误,并在可能发生这些错误的地方构造测试错误的预防性代码框架,这样当这些预期的错误出现或者对程序运行产生破坏时,程序就会通知我们并采取我们预先已经编写好的措施,例如停止程序的运行,将用户重新定位到一个备份服务器上或者提供调试信息以方便用户对问题的诊断。这些预防性代码框架通过在代码中加入声明,实现基于&amp;ldquo;合同&amp;rdquo;(交互式软件工程中的一种软件开发方法)的设计,开发软件防火墙或者只是简单的加入那些用来验证用户输入是否合法的代码。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;确定参量是否丢失的另一种方法就是在应用中添加一些内嵌的HTML注释,这些注释通过脚本和静态的分析工具能够自动地发现参数的丢失情况。例如,我们可以在一个叫做showrecipe.jsp的JSP文档中加入如下的注释来说明该JSP的调用并不需要行为参数。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;&amp;lt;!--BUG:showrecipe.jspcalledwithnoactionparameter--&amp;gt;&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;由于这些注释的目的是用来对JSP应用进行测试,所以在部署实际应用之前必须将这些注释信息删除。因为在部署JSP应用的时候,它们应该已经可以应付任何问题了。至少,这些JSP应用能够在用户不知情的情况下处理出现的问题并保证程序能够继续运行。如果恢复程序的执行并不是必需的,那么JSP应用应该为用户提供解释性的消息并建议他们与软件的开发商相联系。当然,你也可以根据你自己的需要在应用的最终版本中保留这些注释。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;3.尽可能的从多个角度测试应用&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;JSP页面的内容会随着应用状态信息(如,用户的偏好,信息条目的个数、查询的标准)的不同而不同。举个例子,如果你的应用是一个基于Web的e-mail应用,那么它就应该能够明显区分有100个信件与没有信件时候页面的不同。如果没有收到任何信件,应用应该生成一个含有&amp;ldquo;您没有信件&amp;rdquo;这样提示信息的页面。而当信箱中有100封信的时候,应用则应该生成一个含有初始化结果集的页面并且提供浏览各个结果所对应页面的方法。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;我们可以通过在JSP文档中添加一些条件判断来实现类似于上面例子所提到的功能。但是,由于页面随着条件的不同而产生不同的页面,所以在不同情况下JSP应用也会产生各种不同的错误。为了保证用户不会碰到这些问题,唯一的解决方法就是,我们对每一种可能的情况都进行试用和测试。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;4.检查JSP的代码是否遵循了所有适用的代码规则&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;JSP以及其它类似的ASP,PHP等技术都具有一个同样的特征:将程序代码嵌入到HTML文档中。从代码标准的角度来看,这实质上建立了一种独特的编程规则。将一种特定的程序语言嵌入到含有不同代码类型(例如,Java和HTML)的文档中是一种非常聪明的做法。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;举个例子,JSP文档通过加入&amp;lt;%%&amp;gt;标记来嵌入Java代码,也就是说这些代码是与HTML的标记共存的。如果试图让应用来自动保证Java和HTML的编码规则(用Python脚本或者静态分析工具)并将这些规则直接应用到.jsp文件的话,这种做法的唯一可能就是失败。因为这些代码通常既不是合法的HTML文档,当然也不是一个合法的.java文档。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;我们必须要运行了JSP的页面后才能判断JSP输出的最终结果是否是良构的HTML文档。因为一些HTML标记是由嵌入的程序语言所生成的,所以只有当JSP文档被运行后才能够看到这些标记。通过跟踪页面的方法来保证代码遵循相关的规则是比较困难的,特别是当这些页面还没有被编写好的时候。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;一个解决方案就是尽量将JSP文档的各个部分组件化。如果能够满足这个要求,我们就可以将Java和HTML的代码规则应用到结果文件中。以Tomcat系统为例,Tomcat在每个JSP页面首次运行的时候都会创建一个.java文件。当JSP引擎运行一个.jsp文件或者当.jsp文件实现一个servlet时,Java代码就会从HTML文件中被删除(更确切的说,原来嵌在HTML中的Java代码被隐含在Java代码中的HTML标记所替换了)。如果我们知道我们所使用的JSP服务器到底将这些文件存在了那里,我们就可以将编码规则应用到这些由JSP服务器所产生的.java文件上了,这些.java文件就相当于原始的JSP文件。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;注意,我们可能需要调整JSP服务器自动生成代码的某些规则。另外,现在还没听说JSP服务器所生成的代码会违背其所对应的JSP代码,这是因为这部分代码根本就不是我们所能控制的。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;JSP中的HTML是直接解释的。尽管最初的JSP(或者ASP或其它相关技术)文档并不是合法的HTML文档,但JSP所产生的页面却绝对是合法的HTML文档。在部署了JSP应用之后,我们就可以通过HTTP连接来访问相关的页面,并且可以采用验证其它任何静态HTML页面的工具和技术来验证实例化的JSP。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;我们也可以通过建立和强制制定JSP代码标准来解决上面所提到的问题。如果我们的服务器端脚本解决方案并不支持代码与HTML的分离,那么这将是自动检测那些代码的唯一方法。这或许需要专业的编码,但是由于JSP(以及ASP,PHP等等)遵循相同的HTML基本标记(HTML可以容纳新的标记),我们应该能够建立一般的规则来限定我们JSP页面,就像限制HTML文件一样。尽管一般的HTML规则的应用是在页面运行后才起作用,但这是令源代码与规则相符的最好的办法。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;许多JSP的开发人员还倾向于使用JSP来操作XML文档;如果你的JSP文档和XML兼容的话,你就可以使用你所拥有的任何XML工具来完成同样的功能。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;对于服务器端的脚本来讲,如果不考虑实现,我们推荐的最重要的编码方针就是努力使源代码看起来更像HTML。通过保持代码的简洁性,我们就能够让一些非代码开发人员来帮助我们开发应用的一部分。这样,领域专家们就可以只关注他们最擅长的部分而不会浪费时间去担心缺少什么代码。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;很明显,我们应该尽量减少页面中的非HTML代码。否则,这些代码不仅使我们的页面看起来不像HTML,而且也表明了我们还没有充分地实现业务逻辑和表示逻辑的分离。特别地,JSP允许我们将代码封装到beans或者隐藏到特定标记中来很容易地实现业务逻辑与表示逻辑的分离。&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;结论&lt;/p&gt;<br/>
&lt;pclass&quot;a14&quot;&gt;JSP提供了一种方便的建立动态Web应用的方法。JSP的开发过程具有自己的特点。但是,JSP仍然遵守一般的规律:预防性的编程、代码标准和全面的测试。我们应该不断的维护我们的代码以方便一些只懂得HTML的读者能够使用我们的代码。我们还必须注意将企业逻辑与表示相分离。我们可以通过塞入一些糟糕的代码而很容易地在用户所要求的期限内交差,并准备在以后将这些代码进行改进。然而,通过足够的努力我们完全可以开发出具有很多优点的JSP代码而不需要牺牲应用的可靠性。&lt;/p&gt;</p>



 

知识库

 








首 页 | 成功案例 | 关于我们 | 软件产品 | 软件定制 | 代理合作 | 售后服务 | 在线演示 | 联系我们

业务QQ:在线客服  技术QQ:在线技术支持 MSN:
Copyright (C) 深圳市凯路网络技术有限公司
粤ICP[07018848]号
软件知识 行业最新信息 编程技巧等尽在这里