http请求测试实现日常、预发、线上三套环境监控

发表于:2013-03-17来源:天猫测试作者:风盈点击数: 标签:http
以下为大家介绍http请求测试方法,从而实现日常、预发、线上三套环境的监控。 做了半年的个性化推荐业务,发现很多资源位的推荐都是以http请求方式提供出来。由于前端资源相对紧张,经常需要在前端还未开发出来之前,就要针对http请求返回的json字符串

  以下为大家介绍http请求测试方法,从而实现日常、预发、线上三套环境的监控。

  做了半年的个性化推荐业务,发现很多资源位的推荐都是以http请求方式提供出来。由于前端资源相对紧张,经常需要在前端还未开发出来之前,就要针对http请求返回的json字符串进行测试,面对满屏的字符串,基本上没有办法通过肉眼进行测试。后续发现了浏览器的json插件,可以格式化json数据,但针对json数据仍然很难进行测试。因此就想到了获取http请求返回的json字符串,对其进行解析,再针对解析出来的数据通过脚本用例来测试返回的结果。

  另外当线http请求布满全站,无处不在时,怎样才能知道哪些接口在正常工作,哪些接口没有返回数据呢?通过http请求测试方法,可以实现日常、预发、线上三套环境的监控。

  http请求不像其它接口,受环境的限制。只要知道对应的ip或域名,再加上对应的参数就可以获取http请求返回的结果,因此对于日常、预发、线上三套环境均可以通过脚本用例进行自动化测试。http请求测试的主要思路是创建基于itest的mvn工程,通过HttpURLConnection得到http请求的返回结果,解析返回的字符串,结合itest编写用例,验证返回的内容,执行用例,自动化回归用例。

  http请求测试方法如下:

  1、 创建基于itest的mvn工程

  2、 修改pom.xml文件,添加解释json相关的依赖

  3、 执行mvn eclipse命令,将工程打包后导致入eclipse。此时工程中包含了itest做接口测试的示例:

  数据库连接、数据准备、hsf服务依赖等都可以在此基础上进行扩充

  4、 在BaseTestCase中添加对http请求返回结果的处理,本文通过HttpURLConnection得到http请求的返回结果,还有很多其它获取请求返回结果途径,如httpClient等,有兴趣的同学可以尝试一下。

  public String urlToString(String strUrl, String charset) {

  URL url = null;

  HttpURLConnection urlconnection = null;

  DataInputStream input = null;

  String str = “”;

  try {

  url = new URL(strUrl);

  urlconnection = (HttpURLConnection) url.openConnection();

  input = new DataInputStream(urlconnection.getInputStream());

  BufferedReader reader = new BufferedReader(new InputStreamReader(input, charset));

  String line = “”;

  while ((line = reader.readLine()) != null) {

  if (null != line && line != “”){

  str += line;

  }

  }

  } catch (Exception e) {

  e.printStackTrace();

  } finally {

  if (urlconnection != null) {

  urlconnection.disconnect();

  }

  try {

  input.close();

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  return str;

  }

  5、 还可以在BaseTestCase中添加其它公共方法:字符串转换成json对象、json数据,去重等

  6、 创建测试类,编写测试用例,执行用例

  如:测试如下http请求,根据ip的不同,可以实现对日常、预发、线上三套环境的测试

  http://ald.taobao.com/urlstring?parameter=someone

  public String daily_demo = “1.1.1.1″;

  public String prepub_demo = “2.2.2.2″;

  public String online_demo = “ald.taobao.com”;

  @Test

  public void test_demo(){

  String parameter= “someone”;

  String charset = “XXXX”;

  String str = urlToString(“http://”+online_demo+”/urlstring?parameter=”+parameter, charset);

  //截掉返回结果中构成json对象多余的字符

  String sub = str.substring(1, str.length()-1);

  JSONObject jsonObject = jsonstringToObject(sub);

  //返回结果的内容

  JSONArray data = jsonObject.getJSONArray(“data”);

  //校验返回结果中的字段

  for(Object dataContent : data){

  String field= ((JSONObject)dataContent).get(“field”).toString();

  Assert.assertTrue(field.indexOf(“XXXX”)>-1);

  }

  }

  7、 提交用例到kelude平台,创建实验室,配置命令执行,同时也可以将实验室复制到全网回归,对用例进行每日回归

  截止目前aladdin-httptest已经多次发现推荐接口bug

  8、 http-demo svn地址:

  请咨询本人。

原文转自:http://tmalltesting.com/archives/519