且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Web测试囧事》——1.7 页面跳转后出现HTTP 400错误

更新时间:2022-10-01 10:34:24

本节书摘来自华章计算机《Web测试囧事》一书中的第1章,第1.7节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.7 页面跳转后出现HTTP 400错误

公司网站又升级了!这次升级后网站增加了一个保险报价功能:客户先在网站上回答公司设计的各种问题(单选题),系统会把答案汇总起来,传给后台计算价格,然后后台系统把计算出的保险报价返回给网站并显示在页面上。

从功能上看,小蔡觉得这个功能需求的关键是网站上设计的每一个问题都会作为一个价格因子并对最终报价产生影响。测试的重点应该是检查每个因子能够引起的价格变化是否符合预期。另外由于每类问题都分布在不同的页面上,所以需要确保在页面切换后,系统能保存之前选择的答案而不丢失。最后性能要求是在后台系统返回报价的时间上,根据业务方的需求需要遵守2/5/8原则,最长不能超过8秒,所以还需要增加对应的性能测试。

设计完用例,小蔡和开发人员一起进行了冒烟测试,结果每个功能都符合预期。于是小蔡在正式测试阶段把大部分精力都放到了验证各个价格因子对价格变化的影响上面。

经过大量的反复选择问题答案和页面切换操作后,小蔡像之前一样准备进入到报价汇总页面查看最终价格,突然发现页面出现HTTP 400错误(见图1-14)!

《Web测试囧事》——1.7 页面跳转后出现HTTP 400错误

小蔡觉得挺奇怪的,难道刚才是服务器“抽风”才导致HTTP 400异常?于是她又一连操作了好几次到汇总页面的场景,结果都没有重现问题。虽然感觉很神奇,但是因为没有能够重现问题,小蔡也只能暂时作罢,一边想着肯定是服务器抽风了吧,一边继续测试价格因子。

5分钟以后,当她再次准备进入到价格汇总页面时,问题又出现了,再次显示HTTP 400错误页面!看着页面上提示的错误信息,小蔡突然间有点儿明白了,提示信息说HTTP Request Header长度过长,因此问题应该是在HTTP Request Header上。小蔡利用浏览器自带的开发工具查看了下HTTP的请求头,结果瞬间就发现Cookie看上去似乎比平时看到的要长好多(见图1-15)。

小蔡怀疑是Cookie有问题,于是就找开发人员确认。在给开发人员演示了一遍这个Bug后,开发人员终于分析出造成这一结果的直接原因是Cookie长度太长,导致Request Header长度超标,最后发生HTTP Error 400。而再深入一层的根本原因是开发人员为了在切换页面时保存前几个页面的答案状态,把这些状态存到了Cookie里面,而每次翻页的时候又把答案信息错误地添加到Cookie已有信息之后,导致随着小蔡翻页操作越来越多,Cookie也越来越长,最后当Cookie长度超过浏览器限制后就产生了错误。

《Web测试囧事》——1.7 页面跳转后出现HTTP 400错误

知道了问题原因,小蔡仔细回想了下整个用例设计过程,觉得这样的问题即使通过覆盖各种用户使用场景仍然会不好发现。但如果测试人员在测试之前能够对整个功能的设计或者实现有一些了解的话,就可以注意到这个点,并且加以测试了。例如这次的Cookie超长问题,如果测试人员和开发人员先进行一些沟通,了解到代码是通过把信息存储到Cookie中去实现该功能,那么测试人员会很自然地想到Cookie长度通常是有限制的,因此会对这种存储信息的方式做特定的测试。

《Web测试囧事》——1.7 页面跳转后出现HTTP 400错误