面试时,我理解的成面试官考察具体的测试方案设计,所以回答略有偏差;经大佬指点,本题关键点在于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)进行提效。
另外,整体迭代后,可能会有第三方调用没有同步更新导致的请求失败的情况;需要强化对线上请求的监控和报警机制,以及时地发现并解决合作方出现的异常。