大家好,我又来分享啦!,客户端和服务端以及http相关的响应是面试高频考点,快来跟我一起了解一下吧!
软件里的客户端和服务端,关系就跟餐馆里顾客和后厨一样 —— 一个提要求,一个来处理。你想想自己去饭馆吃饭的样子,就特好理解。
客户端就是咱们能直接碰到、能操作的那些东西,跟餐馆里的顾客似的。比如手机上的微信、电脑里的 Chrome 浏览器,还有咱们测试时常用的 Postman,这些都算客户端。
从测试的角度看,测客户端主要就是看 “用户怎么提要求” 和 “提了要求后,前面的界面有啥反应”。就拿登录来说,得看看登录按钮点了有没有反应、输入框能不能限制输入长度、点了登录后有没有 “正在加载” 的提示。你肯定遇到过点按钮没动静的情况吧?这就是测客户端要注意的。这种测试不用管后台怎么弄,就看用户能直接看到的界面有没有问题。
服务端是后台的系统,负责接客户端的要求然后处理,就像餐馆的后厨。比如微信的服务器,就是它把咱们发的消息传给对方;电商平台的服务器,咱们下单后,是它在处理订单、改库存。
测服务端重点就在 “后台怎么处理这些要求”。比如说,用户输对了账号密码,服务端能不能返回登录成功;输错了密码,能不能给出 “密码错了” 的提示。你有没有想过,为啥输对密码能登上,输错了就有提示?这就是服务端在干活。这种测试不管前面界面长啥样,就盯着后台的逻辑对不对。
HTTP 方法就是客户端给服务端发要求时的 “操作类型”,就像咱们对储物柜做的查看、存放、替换、取出这四种动作,每种都有自己的用处。你把储物柜当成服务端,自己当成客户端,一下子就明白了。
GET 方法就是从服务端拿数据,跟看看储物柜里有啥似的,不会动里面的东西。比如在电商平台看商品详情,客户端就是用 GET 方法跟服务端要商品信息的。
测试的时候得注意,GET 请求的参数会直接显示在网址里,所以不能用它传敏感的东西,比如密码。要是测登录的时候,发现用 GET 方法传密码,那肯定是有问题。你可以在浏览器地址栏输个带参数的网址试试,参数是不是能直接看到?
POST 方法是给服务端提交新数据,就像把东西放进储物柜。用户注册、提交登录信息的时候,客户端就是用 POST 方法把数据发给服务端的。
POST 请求的参数藏在请求体里,不在网址上显示,所以适合传敏感信息。测试的时候,得看看提交数据后,服务端能不能存对,还有能不能拦住重复提交,比如不让同一个账号注册两次。你注册账号的时候,有没有遇到过 “这个账号已经注册过了” 的提示?这就是服务端处理 POST 请求的反应。
PUT 方法是把服务端的数据整个更新,就像把储物柜里的旧东西全换成新的。比如用户改个人资料,改了姓名、手机号这些,客户端就用 PUT 方法发新数据。
测试的时候,要看看更新后的数据是不是把旧的全盖住了,还有要是没填必填的项,服务端能不能给出正确的提示。你改个人信息时,没填必填的,是不是会有提示?这就是测试要注意的。
DELETE 方法是删服务端的数据,就像从储物柜里把东西拿出来。比如用户删订单,客户端就是用 DELETE 方法告诉服务端 “把这个订单删了”。
测试的时候,一定要确认数据是不是真的删了,还有要是用户没权限删某个数据,服务端能不能拒绝,并且给个提示。你试过删别人的订单吗?肯定删不了吧?这就是权限在起作用。
服务端处理完客户端的要求后,会返回一个数字的响应状态码,就像外卖 APP 给咱们显示 “已接单”“已送达”“送不了” 一样,就是告诉客户端处理得怎么样了。你点外卖后,肯定很关心订单状态吧?响应状态码就跟这差不多。
测试的时候,客户端发的要求没问题(比如输对了登录信息),服务端就该返回 2xx 的码。你登常用的 APP,能登上的时候,背后就是 200 这个码在起作用。
测试的时候,要看看跳转对不对,还有缓存能不能正常用。你有没有没登录就想看个人信息,结果被转到登录页的经历?这就是 302 码的作用。
测试的时候,客户端发的请求有问题(比如没填用户名就登录),服务端得返回对应的 4xx 码,还得有清楚的提示。你有没有输错过网址,看到 “页面不存在”?这就是 404 码在提醒你。
测试的时候,客户端发的请求是对的,却收到 5xx 的码,那就是服务端有问题,得告诉开发。你有没有遇到过某个 APP 突然打不开的情况?很可能就是服务端出问题,返回 5xx 码了。
咱们就拿登录来说,把上面这些概念串一串,就更清楚了:
用户在浏览器(客户端)输完账号密码,点登录,这时候客户端会生成一个 POST 请求(因为要传账号密码这种敏感信息,POST 更安全),发给服务端。
服务端收到后,会验证账号密码:
从这个登录的场景,就能清楚看到客户端、服务端、HTTP 方法和响应状态码是怎么一起工作的。
这些概念在测试里经常碰到,刚开始觉得陌生、搞不懂很正常。我刚入行的时候也这样,后来在实际测试里多琢磨,结合生活里的例子去想,就越来越明白。建议你平时学的时候,也多结合实际的测试场景想想,经验多了,理解就深了。遇到具体问题,再针对性地分析,就能把这些知识掌握得更牢。你学的时候要是有具体问题,随时可以跟我聊。