在接口测试方面,常见的接口类型有HTTP接口和RPC接口。这两者的测试方法略有不同,在测试前需要进行技术选型和确认接口类型。
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
了解一下HTTP与RPC
优点:就是简单、直接、开发方便,利用现成的http协议进行传输。
流程:
优点:提升系统可扩展性,传输效率更快,安全性更高。
流程:
HTTP接口测试
常见请求类型:post、get、put、delete等。
get型接口
场景:get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来。
特点:请求数据量小,参数暴露于url地址中,故存在安全隐患。
post型接口
特点:请求数据量大,安全性高
如豆瓣的发表评论的开放api,见下:
put型接口
如豆瓣的修改评论的开放api,见下:
delete型接口
如豆瓣的删除评论的开放api,见下:
RPC接口测试
Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。
流程:
测试环境搭建:
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);
}
}
接口测试用例设计
文章为作者独立观点,不代表股票交易接口观点