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

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

我谈Web程序难测试

发布: 2009-4-22 10:30 | 作者: 不详 | 来源: 测试时代采编 | 查看: 63次 | 进入软件测试论坛讨论

领测软件测试网 以我用PHP的感觉来看,Web程序还是难以实施测试的。这里所说的“测试”主要是指自动化的单元测试。通常这类测试都依赖于某种测试框架,如 JavaJUnit测试框架。而Web程序的测试经常会涉及到Web服务器、浏览器等等外部的条件,自动化的单元测试实施起来并不容易。

  时间一长,就开始思考根本原因。我认为Web程序的测试难以进行就在于HTTP是无状态的通信协议,而在几乎所有的Web应用程序中,又都需要记录用户的状态。因此有了Cookie和Session这些东西,而这些东西严重依赖于浏览器和服务器。再者,测试归根结底是把程序的输出结果跟预期结果相比较,但Web程序的输出是什么呢?通常的理解是浏览器里显示的Web页面,但Web页面内容在语义上并不十分严格,通过简单检验输出来进行测试既不切实际,也无必要。

  退一步说,对于MVC结构的Web程序来讲,实质性的代码有一部分在Model层中。这个Model层应该是和浏览器、服务器环境没有耦合的,这样才能够比较方便地进行自动测试。但在Controller部分中通常也会包含重要的流程,而Controller通常都需要Web服务器的配合。

  在Java的技术中,“解耦”往往表现得淋漓尽致。Struts 1把程序分成了明显的M、V、C三部分,但Controller还不得不依赖一些Servlet的API,如HttpServletRequest;到了 Struts 2,不仅不需要Servlet的API,甚至连Struts本身的API都不必依赖。由框架本身统领起整个应用程序,而实际的功能则由类似于挂接在整个机器上的一些小部件来实现,这些小部件并不去使用整个机器的功能,而是由机器统一驱动这些零件来工作。我想这应该就是人们常说的“控制反转(IoC)”吧。

  如果能很好地解耦,才能更顺利地实施测试。只要测试的成本变得非常低,低到运行整个测试只需要按一两个键的时候,测试才能真正起到作用。

延伸阅读

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

TAG: web Web WEB 程序


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

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