51Testing丛书连载:(七) 互联网单元测试及实践

发表于:2008-8-05 13:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈卫俊 赵璨 周磊等    来源:51Testing软件测试网

  6.2  JSP表现层测试
  表现层的测试主要针对JSP本身代码逻辑以及页面元素。JSP代码中引用的外部对象,根据测试隔离的原则将单独进行单元测试
  6.2.1  index.jsp
  访问http://localhost:8080/luceneweb的首页(index.jsp),主要包括搜索和分页功能。对应的源代码如下:

<html>
 <head>
  <title>
   Apache Lucene Example - Intranet Server Search Application
  </title>
 </head>
 <body>
  <p align="center">
   Welcome to the Lucene Template application. (This is the
   header)
  </p>
  <center>
   <form name="search" action="results.jsp" method="get">
    <p>
     <input name="query" size="44" />
     &nbsp;
     Search Criteria
    </p>
    <p>
     <input name="maxresults" size="4" value="100" />
     &nbsp;
     Results Per Page
     &nbsp;
     <input type="submit" value="Search" />
    </p>
   </form>
  </center>
  <p align="center">Apache Lucene Template WebApp 1.0</p>
 </body>
</html>

  可以看出index.jsp的代码相当简单,不包含任何逻辑,只是一个简单的页面展示以及提交。测试的工作重点也集中在UI的验证上,例如经过测试分析,可以设计出以下5个测试用例:
 Case1:标题为“Apache Lucene Example - Intranet Server Search Application”。
 Case2:存在搜索的表单,表单提交给result.jsp。
 Case3:表单中存在搜索条件输入框,name=query且默认值为空。
 Case4:表单中存在分页输入框,name=maxresults且默认值为100。
 Case5:表单中存在搜索按钮,name=submit,value=“Search”。
  这里以Case4为例,说明进行表现层的单元测试。Case4中使用HtmlUnit向服务端请求index页面,HtmlUnit会将请求的响应封装成HtmlPage对象。通过调用该对象的相关方法,我们可以获取到页面的所有元素完成校验。
                                            代码6.2  IndexJspTest 代码片段——Case4

01 public class IndexJSPTest{
02  private static HtmlPage page;
03  
04  @BeforeClass
05  public static void setUp() throws Exception {
06   WebClient webClient = new WebClient();
07   URL url = new URL("http://localhost:8080/luceneweb");
08   page = (HtmlPage)webClient.getPage(url);
09  }
10  
11  @Test
12  public void testMaxResults() throws Exception {
13   HtmlForm searchForm = page.getFormByName("search");
14   assertNotNull(searchForm);
15   assertEquals("100", searchForm.getInputByName("maxresults").      getValueAttribute());
16  }
17 }

  第4行,创建WebClient对象,完成向URI 标识的资源发送数据和从 URI 标识的资源接收数据的功能。
  第5行,创建URL对象,指向http://localhost:8080/luceneweb
  第6行,将WebClient返回的数据封装成HtmlPage对象。
  第11行,testMaxResults方法对每页显示的记录数进行测试。
  第13行,获取name属性值为search的表单。
  第14行,因为每页显示输入框应该存在于表单中,所以这里先判断对应表单是否存在。
  第15行,getInputByName方法根据name属性找到输入框。getValueAttribute方法获取输入框的值。最后断言该输入框的默认值应该是100。
  当搜索表单提交后,生成的request请求被发送给result.jsp页面。这里的测试只需验证form的属性值是正确的。提交url请求的测试在下一节result.jsp的测试中完成。

  连载一 连载二 连载三 连载四 连载五 连载六

本文选自:《51Testing软件测试作品系列》之三的互联网单元测试及实践 ,本站经电子工业出版社和作者的授权,近期将进行部分章节的连载,敬请期待!

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号