技术标签: python 自动化测试 软件测试 单元测试 API
目录
API(全称Application Programming Interface)是两个单独的软件系统之间的通信和数据交换。实现API的软件系统包含可以由另一个软件系统执行的功能/子例程。
API测试是一种用于验证API(应用程序编程接口)的软件测试类型。它与GUI测试非常不同,主要集中在软件体系结构的业务逻辑层。在API测试中,您无需使用标准的用户输入(键盘)和输出,而是使用软件将调用发送到API,获取输出并记下系统的响应。
API测试需要可以通过API进行交互的应用程序。为了测试API,您需要
使用测试工具调用API
编写自己的代码调用API
API测试的测试用例基于
基于输入条件的返回值:相对容易测试,因为可以定义输入并可以验证结果
不返回任何内容:没有返回值时,将检查系统上的API行为
触发其他一些API /事件/中断:如果API的输出触发了某些事件或中断,则应跟踪这些事件和中断侦听器
更新数据结构:更新数据结构将对系统产生某些结果或影响,应进行身份验证
修改某些资源:如果API调用修改了某些资源,则应通过访问相应资源来对其进行验证
以下几点可帮助用户进行API测试:
了解API程序的功能并明确定义程序范围
应用诸如等效类,边界值分析和错误猜测之类的测试技术,并为API编写测试用例
API的输入参数需要适当计划和定义
执行测试用例,并比较预期结果和实际结果。
API测试和单元测试之间的区别
单元测试 | API测试 |
---|---|
开发人员执行它 | 测试人员执行它 |
单独的功能经过测试 | 端到端功能经过测试 |
开发人员可以访问源代码 | 测试人员无法访问源代码 |
还涉及UI测试 | 仅测试API函数 |
仅测试基本功能 | 所有功能问题均经过测试 |
范围有限 | 范围更广 |
通常在办理登机手续前运行 | 创建完成后运行 |
API测试应至少涵盖除常规SDLC流程以外的以下测试方法:(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
发现测试:测试组应手动执行API中记录的一组调用,例如验证是否可以列出,创建和删除API公开的特定资源。
可用性测试:此测试可验证API是否功能正常且用户友好。API是否也可以与其他平台很好地集成
安全测试:此测试包括需要哪种身份验证以及是否通过HTTP加密敏感数据或同时通过这两种方法对敏感数据进行加密
自动化测试:API测试应以创建一组脚本或可用于定期执行API的工具为最终结果
文档:测试团队必须确保文档足够,并提供足够的信息来与API交互。文档应成为最终交付成果的一部分
测试用例应按测试类别分组
在每个测试的顶部,您应包括被调用的API的声明。
测试用例中应明确提及参数选择
确定API函数调用的优先级,以便测试人员轻松进行测试
每个测试用例应尽可能独立且独立于依赖项
在开发中避免“测试链”
处理诸如-Delete,CloseWindow等一次性调用函数时必须格外小心。
呼叫排序应执行且计划合理
为了确保完整的测试范围,请为API的所有可能的输入组合创建测试用例。
无法优雅地处理错误情况
未使用的标志
功能缺失或重复
可靠性问题。难以连接API并从API获得响应。
安全问题
多线程问题
性能问题。API响应时间非常高。
错误的错误/警告呼叫者
对有效参数值的错误处理
响应数据的结构不正确(JSON或XML)
由于API和单元测试都是目标源代码,因此可以使用工具/框架进行自动化。
jmeter
postwomen
Parasoft SOAtest
Runscope
Postman
Curl (1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
Eclipse SDK tool- Automated API testing
API测试的挑战包括:
Web API测试中的主要挑战是参数组合,参数选择和调用排序
没有可用于测试应用程序的 GUI ,这很难提供输入值
对测试人员而言,在不同系统中验证和验证输出几乎没有困难
测试人员必须知道参数的选择和分类
异常处理功能需要测试
测试人员必须具备编码知识
API由代表业务逻辑层的一组类/函数/过程组成。如果未正确测试API,则可能不仅会导致API应用程序出现问题,还会导致调用应用程序出现问题。它是软件工程中必不可少的测试。
俺叫小枫,一个成天想着一夜暴富的测试员
(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!
点赞关注不迷路!!!【三连ღ】,有问题也可私聊哟~(*╹▽╹*)
文章浏览阅读826次,点赞2次,收藏9次。SRC挖掘-拿下CNVD证书开源&闭源&售卖系统_ihsdus.cn
文章浏览阅读9.9k次,点赞4次,收藏44次。1.评论框及评论内容展示模板如下: div id="comment"> h3>strong>发表评论:strong>h3> p>span>标题:span> input type="text" name="" id="comm_title" class="text">p> p>span>内容:span>textarea rows="10"_在页面中输入你的评论,单击“评论”按钮,如果留言区没有评论,则直接添加评论,如果
文章浏览阅读1.2k次。一 什么是mitmproxy 抓包工具2 mitmproxy抓包工具介绍pip install mitmproxy检测是否安装成功mitmproxy --version默认监听 8080端口,使用 -p 指定端口3 下载证书linux 中操作mitmproxytab 切换显..._mitm框架
文章浏览阅读1.7k次。一般情况使用c:out和el表达式的效果是一样的,如: hello(使用标签):hello(使用el表达式):${hello}那一般什么时候会使用c:out标签呢?有两种情况: (1)使用缺省值。有的时候某个东西没设值,但要输出缺省值,如果用el表达式什么都不输出,但可以使用c:out输出想要输出的缺省值;如下: hello(default="123"):这样就输出了想要输出的_jstl c:out输出有小数点
文章浏览阅读261次。问题项目中数据库表对应实体类中包含Date类型的数据,保存Date类型数据时,传入的参数是new Date()(获取当前时间),但是在保存操作成功以后,在数据库中查看发现实际保存的时间比当前时间快解决最后发现是连接数据库的url中的时区参数是serverTimezone=UTC,把时区改成serverTimezone=GMT%2b8,问题解决..._jpa mysql 时间大小比较
文章浏览阅读103次。为什么80%的码农都做不了架构师?>>> ..._hotspot lir
文章浏览阅读172次。现在很多一键化的root工具,但是仍然有不少的三星手机是无法用全自动方式进行root的,这时候,我们可以选择使用手工的方式进行root,本文章对手工root的一些方法进行一些介绍。 常规方法:..._三星手机用面具root
文章浏览阅读1.7k次。原标题:2021年高三佛山一模,看佛山高中排名2021年1月11日佛山进行了新高考改革后第一次佛山一模考试,作为高考风向标,各高中的成绩具有很大参考意义。结合2018年中考录取分数、2021年佛山一模、2020年佛山一模对佛山56所高中进行简要分析,从而展望2021年高考。 1-10名石门中学稳居第一,佛山一中重夺第二,南海中学增长强劲,顺德一中略显颓势,李兆基中学增长强劲,郑裕彤中学加工能..._佛山国华纪念中学2021年高考成绩
文章浏览阅读1k次。---------查询公司pkselect pk_corp from bd_corp where unitcode='公司编码' 进行删除应收应付模块启用功能 删除2008与2006的行即可(删除行前,要删除期初录入的数据。) select * from sm_createcorp where pk_corp='1025' for update 解锁,删除行,点对勾,然后提前端f10_应付管理系统怎么清除数据
文章浏览阅读669次,点赞13次,收藏8次。嵌入式固件加密的几种方式_固件加密
文章浏览阅读1.2k次。1.Manifest文件中申请读写外部的权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>2.高版本的需要动态申请权限int checkReadExternalPermission = checkSelfPermission(_不root 通讯录 存放目录
文章浏览阅读502次。)创建成功之后在表中添加信息:项目创建完毕的初始目录:初始pom.xml文件:4.创建核心配置文件(mybatis-condig.xml)4.1 准备数据库配置文件(db.properties)4.2 配置mybatis-condig.xml5.建包这里需要注意:在resources资源包下创建的是directory,创建方式为:实体类的属性要和数据库里面表的字段相对应,数据类型采用包装类。7.创建Xxxmapper接口(mapper)接口中定义对数据库进行操作的方法:8_使用mybatis的开发步骤