用url做接口测试工具(测试URL)

网友投稿 1056 2022-12-27


本篇文章给大家谈谈用url做接口测试工具,以及测试URL对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享用url做接口测试工具的知识,其中也会对测试URL进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

接口自动化测试工具有哪些?

1、CTS,CTS 测试基于Android instrumentation 测试, 其又基于JUnit 测试。说白了, CTS 就是一堆单元测试用例。这也是Java 语言的擅长部分。
2、 Monkey工具,Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。
3、ASE,ASE 意思为Android 脚本环境, 即我们可以通过脚本(比如Python)调用Android 的功能,从而定制一些测试。比如打电话,发短信,浏览网页,等。我们可以扩充它的API(Java 部分), 并用python 脚本调用这些API, 从而实现丰富的测试功能。用于API 部分可以访问到Android 全部API, python 又能灵活部署测试,所以ASE 的扩展性非常好。
4、Robotium,该工具用于黑盒的自动化测试。可以在有源码或者只有APK 的情况下对目标应用
进行测试。Robotimu 提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text
等等。 http://mag.big-bit.com/
分层的自动化测试

这个概念最近曝光度比较高,传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。
相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不同阶段所对应的测试么!我们需要规范的来做单元测试同样需要相应的单元测试框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。
集成、接口测试对于不少测试新手来说不太容易理解,单元测试关注代码的实现逻辑,例如一个if 分支或一个for循环的实现;那么集成、接口测试关注的一是个函数、类(方法)所提供的接口是否可靠。例如,我定义一个add()函数用于计算两个参数的结果并返回,那么我需要调用add()并传参,并比较返回值是否两个参数相加。当然,接口测试也可以是url的形式进行传递。例如,我们通过get方式向服务器发送请求,那么我们发送的内容做为URL的一部分传递到服务器端。但比如 Web service 技术对外提供的一个公共接口,需要通过soapUI 等工具对其进行测试。
UI层的自动化测试,这个大家应该再熟悉不过了,大部分测试人员的大部分工作都是对UI层的功能进行测试。例如,我们不断重复的对一个表单提交,结果查询等功能进行测试,我们可以通过相应的自动化测试工具来模拟这些操作,从而解放重复的劳动。UI层的自动化测试工具非常多,比较主流的是QTP,Robot Framework、watir、selenium 等。
为什么要画成一个金字塔形,则不是长方形 或倒三角形呢? 这是为了表示不同阶段所投入自动化测试的比例。如果一个产品从没有做单元测试与接口测试,只做UI层的自动化测试是不科学的,从而很难从本质上保证产品的质量。如果你妄图实现全面的UI层的自动化测试,那更是一个劳民伤财的举动,投入了大量人力时间,最终获得的收益可能会远远低于所支付的成本。因为越往上层,其维护成本越高。尤其是UI层的元素会时常的发生改变。所以,我们应该把更多的自动化测试放在单元测试与接口测试阶段进行。
既然UI层的自动化测试这么劳民伤财,那我们只做单元测试与接口测试好了。NO! 因为不管什么样的产品,最终呈现给用户的是UI层。所以,测试人员应该更多的精力放在UI层。那么也正是因为测试人员在UI层投入大量的精力,所以,我们有必要通过自动化的方式帮助我们“部分解放”重复的劳动。
在自动化测试中最怕的是变化,因为变化的直接结果就是导致测试用例的运行失败,那么就需要对自动化脚本进行维护;如何控制失败,降低维护成本对自化的成败至关重要。反过来讲,一份永远都运行成功的自动化测试用例是没有价值。
至于在金字塔中三种测试的比例要根据实际的项目需求来划分。在《google 测试之道》一书,对于google产品,70%的投入为单元测试,20%为集成、接口测试,10% 为UI层的自动化测试。

如何做接口测试

1、可以使用postman软件进行接口测试,这里以较复杂的上传图片的接口为例进行测试,首先打开postman软件选择Post方式,输入后台接口调用地址。

2、然后填写Headers,注意这里的Headers部分不要写任何东西,如果之前是有Content-Type头信息, 那么就会上传失败。

3、接着填写Body,选择form-data,填写Key后台规定的接收文件的名称参数,格式选择为File,此时value会自动变成选择文件。

4、最后点击Send,可以发现下方返回了接口的响应,说明上传图片是成功的,这样简单的图片上传的接口测试就完成了。

python怎么做接口测试工具

之前使用过urllib和urllib2做接口测试用url做接口测试工具,在做用url做接口测试工具的途中用url做接口测试工具,感觉使用urllib2直接进行用url做接口测试工具的get,post 请求并没有那么好用。作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗时只要是真正的无人值守,耗时不是太久的都可以接受。所以,本人又尝试了一个新的包:requests。

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 !推荐一篇文章,上面有该包的详细说明 传送门,以下只会写到我用到的部分,所以更多的了解需要自己去搜资料

好了,我们开始吧!!

接口测试中重要的部分:

1.get和post方法

2.用到的参数

3.请求头

4.cookie

5.日志输出

6.如何调试用url做接口测试工具你的程序--借助fiddler

按照以上的顺序,我将一一说明我的搞法,因为编码能力有限,所以可能看着很low

一、get和post

requests包很好的实现了post和get方法,示例:

1 import requests2 response_get = requests.get(url, data, headers, cookies)3 response_post = requests.post(url, data, headers, cookies)

其他的访问方式如put,head等等,用法几乎都是如此,因为没用到,所以省略

现在一般的接口返回值有页面和json俩种,按照需求,可以分别使用response.text或者response.content获取,text获取的是unicode类型的返回值,而content返回值是str类型,所以我一般使用content来获取返回值,因为这样获取的返回值可以直接使用正则或者in的方式来验证返回值结果是否正确。

我自己为了实现接口的自动访问,所以又在requests上面加了一层封装,就像下面这样:

1 def main_get(list_result, cookies): 2     """ 3     用于模拟get请求,返回结果 4     :param list_result:空列表,用于存储结果 5     :param cookies: 登陆后的cookie 6     :return:访问结果 7     """ 8     # List_interface_get写在接口文件里,文件是py格式,然而它本身是字典类型 9     for key in List_interface_get:10         try:11             f1 = requests.get(key, cookies=cookies)12             if f1:13                 print f1.content14                 print List_interface_get[key]+'接口访问成功'15                 split_line()16             list_result.append(f1.content+'||'+key)17             # print f1.read()18         except AssertionError:19             print 'One Error in get'20             pass21     return list_result22 23 24 def main_post(result_list, url_list, param_list, payload_list, note_list, cookies):25     """26     模拟post请求27     :param result_list: 结果字典28     :param url_list: 接口字典29     :param param_list: 入参字典30     :param payload_list: header字典31     :param notelist: 描述字典32     :param cookies: 登录获取的cookie33     :return:填充完成的结果列表34     """35 36     # post这块写的比较low,最好自己搞一个数据结构把它搞定37     for key in range(1, 9):38         a = requests.post(url=url_list[key], data=param_list[key], headers=payload_list[key], cookies=cookies)39         try:40             if a.content:41                 print a.content42                 print note_list[key]+'接口访问成功'43                 split_line()44             result_list.append(a.content+'||'+url_list[key])45         except AssertionError:46             print 'One Error in post'47             pass48     return result_list

二、用到的参数以及请求头

我用的方法是把这些都存放于一个py文件中,当然也可以使用excel或者xml文件,甚至于使用DB。项目紧急,凑合了一下,这里的数据结构主要为了符合上面封装的函数,直接上代码看吧

1 BaseURL = 'https://******.com'  # 测试环境 2 # 使用什么数据结构不重要,关键看实现方法中怎么解析你的测试数据 3 List_interface_get = { 4     BaseURL+'/api/****/****/****?****=1****=375': '描述' 5 } 6 # 以下是用于post的接口 7 List_interface_post = { 8     1: BaseURL+'/api/****/****/****/****' 9 }10 # 以下是用于post的数据11 List_post_param = {12     1: 'new=222222old=111111'13 }14 # 以下是post接口的描述,它是干嘛的15 List_post_note = {16     1: '修改密码'17 }18 # 以下是post用到的请求头19 List_post_header= {20     1: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}21 }

三、cookie

一款产品的接口测试中必定会使用登录状态,需要使用cookie实现,之前写过使用cookiejar获取cookie,requests中获取cookie的方法更为简单,不过首先你得知道是哪个接口set了cookie,不过一般是登录啦。登录接口访问之后set了cookie,那好,就去调用登录接口,然后拿到搞回来的cookie:

# 只需要这样!!login = requests.post(login_url, data=login_data, headers=login_header)
cookie = login.cookies

这个cookie就是登录状态了,拿着随便用,需要登录的就直接cookies=cookies

四、日志输出

这里注意看第二步中接口数据,有接口描述,也有接口是啥,第一步中又把content做成返回值了,具体拼接方式自己想吧,东西全有了,想写啥写啥,还可以加上获取本地时间的api获取接口运行时间,log文件该长啥样是门学问,这里就不献丑了。

五、借用fiddler调试你的脚本

requests允许使用代理访问,这有啥用,真有!fiddler是一款截包改包的工具,而且通过扩展可以进行请求间的比对,这样让你的程序访问的请求和真正正确的请求作对比,为啥我的程序访问出错?是不是缺了请求头?参数是不是丢了?cookie是不是少了?很容易看出来。写法如下:

proxies = {     "http": "",     "https": ""}
requests.post(url, proxies=proxies)

这样就可以走代理了,除fiddler以外还有charles和burp suite可以使用,具体看个人喜好吧。

Jmeter实现接口测试

利用Jmeter做接口测试怎么做呢?过程真的是超级简单。

明白了原理以后,把零碎的知识点填充进去就可以了。所以在学习的过程中,不管学什么,我一直都强调的是要循序渐进,和明白原理和逻辑。这篇文章就来介绍一下如何利用Jmeter做接口测试的流程,主要针对的是功能测试。暂不涉及到自动化测试和性能测试的内容。

一把来说,主要的步骤都大差不差。

第一步:通过分析API文档和需求文档提取接口清单 。

也就是说,接口测试工作人员工作的开始就是从API文档和需求文档开始的。所以进入公司的第一件事情就是要拿到API文档和需求文档来了解,来看,来分析。从其中提取接口清单的话,主要是因为API文档中有很多冗余,不必要的信息。这些信息可能对于开发人员是有用的,但是对于我们测试人员是没有用的,所以要去除冗余,提取关键信息。

那么怎么提取呢?方法也很简单,从功能模块和方法模块对API文档中的内容进行提炼,提炼的关键是接口三要素:url+方法+参数+返回值。我的建议是可以先将所有的url提取出来,基本上一个url就是对应一个接口的,这样一条线把整体拎起来,就感觉混乱的局面清晰多了。

当然工作中,有的时候我们是可以直接拿到接口清单的,因为清单这个事情一个团队做一份就好了,并不是说要每个人都做一份。但是我们自己得会,得有这个能力。之前看到过一个面试题,问的是,如果没有API文档,怎么做接口测试?

其实问的就是如果没有API文档,应该怎么提取接口清单的问题。很简单,根据需求文档和原型图来提取。有的公司不正规,确实是没有API文档的。或者有的公司API文档写的不规范,那提取的时候,就很考验测试人员的经验和能力了。所以如果能找到遵循restful风格写的优秀API文档,那就好了,提取的时候很方便。

第二步:针对接口清单,做单接口测试和关联接口测试。

在实际测试过程中,单接口测试和关联接口测试的时间是不一样的,这涉及到业务逻辑测试和功能点测试等。但是在测试的时候,他们的逻辑和方法是类似的。

当然这里主要介绍的是单接口测试,因为单接口测试时会考虑各种可能的情况,而关联接口测试一般是建立在单接口没有问题的前提下的。换个角度来说,就相当于是两个层次,单接口测试是基础,而关联接口测试是拔高。

那么具体应该怎么做呢?比如我们这里已经选定而来某一个接口来测试。

首先,根据选定的接口来搭建测试框架 。

接口不是什么大不了的事情,无非就是url、方法、参数、返回数据这四块。这样就意味着,一个接口的框架是固定的,只不过每次传输的数据和返回的数据可能会不一样而已。所以我们要做的第一步就是搭建测试框架。

那么怎么搭建呢?这里就要用到从API文档中整理出来的接口清单和Jmeter了。从接口清单里,可以拿到当下接口的url+方法+参数+预期返回数据。这就是我们搭建测试框架的依据。接下来用Jmeter搭建。

首先需要打开Jmeter,然后基于测试计划,创建线程组,基于线程组创建HTTP请求。考虑到单接口测试,一个框架,要测试N多个数据,而且后面的接口可能也要用到同样的ip地址、同样的content-type,所以一般会先创建一个HTTP请求默认值,将一些可能会重复用到的信息填进去,比如说端口号、协议之类的。如有必要还需要添加HTTP信息头管理器,放一些user-agent、content-type等内容。

好的,有了这两个基础就可以来创建HTTP请求。在新的请求里,已经填写的端口号呀、ip地址呀之类的就无需填写了,只需要填写方法之类的即可。那么搭建框架在哪里搭建呢?一般会考虑para或者body里。比如说,要提交一段json格式的数据,那么就要用body(消息体)来提交,如下图所示。

将从接口清单里拿到的json数据填写到消息体数据里,然后将需要不断传入的数据进行参数化设置,那搭建测试框架就算是完成了。接下来只需要把数据一条一条传入进行测试即可。

那么如何把数据进行传入呢?

其实我们在下面的这篇文章里已经介绍了,传入数据的方法有四种,但主要使用的还是csv data set config 和函数。做功能接口测试,用csv就足够了。那么具体怎么用呢?

星空下:软件接口测试工具Jmeter使用核心详解12 赞同 · 0 评论文章

基于当前的线程组或者请求创建CSV数据文件配置组件。如果这份数据只有这一个请求会用,那么就基于请求创建即可。如果这份数据会被这个线程组里的多个请求使用,那么就基于线程组创建。

创建了以后就需要填入文件了呢?可是文件在哪里呢?这个时候就要稍微停一下jmeter的操作,先去针对当前接口设计测试用例并形成有关文档了。有关于功能接口测试的用例设计,我们之后会专门用一篇文章来介绍,这里先带过。这是因为设计测试用例是做测试过程中最核心的一步。

在测试用例设计完之后,可以将其保存在一个txt文档里,采用utf-8编码,保存到Jmeter脚本的同一父目录下。然后按照上面那篇文章里的设置方法进行设置即可,注意路径可以采用相对路径,便于数据文件的拷贝和使用。

csv组件设置好以后,数据源有了,变量名有了,变量名的赋值也有了,接下来就只剩引用参数就可以了。在测试框架里需要引用参数的地方引用,引用的格式是${参数名}。到这里,针对于某一个接口的测试工作就准备完成了。

然后在Jmeter里面添加查看结果树组件,执行请求,依次查看结果 。看一看返回的数据和我们的预期结果是否一致,不一致,那可能就是一个bug。

做一个小小的总结吧,用jmeter做功能接口测试,其实很简单的。逻辑和原理都是类似的,如果遇到新的项目,可能说会用一些新的组件而已,那百度一下几分钟的事情。在学习软件测试的时候,最重要的就是不要怂,不要看起来说怎么要学的东子这么杂这么多,只要能够拎出其中的线索和主干,然后把一些零碎的点给组装上去,就会感觉,哇,忽然之间,好有条理。

如何利用postman做app接口测试

1、在Google已安装完成用url做接口测试工具的接口测试工具用url做接口测试工具的postman的程序之后用url做接口测试工具,点击进入桌面的chrome应用启动器。

2、进入到应用启动器界面中之后,可以看到是postman的应用图标程序,点击进入。

3、进入到postman的欢迎的界面中,如果有账号可以进行点击登录账号,无账号可以点击Go to the app进入。

4、这样就进入到postman界面中,进行对app网址进行测试,选择get请求,把app网址在输入框中输入。

5、输入完成之后,然后进行点击send。

6、如果测试成功,返回的status为200 ok,这样app接口测试就成功了。

fiddler抓包详细教程--接口测试

前言

Fiddler最大的优势在于抓包,我们大部分使用的功能也在抓包的功能上,fiddler做接口测试也是非常方便的。

对应没有接口测试文档的时候,可以直接抓完包后,copy请求参数,修改下就可以了。

Composer简介

点开右侧Composer区域,可以看到如下界面,就是测试接口的界面了
1.请求方式:点开可以勾选请求协议是get、post等

2.url地址栏:输入请求的url地址

3.请求头:第三块区域可以输入请求头信息

4.请求body:post请求在此区域输入body信息

5.执行:Execute按钮点击后就可以执行请求了

6.http版本:可以勾选http版本

7.请求历史:执行完成后会在右侧History区域生成历史记录

模拟get请求

1.在Composer区域地址栏输入博客首页: http://www.cnblogs.com/yoyoketang/

2.选择get请求,点Execute执行,请求就可以发送成功啦

3.请求发送成功后,左边会话框会生成一个会话记录,可以查看抓包详情

4.右侧history区域会多一个历史请求记录

5.会话框选中该记录,查看测试结果:

选中该会话,点开Inspectors

response区域点开Raw区域

Raw查看的是HTML源码的数据
也可以点WebView,查看返回的web页面数据
Json数据

1.有些post的请求参数和返回参数是Json格式的,如博客园的登录请求: https://passport.cnblogs.com/user/signin

2.在登录页面手动输入账号和密码,登录成功。

3.找到这个登录成功的会话,查看json数据如下图:
模拟post请求

1.请求类型勾选post

2.url地址栏输入对应的请求地址

3.body区域写登录的json参数,json参数直接copy上一步抓包的数据,如下图红色区域
4.header请求头区域,可以把前面登录成功后的头部抓包的数据copy过来

(注意,有些请求如果请求头为空的话,会请求失败的)
5.执行成功后查看测试结果:

–执行成功如第三所示的图,显示success=True

–执行失败如下图所示,显示

message=Invalid length for a Base-64 char array or string.

success=False
get请求(url详解)

前言

上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行。有些get请求会带有参数,本篇详细介绍url地址格式。

url详解

1.url就是我们平常打开百度在地址栏输入的: https://www.baidu.com ,如下图,这个是最简单的url地址,打开的是百度的主页
2.再看一个稍微复杂一点的url,在百度输入框输入:上海悠悠博客园
3.查看url地址栏,对比之前的百度首页url地址,后面多了很多参数。当然最主要的参数是:wd=上海悠悠博客园(后面的一大串可以暂时忽略)。

4.那么问题来了,这些参数有什么作用呢?

可以做个简单的对比,在地址栏分别输入:

https://www.baidu.com

https://www.baidu.com/s?wd=上海悠悠博客园

对比打开的页面有什么不一样,现在知道作用了吧,也就是说这个多的”/s?wd=上海悠悠博客园”就是搜索的结果页面

url解析

1.以” https://www.baidu.com/s?wd=上海悠悠博客园”这个url请求的抓包为例
2.那么一个完整的url地址,基本格式如下:

https://host :port/path?xxx=aaaooo=bbb

http/https:这个是协议类型,如图中所示

host:服务器的IP地址或者域名,如图中2所示

port:HTTP服务器的默认端口是80,这种情况下端口号可以省略。

如果使用了别的端口,必须指明,例如:192.168.3.111:8080,这里的8080就是端口

path:访问资源的路径,如图中3所示/s (图中3是把path和请求参数放一起了)

?:url里面的?这个符号是个分割线,用来区分问号前面的是path,问号后面的是参数

url-params:问号后面的是请求参数,格式:xxx=aaa,如图4区域就是请求参数

:多个参数用符号连接

请求参数(params)

1.在url里面请求参数一般叫params,但是我们在fiddler抓包工具看到的参数是:QueryString

2.QueryString是像服务端提交的参数,其实跟params是一个意思,每个参数对应的都有name和value值

3.多个参数情况如下:
UrlEncode编码

1.如果url地址的参数带有中文的,一般在url里面会是这样的,如第二点里的wd=%E4%B8%8A%E6%B5%B7%E6%…

像看到%E4这种编码的就是经过url编码过的,需要解码就能看到是什么中文了

2.用urlencode在线编码/解码工具,地址: http://tool.chinaz.com/tools/urlencode.aspx
post请求(body)

前言上一篇讲过get请求的参数都在url里,post的请求相对于get请求多了个body部分,本篇就详细讲解下body部分参数的几种形式。

注意:post请求的参数可以放在url,也可以放在body,也可以同时放在url和body,当然post请求也可以不带参数。

只是一般来说,post请求的参数习惯放到body部分

body数据类型

常见的post提交数据类型有四种:

1.第一种:application/json:这是最常见的json格式,也是非常友好的深受小伙伴喜欢的一种,如下

2.第二种:application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数

3.第三种:multipart/form-data:这一种是表单格式的,数据类型如下:

4.第四种:text/xml:这种直接传的xml格式

json格式

1.打开博客园的登录页面,输入账号密码后抓包,查看post提交数据,点开Raw查看整个请求的原始数据
2.前面讲过post的请求多一个body部分,上图红色区域就是博客园登录接口的body部分,很明显这种格式是前面讲到的第一种json格式

3.查看json格式的树状结构,更友好,可以点开JSON菜单项
4.查看这里的json数据,很明显传了三个参数:

input1:这个是登录的账号参数(加密过)

input2:这个是登录的密码参数(加密过)

remember:这个是登录页面的勾选是否记住密码的选项,False是不记住,True是记住

x-www-form-urlencoded

1.登录博客园后,打开新随笔,随便写一个标题和一个正文后保存,抓包数据如下
2.如上图的这种格式,很明显就属于第二种了,这种类型的数据查看,在WebFrom里面查看了
3.上面红色框框的Query String是url里面的参数,下面红色框框的body部分就是这次post提交的body参数部分了。

WebFrom

1.为什么登录请求的WebFrom的body部分为空呢?
2.看上图红色框框的显示:这里只支持application/x-www-form-urlencoded这种格式的body参数,也就是说json格式的,需要在JOSN这一栏查看了。 关于用url做接口测试工具和测试URL的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 用url做接口测试工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于测试URL、用url做接口测试工具的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:不属于api测试工具(什么是api测试)
下一篇:彻底解决Spring mvc中时间的转换和序列化等问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~