1. HTTP(HyperText Transfer Protocol) git
说明:超文本传输协议,是互联网上应用最为普遍的一种网络协议。github
优势:就是简单、直接、开发方便,利用现成的http协议进行传输。spring
流程图:数据库
2. RPC(Remote Procedure Call)api
说明:远程过程调用,它是一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。安全
优势:提高系统可扩展性,传输效率更快,安全性更高。服务器
流程图:网络
常见请求类型: post(增)、get(查)、put(改)、delete(删)等。app
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,见下图:
----- 此部分摘抄自:http://www.javashuo.com/article/p-wjeahddv-ba.html
1)RPC接口其应用框架比较多,各有特点,普遍使用的有RMI、Hessian、Dubbo等,此次咱们主要介绍一下Dubbo框架。
Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。
2)流程图:
3)测试环境搭建:
a. pom.xml引入相关service应用jar依赖(示例:)
<dependencies> <dependency> <groupId>com.test.service</groupId> <artifactId>base-service-test</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> </dependencies>
b. dubbo服务spring配置(示例:)
<!-- 引入资源配置 --> <import resource="spring-resource.xml"/> <!-- 具体的实现bean --> <bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" /> <!-- 提供方应用信息 --> <dubbo:application name="xs_provider" /> <!-- zookeeper服务器地址 --> <dubbo:registry address="zookeeper://localhost:2181" /> <!-- 用dubbo协议暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明须要暴露的服务接口 --> <dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" /> <!------------------------------------------------------------------------> <!-- 在工程resources下添加其资源配置文件--> <dubbo:application name="hjy_consumer" /> <dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer" url="dubbo://localhost:20880" timeout="10000" />
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<String, String> 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); } }
1)查看接口文档,了解接口功能及其业务逻辑
2)肯定接口调用协议(http、rpc等)
3)肯定请求类型(post、get等)
4)肯定请求地址/调用方法
5)组装请求报文 ☆☆☆☆☆(参考测试设计)
6)选用适用工具或编写脚本测试
7)检查返回码,及其描述
8)检查返回值,及其对应数据库数据变化
----- 以上仅为我的测试经验,固然接口测试不单单如此,更多还须要你们本身去发掘,同时欢迎各路大神指点。