目录
前言:
一、了解一下HTTP与RPC
二、HTTP接口测试
三、RPC接口测试
四、接口测试用例设计
五、测试思路总结
在接口测试方面,常见的接口类型有HTTP接口和RPC接口。这两者的测试方法略有不同,在测试前需要进行技术选型和确认接口类型。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
1. HTTP(HyperText Transfer Protocol)
说明:超文本传输协议,是互联网上应用最为广泛的一种网络协议。
优点:就是简单、直接、开发方便,利用现成的http协议进行传输。
流程图:
2. RPC(Remote Procedure Call)
说明:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
优点:提升系统可扩展性,传输效率更快,安全性更高。
流程图:
常见请求类型: post(增)、get(查)、put(改)、delete(删)等。
1)get型接口
格式: 请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,如查询《小王子》这本书的信息,则q='小王子',使用postman工具来试验一下,如下图:
场景: get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来。
特点: 请求数据量小,参数暴露于url地址中,故存在安全隐患。
2)post型接口
说明: 向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立
场景: 如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论
特点: 请求数据量大,安全性高
如豆瓣的发表评论的开放api,见下图:
3)put型接口
说明: put请求用于向指定资源位置上传最新内容
场景: 如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论
如豆瓣的修改评论的开放api,见下图:
4)delete型接口
说明: 请求服务器删除请求里url所标识的资源
场景: 如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论
如豆瓣的删除评论的开放api,见下图:
1)RPC接口其应用框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等,这次我们主要介绍一下Dubbo框架。
Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。
2)流程图:
3)测试环境搭建:
a.pom.xml引入相关service应用jar依赖(示例:)
com.test.service
base-service-test
0.0.1-SNAPSHOT
org.springframework.boot
spring-boot-starter-actuator
jdk.tools
jdk.tools
1.8
system
${JAVA_HOME}/lib/tools.jar
b.dubbo服务spring配置(示例:)
c.基于TESTNG数据驱动编写方法(示例:)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/spring.xml"})
@Configuration
//++++++++++++继承方法++++++++++++
public class BaseTestNGTest extends AbstractTestNGSpringContextTests {
//++++++++++++数据收集++++++++++++
@DataProvider(name = "testdata")
public Object[][] dataprovide()throws IOException{
System.out.println("dataprovide");
// return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};
Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2");
return testData;
}
//++++++++++++数据传递++++++++++++
@Test(dataProvider="testdata")
public void test_case_1(HashMap map) throws Exception {
operatorUserId=Integer.valueOf(map.get("userId"));
exceptedvalue=Integer.valueOf(map.get("excepted"));
//++++++++++++实际值++++++++++++
Integer actual_value=billService.getUserEmailNameCount(operatorUserId);
//++++++++++++预期值++++++++++++
Integer excepted_value=get_excepted_value(operatorUserId);
//+++++++++++++验证+++++++++++++
Assert.assertEquals(actual_value,exceptedvalue);
}
}
查看接口文档,了解接口功能及其业务逻辑;
确定接口调用协议(http、rpc等);
确定请求类型(post、get等);
确定请求地址/调用方法;
组装请求报文 ☆☆☆☆☆(参考测试设计);
选用适用工具或编写脚本测试;
检查返回码,及其描述;
检查返回值,及其对应数据库数据变化。
作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!
留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=8sFvl1Yi2ruJa1cqaaz0car85omUNLpx&authKey=vjglrc9OroNe2M%2F%2FA%2F%2B4JnNVTWfVWIt99KcXwqz%2F7dqHPCpZh97ZgT%2FHePxtriAs&noverify=0&group_code=574737577