• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

追求代码质量: 测试 Struts 遗留的应用程序

发布: 2008-6-25 17:11 | 作者: 不详 | 来源: 测试时代编辑整理 | 查看: 37次 | 进入软件测试论坛讨论

领测软件测试网


setRequestPathInfo() 方法配置路径以映射到 Action 类,addRequestParameter() 方法把来自 JSP 文件的参数名称映射到值。例如,在清单 6 中,username 参数映射到 “jane”。

还请注意清单 6 中的最后两行。actionPerform() 方法实际上让 Struts 去调用对应的 Action 类。如果这个方法没被调用,什么也不会发生。最后调用的方法 verifyForward() 是在 MockStrutsTestCase 类中找到的一个类似于断言的方法,它验证正确的转发。在 Struts 中,这是一个 String,通常映射到成功或失败状态。(请注意,清单 5 中的 XML 定义了 “success” 转发。)

用 DbUnit 进行的可重复的成功

这时,您可能希望工作完成 —— 毕竟已经编写了一个企图验证口令修改的测试。但是还缺乏更深的验证。确实,这个方便的框架调用了 Struts,但是代码依赖于数据库。如果希望能够不止一次地运行这个测试,比如在构建过程中,就需要让它可重复。

由于一些特定的假设,所以 清单 6 中的测试用例不是可重复的。首先,测试用例假设在系统中已经 有一个名为 “jane” 的用户,它的口令是 “admin”。其次,测试用例假设在某些永久存储 中口令 “admin” 被更新成 “meme”。正如所写的那样,只要代码没有生成异常,ActionForm 成功验证,Struts 就假定事情工作良好,测试用例也是一样。

现在需要的是更深层次的验证 —— 在数据库层次。对于应当更新口令的测试用例来说,理想情况下应当在数据库上 执行检查,确保那里有一个新口令。对于口令不应当修改的测试来说,需要进行验证,真正检验没有修改 口令。最后,要让这个测试套件可重复,最好是不要 对数据完整性做任何假设。

DbUnit 是个专门方便把数据库放进测试状态中已知状态的 JUnit 扩展。使用 XML 种子文件,可以把特定数据插入到测试用例可以依靠的数据库中。而且,使用 DbUnit API,可以容易地比较数据库的内容和 XML 文件的内容,从而提供一个在应用程序代码之外 校验预期数据库结果的机制。

用 DbUnit 进行测试

要使用 DbUnit,需要两样东西:

通过普通 JDBC 的数据库连接
一个文件,包含需要放到数据库中的数据
清单 7 是一个 DbUnit 种子文件,只定义了几样东西:首先,有一个叫做 user 的表和另一个叫做 user_role 的表。在 user 表中定义了一个新行,并映射一些值到列(例如列 username 拥有值 “jane”)。在 user_role 中还定义了一行。请注意这个数据库中的口令是通过 SHA 加密的。


清单 7. 用于测试表 user 和 user_role 的 DbUnit 种子文件

<?xml version='1.0' encoding='WINDOWS-1252'?>
<dataset>
 <!-- user with password admin -->
 <user username="jane"
   password="d033e22ae348aeb5660fc2140aec35850c4da997"
   name="Jane Admin"
   date_created="2003-8-14 10:10:10"
   email="jane@elsewhere.org"/>
 
 <user_role username="jane" rolename="ADMIN"/>
</dataset>
 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网