API接口测试用例设计

1、接口测试概念

     接口测试:测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点

 

2、接口测试方法

    a、可以通过写脚本代码进行测试

    b、可以通过UI界面进行测试

 

3、接口测试范围

     接口范围包括:

          一、被测项目中同层之间的接口(如DAO层、Service层),一个接口调用了其他的接口

          二、外部系统与系统之间的交互点(如一个App调用了第三方支付宝的API)

          三、各个子系统之间的交互点(如App客户端调用了服务端的Http接口)

 

    被测接口范围:

    接口很多,依据公司的测试资源,项目特点来进行对部分接口/全部接口进行筛选被测API。在一般的中小型公司里,第1类的接口是由相应的开发同学去做。测试同学主要是测试第2种以及第3种。

 

   接口测试的重点测试范围:

   着重测试主要业务,业务复杂的接口

 

4、如何设计API测试用例

      接口测试出发点是被测程序是错误的,以这个为出发点,更容易发现问题。设计API测试用例最简单的就是按照2个基本要素进行划分,即参数(如业务中要求参数不能为null/空字符串,设计 用例为:当给相应的参数传null值/空字符串时,系统是否正确的处理了)与业务(如给API的各形参传入满足业务的实数后,系统是否做出了正确的处理)。

 

    接口测试用例有3类(逻辑测试,出错测试,路径测试):

       1)逻辑测试:主要是根据开发写的JavaDoc来编写测试用例,JavaDoc包含的要素(前提条件,输入参数,业务逻辑,输出值的描述)此类主要是测试在正常输入的情况下,是否能得出正确的结果。此类的测试用例和黑盒差不多,主要用的是等价类划分,边界值等。

 

       2)出错测试:接口逻辑的测试中主要测试的是正常逻辑,即对外提供的接口服务是能够工作的,但是这些测试不能保证数据的安全,以及程序在异常情况下的逻辑的正确性

             (a) 空值输入:如当传一个对象参数(形参类型为Object类型)时,需要值null值测试

             (b) 参数属性测试:如输入一个未赋值的参数(即参形参传的值也为变量,但此变量没有被赋值)

             (c) 异常测试:制造一些异常的测试场景,测试的异常描述是否清晰(如测试“按名称搜索”API,传的                   名称是系统中不存在的值,则返回回来的描述信息是否正确)

             (d) 对参数个数,参数类型时的出错测试(如在测试App的Http接口时,传的值个数不足时,返回的                     结果是否正确)

 

     3)路径测试:当被测API的实现方法中,有很多的判断,且判断中又调用了其他的接口,此时必须要进行路径测试。

5、接口自动化测试工具

       1)可直接使用Junit3/Junit4框架,这个框架一般是开发同学用于单元测试的

       2)可使用TestNG,且TestNG的功能强于Junit4,这个受到了广大测试同学的热爱

       3)  可使用Jmeter,Jmeter提供了一套相应的API供测试同学调用,且Jmeter有UI界面,对于不太懂开发语言的同学,可以使用JMeter进行录制。不过通过录制得来的脚本会或多或少产生一些对于我们没有用的数据。所以我建议写纯脚本

### 如何编写API接口测试 编写API接口测试是一项系统化的工作,它不仅涉及技术细节,还需要遵循一定的方法论以确保覆盖全面性和准确性。以下是关于如何编写API接口测试的具体说明: #### 1. 明确测试目标 在编写API接口测试之前,需明确测试的目标以及期望达到的效果。这包括但不限于验证功能的正确性、性能指标是否达标以及安全性等方面的内容[^1]。 #### 2. 设计测试用例结构 一份完整的API接口测试应包含以下几个核心要素[^2]: - **编号**: 唯一标识每一个测试用例。 - **用名称(标题)**: 描述该用的主要目的或场景。 - **模块**: 所属的功能模块或者子系统部分。 - **优先级**: 定义此条目相对于其他项的重要性等级。 - **预置条件**: 运行当前测试前需要满足的前提环境设置或其他依赖事项。 - **测试数据**: 输入的数据集及其形式描述。 - **操作步骤**: 实施具体动作的过程记录。 - **预期结果**: 对于给定输入应该产生的理想输出定义。 #### 3. 考虑多维度校验逻辑 为了保证API行为的一致性和稳定性,在设计时应当考虑从多个角度去评估其表现,主要包括三个方面[^3]: - 协议状态码:确认HTTP响应的状态码是否符合标准规定。 - 业务状态码:检查返回值中的自定义错误代码是否存在异常情况。 - 响应数据:核对实际接收到的信息内容与理论模型之间是否有偏差现象发生。 #### 4. 结合实分析最佳实践 下面通过一个具体的子展示如何构建针对某个特定需求(如用户登录)的有效方案[^4]: 假设我们需要对接口`/api/login`进行功能性检测,则可以按照如下方式组织相应的测试脚本: ```python import requests def test_login(): # 请求URL url = "https://example.com/api/login" # 请求参数 payload = { "username": "testuser", "password": "testpassword" } try: # 发送POST请求并接收服务器反馈 response = requests.post(url, json=payload) # 断言协议层面上的成功与否 assert response.status_code == 200 # 将JSON格式的结果转换成字典对象以便进一步处理 result = response.json() # 验证业务层面的操作成果 assert 'success' in result and result['success'] is True except AssertionError as e: print(f"Test Failed: {str(e)}") else: print("Login Test Passed!") if __name__ == "__main__": test_login() ``` 上述代码片段展示了如何利用Python编程语言配合requests库实现自动化单元级别的回归检验流程;同时体现了良好的编码习惯——即合理运用try-except语句捕获潜在风险点,并借助assert关键字完成关键属性匹配判断工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值