公司把http协议迁移成https,如何验收?如何高效验收?

面试时,我理解的成面试官考察具体的测试方案设计,所以回答略有偏差;经大佬指点,本题关键点在于http和https的区别。

以下内容,均为个人理解结合大佬思路完成,如有理解或表述的偏差,还请指出。答题思路大致如下:

  • 核心考点:协议区别
  • 如何验收:测试保障方案、测试坑点
  • 如何高效验证:测试提效手段

1 核心考点

HTTPS作为应用层协议,可以理解为HTTP + SSL/TLS,即在HTTP与TCP通信前,先通过SSL/TLS经过加&解密。

后面的保障方案里,还会掺杂着两者对比;不在此处表述,是因为让整体回复更加自然;具体知识点,可自行搜索引擎解决,我看的文章是:CSDN

2 如何验收

这部分,我的思路是按测试方法顺序捋出;每个人的方法论可能不太一致,我的是:
→ 白盒(代码审查等)
→ 功能
→ 性能(偏服务端)
→ 效果(偏数据评测)
→ 安全(这块我个人不太了解,面试问起来一般就是公司有专业团队做,我不太了解)
→ 兼容(偏前端)

首先,需要对审查代码,看所有相关http协议的调度是否变更;另外相比HTTP的明文传输,HTTPS引入证书(CA)的使用,所以需要确认相关机器上的证书OP同学是否安装到位。

然后,需要对历史功能用例进行全量回归,保障全流程功能符合预期。

并且,因为引入SSL/TLS,HTTPS在握手环节会比HTTP多4次(总计7次,详细可见上述链接,如果提到这个建议背一下,可能面试官会追问);所以在多用户、低频次访问的场景下,性能可能会有降低,需要重新对系统吞吐情况进行摸底。

另外,因为对于TLS版本在端和服务器支持不一致时,HTTPS会终止握手导致请求失败;所以如果改动涉及到端,也需要在端上进行验证。

3 如何高效验证

这就用到各位在学院所学了,我个人的思路方法论
→ 左移
→ 自动化
→ 右移

首先需要合作团队完成升级模块拆分和排期,保障分模块的验证敏捷化执行;根据系统规模大小,再设计集成测试,以实现快速发现问题、解决问题。

功能、性能、兼容等等测试过程,都可以通过自动化脚本(pytest+)Or自动化工具(例如Jmeter)进行提效。

另外,整体迭代后,可能会有第三方调用没有同步更新导致的请求失败的情况;需要强化对线上请求的监控和报警机制,以及时地发现并解决合作方出现的异常。

1 Like

自贴自顶!
请大家批评指正!我是真的刚了解这一块啊!!

白盒方面

主要是审查代码与配置,配置也是经常填写url的地方,如果没有更改肯定会错。可以用工具扫描下关键词,所有涉及http访问的地方都要检查下,如果你们存在混用的情况,有可能会有大量的误报的。

功能

功能上要进行回归的原因,也是因为代码或者配置错误,会导致功能报错。还包括一些一些通用的规范,比如https网页不能内嵌http资源之类的。所以前端和后端都需要关注。

性能

性能上一定会下降,所以通常只有最外层才使用https,内部调用仍然使用http或者rpc。

效果与安全

其实不用重复测试,功能上如果正常,逻辑是不变的,效果是不需要测试的。
安全也一样,如果http的时候做个安全测试,那么https加上会更加安全,至少不会降级。唯一的问题可能就是https没用对,导致了失去安全作用后退到了http层面。

关闭