服务端测试和客户端测试的区别

面试的时候总是有人会问,你是想做服务端测试还是客户端测试?很多没有接触过的同学往往是一脸懵的,这里着重介绍下这二者的区别,让大家对此有些概念,明白自己的定位。

1.客户端测试

用户可以看到的,使用界面的,web端,pc端,app,一般是在用户的机器上去做相关测试。web端是指各个浏览器里面的功能测试。PC指的的电脑上的应用,APP指的是移动设备上的应用。

客户端测试的特点
客户端测试是测试安装在用户机器上的应用程序的各个功能是否可以正常运行
需要先在本机安装Client程序包,然后通过运行Client程序,进行各种数据的输入,保存等操作。
测试内容包括:安装测试、卸载测试、用户界面测试、功能测试、字符输入测试、提示信息测试、超链接测试、操作按钮测试、菜单测试、视频音频测试、程序运行权限测试等。

具体内容我会单开一贴介绍客户端测试。

缺点:最繁琐的是各种适配,同一个功能在不同设备不同系统不同浏览器都需要验证一遍。(当然有些功能可以通过自动化来实现,并不是只有服务端有测试开发哦~)
优点:容易上手。

2.服务端测试

服务端测试有两种:一种是直接对WEB或者应用的服务端进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。

(1)应用场景
这里以银行转账为例。
用户A通过手机银行往用户B账户转账。
那么客户端这边在输入金额这一块肯定是需要做限制的,比如正数,小数点保留两位等。
但是服务端可能并没有做限制。
所以用户可以绕开客户端界面,直接发送转账协议,把其中的金额改成负数,这就导致用户A的金额不减反增。

(2)直接对WEB或者APP的服务端进行测试
一般来说,这种服务端的开发人员就是WEB/APP产品团队的开发人员,当然,测试人员跟WEB/APP的前端测试人员也是一个团队的。这种服务端就是为WEB/APP端提供一些后台的接口,比如说,用户个人信息、交易记录的读取和存储等,一般都是用HTTP接口的方式提供。这种后台的测试从流程上来说是跟随着WEB/APP产品的发布节奏来的,在后端开发完成接口以后,测试人员就直接用接口自动化测试框架写接口测试用例、或者用Postman等工具手工测试。如果项目紧张,一般会先用Postman等工具先手工测试,等版本发布完以后,再用接口自动化测试框架把自动化用例补上去,接口自动化测试框架分为很多种,后续帖子给大家介绍。

对于这种服务端后台的测试人员,除了需要掌握上述的自动化测试技术之外,还有一个沟通、协调的工作,因为后台的接口一般是同时提供给iOS/Android/WEB三个端,所以需要跟三端的测试人员协调测试进度、测试环境等事项。

如果遇到后端服务大的重构、或者是第一次上线预计有大流量的,那还需要对后端服务做一个性能测试,用JMeter/Grinder等工具编写脚本并进行压测,看看后端服务能不能撑住大流量。有些版本性能风险小的,不必要每次都做性能测试,可以根据实际版本的情况具体分析。

(3)对更后端的数据库、缓存系统、中间件、文件系统等进行测试。
这种就类似于云计算等后端基础服务的测试,对于一些大的公司,会有一个专门的团队来开发这种后端基础服务,这种服务当然也需要测试人员来保证质量。

这类服务一般都是通过HTTP接口的方式提供给刚才讲的WEB/APP的后端使用,所以,第一个要做的也就是接口测试,也就是用Postman等工具做手工测试、用自动化测试框架做自动化测试。
不过,对于这类后端服务来说,接口只是暴露给外用的部分,内部逻辑通常是非常复杂的,所以,除了针对接口做测试之外,测试人员还需要细致地了解这些服务端产品的技术框架及技术实现,需要了解到模块的级别,对于系统框架图、时序图等都有很好的理解。针对这些理解去设计用例,再跟开发一起讨论如何实现用例。

如果这种基础服务用了某一个开源软件,那通常也需要测试人员能关注社区的进展,并把我们发现的Bug及解决方案等推到社区,为社区做贡献。

除了接口测试之外,在我们公司,异常测试、稳定性测试、性能测试也是服务端测试必备的测试类型。
异常测试会模拟各种异常情况,比如硬件异常-机器挂掉的情况下能否启动备机、硬盘挂掉的情况下是否会丢失数据;网络异常-网络忽然断掉、或者网络流量变小的情况;系统异常-操作系统忽然挂掉的情况。这些极端的情况出现的时候,我们需要验证数据有没有丢、能不能尽快启动备机对外提供服务、系统状态有没有异常等。我们会采用各种方式或者工具来模拟这些异常,比如用TrafficControl工具来控制网络流量。

稳定性测试,就是模拟系统在7*24的运行下会不会出问题,一般会用接口测试或者性能测试用例不断地跑,在运行期间,我们会模拟各种情况,比如说负载的变化、系统的各种干扰等。可以用ChaosMonkey等工具来进行这类测试。

性能测试,其实细分起来会有各种类型,比如负载测试、压力测试、配置测试、甚至还有线上压测、容量规划等。最常规的性能测试,一般是先规定一个系统需要承受的压力,比如说,某一个系统,1个小时之内会有1W单的单子,那基于这个需求我们分析服务器后端需要承受的压力,分析出来以后,就写性能测试脚本,然后逐渐增加压测的力度,直到超过这个预定的压力。通常在这个测试过程中会发现各种问题,比如数据库索引没有建、线程池太小、系统异常等。需要解决了之后再加大压力测试。也是用Grinder/JMeter等工具来进行性能测试,不过难的不是这些工具的使用,而是发现问题以后的定位。
对于这种后端服务的测试人员来说,技术上的要求是挺高的,需要有较好的编程能力,需要对数据库、操作系统等机制有很好的了解才行。

大部分后端测试,都具备测试开发的能力。
全部评论
下一贴介绍服务端接口测试常用工具和自动化测试框架
点赞 回复
分享
发布于 2020-10-22 16:28
写的好棒
点赞 回复
分享
发布于 2020-10-22 22:20
联想
校招火热招聘中
官网直投
 期待其他测试相关知识
点赞 回复
分享
发布于 2020-10-23 09:24
期待更贴~写的超棒
点赞 回复
分享
发布于 2020-11-04 22:04
写的很全面和具体,今天面试刚问到了,现在来补充一下知识库
点赞 回复
分享
发布于 2023-08-07 17:19 北京

相关推荐

头像
04-09 14:29
Java
点赞 评论 收藏
转发
9 35 评论
分享
牛客网
牛客企业服务