api功能测试怎样做才能快捷高效?来,试试我的方法~

程序员二黑 程序员二黑     2022-12-04     725

关键词:

哈喽,我是二黑,这里赠送一份软件测试资料.

  • 1、软件测试学习路线
  • 2、软件测试视频资料
  • 3、软件测试相关文档
  • 4、软件测试相关工具、安装包
  • 5、高级测试工程师简历模板
  • 6、面试题、模拟面试、PDF文档

有需要的小伙伴们可以关注我的公众号:程序员二黑,免费领取


PI,即:应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。

程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

换句话说,API也可以看做程序/资源/组件的集成点。它的功能会跟UI有些类似,通过某些特定指令、参数等可以让后台的一堆代码运行起来,最后得到想要的结果。不同的是它不提供可视的按钮文本框之类的界面,而通常是由一个直接和底层代码打交道的链接构成。

什么是API功能测试?

API测试是针对系统所提供的API做各方面的验证。API的性能和安全测试根据测试策略的不同,会是一个可选测试项。这个可以作为两个单独的问题来讨论。

API的功能测试类似于UI功能测试,都是在已知输入内容和期望结果的前提下,使用这个功能/调用这个API并且验证是否能返回期望的结果。不同的是API测试在返回结果被呈现给客户前就完成了,从而对测试环境的依赖会比较小。

为什么要做API功能测试——测试金字塔

还记得曾经在课堂上学过的测试金字塔吗?

简单来讲就是说越往上层走的测试,需要投入的成本会越高,而且会越难以维护。在这个结构下,因为UT已经覆盖了绝大部分的代码,所以其上层的集成/API测试和UI测试可以去除重复测试的部分,从而量也会越来越少,并且会有不错的覆盖率。

所以理想中的自动化测试结构应该是:大量的UT+适量的集成测试(或者API测试)+少量的UI测试。

构建API测试的价值

☞ 测试覆盖率。UT关注点是各个单元是否能够完成期望工作,只覆盖一个单元内部工作情况;集成/API测试关注点是各个模块/单元之间协同工作,它所覆盖的场景也会比单元测试更多。而UI测试会更加关注e2e,模拟用户行为,在所有的程序依赖环境准备完成后再进行操作。相比之下API测试不依赖环境,测试成本会比UI测试更低,而且覆盖率比UT更高。

☞ 快速反馈。API测试速度比UI测试更快(因为无需界面加载/响应),短时间内能跑很多用例。API测试也能精确的揭露是软件中哪个组件除了问题,如果把你的API测试放到CI里面,一旦代码修改破坏了现有的功能,就能够快速反馈到团队中。还可以把测试中发现的BUG也写到API测试里面,让测试成为一堵墙,从而能更好的能保证产品质量。

☞ 可复用。API测试由于不需要浏览器、GUI等环境,所以可以更加灵活的在各个环境中复用。例如你可以在产品环境中、测试环境、研发环境中使用,你需要做的只是修改下测试数据而已。另外如果是在TDD模式下工作的话,API测试可能会在产品完成前就写完了,后续的工作也会减少很多。

怎么做API功能测试?

API功能测试的主要手段是使用工具/软件调用待测API,然后验证是否返回期望的output。这个output通常可能是:

♡ 返回成功或者失败的status

♡ 是一段数据或者information

♡ 或者是跳转到其他API

工具

市面上常见的API测试工具我知道的可以分成几大类:

开源纯代码类,比如基于nodeJS的supertest;基于Java的rest-assured等。这类工具易于学习,易于和CI集成,但是需要使用者有一定的编码能力。商用工具,比如:SoapUI,功能强大操作简单,还提供免费社区办可以试用。各类插件工具,比如Chrome插件Postman,也有收费版可以用。工具的选择见仁见智,根据不同的环境选择不同的工具。

测试

在正式开始测试之前,你得先搞清楚几个问题:

待测API的目的是什么?谁是使用者?

待测API会在什么环境下使用?

待测API在异常环境下会不会有非期望响应?

这个测试需要测什么功能点?

各个功能点的测试优先级?

如何定义期望返回的结果是成功还是失败?

待测API会不会和其他系统有交互(修改代码后影响其他系统)?

这些问题会影响到你的测试结果是否符合客户需求,或者说这些潜在的风险会影响到这个项目是否成功。如果你选的是必须得自己写点儿代码的工具,那么接下来得根据选择的工具和项目代码,去setup测试环境,让工具能够成功跑起来。

设计测试框架

接着是设计你的测试框架,最好是要满足可复用性强,高内聚低内聚什么的原则,记得要有输出测试报告的模块。

用例

上面你已经想好了需要测哪些功能点,针对这些点我们用脑图之类的工具把需要测试的场景记录下来。

脚本

接着是脚本设计和测试数据设计。脚本和数据最好可以分开,这样的话可以复用测试脚本,用不同的测试数据输入去获取不同的期望结果。

验证

验证的过程大致包含下面这些:

检查API是不是根据你输入的数据返回期望的结果;验证API是不是不返回结果或者返回异常结果;验证API是不是正确触发其他even;收否正确调了其他API;或验证API是不是正确更新了数据等等。

完了就是输出测试报告了,好的测试报告可以帮助你轻松定位到出错的地方,使修复流程更加顺畅。

最后,强烈推荐把测试集成到CI中去,加速异常反馈,创建强有力的质量体系。

倾情推荐

1、SoapUI NG Pro:

SoapUI NG Pro拥有许多其他web服务测试工具所不具备的高级技术和功能。对于REST、SOAP以及其他流行的API和物联网协议,SoapUI NG Pro提供了业界最全面的功能测试功能。

2、UFT:

它是针对网络、移动、API和应用程序的自动化测试软件。它有着直观、可视化的用户界面。可以在同一集成开发环境中进行手动测试、自动化软件测试和以框架为基础的测试。帮助您降低开发测试成本、时间,显著提高软件质量。

3、Parasoft SOA Test:

它和集成包 Parasoft Load Test简化了商业系统中至关重要的API、云服务和SOA/复合程序的复杂测试。Parasoft SOAtest帮助开发团队提供一个直观的界面确保应用程序的安全、可靠和兼容。为简化分布式应用程序复杂性,执行端对端的测试场景。

资料分享

下面是我收集的一份2021年软件测试资料包


包括:软件测试学习路线 ,软件测试视频资料 ,软件测试相关文档 ,软件测试相关工具、安装包 ,高级测试工程师简历模板 、面试题、模拟面试、PDF文档 ,思维导图等等…希望能帮助到大家。

关注我的微信公众号:程序员二黑,就可以免费领取上面这份资料包啦!

如果你真的想做一件事情,那么就算障碍重重,你也会想尽一切办法去办到它。但若是你不是真心的想要去完成一件事情,那么纵使前方道路平坦,你也会想尽一切理由阻止自己向前。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+

从工地实习月薪3K到一线企业年薪30W,我追上了那个曾经被赋予厚望的自己

微信的公众平台api怎样才能接入成功?

我已经把api文件放在了网站中,并在微信平台设置里提交了正确的路径,api的token和平台的是一致的。还要做些什么别的改动才能使用户收到消息呢?1、进入微信公众平台后台,进入开发者中心2、同意成为开发者3、获得开发者a... 查看详情

我怎样才能使我的菜单栏居中?

】我怎样才能使我的菜单栏居中?【英文标题】:howcanIcentermymenubar?【发布时间】:2013-05-2716:25:00【问题描述】:我需要将菜单栏居中。我已经尝试了我想的一切。这里是菜单栏的源文件;http://insicdesigns.com/downloads/fancy-menu.zip我... 查看详情

怎样才能高效地使用jquery

1.使用最新版本的jQueryjQuery的版本更新很快,你应该总是使用最新的版本。因为新版本会改进性能,还有很多新功能。下面就来看看,不同版本的jQuery性能差异有多大。这里是三条最常见的jQuery选择语句:123$(‘.elem‘)$(‘.elem‘,... 查看详情

我怎样才能通过在请求中传递特定参数来获取它们? SpringBoot API

】我怎样才能通过在请求中传递特定参数来获取它们?SpringBootAPI【英文标题】:HowcouldIgetspecificparametersjustbypassingthemintherequest?SpringBootAPI【发布时间】:2021-12-2415:20:29【问题描述】:我正在努力寻找解决方案...我想知道如何获取... 查看详情

我怎样才能“休眠”一个 Dart 程序

】我怎样才能“休眠”一个Dart程序【英文标题】:HowcanI"sleep"aDartprogram【发布时间】:2013-08-2906:43:42【问题描述】:我喜欢在我的Dart应用程序中模拟一个异步Web服务调用来进行测试。为了模拟这些模拟调用响应的随机性... 查看详情

什么是接口测试?怎样做接口测试?

...质是什么?4.什么是接口测试?5.问什么要做接口测试?6.怎样做接口测试?7.接口测测试点是什么?8.接口测试都要掌握哪些知识?9.其他相关知识?1.什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间... 查看详情

我怎样才能制作一个不和谐的机器人来做这样的事情?

】我怎样才能制作一个不和谐的机器人来做这样的事情?【英文标题】:HowcanImakeadiscordbotthatdoessomethinglikethis?【发布时间】:2019-06-1408:07:50【问题描述】:我想制作一个不和谐机器人,当不和谐用户(称为DiscordName#123)通过私人... 查看详情

我怎样才能添加更多功能[关闭]

】我怎样才能添加更多功能[关闭]【英文标题】:Howcaniaddmorefunction[closed]【发布时间】:2011-07-2717:28:51【问题描述】:我想点击任何图像,然后做任何我想做的事情。示例:然后我单击第3项,然后屏幕上会显示一个大图像。请帮... 查看详情

我怎样才能得到我的记忆快照

】我怎样才能得到我的记忆快照【英文标题】:HowcanIgetasnapshotofmymemory【发布时间】:2011-07-1417:35:09【问题描述】:有没有办法知道什么对象吃掉了我的记忆?例如,对于我的代码中的给定点,我想知道有多少字符串是活动的以... 查看详情

我怎样才能从 react beautiful dnd 中获得组合来处理我的项目?

】我怎样才能从reactbeautifuldnd中获得组合来处理我的项目?【英文标题】:HowcanIgetcombiningfromreactbeautifuldndtoworkonmyitems?【发布时间】:2021-01-1521:59:41【问题描述】:我正在使用reactbeautifuldnd并创建了3个包含列表项的列。我想添加... 查看详情

我怎样才能毫无例外地中断这个警报?

】我怎样才能毫无例外地中断这个警报?【英文标题】:HowcanIinterruptthisalarmwithoutexceptions?【发布时间】:2011-07-2216:42:52【问题描述】:我有一个闹钟,它会在特定时间播放声音。我正在寻找一种方法来阻止它运行,我该怎么做... 查看详情

怎样才能编写出高效优雅的java程序

面向对象构造器参数太多怎么办?用builder模式,用在1、5个或者5个以上的成员变量2、参数不多,但是在未来,参数会增加Builder模式:属于对象的创建模式,一般有1.抽象建造者:一般来说是个接口ÿ... 查看详情

怎样才能编写出高效优雅的java程序

面向对象构造器参数太多怎么办?用builder模式,用在1、5个或者5个以上的成员变量2、参数不多,但是在未来,参数会增加Builder模式:属于对象的创建模式,一般有1.抽象建造者:一般来说是个接口ÿ... 查看详情

怎样做才能实现图片转文字

无论是在生活中,还是在工作中,面对图片文字我们最好的办法就是进行图片转文字,学会了图片转文字这个方法,可以在图片上节约很多的时间,方法也有好与坏,下面小编分享一个简单、识别效果不错的图片转文字方法。使... 查看详情

怎样使用百度api去开发一个php项目

怎样使用百度api去开发一个php项目比如一个自定义函数:functiontest()echo‘helloworld’;就可以叫做api。api既可以是单个的函数,也可以是封装在类里的方法,当然它们也是程序代码。开发一个api的流程可以很简单,也可以很复杂,... 查看详情

我怎样才能重复功能来放置另一个innerHTML?

】我怎样才能重复功能来放置另一个innerHTML?【英文标题】:HowcanIrepeatfunctiontoputanotherinnerHTML?【发布时间】:2017-09-2709:34:44【问题描述】:单击某些内容后,我想在HTML中创建div部分,但它只发生一次,如果我再次单击,它什么... 查看详情

word的全部功能

...\'video\')参考技术AWORD超全1.更改程序设置助你快速记忆Word快捷键很多朋友都希望能在Word中用快捷键来完成一些常用的操作。可那些快捷键特别难记,好多朋友的方法都通过菜单的提示来强行记忆(如图1所示)。图1但这个方法效果... 查看详情

unity要怎么做才能把快捷键的文件夹打开

参考技术AWindows操作系统。1、Ctrl+N创建新的场景。2、Ctrl+O打开场景。3、Ctrl+S保存场景。4、Ctrl+Shift+S[景另存为。5、Ctrl+Shift+B发布场景。6、Ctrl+B发布并运行。在场景视图中操纵并修改物体是Unity非常重要的功能,这是昀好的通过... 查看详情