小编7年工作经验,六年一线大厂工作经验,先后就职于京东、美团、去哪儿网。目前任职创业公司做质量管理工作。。最近想把这些年工作的心得跟大家分享一下。首先呢,想先把现在最常用的接口自动化来分享。将用几篇文章完整的讲解一下,目前刚刚搭建的一整套接口自动化系统。
首先先说一下思路,接口自动化一般的分为三层,最底层的是单元测试,第二层接口自动化测试,第三层UI自动化测试。三层都具备可以最好的保障系统质量。
分层自动化测试
同样的,不同的测试适用于不同的公司,不同的产品。比如
1.UI自动化更适用于页面相对较稳定,改动较少。
2.接口自动化适用场景更多,适用于各个阶段。
3.但愿测试呢,更加适用于开发同学进行编写,通过解耦的方式进行自测。
基于上面的描述,和公司的现状,优先进行了接口自动化的搭建。技术选型在公司内部统一了技术栈Java,选用了测试框架Testng,持续集成选择了jenkins,数据库选用了mysql。
选型结束,下一步就要思考整个系统如何构成。初期构想肯定是已最快见效,最快实现的方案。下图能够很直观的看到整体的系统结构。
接口自动化实现方案
下面说一下干货,介绍一下自动化实现,其他模块后续文章描述。不啰嗦直接上代码:
//公共http请求公共方法,获取请求返回值,所有的case都调用此方法
public JSONObject httpLinkGet(String url, String data) throws Exception {
HttpClient httpClient=new SSLClient();
String link=url+data;
long starttime=System.currentTimeMillis();
HttpGet httpGet=new HttpGet(link);
httpGet.setHeader("*****","******");
HttpResponse response = httpClient.execute(httpGet);
//获取响应状态码
int code = response.getStatusLine().getStatusCode();
System.out.println("状态码: " + code);
//获取响应内容
HttpEntity httpEntity = response.getEntity();
long endtime=System.currentTimeMillis();
long extime=starttime-endtime;
JSONObject jsonObject=new JSONObject();
String rs = EntityUtils.toString(httpEntity);
if (rs!=""){
jsonObject= JSONObject.parseObject(rs);
}
return jsonObject;
}
public JSONObject httpLinkPost(String url, HttpEntity entity) throws Exception {
String newrs="";
HttpClient httpClient=new SSLClient();
HttpPost httpPost=new HttpPost(url);
httpPost.setHeader("*****","***");
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
//获取响应状态码
int code = response.getStatusLine().getStatusCode();
System.out.println("状态码: " + code);
//获取响应内容
HttpEntity httpEntity = response.getEntity();
String rs = EntityUtils.toString(httpEntity);
JSONObject jsonObject= JSONObject.parseObject(newrs);
jsonObject.put("httpCode",code);
return jsonObject;
}
//接口调用方法
@Test(priority=1 ,description = "")
//@Test可执行用例注解,priority执行顺序,description备注,还有其他很多注解可用。后面详述
public void loginSuccess() throws Exception {
url="";
String data ="";
StringEntity entity= new StringEntity(data);
JSONObject js = httpSend.httpLinkPost(url,entity);//获取返回结果
Assert.assertEquals(js,"");//断言
}
截止目前,就可以实现一个简单的自动化测试。通过接口调用和返回结果断言执行接口测试。
下篇文章详细描述自动化框架搭建,有需要的同学记得关注我,也欢迎留言讨论,共同进步。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走(都是免费的~):在我的博客侧边栏里(在电脑上才能看到奥)
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!