1、 版权所有,侵权必究 v1.81 模拟浏览器行为1.1 为什么模拟浏览器行为下面举测试人员经常遇到的问题:1.1.1 为什么测试工具运行时间比浏览器时间长为什么使用浏览器访问页面响应很快,1-2秒就完成;而使用测试工具却需要10几秒,甚至几十秒才完成脚本。解答:a) 这是由于浏览器访问页面响应是并发的,同时并发多个线程(多个Socket),而性能测试工具基本是串行发送请求的。如果一个页面有100个资源(CSS、HTML 、JS、图片),需要发送100个HTTP请求,如果使用6个线程(浏览器),则每个大概请求14 个HTTP ;如果使用一个线程(测试工具),则需要请求100个,时间当然大很多。上
2、图为chrome浏览器访问时,调试工具显示的并发情况。可以看到浏览器是并发多线程多TCP下载网站资源。b) 另外浏览器具有缓存功能,如果之前访问了,会把一些图片缓存在浏览器临时目录,下次请求时发送的HTTP请求会带上If-Match或Etag等头域,WEB服务器判断资源没改变则会304 响应,而不是回200 OK,这样减少资源的传输,所以时间就小。而有些测试工具是不携带这些头域(包括Loadrunner),因此回的响应是200 OK。 所以测试人员默认真实测试时,可以考虑部分有缓存,部分没缓存。 版权所有,侵权必究 v1.81.1.2 测试工具成功运行N个虚拟用户,但不知道服务器是否可以支持N
3、个用户性能测试工具运行一定用户数都成功,则表示该服务器能支持这么多用户数?如果不是,哪到底能支持多少用户?解答:一次有效的测试结果,不只用户都运行成功,同时需要保证访问一个页面或一次交易的响应时间在合理范围。这里介绍“2-5-8原则” ,简单说,就是当用户访问一个页面或一次交易能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为 系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。还有,如
4、果测试工具模拟的虚拟用户能代表真实用户的行为,且事务响应时间在合理范围,可以认为该服务器可以支持N个用户。1.1.3 怎样才能测试出WEB服务器能支持多少真实用户,怎样的服务器调优参数才合理解答:这需要性能测试工具可以模拟出真实用户的行为,包括HTTP请求数、每用户并发线程与TCP连接数、思考时间、有无缓存。为什么需要模拟真实用户的线程数与TCP连接数呢?操作系统的TCP 连接数理论值一般很大,操作系统对TCP连接设置有默认值(怎么配置,可以网上搜索,这里不介绍);但实际测试中TCP连接在几百,就出现测试的响应时间很长。抓包分析,原来是三次握手的SYN包服务器不及时响应,导致SYN 重传(3秒
5、后,9秒后)。 版权所有,侵权必究 v1.8如果SYN丢了,则会重发,但是第一次是3秒后,第2次是在9秒后,如果重发才收到的SYN_ACK,则导致TCP连接超长,从而导致业务响应时间延长。WEB服务器的线程数与 TCP连接数实践测试往往很低,这不是提高硬件就能轻松解决的,这也是服务器调优比较复杂的配置。因此,只有尽最大能力模拟真实用户(浏览器或其它WEB客户端,可能不同浏览器的并发线程与TCP 数都不一样)的行为的测试场景,测试结果才最真实,测试场景满足规格与客户需求,则服务器调优参数才最有意义。1.2 kylinPET性能 工具如何模拟浏览器行为Scripter在录制业务时,将浏览器的TCP
6、数与线程数,页面请求时间记录下来,启用模拟浏览器配置,将可以模拟浏览器一样的行为,包括每个请求发送的间隔时间(支持ajax定时轮询),启动的线程数与TCP 连接数。模拟真实用户行为,这样的性能测试才是最有用的,最有说服力。1.3 kylinPET性能工具模拟浏览器三种方式介绍只有模拟浏览器行为的测试才是最有效的测试,测试结果才能真实反映支撑用户场景。点击“设置”按钮,弹出设置窗口: 版权所有,侵权必究 v1.81.3.1 串行模式发送请求表示每个虚拟用户只使用一个线程发送脚本的所有请求1.3.2 模拟浏览器行为,根据录制并发请求表示每个虚拟用户多个线程、多个TCP并发HTTP请求,即录制时浏览
7、器的行为,并发个数与 TCP数参照录制快照。注意:1、 这里每个并发线程执行完一个HTTP请求,立即执行下一个HTTP请求,即两个请求没时间间隔,除非有思考时间(Think Time)1.3.3 并发,按照录制时间间隔发送请求表示每个虚拟用户多个线程、多个TCP并发HTTP请求,而且 HTTP请求发送时刻与录制时HTTP的间隔时间一致。即录制时浏览器的行为,并发个数与TCP 数、时间间隔参照录制快照。该设置表示完全按照录制时的浏览器行为,因此录制时浏览器的操作行为需要按正常的用户操作方式,包括思考时间。注意:1、 这里每个并发线程执行完一个HTTP请求,需要等待一定时间后才执行下一个HTTP请求,即两个请求之间有时间间隔(间隔时间根据录制时浏览器的间隔时间)2、 思考时间(Think Time)在该配置下不会执行,因为HTTP间隔已经包括录制时的思考时间,因此要求录制业务时思考时间是正常用户的使用行为。