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

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

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

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

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

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

小蔡觉得挺奇怪的,难道刚才是服务器“抽风”才导致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长度超过浏览器限制后就产生了错误。

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

时间: 2024-08-03 15:25:23

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

《Web测试囧事》——1.9 代理服务器过度缓存文件导致读取错误的账号信息

1.9 代理服务器过度缓存文件导致读取错误的账号信息 缓存不仅仅是Web产品为了缓解用户访问带给服务器的压力而设置的,而且用户(例如企业)为了减少多用户访问同一个网站占用过多带宽,也可以设置自己内部的缓存服务器. 发生几次之后,小蔡觉得很好奇,就询问了其他的测试人员,发现大家都有同样的问题,在和老牛一起分析后,他们觉得有可能是公司内部缓存服务器机制导致了这个问题,但是至于为什么早上这个问题不容易发生,还是不太了解. 带着这个问题还有他们的怀疑,小蔡和老牛找到了公司信息维护的相关人员.经确认,确实

《Web测试囧事》——导读

前 言 为什么要写这本书 1)人不能像走兽那样活着,应该追求知识和美德.--但丁 2)助人为乐,人生一美德. 我们4个作者加起来年龄过百,而且有着年超半百的工作经验,算起来也是测试领域的老鸟了. 根据上面的1)和2),我们得出一个很重要的结论: 经过这么多年在工作中不断总结经验,时不时与Bug斗智斗勇,最后提炼出来的经验,我们希望能分享给更多的人,更重要的是能抛砖引玉,引发对更优秀的工作方式和实践的思考. 为什么需要看这本书 怎样判断你是否需要这本书?以下场景,如果8条以内你都似曾相识,那么请看

《Web测试囧事》——第1章 功能测试:技术篇 1.1 输入框中输入超过最大允许值造成页面跳转溢出

第1章 功能测试:技术篇 提到测试,大家首先会想到的就是功能性的测试,因为只有保证了产品的基本功能和流程,产品才具备给用户提供使用价值的能力,从而才有可能确定产品的核心竞争力.基于这一点,不仅测试人员和开发人员,还有产品经理.项目经理.业务方对功能完备性和正确性的重视程度也往往都是最高的.这也使得功能测试成为任何测试类型的基础. 在进行功能测试时,我们会使用诸如边界值分析.等价类划分.因果分析.组合测试(Pairwise Testing)等测试方法来设计和规划测试用例,但是这些方法大多都是从书本

《Web测试囧事》——1.8 使用没有添加时间戳的缓存使用户看到过期数据

1.8 使用没有添加时间戳的缓存使用户看到过期数据 当代主流的网站都使用了缓存技术,目的在于减少用户请求对服务器的压力.当用户首次通过浏览器请求服务器的资源时,服务器会返回所有的资源:当用户再次请求服务器资源时,浏览器会判断资源是否已更新,如果更新了,再向服务器发起请求,如果没有更新,就使用浏览器中缓存的资源. 这里有一个问题,浏览器是如何判断资源是否更新了?一般来说,资源文件在文件名中要么添加时间戳(见图1-16),要么添加标识符(标识符可以是任何一组区别资源不同版本的数值,如v1.v2,或者

《Web测试囧事》——1.11 IE 9不支持占位符导致搜索行为异常

1.11 IE 9不支持占位符导致搜索行为异常 对于浏览器兼容性测试,一直都是Web测试中重要的一环,小蔡在测试产品中自然也不能漏掉. 由于小蔡测试的产品是面向普通用户的,所以小蔡选择进行测试的浏览器,也是开发团队选择优先支持的浏览器,是基于市场占有率最高的几款浏览器:Chrome.Firefox.Safari和IE.这些浏览器的版本也很多,如果全部支持也是不可能的,所以开发团队选择支持最新版本的Chrome.Firefox和Safari,以及IE 9-IE 11,还有IE EDGE. Chro

《Web测试囧事》——2.7 多入口功能的特殊处理造成的Bug

2.7 多入口功能的特殊处理造成的Bug 小蔡负责测试的登录功能在多个页面都有入口,不仅在项目主页和产品展示页面能打开登录页面,而且通过购物车等页面也能打开弹出式登录对话框(见图2-9). 由于登录功能关乎用户的隐私信息,所以小蔡设计了丰富的测试用例,涵盖了从功能到性能再到安全的各种测试.不过要是每个页面上的登录功能都执行这么详尽的测试用例,那花费的时间就会远远超出允许的范围. 小蔡只好去找老牛寻求建议,老牛告诉她:我们知道100%的测试覆盖是做不到的,不仅对于整个项目来说做不到,对于某个功能模

《Web测试囧事》——1.6 多次操作本该禁用的页面组件造成服务器出错

1.6 多次操作本该禁用的页面组件造成服务器出错 对页面上的组件进行多次点击是测试人员经常使用的小技巧之一,通常小蔡在执行完基本测试用例之后,开始进行探索性测试时会使用这个技巧,并且利用这个测试技巧发现了不少问题. 这些问题主要集中在用户提交服务器请求后服务器进行处理的相关功能上,例如读取.保存.提交.删除等功能(见图1-12). 小蔡发现如果网络速度比较慢或者产品本身性能不够好,在用户点击了这些功能按钮后,而页面刷新完成之前这段时间内,该功能按钮仍然可能被用户继续点击.即使有些页面上的按钮处于

《Web测试囧事》——2.2 页面字段依赖导致表单提交时出错

2.2 页面字段依赖导致表单提交时出错 小蔡最近在测试中碰到一个有意思的问题,就是在提交表单时,如果不按表单设定好的由上到下的顺序一个个填写表单内容,那么在提交时就会出现提交失败的错误. 小蔡感觉到很奇怪,表单顺序的填写居然也会影响到功能?那就随着小蔡看看这个问题是怎么发现的,以及是什么原因引起的吧. 小蔡在测试用户注册账户页面时发现,注册页面内容很多而且表单很长,所以她就使用鼠标滚动,没想到滚动得过快导致有些选项并没有填写/选择,最后等到她提交表单时才发现这一点.她只好重新滚动到漏填/选的字段

《Web测试囧事》——1.2 索引值计算错误使资源缩略图显示和大图展现不一致

1.2 索引值计算错误使资源缩略图显示和大图展现不一致 业务方希望在商品展示的页面,不仅能添加展示图片,还可以展示关于商品的视频(见图1-3). 小蔡按照通常的步骤编写完测试用例,开始使用标准测试数据执行测试.小蔡首先发现点击右下角链接时,本应该显示第1张图片或者视频,但是打开的却是第2张图片或者视频. 小蔡觉得这可能是开发人员在处理图片和视频展示的数组时,使用的是自然数计数,从1开始作为第1个数据项,而非计算机程序数组中通常使用的把从0开始计数作为第一个数据项.当小蔡把这一问题上报之后,开发人