浅谈web接口测试

简介: 1.(web)接口的本质是什么?在谈接口测试之前,想先问一下,接口是什么?很多人可能使用过postman一类的工具,填上url和访问方法等等,然后工具会访问这个url并把返回值呈现给你,那么,是否这个url就是“接口”?答案是,不一定。

1.(web)接口的本质是什么?

在谈接口测试之前,想先问一下,接口是什么?

很多人可能使用过postman一类的工具,填上url和访问方法等等,然后工具会访问这个url并把返回值呈现给你,那么,是否这个url就是“接口”?

答案是,不一定。

(web)接口的本质,其实就是部署在服务器上的程序。

访问url,这个url可能只是一个静态资源,那么我认为不能算是接口,接口是有一定属性的、协商过的满足一定协议的服务,类似于www.baidu.com/pic/1.jpg这种静态文件的url,其实只是让你访问,但没有任何的处理。(但是并不是说静态资源就不用测了,是两回事,静态文件的url不能算接口, 但是cdn统一向外提供静态资源的服务可以算接口,图片的名称可以算传入的参数)

接口是开发预先定义好的程序,是web服务的子集,接口名其实就是程序名,当你(可能还带着参数)访问这个程序名的时候,程序就会按照预定的流程进行处理;这个程序可能会处理sql可能不会,可能会把数据做处理也可能只是简单返回一个ok,这不重要,重要的是,他一定是一段具有逻辑的程序。

2.如何进行(web)接口测试?

如果把问题从如何进行(web)接口测试,等价的换为,如何对一个程序进行测试,那么我想,对大家而言会轻松很多,因为一直以来,我们都在做这样的测试。

如何对一个程序如何进行测试?

很简单,先分类,首先是基本的功能逻辑验证,然后可能还会有安全性测试,程序健壮性测试,性能测试等等。

具体来说,我建议按照以下的顺序循序渐进的完善我们的接口用例case。

首先,做到回归可用,也就是说,将接口组合,串起一整条业务线,这个时候每个接口的参数可能是固定的,但是跑起来已经可以覆盖基础业务场景;

其次,完善接口测试的业务逻辑,达到业务逻辑的全覆盖,这个时候可能每个接口会有不同的入参以实现不同的业务场景(举例而言,金牌的业务场景和普通认证的就有不同)

然后,在该基础上,查验是否已经实现了接口文档所有的入参类型和返回值类型,如果没有实现,那么加上,最终实现对文档内参数的覆盖;

最后,有针对性的对接口增加边界值,异常值,安全测试数据等等非文档内的参数进行补充测试。

3.接口从哪儿来?

如果有接口文档,肯定是看文档最好了,但是一个文档应该要包含接口的所有信息(所有可能的入参包含是否必选,所有可能的返回值,返回值类型),目前而言,可能还不够能作为参考;

如果没有文档或者文档缺失严重,可以自己根据业务流程抓包(fiddler)。

4.接口测试的工具

自己写的话,可以用py+request库,结合测试框架比如testng等等进行设计;此外现成的工具比较著名的还有soapui,test studio for apis,以及我们今天要说的jmeter。

5.使用jmeter访问一个接口

jmeter的安装我就不说了,官网直接下载就行,需要说明的是,最新的jmeter3.2需要java8的支持。

首先我们需要在测试计划里新建一个线程组,所有的访问都会在该线程组下进行;

以我司登录接口举例,在线程组内,增加一个http取样器并填写好我们要访问的地址(xxxxx.xxxx.com),协议(https),方法(POST),路径(/passport/api/auth/app-login);

开始跑,发现已经跑完了,但是并不知道跑的结果;

要知道结果,我们需要添加一个监听器(聚合报告&查看结果树),

发现返回的是没登录的信息,这时候我们加上post参数,userName,password,tenantCode,

查看返回值,发现登录成功了,那么我们现在把参数改一下,把密码改为错误的密码。

查看结果,发现对于jmeter来说,这个访问依然算成功的,那么如何让正确的登录和错误的登录有区别呢?

我们需要增加断言,也就是,判断标准。

在取样器后加上断言。

现在我们断言登录正确的情况。

然后切回错误的密码,可以看到这时候jmeter已经算他是失败的了。

这样我们一个基本的访问-断言-查看报告的流程就形成了。

但是具体到业务场景,我们可能会遇到一些问题。

6.jmeter里的参数化

举个最简单的例子,我们很多接口都是有依赖的或者频繁用到某个参数,比如说,登录账号,那么如果哪天登录的账号出问题了,难道要一个接口一个接口改吗?

当然不是,我们可以对登录账户进行参数化。

这里先介绍一下量级比较少的话,我们可以用用户自定义的变量,右键添加一个配置元件,用户自定义的变量,在这里我们可以自定义变量名和变量值,使用${}的语法进行引用。

如果量级比较大,我们可以把数据放到excel里,然后使用csv data set config,同样式右键添加一个配置元件,这个暂时不细说了,有兴趣的可以百度或者之后直接问我。

7.jmeter里的取参传参

我们的可能会遇到很多情况是,一个接口,需要用到上一个接口里返回的参数,这时候,我们需要用到提取器来进行参数提取,此外,有登录依赖的接口,可以使用http cookies管理器,如果你登录成功了,会自动替你管理cookies。

在取样器右键选择后置处理器-正则表达式提取器,进行参数的提取。

8.jmeter里获取数据库的数据

我们有可能会遇到需要校验或者使用数据库里的参数,比如说,验证码登录,我们就需要去数据库里查询验证码,这时候需要用到jdbc connection configuration,在线程组下右键-添加-配置元件-选择jdbc connection configuration

9.把jmeter放进持续集成

首先我们需要安装一个ant,然后把jmeter extras目录下的ant-jmeter-1.1.1.jar这个包扔到ant的lib目录,再把jmeter下的build.xml修改一下,这时候就可以用ant启动jmeter,并把测试报告转化为html了。
然后配置一下jenkins,使用ant插件构建build.xml就可以了
这个比较麻烦,所以不单独写了,附上我之前参考的文档:
Jmeter+Ant+Jenkins搭建持续集成的接口测试框架https://my.oschina.net/hellotest/blog/516079

目录
相关文章
|
1月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
1月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
34 4
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
146 5
|
15天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
65 19
Selenium IDE:Web自动化测试的得力助手
|
17天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
113 17
Selenium:强大的 Web 自动化测试工具
|
8天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
48 11
|
1月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
32 4
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
65 3
|
1月前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)

热门文章

最新文章