浅谈Web程序难测试及web程序的几大要点
以我用PHP的感觉来看,Web程序还是难以实施测试的。这里所说的“测试”主要是指自动化的单元测试。通常这类测试都依赖于某种测试框架,如 Java的JUnit测试框架。而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)”吧。
如果能很好地解耦,才能更顺利地实施测试。只要测试的成本变得非常低,低到运行整个测试只需要按一两个键的时候,测试才能真正起到作用。
接下来咱们讨论一下有关web程序的几大要点
一、功能测试
1、链接测试
链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
2、表单测试
当用户给Web应用系统管理员提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。
3、Cookies测试
Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。
Session测试,Session的功能与Cookies有些类似,测试工作大体相同
4、设计语言测试
Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如JavaScript、VBScript或Perl等也要进行验证。
5、数据库测试
在Web应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL对信息进行处理。
在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
二、性能测试
1、连接速度测试
用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
文章来源于领测软件测试网 https://www.ltesting.net/