• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

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

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

发布: 2008-6-13 15:31 | 作者: 不详 | 来源: 领测软件测试网编辑整理 | 查看: 21次 | 进入领测软件测试网论坛讨论

领测软件测试网

%W7~oM P$Ec 软件测试技术网.Ja6p$Ao@5A


:t0]ts P2U(] g软件测试技术网:i!ID }d}s
图 1. Action 类的输出耦合
4|Wa*g!Ol
t%xt3sm

5S4Mq/z K:x ?

(h_A5zK2]n4X但是,就像在图 1 中可以看到的,在试图隔离 ChangePasswordAction 类并检验 execute() 方法时,该类给出了一些有代表性的挑战。为了有效地测试 execute() 方法,必须处理三层耦合。首先,到 Struts 自身的耦合;其次,Servlet API 代表一个障碍;最后,到业务对象包的耦合,进一步检查业务对象包,还会有数据访问层使用 Hibernate 和 Spring。

Z0x gt2E:a
每种情况一个 mock?软件测试技术网0zA Fe K

x^%N n aeHV c即使在我编写本文时,我还可以听到开发人员的嘲笑者 认为我的测试问题通过明智地使用 mock 对象就能轻易解决。可以 用 mock 对象创建一级隔离,它会形成更容易的测试;但是,我要说的是,把目标对象通过 mock 排除所需要的付出级别,比起承认隔离测试困难所需要的付出,要多得多。在这种情况下,我会采用在更高层次上的测试,这级测试有时叫做集成测试。

;FzI@ PZ9_:d
软件测试技术网 H.nnV3dDYl

对于更高的复杂性,请注意 清单 1中的代码如何把 aForm 参数转换成 ChangePasswordForm 对象,它是 Struts ActionForm 类型。这些 JavaBeans 有一个 validate 方法,这个方法由 Struts 在调用 Action 类的 execute() 方法之前调用。

b