• 13
  • 13
分享
  • 什么是接口测试?为什么要做接口测试?——软件测试圈
  • 北极 2021-08-11 09:56:26 字数 2395 阅读 1089 收藏 13

1.什么是接口测试?为什么要做接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易),需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

2.后端接口测试测什么?

从下面这张图可以看出后端接口测试主要测了些什么:

1.png

3.怎么做接口测试?

一般情况下,由于我们项目前后调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送和接收。所以我们下面整理了一下使用Jmeter工具进行http接口测试。

3.1开发接口测试案例的整体方案

第一步:分析出测试需求,并拿到开发提供的接口说明文档;

第二步:从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;

第三步:和开发一起对接口测试案例进行评审;

第四步:结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件;

第五步:结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。

3.2接口自动化适用场景

目前设计的自动化接口测试案例有两个运行场景:

(1)测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)

(2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

3.3接口测试环境准备

Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Jmeter,下载地址:http://jmeter.apache.org/download_jmeter.cgi

插件的下载安装地址:http://www.jmeter-plugins.org/

3.4创建工程

1.打开Jmeter:下载好Jmeter后,双击bin目录下的jmeter.bat文件:

2.jpg

2.添加线程组:在“测试计划”上点击鼠标右键-->添加-->threads(Users)-->线程组,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”。

3.png

3.添加“HTTPCookie管理器”:

4.png

4.添加“Http请求默认值”组件,当被测系统有唯一的访问域名和端口时,这个组件很好用:

5.png

5.在“HTTP请求默认值”组件配置页面,填写被测系统的域名和端口,http请求的实现包版本以及具体协议类型,线程组里的所有“HTTPSampler”可默认使用此设置。

6.jpg

6.在“线程组”里添加“HTTP请求”的Sampler

7.png

7.在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表:

8.jpg

8.设置检查点:在被测接口对应的“HTTP请求”上,添加“响应断言”:

9.png

9.在设置页面上添加对相应结果的正则表达式存在性判断即可:

10.jpg

10.添加监听器:方便查看运行后的结果

11.png

运行结果:

12.jpg

上述步骤完成了一个简单测试案例的创建,复杂测试案例均在此基础上扩展完成。使用Jmeter工具开发的接口测试案例,一个子系统建议放在同一个“测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。比较独立的接口,可以统一放在一个线程组内,顺序完成测试。

流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。

4.接口测试持续集成

对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

  1. 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化;

  2. 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等;

  3. 问题定位:报错信息、日志更精准,方便问题复现与定位;

  4. 结果校验:加强自动化校验能力,如数据库信息校验;

  5. 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率;

  6. 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

5.接口测试质量评估标准

  1. 业务功能覆盖是否完整;

  2. 业务规则覆盖是否完整;

  3. 参数验证是否达到要求(边界、业务规则);

  4. 接口异常场景覆盖是否完整;

  5. 接口覆盖率是否达到要求;

  6. 代码覆盖率是否达到要求;

  7. 性能指标是否满足要求;

  8. 安全指标是否满足要求。


作者:Zoraliu

原文链接:https://www.cnblogs.com/zoraliu66/p/6743126.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 2023.3最新版,据悉是对JDK 21的虚拟线程支持更好的,为了体验更加丝滑就升级了。结果一下子就悲催了。看到了下面的报错。```JavaExecuting pre-compile tasks…Running 'before' tasksChecking sourcesBuilder "Groovy stub generator" requested rebuild of module chunk "groovy-reproducer"Groovyc: While compiling [groovy-reproducer]: java....
            0 0 1611
            分享
          • 一、新建目录文件夹二、新建请求(api接口)三、添加请求方法、url、及参数1、选择请求方法为post2、选择传递的参数格式,并填写参数四种常见的POST提交数据方式详解:1、form-data:就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的...
            0 0 1966
            分享
          •   先上我的结论:  只会简单的测试,没前途。  会中级的测试技能,短期内不愁,但长期不好说。  掌握开发技能,将会提升你在行业中的竞争力。  ★为什么测试也要懂开发?  一、懂开发,增强职场的抗风险能力。  臻叔希望大家明白一个道理:不懂开发的测试可替代性强,甚至开发都可以在一定程度上做简单的测试。  举个例子:  百词斩app,考过英语四六级的应该都知道,也算是小而美的一家有知名度的企业。但这种量级的公司,居然没有测试,基本上都靠开发自测bug。  大公司RD(开发)和QA(测试)的人员比大概是3:1,也就是3个开发(2个前端、1个后端)配1个测试。但我估计非一线城市+小公司的前提下,这个...
            0 0 1044
            分享
          • 新浪科技讯 北京时间11月30日早间消息,据报道,Twitter表示,从11月23日起,该公司在最近的网站更新中已经不再推行与新冠肺炎不实信息相关的政策。这意味着Twitter将不再优先删除或标记与新冠肺炎有关的误导性信息。Twitter于2020年12月宣布,该公司将开始标记和删除与新冠肺炎疫苗有关的不实信息,原因是有成千上万的帐号发布与新冠病毒和疫苗接种的副作用有关的虚假信息。Twitter CEO埃隆·马斯克(Elon Musk)一直对美国卫生官员应对新冠疫情的方式颇有微词。他于2020年在播客 “The Joe Rogan Experience”上表示,美国新冠肺炎的死亡率远低于卫生官...
            0 0 927
            分享
          • 一、分层的自动化测试1、传统自动化测试基于产品 UI 层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行的一种自动化测试。在目前的大多数研发组织当中,都存在开发与测试团队割裂(部门墙)、质量职责错配(测试主要对质量负责)的问题,在这种状态下,测试团队的一个“正常”反应就是试图在测试团队能够掌控的黑盒测试环节进行尽可能全面的覆盖,甚至是尽可能全面的 UI 自动化测试。这导致,一方面测试团队规模急剧膨胀;另一方面,因为 UI 是非常易变的,所以 UI 自动化测试维护成本相对较高。2、测试金字塔由敏捷大师 Mike Cohn 在他的 Succeeding with Agile 一书中首次提出。...
            12 12 2539
            分享
      • 51testing软件测试圈微信