什么是API
在进行Api测试之前,让我们先了解一下什么是API?
API是应用程序编程接口(Application Programming Interface)的首字母缩写。
它支持两个独立软件系统之间的通信和数据交换。实现API的软件系统包含可以由其他软件系统执行的功能/子程序。
什么是API测试?
API测试与GUI测试完全不同,主要集中在软件架构的业务逻辑层。这种测试不太关注应用程序的外观和感觉。
在API测试中,您不必使用标准用户输入(键盘)和输出,而是使用软件将调用发送到API,获取输出并记下系统的响应。
在API测试中测试需要应用程序与API进行交互。为了测试API,你需要
- 使用测试工具来驱动API
- 编写你自己的代码来测试API
设置API测试环境
- API测试与其他测试类型不同,因为GUI不可用,但您需要设置初始环境,以调用具有所需参数集的API,然后最终检查测试结果。
- 因此,为API测试设置测试环境似乎有点复杂。
- 数据库和服务器应按照应用程序要求进行配置。
- 安装完成后,应调用API函数来检查该API是否正常工作。
API的输出类型
API的输出可能是
- 任何类型的数据
例如:有一个API函数应该为两个整数求和:
Long add(int a,int b)
数字必须作为输入参数给出。输出应该是两个整数的总和。这个输出需要用预期的结果进行验证。
调用比如
add (1234, 5656)
如果超过整数限制,则必须处理例外情况。
- 状态(例如Pass或Fail)
考虑下面的API函数:
Lock()
Unlock()
Delete()
它们返回任何值,如True(成功的情况下)或False(如果有错误)作为输出。
更精确的测试用例可以调用任何脚本中的函数,并在数据库或应用程序GUI中中检查更改。
- 调用另一个API函数。
例如 - 第一个API函数可用于删除表中的指定记录,而此函数又调用另一个函数来刷新数据库。
API测试的测试用例:
- 基于输入条件的返回值:测试相对容易,因为可以定义输入并且可以验证结果
- 不返回任何内容:当没有返回值时,检查系统上API的行为
- 触发其他API/事件/中断:如果API的输出触发某个事件或中断,则应跟踪这些事件和中断侦听器
- 更新数据结构:更新数据结构会对系统产生一些结果或影响,并且应该进行认证
- 修改某些资源:如果API调用修改了一些资源,则应通过访问各自的资源来验证它
API测试方法:
- 了解API程序的功能并明确定义程序的范围
- 用等效类,边界值分析和错误猜测等测试技术,并为API编写测试用例
- API的输入参数需要进行适当的规划和定义
- 执行测试用例并比较预期结果和实际结果。
API测试和单元测试的区别
单元测试 | API测试 |
---|---|
多为开发人员执行 | 多为测试人员执行 |
独的功能 | 端到端功能 |
以访问源代码 | 经常无法访问源代码 |
涉及到UI测试 | 只有API |
通常只有基本功能 | 通常涉及所有功能 |
范围有限 | 范围更广 |
通常在check-in前运行 | builid完成后运行 |
在API测试中测试什么
除了通常的SDLC(Software Development Life Cycle 软件生命周期)过程外,API测试应覆盖至少以下测试方法
- 发现测试:测试组应手动执行API中记录的一组调用,例如验证是否可以产看,创建和删除由API公开的特定资源
- 可用性测试:验证API是否可用和用户友好。 API是否与另一个平台完美集成
- 安全测试:此测试包括需要哪种类型的身份验证以及敏感数据是通过HTTP进行加密还是两者兼而有之
- 自动化测试:API测试应最终创建一组脚本或可用于定期执行API的工具
- 文档:测试团队必须确保文档足够,并提供足够的信息与API进行交互。文档应该是最终可交付成果的一部分
API测试的最佳实践:
- 测试用例应按测试类别进行分组
- 在每个测试的最上面,你应该包括被调用的API的声明。
- 参数选择应该在测试用例本身中明确提及
- 优先考虑API函数调用,以便测试人员能够轻松测试
- 每个测试用例应该尽可能独立
- 避免在开发过程中使用“测试链”
- 处理一次调用函数时必须特别小心,如 - Delete,CloseWindow等等。
- 调用队列
- 为确保完整的测试覆盖率,请为API的所有可能输入组合创建测试用例。
测试检测到的错误类型
- 无法正常处理错误条件。比如分母为0、文件不存在、忘记导入库等。
- 未使用的标志
- 缺少或重复的功能
- 可靠性问题。连接并获取API响应时遇到困难。
- 安全问题
- 多线程问题
- 性能问题。 API响应时间非常高。
- 不正确的错误/警告给调用者
- 错误的有效参数值处理
- 响应数据结构不正确(JSON或XML)
API测试工具
由于API和单元测试都针对源代码,因此可以使用类似的工具进行测试。
- SOAPUI - 这是一个易于使用的工具,具有广泛的REST和SOAP API测试功能 - 无需脚本经验。
- Runscope
- Postman
- Curl
- httpie
- cfix
- Check
- CTESK
- dotTEST
- Eclipse SDK工具 - 自动API测试
- 更多测试工具
- Top 20 API Testing Tools In 2018: REST & SOAP
技术支持qq群:测试开发自动化测试 144081101 Python自动化测试初学者 567351477
API测试的挑战
- API测试中的主要挑战是参数组合,参数选择和调用排序
- 没有GUI可用于测试难以给出输入值的应用程序
- 验证和验证不同系统中的输出对于测试人员来说很难
- 测试人员需要了解参数选择和分类
- 异常处理功能需要测试
- 编码知识对于测试人员是必要的
结论:
API由代表业务逻辑层的一组类/功能/程序组成。如果没有正确测试API,则不仅会导致API应用程序出现问题,而且还会导致在调用应用程序中出现问题。