在录制Web协议脚本回放脚本的过程中,会出现HTTP服务器状态代码,例如常见的页面-404错误提示、-500错误提示。
错误现象1:-404 Not Found服务器没有找到与请求URI相符的资源,但还可以继续运行直到结束。
错误分析:此处与请求URI相符的资源在录制脚本时已经被提交过一次,回放时不可再重复提交同样的资源,而需要更改提交资源的内容,每次回放一次脚本都要改变提交的数据,保证模拟实际环境,造成一定的负载压力。
解决办法:在出现错误的位置进行脚本关联,在必要时插入相应的函数。
错误现象2:-500 Internal Server Error服务器内部错误,脚本运行停止。
错误分析:服务器碰到了意外情况,使其无法继续回应请求。
解决办法:出现此错误是致命的,说明问题很严重,需要从问题的出现位置进行检查,此时需要此程序的开发人员配合来解决,而且产生的原因根据实际情况来定,测试人员无法单独解决问题,而且应该尽快解决,以便于后面的测试。
这两天测试并发修改采购收货时,录制回放正确,运行脚本,集合点3个并发时,却老是出错如下:Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) for http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt
解决过程:按Help提示在浏览器输入原地址,发现提示“请重新登陆系统”。被此误导,偶以为是Session ID、或Cookie失效,于是尝试找关联,花了N多时间。可是脚本里确实不存在需要关联的地方呀,系统默认关联了。与程序员沟通,证实此过程不会涉及到Session ID 或Cookie。那为什么?因为集合点下一站就是修改的提交操作,于是查找web_submit_data–>定位查找Log文档注意点:怎么找log文件–>Controller–>Results–>Results Settings 查找本次log文件保存目录–>到该目录下查找log文件夹–>打开惊喜的发现其中竟然有所有Vuser 的运行log。–>打开Error 查找报错的Vuser–>打开相应的log文件查找error,然后偶发现了一段让偶热泪盈眶的话:
Action.c(30): Microsoft OLE DB Provider for ODBC Drivers 错误 ’800040Action.c(30): 05′\nAction.c(30):
\nAction.c(30): [Microsoft][ODBC SQL Server Driver][SQL Server]事务(进程 ID 53)Action.c(30): 与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。Action.c(30): \nAction.c(30):
\nAction.c(30): /Purchase/stockin_action.asp,行Action.c(30): 205Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) for “http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt” [MsgId: MERR-26612]Action.c(30): t=37758ms: Closing connection to 192.168.100.88 after receiving status code 500 [MsgId: MMSG-26000]Action.c(30): t=37758ms: Closed connection to 192.168.100.88:88 after completing 43 requests [MsgId: MMSG-26000]Action.c(30): t=37760ms: Request done “http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt” [MsgId: MMSG-26000]Action.c(30): web_submit_data(“stockin_action.asp”) highest severity level was “ERROR”, 1050 body bytes, 196 header bytes [MsgId: MMSG-26388]Ending action Action. [MsgId: MMSG-15918]Ending iteration 1. [MsgId: MMSG-15965]Ending Vuser… [MsgId: MMSG-15966]Starting action vuser_end. [MsgId: MMSG-15919]
解决了。。。。。。。很寒。由此可以看出,查看日志文件是件多么重要的事情啊!!!!!其实并发死锁本来就是本次的重点,之前是写事务,但没有做整个页面的锁定,只是写在SQL里。程序员说这样容易出现页面错误,又改成页面锁定,具体怎么锁偶没看懂asp外行。之前事务冲突,偶让他写个标志,定义个数值字段增一,偶就可以直观看出来了。这次改成页面就删掉这些标志了,于是出错就无处可寻。这次最大的收获就是知道怎么查找Controller的log文件。以后看到Error就不会被牵着鼻子走了~~~~