B/S(Browser/Server)和C/S(Client/Server)架构的基本差别。B/S是根据浏览器的,用户通过浏览器访问服务器,一般依赖网络;C/S是客户端/服务器,需要安装专门的客户端软件,一部分测试在客户端执行。
区别点:
部署和升级测试:B/S软件只需在服务器端更新,客户端零维护,测试重点集中在服务器升级后是不是影响所有用户,以及缓存、浏览器刷新问题。C/S需要测试客户端安装包,版本更新时新旧版本兼容,增量升级,自动更新机制等。
兼容性测试:B/S的兼容性主要在浏览器和操作系统组合,不同浏览器(Chrome、Edge、Firefox、Safari)、不同分辨率、不同屏幕大小、移动端适配。还要考虑不同浏览器内核对JavaScript、CSS、HTML5的支持差别。C/S兼容性更重视客户端操作系统(Windows、Mac、Linux等),不同硬件配置(内存、显卡),还要注意和其它软件的冲突,比如杀毒软件。B/S还需测试在不同网络条件下页面加载。
性能测试:B/S性能短板多在服务器端,需模拟大量并发用户,测试服务器响应时间、数据库连接池、缓存方法、页面加载速度、CDN等。前端性能也是重点测试部分,如页面渲染时间、资源压缩。C/S除了服务器性能,还需测试客户端自身资源占用:CPU、内存、磁盘I/O,尤其长时间运行的稳定性,还有大量的数据本地处理性能,以及客户端和服务端的数据同步性能。C/S往往涉及复杂图形界面或三维渲染,对显卡要求等。
安全性测试:B/S面临Web安全威胁:SQL注入、XSS跨站脚本、CSRF、会话劫持、敏感数据暴露、文件上传漏洞,测试重点在服务器端防护、传输加密(HTTPS)、认证授权、Web防火墙。C/S软件重视网络通信加密(二进制协议或自定义协议),客户端反编译、反调试、本地数据存储加密、防止破解、序列号证实。C/S需测试客户端和服务器之间的协议安全,防止中间人攻击,但范围不如Web广。B/S还要考虑浏览器安全方法,如Cookie SameSite、CORS等。
网络测试:B/S依赖不断的网络连接,测试弱网环境、网络断开、超时、高延迟、丢包情况及重连机制,体验影响大。C/S许多设计允许离线操作,断网时本地缓存同步,需测试离线功能、数据冲突解决、同步机制。对于C/S游戏或即时通讯,网络要求可能更高,但B/S类似SPA应用也有离线缓存(Service Worker),所以需要具体看。
易用性和UI测试:B/S必须考虑跨浏览器界面一致性,响应式设计,字体缩放,鼠标键盘操作习惯,打印支持。C/S更注重原生控件体验,快捷键,多窗口,和操作系统交互(如拖放、右键菜单,系统托盘),以及不同DPI缩放。B/S的UI自动化测试框架(Selenium、Cypress) vs C/S(WinAppDriver、Appium Win等),重点不同但测试方法也异。
安装和卸载测试:C/S需要考虑安装包制作,安装途径,权限,卸载残留,升级包括安装等;B/S几乎没有客户端安装,可能涉及浏览器插件或需要安装手机App就不纯B/S了。因此B/S无需安装测试,除非是混搭。
接口和集成测试:B/S前后端分离,测试重点在REST API、WebSocket、数据格式JSON/XML检查、接口文档。C/S接口可能是自定义TCP协议或RPC,需测试通信协议的数据完整性、效率、粘包处理。还有和本地硬件交互,比如打印机、扫描仪等,C/S更突出。
回归测试和自动化:B/S自动化工具成熟,适用于不断集成。C/S有些控件不易识别,自动化成本高。