Web应用系统全面解析:从架构设计到测试部署的核心要点

目录

一、Web应用系统简介

[1.1 Web应用程序](#1.1 Web应用程序)

[1.2 Web应用特征](#1.2 Web应用特征)

二、Web应用架构设计

[2.1 Web应用架构设计原则](#2.1 Web应用架构设计原则)

[2.2 Web应用架构分类](#2.2 Web应用架构分类)

[2.3 Web应用架构模式](#2.3 Web应用架构模式)

[2.3.1 B/S架构](#2.3.1 B/S架构)

[2.3.2 P2P架构](#2.3.2 P2P架构)

[2.3.3 MVC/MVP架构](#2.3.3 MVC/MVP架构)

[2.3.4 微服务架构](#2.3.4 微服务架构)

三、Web应用开发框架

[3.1 开发框架简介](#3.1 开发框架简介)

[3.2 Java EE开发框架](#3.2 Java EE开发框架)

[3.2.1 SSH](#3.2.1 SSH)

[3.2.2 JSF](#3.2.2 JSF)

[3.3 .NET开发框架](#3.3 .NET开发框架)

[3.4 Web层开发框架](#3.4 Web层开发框架)

四、Web应用系统开发

[4.1 Web应用通信协议](#4.1 Web应用通信协议)

[4.2 Web应用系统数据存储](#4.2 Web应用系统数据存储)

[4.3 Web应用系统客户端技术](#4.3 Web应用系统客户端技术)

[4.4 Web应用系统服务器端技术](#4.4 Web应用系统服务器端技术)

[4.5 Web应用系统部署](#4.5 Web应用系统部署)

五、Web应用系统测试

[5.1 Web应用测试概述](#5.1 Web应用测试概述)

[5.2 Web应用测试过程](#5.2 Web应用测试过程)

[5.3 Web应用功能测试](#5.3 Web应用功能测试)

[5.4 Web应用性能测试](#5.4 Web应用性能测试)

[5.4.1 性能测试内容](#5.4.1 性能测试内容)

[5.4.2 性能测试方法](#5.4.2 性能测试方法)

[5.5 Web应用安全性测试](#5.5 Web应用安全性测试)

[5.6 Web服务测试](#5.6 Web服务测试)

[5.6.1 Web服务测试特性](#5.6.1 Web服务测试特性)

[5.6.2 Web服务测试内容](#5.6.2 Web服务测试内容)

相关推荐


一、Web应用系统简介

1.1 Web应用程序

Web应用系统是指用户界面驻留在Web浏览器中的任意应用程序,它基于Web技术和W3C标准,通过一个用户界面(Web浏览器或支持Web技术进行访问的可视化界面)提供Web特定的资源。

Web应用程序是在Web浏览器中运行的软件,这些应用程序允许用户在不安装或配置软件的情况下访问复杂的功能。

Web应用程序拥有的最常见的优势:易于访问、开发高效、使用简单、扩展性强。

目前可通过两种通用方法构建Web应用程序:在服务器上执行大部分应用程序逻辑的传统Web应用程序,以及在Web浏览器中执行大部分用户界面逻辑的单页应用程序(SPA),后者主要使用Web API与Web服务器通信。

1.2 Web应用特征

新式Web应用程序具有以下特征:

  • 云托管和可扩展性。Web应用程序占用空间更小,因此在相同硬件上可托管更多此类应用。
  • 跨平台。可在Linux、macOS以及Windows系统上运行。
  • 自动化测试。利用自动化测试工具和框架,通过编写脚本来模拟用户在Web页面上的操作。
  • 支持传统应用和SPA。
  • 简单的开发和部署。可使用简单的文本编辑器、命令行接口或者全功能开发环境(如VisualStudio)编写Web应用程序。

二、Web应用架构设计

2.1 Web应用架构设计原则

以下为Web应用架构的通用设计原则:

(1)分离关注点。是开发时的指导原则。根据软件执行的工作类型将软件分离,从体系结构上来说,有逻辑地构建应用程序,将核心业务行为与基础结构及用户界面逻辑区分开。

(2)封装。应用程序的不同部分应通过封装与应用程序中的其他部分进行隔离。正确使用封装有助于在应用程序设计中实现松散耦合及模块化,只要维持相同的接口,就可以用替代实现来替代对象和包。

(3)依赖关系反转。应用程序中的依赖关系方向应该是抽象的方向,而不是实现详细信息的方向。如图,A直接依赖于B(B不依赖与A),依赖反转后,类B依赖于A控制的接口B。依赖项反转是生成松散耦合应用程序的关键一环。

(4)显式依赖关系。方法和类应显式要求正常工作所需的任何协作对象。类和方法就会诚实地告知客户端其需要哪些内容才能工作。
(5)单一责任。适用于用于面向对象的设计,但也可被视为类似于分离关注点的体系结构原则。它指出对象只应有一个责任,并且只能因为一个原因更改对象。
(6)避免自我重复。应用程序应避免在多个位置指定与特定概念相关的行为。将逻辑封装在编程构造中,而不要重复该逻辑。让此构造成为针对此行为的单一权限,并让应用程序中需要此行为的任何其他部分都使用新的构造。
(7)持久性无知。是指需要保持不变的类型,但其代码不受所选择的持久性技术的影响。可以让相同的业务模型以多种方式保持不变,让应用程序更加灵活。
(8)有界上下文。是领域驱动设计中的中心模式。它们可以将大型应用程序或组织分解为独立的概念模块,通过这种方式来解决复杂性问题。每个概念模块表示各自独立的上下文(因此有界),并且可以独立改进。有界上下文之间的通信通过编程接口进行。

2.2 Web应用架构分类

Web应用程序的体系结构可以根据软件开发和部署模式分为不同的类别。

  1. 整体式架构。是一种传统的软件开发模型(也称为Web开发架构),其中整个软件作为一段代码开发,运用传统的瀑布模型。这意味着所有组件都是相互依赖和互连的,并且每个组件都需要运行应用程序。不适合大型复杂项目的开发,存在单点故障问题,难以扩展。
  2. 微服务架构。代码被开发为松散耦合的独立服务,通过RESTful API进行通信。每个微服务都包含自己的数据库并运行特定的业务逻辑,这意味着您可以轻松开发和部署独立的服务。可扩展性高,灵活性高,适合复杂的应用程序。但随着服务增加,管理的复杂性也会增加。
  3. 无服务器架构。是开发软件应用程序的模型。底层基础结构的预配由基础结构服务提供商管理。用户只需为正在使用的基础架构付费,而无须为空闲CPU时间或未使用的空间付费。无服务器计算降低了成本,因为资源仅在应用程序执行时被使用。扩展任务由云提供商处理。此外,后端代码得到简化。它减少了开发工作和成本,并加快了上市时间。

2.3 Web应用架构模式

2.3.1 B/S架构

B/S架构的全称为Browser/Server,即浏览器/服务器结构。一般分为三层:第一层是表现层,主要完成用户和后台的交互及最终查询结果的输出功能;第二层是逻辑层,主要是利用服务器完成客户端的应用逻辑功能;第三层是数据层,主要是接受客户端请求后独立进行各种运算。

2.3.2 P2P架构

P2P架构只一种网络,是两个或多个客户端不经过服务器而直接通信的架构。具体分两种不同的形式:一种是完整连接拓扑架构,指的是每个客户端与其他客户端之间都必须有连接,信息可以直接在用户间交换;另一种是环形拓扑架构,指的是信息只有通过一个或多个客户端才能传递的架构。

2.3.3 MVC/MVP架构

MVC(Model-View-Controller)体系结构是一种软件体系结构模式,其中应用程序逻辑根据功能分为三个组件。这些组件称为:

  • 模型(model),表示数据在数据库中的存储方式;
  • 视图(view),用户可见的组件,例如输出或GUI;
  • 控制器(controller),充当模型视图之间接口的组件。

MVP (Model-View-Presenter) 模式是由MVC模式派生出的一种设计模式,其中Model提供数据,View负责显示,Controller/Presenter负责逻辑的处理。通过表示器将视图与模型巧妙地分开。

2.3.4 微服务架构

微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依据业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通信。同时服务会使用最小规模的集中管理能力,服务可以用不同的编程语言与数据库等组件实现。微服务适应互联网后台服务的三高需求:高并发、高性能、高可用。

微服务把单体应用拆分成很多小的分布式服务,不可避免地会存在服务管理问题。通过引入服务注册与发现、服务监控、服务容错技术概念,克服微服务架构存在的缺点。

三、Web应用开发框架

3.1 开发框架简介

框架(Framework)是一组组件的综合,这些组件相互协作,为一类相关应用提供了可重用的框架结构,描述了另一种重用架构知识的方式,支持细节设计和代码重用,如MMC、MSScript Engine、Spring、Struts和Hibernate等。

3.2 Java EE开发框架

3.2.1 SSH

SSH是Spring、Struts和Hibernate的结合,是目前基于JavaEE的企业级Web应用轻量级开源架构。

Spring框架是为了解决企业应用开发的复杂性而创建的开源框架,其主要优势之一就是分层架构。分层架构允许使用者选择使用哪个组件,同时为J2EE应用程序开发提供集成的框架。Spring框架易于使用并整合各类框架,能统一配置和部署、灵活并且可扩展、测试简单、开发成本低。Spring框架依赖注入机制,可以在运行期间为组件配置所需资源,而无须在编写组件代码时就加以指定,从而在相当程度上降低了组件之间的耦合性。

Struts是Apache软件组织负责开发的一个基于MVC模式的企业级Web应用架构的开源框架,主要采用JavaScript、JSP和XML等技术来实现。Struts中使用Plugin实现Web应用设计架构中的接口层,ActionServlet、Action和ActionForm等实现抽象层,后台实现各种实现层的功能。

Hibernate是开源对象关系映射框架,对JDBC进行了非常轻量级的对象封装,使Java程序员可以使用对象编程思维来操作数据库。Hibernate使用XML(.hbm.xml)文件把Java类映射到表,把JavaBean属性映射到数据库表。通过JDBC技术,支持所有的SQL数据库管理系统。

3.2.2 JSF

JSF (Java Server Faces) 是用于构建Web应用程序的标准Java框架,通过提供标准可扩展的用户界面组件、易配置的页面导航、方便的数据验证和转换、自动化Bean管理、事件处理、方便的错误处理以及内置对国际化的支持来加速Web应用开发。JSF中,Model是进行业务操作的部分,用来实现业务逻辑,一般使用JavaBean或EJB来建立复杂的企业应用;View是由JSF标签构成的JSP页面组成,通过一个字符串格式输出Controller,通过发送事件来间接调用Controller的逻辑;Controller主要包括FacesServlet、配置文件和action处理器。

3.3 .NET开发框架

.NET框架是由微软开发的一个致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台,是一个可以构建、发布以及运行Web服务及其他应用程序的环境,它提供了托管执行环境、简化的开发和部署以及与各种编程语言的集成。

3.4 Web层开发框架

  1. WebPage3.0。是基于组件的、可视化的、轻量级的Web开发框架,基于标准技术,有极好的稳定性和扩展性。基于MVC模式,重点关注View部分,达到可视化开发和最大限度的重用。

  2. AJAX框架。AJAX作为重要的Web2.0技术被广泛采用。随之也出现了很多AJAX框架,如Prototype、jQuery、Mootools、DOJO、ExtJS以及Ajax.NET和AFAX等。

四、Web应用系统开发

Web应用开发指的是通过Web技术构建Web应用程序的过程。构建阶段包括一系列的选择、编码、内容创建、集成、重构以及测试活动,以构建出可以部署并交付给最终用户使用的Web应用。

4.1 Web应用通信协议

Web应用通信协议是Web应用开发的基础,常用的Web应用通信协议有:

    1. HTTP。是基本的Web通信协议,属于应用层的面向对象的协议,是一个基于文本的无状态协议。HTTP无连接、无状态、客户和服务器之间交互不保留客户状态信息。
    1. RTP/RTSP。RTP(实时传送协议)详细说明了在Internet上传递音频和视频的标准数据包格式。RTSP(实时传输协议)是TCP/IP体系中的一个应用层协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,用来控制音频或视频的实时发送,并允许同时控制多个流。
    1. SMTP和POP3。发送邮件和接收邮件。

4.2 Web应用系统数据存储

  1. 缓存系统。是一种本地数据存储,有助于快速访问应用程序服务器的数据,当有重复数据请求时可以直接从缓存中取数据,而无需每次都联系数据库。缓存系统可以设计为如下4种模型:
  • (1)应用程序服务器缓存。应用程序服务器旁边的内存中缓存(对于具有单个节点的应用程序)。
  • (2)全局缓存。所有节点访问单个缓存空间。
  • (3)分布式缓存。缓存分布在节点上,其中一致哈希函数用于将请求路由到所需的数据。
  • (4)内容交付网络(CDN)。用于交付大量静态数据。
  1. 云存储。通过集群应用、网格技术或分布式文件系统等功能,网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统,保证数据的安全性,并节约存储空间。

  2. CDN。内容交付网络(CDN)是安装在各个地理位置的服务器网络,用于更快、更好地向用户交付内容。用户的请求不是联系中央服务器,而是路由到存储内容的缓存版本的CDN服务器。因此,站点速度和性能得到提高,数据包丢失减少,服务器负载减少。

  3. 负载均衡器。是一种服务,它根据可用性或预定义策略将流量负载分布在不同的服务器之间来平衡流量负载。负载均衡可以通过如下两种方式完成:

  • (1)TCP/IP级别负载均衡,基于DNS的负载均衡。
  • (2)应用级负载均衡,基于应用负载的负载均衡。

Web系统设计中的负载均衡可以分为软件负载均衡和硬件负载均衡。

  1. 消息队列。是一个缓冲区,它异步存储消息,并促进Web应用程序中不同服务之间的通信。事件系统派遣机制设计可分为无独立派遣模块和有独立派遣模块两大类设计方式。基于消息队列的点对点模式属于有派遣模块设计方式类别中的一种,在该方式中,消息生产者生产消息并发送到消息队列(Queue)中,然后消息消费者从Queue中取出并且消费消息。

4.3 Web应用系统客户端技术

Web客户端的主要任务是通过浏览器来展现页面内容并实现与用户的交互,HTML是信息展现的有效载体。Web客户端开发的主要任务是设计与开发Web应用的Web页面,通过设计格式、布局以实现数据的展现和用户交互。主要包括下列常用技术:

  1. HTML/HTML5。HTML是一种通用的标记语言,标记用符号"<"和">"括起来。允许Web页面设计人员建立文本与图片相结合的复杂页面。

HTML几个主要缺点:(1)表现过于简单。(2)链路容易中断(链路地址改变后,链源不能自动纠正)。(3)检索时所花的时间较长。(4)扩展性差。(5)缺乏语义性(不能揭示信息内容的本质)。

HTML5不是为了内容展示,而是为了支持广泛的Web应用,因此,它支持新的元素、结构和语义。将Web带入一个成熟的应用平台,视频、音频、图像、动画,以及与计算机的交互都被标准化。

文章:HTML 入门手册(一)

  1. XML。是W3C制定的一种简单、跨平台的、依赖于内容的技术,是目前处理结构化文档信息的有力工具。Web应用借助XML格式交换信息,能很好地解决分布式架构上的信息交换。

  2. DHTML(动态HTML)是一种通过各种技术的综合发展而得以实现的概念,当Web页面从Web服务器下载后无需再经过服务器的处理,而在浏览器中直接动态更新Web页面的内容、排版样式、动画等。

  3. CSS(层叠样式表)是由W3C定义和维护的标准,是一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言。

  4. Flash/Flex技术

  • (1)Flash。是动画制作程序,可以制作出一种后缀名为swrf的文件,其中包含了声音、图像和动画等。Flash的优点是其生成的多媒体文件是矢量图,体积小,还可以边下载边播放,这样避免了用户长时间等待。而且,用Flash生成的文件是代码保护的,别人无法看到其源代码,还可以禁止下载。
  • (2)Flex。是展示服务的新版本,根据.mxml文件(纯粹的XML描述文件和ActionScript)产生.swf文件,再由flash player或者shockwave player解释执行,以提供丰富的客户体验,是重要的RIA技术。
  1. DOM(文件对象模型)是W3G推荐的处理可扩展标记语言的标准编程接口,主要作用是建立Web页面与Script或程序语言沟通的桥梁。DOM常用来和JavaScript交互,即程序以JavaScript编写,但使用DOM来存取页面及其元素。

  2. JavaScript/AJAX

  • (1)JavaScript。是一种广泛应用于Web客户端开发的脚本语言,其源代码下载到客户端由浏览器解释运行。常用于为HTML页面添加动态功能,操纵Web页面上的元素,以实现Web页面的客户端交互功能,制作特殊动态效果。
  • (2)AJAX(异步JavaScript和XML)是一种创建交互式Web应用的网页开发技术。它使用JavaScript、XML(或JSON)和XMLHttpRequest对象,可以在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。

4.4 Web应用系统服务器端技术

Web服务器端开发的代码在服务器(Web服务器及扩展环境)端执行,主要有CGI、ISAPI/NSAPI等基本开发技术,PHP、ASP、ASP.NET、JSP等高级开发技术和基于后台数据库的ODBC、ADO、JDBC等数据库连接技术。

  1. CGI(公共网关接口)是一种早期应用于Web应用的标准,用于Web服务器运行服务器端外部程序,称为CGI脚本,多用于动态生成Web内容。遵循这套接口标准,可以使用任何编程语言来编制CGI程序,而不受开发语言的限制。

  2. PHP(超级文本预处理语言)是一种HTML内嵌式脚本语言,在服务器端执行。它可以比CGI或者Perl更快速地执行动态Web页面。PHP具有学习快速、与Apache及其他扩展库紧密结合、良好的安全性等优点。

  3. ASP/ASP.NET

  • (1) ASP(动态服务器页面)是微软开发的代替CGI脚本程序的一种嵌入式网页中的脚本,是可由服务器执行的服务器端脚本技术。ASP可以与数据库和其他程序进行交互,是一种简单、方便的编程技术框架。ASP的主要特性表现如下:
    • (1) 利用ASP可以实现突破静态页面的一些功能限制,实现动态页面技术。
    • (2) ASP文件包含在HTML代码所组成的文件中,易于修改和测试。
    • (3) 使用各种浏览器都可以正常浏览ASP所产生的页面。
    • (4) ASP提供了一些内置对象,使用这些对象可以使服务器端脚本功能更强。
    • (5) ASP可以使用服务器端ActiveX组件来执行各种各样的任务,如访问数据库和文件系统等。
    • (6) 使用者不会看到ASP所编写的原始代码,可防止ASP程序被窃取。
  • (2) ASP.NET。是用于动态Web应用构建的免费Web框架,包括很多开发Web应用所需的服务,作为.NETFramework的一部分提供,可以使用与公用语言运行时(CLR)兼容的任何语言编写应用程序。
  1. Servlet 是一种由Java编写的服务器端程序,可以动态生成Web页面,是JavaEE的一部分。Servlet支持Request/Response模型,在服务器端接收Web客户端请求并给出响应,一般通过HTTP协议来完成。Servlet容器提供了侦听请求的服务,能把客户端和响应信息包裹在特殊的Request/Response对象中,交给Servlet处理,然后由Servlet处理请求并通过HTTP协议将响应通过容器转发到客户端。在基于MVC模式的Web应用中,Servlet充当控制器的角色,用来处理HTTP请求,管理应用的工作流程。主要优势包括:Java语言的优点、执行效率高、构造的控制器功能强。

  2. JSP (Java服务器页面) 是一种将Java代码嵌入HTML页面中实现的服务器端Web开发技术,在服务器端进行解析,动态生成页面传递给客户端,JSP是JavaEE的一部分,本质上是一种高层的Servlet。JSP的优点突出,具体包括:

  • (1) 使内容的生成和显示分离;
  • (2) 生成可重用的组件;
  • (3) 采用标签简化页面开发,通过开发定制标签库,实现了JSP技术的扩展;
  • (4) 具有Java的优点,包括健壮的存储管理和安全性,可靠且移植方便等;
  • (5) 企业产品多样性,在JavaEE平台内容中不仅包括管理复杂企业的应用程序,而且包括事务管理技术和pooling资源管理技术。
  1. Perl/Ruby/Python
  • Perl是一种自由且功能强大的脚本语言。
  • Ruby是一种面向对象、解释型脚本语言。语法简单,擅长文本处理和系统管理等任务。
  • Python是一种面向对象、解释型计算机程序设计语言,也是一种功能强大而完善的通用型语言。

4.5 Web应用系统部署

Web应用的部署是把已经构建完成的Web应用发布到服务器上,通过对Web应用的运行环境进行配置,使得用户可以通过Internet访问该Web应用。一般包括打包、发布和评估。

  1. 部署粒度。Web应用发布以一种非常细粒度的方式完成,在测试完某个组件后,将新组件从预发布服务器再发布到运行服务器。在更新或变化影响不大的情况下,最好把一组变化打包进行发布。每个打包发布周期都为最终用户提供了一个具有可用功能和特性的Web应用增量。每个评估周期都为Web应用团队提供重要指导,并为下一个增量做出内容、功能、特征和方法的修改。

  2. 部署原则。Web应用项目团队在准备交付一个增量时,应该遵循如下一些关键原则。

  • (1) 管理客户对Web应用增量的期望。
  • (2) 安装与测试交付包。
  • (3) 交付前建立支持制度。
  • (4) 先改正有缺陷的Web应用,然后再交付。
  1. 部署环境。Web应用发布的软件系统主要包括操作系统软件和Web应用服务器软件两方面的内容。应用服务器需要共同解决的部分问题:负载均衡、数据库连接池、高速缓存机制。

  2. 版本控制和CMS。版本控制和内容管理系统(CMS)在Web应用构建和部署活动中起着重要的作用。由于Web应用变更快且频繁,因此要使Web应用构建和部署成功,就必须在变更管理工具的辅助下管理好变更。

五、Web应用系统测试

根据测试内容的不同,Web应用测试主要包括功能测试、内容测试、性能测试、Web页面测试、客户端兼容性测试、安全性测试等内容。

5.1 Web应用测试概述

Web应用测试与传统软件测试一样,主要目的是发现错误和缺陷。Web应用具有多层体系结构,客户、数据通信、硬件以及服务器之间依赖关系非常复杂,每层内以及各层之间都有可能发生故障。

与传统软件测试相比,Web应用测试的特性和面临的挑战主要有:用户数量巨大要有并发处理能力、内容中的错误通常只能靠人工完成。Web应用一般采用多层结果需要综合分析。Web应用集成不同软件、Web浏览器提供的导航等按钮经常错误,以适当速度定义和验证各个组件很困难、测试方法和测试工具的不成熟性。

Web应用测试的诸多特性,使得不能仅用传统的方式来对Web应用进行测试。在Web应用整个生命周期的各个阶段,测试的侧重点有所不同。

  • 设计阶段测试的主要任务是:估算服务器端容量的规划是否合理,系统的安全设计是否合理,数据库设计是否合理,检查客户端设计的功能是否正确合理,检查系统的网络拓扑结构、容量设计是否合理。
  • 开发阶段测试的主要任务是:代码测试及组件测试,检查设计的代码能否满足规格需求。
  • 运行阶段测试的主要任务是:功能测试、性能测试、安全性测试、配置测试、兼容性测试及易用性测试。
  • 维护阶段测试的主要任务是:根据维护的内容实施开发及运行阶段中的各个相关方面的测试。

5.2 Web应用测试过程

Web应用测试更多采用敏捷开发方法。Web应用测试的一般过程,具体包括:功能测试、内容测试和评审、Web页面测试、导航测试、接口测试、配置测试、安全测试、性能测试等。测试主要包括以下几个步骤:

  • (1) 首先需要对被测试的Web应用进行需求分析;
  • (2) 定义测试策略和方法;
  • (3) 确定测试环境的要求,选择合适的测试用例、测试工具、测试人员等。
  • (4) 针对测试的行为,描述测试的细节。

5.3 Web应用功能测试

应用功能测试在整个测试过程中起着至关重要的作用,它结合Web应用规格说明的要求,保证Web应用在功能上能够达到预期的目标。可以分为链接测试、表单测试、数据校验、Cookie测试和数据库测试。

  1. 链接测试。是Web应用所特有的测试,可分为三方面的内容:
  • (1) 所有链接是否按指示的那样确实链接到了该链接所指向的资源;
  • (2) 所链接的资源是否存在;
  • (3) 是否所有页面都能够被链接到,不存在孤立页面;
  1. 表单测试。当用户使用表单元素进行各种操作时,必须校验用户提交给服务器的信息的正确性和有效性。交互测试一般要确保以下几方面的内容:
  • (1) 对表单元素中的标识域给出正确标记,并且为用户显示地标识出强制域。
  • (2) 对每项用户输入进行正确性和合法性检查。
  • (3) 对用户输入错误时的异常处理机制进行检查。
  • (4) 用户没有从下拉菜单或按钮中进行选择时,使用合适的默认项。
  • (5) 浏览器"后退"等功能没有破坏输入到表单中的数据。
  1. 数据校验测试。根据业务规则需要对用户输入进行一些正确性和合法性校验,需要保证这些校验功能正常工作。可能会和交互测试有一些重复。

  2. Cookies测试。Cookies通常用来存储用户信息和用户在Web应用中的操作。当一个用户使用Cookies访问了某一个Web应用时,Web服务器将发送关于这一用户的信息,并把该信息以Cookies的形式存储在客户端计算机上,这可以用来创建动态和自定义Web页面或者存储登录内容等信息。

  • Web应用使用了Cookies,就必须检查Cookies是否能正常工作。
  1. 数据库测试。包括测试实际内容及其完整性,以确保数据没有损坏且模式正确。针对数据完整性错误和输出错误分别进行测试。

5.4 Web应用性能测试

5.4.1 性能测试内容

  • (1)速度测试,包括网络连接速度测试和业务处理速度测试。
  • (2)负载测试主要是确定在用户可接受的响应时间内,系统能够承担的并发用户的数量。负载测试应该安排在Web应用部署以后,在实际的网络环境中进行测试。
  • (3)压力测试,是负载测试的延续,通过对Web应用不断加压,来发现其在什么条件下变得不可承受,查出Web应用对异常情况的抵抗能力,找出性能瓶颈,从而获得系统能提供的最大服务级别的测试。压力测试关注Web应用在大量并发用户、传送大量数据和大业务量的情况下的性能变化,关注Web应用能否长时间运行,响应是否太慢、系统是否崩溃、能否恢复等。
  • (4)强度测试主要用于检查程序对异常情况的抵抗能力,检查系统在极限状态下运行时性能下降的幅度是否在允许的范围内。
  • (5)并发测试主要是指当测试多个用户同时访问同一个Web应用、同一个模块数据记录时是否存在线程同步问题、死锁或其他性能问题。
  • (6)大数据量测试,主要测试运行数据量较大时或历史数据量较大时的性能情况,一般针对某些特殊的核心业务或一些日常比较常见的综合业务的测试。大数据量测试分实时大数据量测试和极限状态下的测试。
  • (7)配置测试指通过测试找到系统各项资源的最优分配原则,为系统提供提供依据。配置的可变性和不稳定性是Web工程面临挑战的重要因素。配置测试不是检查每种可能的客户端配置,而是测试一组可能的客户端和服务端配置,以确保用户在所有配置中的体验是一样的,并且将特定于特殊配置的错误分离出来。
  • (8)可靠性测试是指给系统增加一定业务压力的情况下,让系统运行一段时间,以此来检测系统是否稳定。

5.4.2 性能测试方法

  • (1)虚拟用户方法。通过模拟真实用户的行为来对待测Web应用施加预期工作负载,以测量待测系统的性能,如事务的响应时间、服务器的吞吐量等。
  • (2)WUS方法,基于WUS的概念来设计测试场景,强调建立真实的负载。WUS是为了衡量测试负载和真实负载之间的接近程度,是一系列能全面刻画负载的参数和测量指标的集合,包括每个时刻宽的页面、平均访问持续时间、每次访问平均浏览的页面以及页面请求分布等。

5.5 Web应用安全性测试

Web应用安全性测试是对整个Web应用的安全防卫措施的有效性进行测试,以揭露安全机制中的漏洞。包括:

  1. 数据加密测试。是测试Web应用使用的关键数据是否经过了加密,所选择的加密算法是否合适等。
  2. 用户身份验证测试。主要检查无效的用户名和密码能否登录,密码是否对大小写敏感,是否有验证次数的限制,是否存在不验证而直接进入Web应用的问题,是否存在不登录或可查看非会员页面和权限问题。
  3. 日志文件测试。主要是检查Web运行的相关访问和状态信息是否与进了日志文件,是否可追踪等。此外,需测试Web应用执行过程中所产生的错误是否作为日志保留下来。
  4. Session 测试。主要检查Web应用是否有超时的限制。也就是检查用户登录Web应用后在一定时间内没有点击任何页面,是否需要重新登录才能正常使用。
  5. 备份与恢复测试。根据Web应用对安全性的要求可以采用多种备份与恢复手段,如数据库增量备份、数据库完全备份、数据库差量备份和系统完全备份等。
  6. 访问控制策略测试。主要检查管理接口是否只有授权的管理员才允许进行访问,是否有完善的访问控制策略文档等。
  7. 安全漏洞测试。为了避免或减少Web应用被攻击的可能性,需要测试并发现其中隐藏的跨站脚本、命令注入、SQL注入等安全漏洞,这类测试可借助一些安全扫描工具来实现。
  8. TCP端口测试。检查是否开放不必要的端口。
  9. 服务器端脚本漏洞检查。是测试存在于服务器端的脚本是否有安全漏洞,没有经过授权能否在服务器端放置和编辑脚本。
  10. 防火墙测试。是对防火墙功能和设置进行测试,以判断是否满足Web应用的安全需求。

5.6 Web服务测试

5.6.1 Web服务测试特性

5.6.2 Web服务测试内容

根据Web服务架构和业务模型,Web服务测试可分为三个层次:Web服务基础设施的验证与确认、Web服务独立测试以及Web服务集成测试。同时,测试组织和管理是Web服务测试的三个层次中都需要解决的问题。

(1)Web服务基础设施的验证与确认:验证Web服务中间件的稳定性。

(2)Web服务独立测试

  • ①服务的实现应在功能、性能等各方面与发布的服务描述相一致;
  • ②由于服务发布的开放性,对于每个服务请求,可能存在多个满足需求的服务描述,服务代理应根据一定的度量和评价标准,对多个服务进行测试、比较和评估,并依照需求的满足程度排序;
  • ③在服务实现的演化过程中,应建立一定的机制来支持对不同版本的跟踪及回归测试;

(3)Web服务集成测试。在服务流描述执行前,通过静态验证以及动态模拟的方法,确认服务描述能够正确地描述业务需求,能够由服务中介正确解析,并能由所有服务节点正确执行

相关推荐

信息系统运维管理全解:核心指标、流程优化与系统转换实战https://shuaici.blog.csdn.net/article/details/156693323从开发到部署:软件实现、测试与交付全流程核心技术解析https://shuaici.blog.csdn.net/article/details/156688661

相关推荐
0思必得04 分钟前
[Web自动化] Selenium设置相关执行文件路径
前端·爬虫·python·selenium·自动化
雯0609~14 分钟前
hiprint:实现项目部署与打印1-官网提供普通html版本
前端·html
yuezhilangniao22 分钟前
AI智能体全栈开发工程化规范 备忘 ~ fastAPI+Next.js
javascript·人工智能·fastapi
不绝1911 小时前
UGUI——进阶篇
前端
Exquisite.1 小时前
企业高性能web服务器(4)
运维·服务器·前端·网络·mysql
铅笔侠_小龙虾2 小时前
Flutter Demo
开发语言·javascript·flutter
2501_944525542 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
2601_949857432 小时前
Flutter for OpenHarmony Web开发助手App实战:快捷键参考
前端·flutter
wangdaoyin20102 小时前
若依vue2前后端分离集成flowable
开发语言·前端·javascript
天天进步20152 小时前
AI Agent 与流式处理:Motia 在生成式 AI 时代的后端范式
javascript