百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

接口测试01 接口测试方法及流程

lipiwang 2024-10-26 13:12 38 浏览 0 评论

介绍


什么是接口测试


基于HTTP协议,通过代码或者工具模拟请求,检查服务器返回的响应结果是否符合接口说明文档的描述


接口测试的分类


系统对外的接口测试:比如你要从别人的网站或者服务器获取资源或者信息,别人肯定不会把数据库共享给你。他只能写一个方法,提供一个接口,我们通过接口访问他写好的方法,最终达到数据共享的目的

系统内部的接口测试:前端显示的数据都是来自服务器,前端发送请求给服务器,服务器通过接口获取前端发送的请求,并返回响应数据


接口测试的意义


接口测试测的是服务端,检查服务器端是否做校验,保存服务器的安全性和稳定性

接口测试属于集成测试阶段,介入时间早,更早发现bug,bug修复成本低

接口测试的执行效率比较高

接口测试比UI自动化测试更稳定,更适合做回归测试,满足后端快速发版的需求,实现持续集成,缩短项目周期


如何做接口测试


找开发要接口说明文档

设计测试用例

通过代码或者工具模拟请求


接口测试开发环境搭建


JDK(1.8以上版本)、maven、IDEA


maven:找到maven安装路径,找到conf,找到settings.xml,在159行添加代码

?


<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>




打开IDEA,新建项目,点击左侧maven,点击从原型创建,选择quickstart,下一步?

?

??

?给项目取名??

?

??


选择对应版本?

?

??

?新建包名


点击pom.xml,下载代码库?

?

?

??


<dependency>
     <groupId>org.apache.httpcomponents</groupId>
     <artifactId>httpclient</artifactId>
     <version>4.5.13</version>
</dependency>

<dependency>
     <groupId>org.testng</groupId>
     <artifactId>testng</artifactId>
     <version>6.8.8</version>
     <scope>test</scope> 
</dependency>




代码实现


手工操作思路:打开浏览器→输入网址→敲回车→检查响应结果是否正确




代码思路:1.创建一个支持HTTP协议的客户端


可以理解为这是一种特殊的浏览器


2.构造网址


网址分为五部分:协议scheme、域名host、端口号port、路径path、参数parameter


3.创建请求


请求分为三部分:请求行、信息头、消息体


4.通过客户端把请求发送给服务器,最后从服务器获取响应结果


5.检查响应结果是否符合接口说明文档




代码实现


以微信公众平台测试账号为例(https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index)


登录账号,可以获得自己的appID和appsecret


下方有可以体验的接口权限表?

???

??



点击第一个获取access_token,查看接口说明文档,会有请求方式、参数说明以及返回码说明????

?

????

打开IDEA,创建accesstoken.java


1.创建HttpClient


CloseableHttpClient client = HttpClients.createDefault();



2.构造网址


URI uri = new URIBuilder()
  .setScheme("协议")
  .setHost("域名")
  .setPort(端口号)
  .setPath("路径")
  .setParameter("键","值")
  .setParameter("键","值")
  ....
  .build();


根据网址的五部分,带入到代码中


底部代码异常,点击添加异常到方法签名】



3.创建请求


HttpGet get = new HttpGet(uri);




4.通过client发送请求,获取响应结果


CloseableHttpResponse response = client.execute(get);



5.检查响应结果


状态行


response.getStatusLine();


信息头


response.getAllHeaders();


消息体


response.getEntity();





测试结果



代码整合


import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.Test;

public class AccessToken {
  @Test
  public void f() throws URISyntaxException, ClientProtocolException, IOException {
	  // 1.创建HttpClient
	  // 导包快捷键: ctrl + shift + o
	  CloseableHttpClient client = HttpClients.createDefault();
	  // 2.构建网址
	  // https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
	  URI uri = new URIBuilder()
			  .setScheme("https")
			  .setHost("api.weixin.qq.com")
			  .setPort(443)
			  .setPath("/cgi-bin/token")
			  .setParameter("grant_type","client_credential")
			  .setParameter("appid","       ")
			  .setParameter("secret","        ")
			  .build();
	  // 3.创建请求
	  HttpGet get = new HttpGet(uri);
	  // 4.执行请求,获取响应
	  CloseableHttpResponse response = client.execute(get);
	  // 5.检查响应结果是否正确
	  // 5.1 状态行  response.getStatusLine()
	  System.out.println(response.getStatusLine());
	  // 5.2信息头 response.getAllHeaders();
	  Header[] headers = response.getAllHeaders();
	  for (int i=0; i<headers.length; i++) {
		  System.out.println(headers[i]);
	  }
	  // 5.3消息体response.getEntity()
	  // {"access_token":"ACCESS_TOKEN","expires_in":7200}
	  // {"access_token":"            ","expires_in":7200}
	  String responseText = EntityUtils.toString(response.getEntity());
	  System.out.println(responseText);
  }
}

相关推荐

Nat. Synthesis: 重大突破,电化学形成C-S键

第一作者:JunnanLi,HasanAl-Mahayni通讯作者:AliSeifitokaldani,NikolayKornienko通讯单位:蒙特利尔大学,麦吉尔大学【研究亮点】形成C-...

网络安全与应用(二)(网络安全理论与应用)

1、应用层安全协议SHTTP和HTTPS:SHTTP:SecHTTP,安全超文本传输协议,是HTTP扩展,使用TCP的80端口。HTTPS:HTTP+SSL,使用TCP的443端口。大部分web应用...

TN-C、TN-S、TT、IT供电系统详解及对比

TN-C、TN-S、TT、IT供电系统是低压配电系统中常见的四种接地方式,它们各自有不同的特点和适用场景。一、系统介绍TN-C供电系统①定义:整个系统中,工作零线(N线)与保护零线(PE线)是合一的,...

网络应用服务器(三)(网络应用程序服务器)

#头条创作挑战赛#1、DNS协议:域名解析协议,用于把主机域名解析为对应的IP地址。是一个分布式数据库,C/S工作方式。主要基于UDP协议,少数使用TCP,端口号都是53。常用域名如下2、DNS协议...

腾讯发布混元Turbo S:业界首次无损应用Mamba架构

21世纪经济报道记者白杨北京报道2月27日,腾讯正式发布新一代基座模型——混元TurboS。据腾讯混元团队介绍,混元TurboS在架构方面创新性地采用了Hybrid-Mamba-Transfor...

【收藏】低压配电系统中TT IT TN-S/TN-C/TN-C-S 的区别?

低压配电系统的接地型式选择是电气安全设计的核心环节,TT、IT、TN-S、TN-C、TN-C-S这五种主要接地型式因其结构、保护原理和故障特性的显著差异,在工程应用中有不同的适用范围和限制条件。如若发...

金万维公有云平台如何实现C/S架构软件快速SaaS化

金万维作为国内领先的企业信息化垂直B2B平台运营商,拥有超过5000家管理软件合作伙伴,掌握管理软件一线的发展动态,因此深知传统管理软件近年来面对的困境和问题。而SaaS却在软件行业内发展迅猛势如燎原...

随时随地做翻译:B/S架构的传奇时代到来

随着新兴技术的发展和大数据时代的到来,翻译作为连接各国语言和文化的工具,更是具有前所未有的拓展空间。传统的在计算机辅助翻译软件(CAT)上进行翻译的模式,受到时间和空间的限制,导致翻译过程中面临层层障...

BS和CS 架构的介绍(一篇就够了)(cs和bs架构的含义)

简介C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQLServer。...

物管王(包租婆)软件架构与B/S和C/S架构的优点和缺点比较

一、B/S系统架构的优点和缺点优点:1)客户端无需安装,有Web浏览器即可。2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。3)BS架构无需升级多个客户端,升级服...

监听器入门看这篇就够了(怎么检查车上有没有被别人安装监听器)

什么是监听器监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。。为什么我们要使用监听器?...

购物车【JavaWeb项目、简单版】(java购物车的实现原理)

①构建开发环境免费学习资料获取方式导入需要用到的开发包建立程序开发包②设计实体书籍实体publicclassBook{privateStringid;privat...

基础篇-SpringBoot监听器Listener的使用

1.监听器Listener简介1.1监听器Listener介绍Listener是JavaWeb的三大组件(Servlet、Filter、Listener)之一,JavaWeb中的监听器主要用...

你在 Spring Boot3 整合 JWT 实现 RESTful 接口鉴权时是否遇到难题?

各位后端开发小伙伴们!在日常使用SpringBoot3搭建项目时,RESTful接口的鉴权至关重要。而JWT技术,作为一种简洁且高效的鉴权方式,被广泛应用。但大家是不是在整合过程中遇到过各...

javaWeb RSA加密使用(rsa加密java代码)

加密算法在各个网站运用很平常,今天整理代码的时候看到了我们项目中运用了RSA加密,就了解了一下。先简单说一下RSA加密算法原理,RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要...

取消回复欢迎 发表评论: