目录
一、接口测试
1.1 什么是接口?
在计算机科学和软件开发中,接口是指不同软件组件之间进行通信互动的一种规范或约定。接口定义了组件之间的通信方式、数据格式、函数调用方式、信息传递机制等。
1.2 软件为什么需要接口?
接口提供了标准的交互方式,使得软件可以独立开发、复用、松耦合,并与其他系统进行互相操作。提高了软件的灵活性、安全性和可维护性。
"松耦合"是软件开发中的一个概念,指的是不同模块或组件之间的关联程度低,彼此之间相对独立并且变化不会对其他模块产生过多的影响。
1.3 为什么需要做接口测试?
接口测试是确保接口功能、数据一致性、集成兼容性、异常处理、性能、安全性、授权验证等方面的关键活动。通过接口测试以提高系统的质量、稳定性和可靠性。
鉴权码:也称为授权码或认证码,是用于验证用户身份或授权访问的一种安全令牌。鉴权码通常是一个加密的字符串或数字,它由系统生成并与用户的身份或权限相关联。例如:会话令牌(Session Token)、API密钥(API Key)、访问令牌(Access Token)、JSON Web令牌(JSON Web Token)。
接口测试在某些情况下可以使用Mock进行辅助,但并不是必须的,具体取决于测试的需求和场景。
Mock:"mock"(模拟)是一种在软件开发和测试中使用的技术,用于创建虚拟对象或模拟实现,以模拟真实组件的行为。它提供了独立性、控制性和效率,有助于有效测试和验证软件的功能和行为。
例如:系统中前后端分离开发,前后端开发进度不一样,需要把一开始开发出来的接口进行测试。当前端开发完成,后端尚未完成时,前端可以使用Mock服务来模拟后端接口的行为,以便进行独立的前端接口测试。
1.4 接口返回数据
接口返回的数据格式可以有多种形式,常见的数据格式包括以下几种:
- JSON:JSON是一种轻量级的数据交换格式,易于阅读和编写。它使用键值对的形式表示数据,并支持嵌套结构。JSON在Web开发中被广泛使用,可以通过JavaScript进行解析和处理。
- XML:XML是一种标记语言,用于描述和传输数据。它使用标签来定义数据的结构和内容。XML具有良好的可扩展性和跨平台性,在许多领域和技术中被广泛应用。
- HTML:是一种用于创建网页的标记语言,它通过标签和属性描述网页的结构和内容。(在某些情况下,接口可能返回HTML格式的数据,例如网页内容、错误页面、富文本编辑器的输出等。这种情况下,接收到的数据可以包含HTML标签、样式和文本内容,用于在浏览器或其他支持HTML解析的应用程序中进行渲染和显示。)
1.4.1 JSON格式举例
假设有一个电影信息的接口,当向该接口发送请求时,它会返回一个包含电影相关信息的JSON格式数据。
接口返回的JSON数据:
{
"title": "钢铁侠",
"year": 2008,
"director": "钢铁侠",
"genres": ["动作", "科幻", "冒险"],
"rating": 8.0
}
1.4.2 HTML格式举例
假设有一个博客网站,其中有一个接口用于获取特定文章的内容。当向该接口发送请求时,它会返回包含文章内容的HTML格式数据。
接口返回的HTML数据:
<!DOCTYPE html>
<html>
<head>
<title>文章标题</title>
</head>
<body>
<h1>文章标题</h1>
<p>这是一篇关于某个主题的文章。</p>
<p>作者:JHY97</p>
<div class="article-content">
<!-- 文章的内容 -->
<p>...</p>
<p>...</p>
</div>
</body>
</html>
1.4.3 XML格式举例
假设有一个天气信息的接口,当向该接口发送请求时,它会返回一个包含天气预报的XML格式数据。
接口返回的XML数据:
<weather>
<location>London</location>
<date>2023-06-25</date>
<temperature>25°C</temperature>
<description>Sunny</description>
<humidity>60%</humidity>
</weather>
1.5 接口测试协议
1.5.1 HTTP协议
HTTP是一种基于客户端-服务器模型的协议,用于在Web上传输数据。它使用请求-响应的方式进行通信,支持各种HTTP方法(GET、POST、PUT、DELETE等)和状态码。
- 请求部分包含:请求地址,请求方式。
- 请求方式:get、post、put、delete。
- 请求中会有各种请求头信息,比如支持的数据类型,请求的来源位置,以及Cookie头等相关头信息。
- 响应主要包含响应状态码
- 1XX(信息性状态码)—— 接受的请求正在处理。
- 2XX(成功状态码)—— 请求正常处理完毕。
- 3XX(重定向状态码)—— 需要进行附加操作已完成请求。
- 4XX(客户端错误状态码)—— 服务器无法处理请求。
- 5XX(服务器错误状态码)—— 服务器处理请求出错。
- 响应还有各种响应头信息,比如设置缓存的响应头,Content-Type内容类型,设置cookie头信息(set-cookie)。
接口地址表现形式:http://example.com/api/users
1.5.2 HTTPS协议
HTTPS是基于HTTP的安全协议,通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)来加密通信。HTTPS提供了加密和身份验证机制,用于保护数据传输的安全性。
接口地址表现形式:https://example.com/api/users
1.5.3 Dubbo协议
Dubbo是阿里巴巴开源的一款高性能的分布式服务框架,旨在解决分布式系统中服务调用和治理的问题。Dubbo协议是Dubbo框架的核心组件之一,它定义了服务之间的通信协议和规范。
Dubbo协议适合在大并发情况下传输少量数据。
Dubbo协议通常使用Zookeeper或其他注册中心进行服务注册和发现,接口地址的表现形式会根据Dubbo的配置和约定而有所不同。
Dubbo协议接口地址的一般表现形式:
- Zookeeper注册中心地址 —— 示例:zookeeper://example.com:2181
- 服务接口名(Interface)—— 示例:com.example.service.UserService
- Dubbo服务提供者地址 —— 示例:dubbo://example.com:20880/com.example.service.UserService
1.5.4 WebService协议、SOAP
WebService协议通常使用SOAP作为消息格式和通信协议。在WebService中,接口地址的表现形式通常是一个统一资源标识符(URI)或一个URL,用于标识和定位WebService的访问点。
SOAP是一种基于XML的通信协议,用于在网络上进行结构化的数据交换。它使用XML格式定义请求和响应的消息结构,支持可扩展性和复杂的消息传递。
WebService协议接口地址的一些常见表现形式:
- SOAP —— 示例:https://example.com/soap-endpoint
- WSDL(Web Services Description Language)地址 —— 示例:https://example.com/service.wsdl
- UDDI地址 —— 示例:https://example.com/uddi/service
1.6 企业接口测试的流程和方案
1. 拿到api接口文档,熟悉接口业务,接口地址,鉴权,入参,出参,错误码。
2. 接口计划和方案。
思路:
正例:输入正常参数,查看接口是否返回成功。
反例:
- 鉴权返利:鉴权为空,鉴权码错误,鉴权码过期等。
- 参数反例:参数为空,参数类型异常,参数长度异常等。
- 错误码覆盖
- 其他场景:分页异常
3. 编写测试用例和评审。
4. 执行接口测试。
5. 输出接口测试报告。