深入理解B/S与C/S架构
首先来介绍一下B/S与C/S架构
C/S架构简要介绍
在了解什么是B/S架构之前,我们有必要了解一下什么是C/S架构:
C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。
它可以分为客户机和服务器两层:
第一层: 在客户机系统上结合了界面显示与业务逻辑;
第二层: 通过网络结合了数据库服务器。
简单的说就是第一层是用户表示层,第二层是数据库层。
这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情,如图所示:
C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端,安装后就可以使用。比如QQ,OFFICE软件等。
什么是B/S架构
B/S架构的全称为Browser/Server,即浏览器/服务器结构。
Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。
B/S架构的系统无须特别安装,只有Web浏览器即可。
其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。
B/S架构的分层:
与C/S架构只有两层不同的是,B/S架构有三层,分别为:
第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。
第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。
第三层数据层:主要是接受客户端请求后独立进行各种运算。
如图所示:
对于功能测试,其实都是一样的,判断功能是否有问题并不取决于系统的架构,而是根据客户的需求,来判断预期结果与实际结果之间的差异。以下罗列出的主要是考虑到这两种架构本身所导致测试的偏重点。
我们也许都知道B/S架构中客户端向服务端请求是通过http方式的,C/S架构中客户端向服务端请求是通过socket方式的,其实很类似
- 建立客户端的socket,确定要连接的服务器的主机名和端口
- 发送连接请求到服务器,并等待服务器的回馈信息
- 连接成功后,与服务器进行数据的交互
- 数据处理完毕后,关闭自身的socket连接
B/S架构:
l cookie和session
由于http协议的无状态性,从而导致了cookie的诞生,对于程序基于cookie与session的编程,通常我们需要测试cookie是否按预定的时间进行保存,刷新对Cookies有什么影响等;例如在浏览器端禁用cookie,那么登录时,通常是登录不进系统的,目前见到的大部分系统都存在这样的问题,实际如果系统做的很完善的情况下,是可以解决此问题的,或者能给用户一个有好的提示等。
l 前台验证和后台验证
对于后台验证,作为C/S程序可能并不需要过多考虑,因为它的代码都是在后台编写的;
关于web程序绕过前台进行后台验证的测试,在这里不再多说,相信网上有很多工具可以实现。
l 安全性测试
在因特网上部署的系统尤其重要,测试的过程中我们通常会进行sql注入,cookie欺骗,html标签,特殊字符,字符长度是否与数据库中一致,上传文件时选择一些特殊的文件(如.aspx,jsp,php等)等等
l 兼容性测试(客户端是浏览器,存在众多不确定性)
B/S的唯一客户端就是浏览器,而浏览器又有成千上万种,不同的浏览器内核不同,解读页面控件和脚步语言的结果也不一样,可能导致不同的浏览器对系统显示有差别或者部分功能不可用
C/S程序一般是典型的中央集权的机械式处理,交互性相对低,通常是部署在局域网内的,对网络环境要求低
l 兼容性
我们知道B/S的压力在服务端,C/S客户端可以分担一些压力,但是C/S对客户端的环境要求相对较高,包括OS环境(根据目前使用情况来说,主要是在win7系统或同期版本中出现权限问题,或受OS位数的影响),安装过程是否与其他软件冲突,安装顺序,.Net framework版本,客户端升级等均有不同程度要求,同时维护成本较高。
l 安装/卸载测试
- C/S结构通常我们先要安装(其实也可以不用安装,直接运行exe文件,也就是我们所说的绿色版本,具体可以根据实际需要),安装界面,路径,安装后的功能是否可用,重复安装,安装失败后是否回滚等等均在测试范围之类。
- 有安装就有卸载,windows自带了一个卸载功能,c:\windows\system32\msiexec.exe,我们在生成安装包的同时可以调用此文件。当然也可以使用第三方的卸载工具,如360卸载等。
l 快捷键的使用
Windows操作习惯性讲究快捷,所以通常用户会在常用模块要求使用快捷键来操作
l UI测试
Web程序同样也会考虑到UI测试,在这里主要是考虑异于web的地方。例如窗口的缩放,拖动,任务栏管理器的启用与禁用,以及多窗口的操作及排列等,通常都是要符合windows的操作习惯。
l 明显的性能问题
通常在对程序最小化后系统资源占用多少有一定要求,或者允不允许同时打开多个进程,运行长时间后系统出现卡死等明显的性能问题均在考虑范围之内
深入理解B/S与C/S架构的更多相关文章
- 理解vuex的状态管理模式架构
理解vuex的状态管理模式架构 一: 什么是vuex?官方解释如下:vuex是一个专为vue.js应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的 ...
- 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
作者博客:http://blog.csdn.net/u010349169/article/category/2309433 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简 ...
- 深入理解java:5. Java分布式架构
什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统. 内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统. 透明性是指每一个数据库分布节点对用户 ...
- 深入理解Tomcat系列之一:系统架构(转)
前言 Tomcat是Apache基金组织下的开源项目,性质是一个Web服务器.下面这种情况很普遍:在eclipse床架一个web项目并部署到Tomcat中,启动tomcat,在浏览器中输入一个类似ht ...
- 《深入理解Nginx:模块开发与架构解析》(一)
第1章 研究 Nginx 前的准备工作 1.1 Nginx 是什么 Web 服务器的基本功能:基于 REST 架构风格,以统一资源描述符(URI)或者统一资源定位符(URL),作为沟通依据,通过 HT ...
- 《深入理解Nginx:模块开发与架构解析》读书笔记
1.nginx的特点:快.扩展性强.可靠性强.内存低消耗.支持高并发.热部署.开源免费 2.nginx由master进程来管理多个(CPU数)worker进程 3.配置按功能分,有4类: 1)用于调试 ...
- LInux基础(04)项目设计一(理解链表管理协议的代码架构)
要设计好一个项目必须要有一个健全的代码框架 一个结构体内有数据域和处理数据的函数指针, 先实现管理链表的函数 增加节点 删除节点 清空链表 遍历节点对每个节点进行操作 再实现协议的注册 把对象s ...
- 关于一致性hash,这可能是全网最形象生动最容易理解的文档,想做架构师的你来了解一下
问题提出 一致性hash是什么?假设有4台缓存服务器N0,N1,N2,N3,现在需要存储数据OBJECT1,OBJECT2,OBJECT3,OBJECT4,OBJECT5,OBJECT5,OBJECT ...
- 《深入理解mybatis原理1》 MyBatis的架构设计以及实例分析
<深入理解mybatis原理> MyBatis的架构设计以及实例分析 MyBatis是目前非常流行的ORM框架,它的功能很强大,然而其实现却比较简单.优雅.本文主要讲述MyBatis的架构 ...
随机推荐
- hadoop-2.6.0集群开发环境配置
hadoop-2.6.0集群开发环境配置 一.环境说明 1.1安装环境说明 本例中,操作系统为CentOS 6.6, JDK版本号为JDK 1.7,Hadoop版本号为Apache Hadoop 2. ...
- 数学之路-python计算实战(4)-Lempel-Ziv压缩(2)
Format characters have the following meaning; the conversion between C and Python values should be o ...
- HDU 1788 Chinese remainder theorem again 中国剩余定理
题意: 给定n,AA 以下n个数m1,m2···mn 则有n条方程 res % m1 = m1-AA res % m2 = m2-AA 问res的最小值 直接上剩余定理,嘿嘿 #include< ...
- 在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7514559 在Android系统中修改android.mk使其同时编译rgb2565和rgb ...
- 0x56 状压DP
gan这两题怎么差不多 #include<cstdio> #include<iostream> #include<cstring> #include<cstd ...
- [Pulgin] 前端上传组件Plupload使用指南
我之前写过一篇文章<文件上传利器SWFUpload使用指南>,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SW ...
- java基本数据类型(二)和分支结构
基本数据类型(四类八种):不能为null一.整数型 byte----2的8次方 short----2的16次方 int----2的32次方 long----2的64次方二.浮点型 float----4 ...
- cropper+pillow处理上传图片剪裁(二)
上次说到处理上传头像的方法是临时保存在本地,其实这样做并不妥,而且修改后的头像重新上传到model中也很麻烦,差了很多资料,解决了这个问题 大致思路:用户上传原图和修改数据—PIL修改后将图片保存为内 ...
- tab选项卡切换(js原生、jQuery )
思路: ① 遍历Tab选项 ② 然后给每个Tab选项绑定点击事件 ③ 每次点击时清除所有Tab选项及Tab选项内容的样式,然后给当前Tab选项添加标记样式,给当前Tab选项添加显示样式 <!DO ...
- AngularJs轻松入门
AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...