接口测试及httpclient深入

来源:互联网 发布:淘宝店铺没销量怎么办 编辑:程序博客网 时间:2024/05/01 06:46

接口测试--模拟登陆

场景:服务器根据浏览器中保存的本地cookie判断用户的有效身份


为了使得httpclient发送的请求包含相同的token(模拟浏览器发送请求,一次登陆后,token相同,即被认为是同一个用户的操作),进行如下操作:


1) httpclient模拟登陆后,获取token 并保存;

2) 之后httpclient发送请求前,使用步骤1) 中获取的token发送请求

以上步骤可以预防CSRF攻击,具体参考:
http://qa.blog.163.com/blog/static/1901470022015101293748737/

接口测试工具及特点

名称特点junit1)提供丰富API支持多种验证结果正确性的逻辑    
2)通过参数化、@before、@after等特性,支持用例代码可复用   
3)suite的模式支持case的批量运行   
4)有展现良好的报表    
5)与eclipse ide集成,使用方便
httpclient支持HTTP协议的客户端编程工具包.

1)封装实现了所有HTTP的方法,如GET,POST,PUT,HEAD   
2)支持redirect,会话保持   
3)支持文件上传 
httpunitHTTP请求的测试辅助工具,能处理web测试的需求 .

相比于HttpClient,不同之处在于:    
1)HttpUnit能对HTTP返回的结果页进行解析,比如DOM元素定位  
2)HttpUnit能自己启动一个servlet来运行被测服务
htmlunitHtmlUnit相比HttpUnit功能更加强大,
HtmlUnit是Junit的扩展测试框架之一,开发者可以使用其提供的API对页面的元素进行操作。
页面的各种元素都可以被当作对象进行调用,对JavaScript的支持也比较好。
jwebunitJWebUnit以HttpUnit和JUnit为基础的一个web测试工具。
可以用来验证链接跳转、表单输入和提交、表格内容以及Web应用程序特性的正确性。
相比于HtmlUnit,JWebUnit封装的更友好,编写case也会更加简单
  
以上摘录自:http://wenku.baidu.com/link?url=mjczcVqjnA61mXqhJLpirHxKg3k0vzK-RDVu3PzBGNFtKgN6hm_HuqBNXg-RwSqfg-7V0xmyNL_kTNgc1rwjuMUHfRRiAND7AstCjxOsZFu


深入httpclient

java 引入httpclient后,发送http请求获取json 与浏览器间接请求接口返回的json(手动调用url的json)的区别:

httpclient后,发送http请求获取json : 只保证array 中的顺序(与手动调用url返回的一致),其他顺序不保证(和手动调用url返回的json顺序不一致)

httpclient调接口返回的json :




手动调用url的json返回:






net.sf.json.JSONObject 和org.json.JSONObject 的差别


参考:http://my.oschina.net/wangwu91/blog/340721


不同的方面        

net.sf.json.JSONObject

org.json.JSONObject

创建json对象//没有 new JSONObject(String)的构造方法


JSONObject json = JSONObject.fromObject(str); String str = "";// 一个json串




JSONObject json = new JSONObject(str);解析json没有严格要求获取字段的类型跟getXXX()的类型一样

精度可能会丢失获取的字段类型必须跟getXXX()的类型一样

精度不会丢失
从json中获取数组可以使用if(o instanceof JSONArray) 判断类型可能抛异常:JSONArray subArray =obj.getJSONArray(key)size大小(数组)int leng = subArray.size();int leng = subArray.length();   

建议: 为了遍历的方便和,不抛出异常,建议使用 net.sf.json.JSONObject

httpclient设置超时时间

  • 设置的用途
不设置的后果就是一旦对方服务器出现无响应的情况,如果有返回(404 50x)错误还好,没有返回的话,java线程会一直等待。设置后,超时系统抛出异常。
  • 超时时间类型
A    连接超时(connectionTimeout ): 连接一个url的连接等待时间
例如:
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
B  读取数据超时(soTimeout ):连接上一个url,获取response的返回等待时间
例如:
client.getHttpConnectionManager().getParams().setSoTimeout(2000);

httpclient4的设置方式和httpclient3有所不同,代码如下:
HttpClient httpclient =newDefaultHttpClient();
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,Config.20000);//连接时间20shttpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);//数据传输时间60s

DefaultHttpClient 设置超时机制  DefaultHttpClient client = new DefaultHttpClient();client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000);client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 15000);


0 0
原创粉丝点击