实验室的项目开发完成后需要做测试,apache倒是有一些工具。因为我对测试工具没有什么概念,所以就只能写代码去模拟Web页面的get请求,主要是向看看最大并发是多少。(虽然感觉这种学校的系统,并发量也不会太高)。用的第三方包就是httpclient。
基本思路如下: 1、首先httpGet请求登陆页面,因为httpGet会自动跳转(httpPost是不可以自动跳转)的SSO的登陆页面.
2、解析SSO的登陆页面,以前做垂直搜索的时候对网页分解有过一些了解。这次没有用第三方的包,因为解析简单所以用一些正则表达式就可以提取 到form的action,以及一些input的key,特别要注意的就是hidden的一些key,value。(实验室的项目中一个hidden的参数的value是动态改变的)。
3、通过httpPost去请求action,并添加对应的参数列表。如果验证成功,应该返回一个StatusCode为302,通过header的"location"key可以得到属性对应的value。这个value中一般为跳转的页面,里面包含sessionId和ticket。通过httpClient的属性可以得到cookie值(这个cookie可以共享多个client模拟同一个用户登录测试)。
4、通过得到的location的value,用httpGet去请求得到mainPage(注意每次请求后httpGet or httpPost都要执行abort(),否则会抛异常),解析mainPage,提取链接的网页。将所有page link存在一个list中。
5、遍历page link,解析所有的page,提取每个page的js和css的链接存入另外的一个list中。(因为实验室项目的所有网页的链接均可以再mainPage中提取到,如果不是这样,可以一边解析每个页面,一边加入pageList,这样就是一个不停止的小爬虫了)
6、merge两个list为一个统一的list,采用多线程每次随机的取一个link发送get请求,可以打印出返回的statusCode。并且统计每个页面的失败情况
后续要改进的地方:
1、提取每个页面的参数,并通过某种形式展现出来(swing or web),这样来模拟post请求。
2、模拟注册,这个当然有些麻烦。特别是图片验证码。不过自己系统绕过这个点。
3、。。。etc,其实改进的点可以很多,偶只想到这么多。。 OK,代码在linux下面,跑到windows下面看论文。。好吧。改天上代码。看见某度的一个ITer挂了。。压力有点大。早睡早起吧。有什么好的意见,希望告诉偶。。