jmeter教程(一):url、uri及协议初识

jmeter是用纯java语言实现的一个,用于接口、及性能测试的工具。关于jmeter的诞生,纯属歪打正着,就像当初unix系统的诞生,也是属于歪打正着。有关的故事,可以自己去网上查。jmeter教程,原先在公司也写过一些,不过,原先也只是用于公司内部分享用的,教程里面的例子,也是用的公司的项目。现在,把教程贴到博客,自然是不能用公司的例子了,所以有些地方可能就会只有理论,没有例子,当然,我会尽量自己写一些接口来做例子,但限于我本人知识有限,有些情况,可能我模拟不出来,那也就只好干讲理论了。当然,教程里面也有些知识点,可能会比较难理解,像响应断言或是后置处理器里的正则表达式,如果之前没有接触过正则表达式的话,可能就会很不好理解,先打下预防针。jmeter用来做接口测试,那么就有必要了解两个概念,url及uri。

url,百度百科的解释是:统一资源定位符,也就是url是用来定位资源的,一个正确的url可以定位到一个资源且只能定位到一个资源,换句话说,url就是资源的地址。一个url最少要包含三部分:协议、分隔符、uri。比如,windows系统下,打开浏览器,在浏览器的地址栏中输入:file:///c:,回车后,浏览器就会把c盘下的资源列出来,那么,这就是一个最简单的url了,其中“file”是协议,“://”是分隔符。“/c:”就是uri。

uri,百度百科的解释是:统一资源标识符,当然,这个名称有点难于理解,那么,我们换一个说法。uri就是资源在电脑(服务器也是一台电脑)或是站点目录里的路径,在jmeter里面,uri就叫路径的。

当然了,在测试的过程中,file协议,一般是不会遇到的了。我们经常遇到的,应该是http、https协议,当然有些应用可能是使用其它的协议,像我之前测试时使用过的radius协议。但是我们在工作中,还是会使用到很多协议的,只不过都是工具实现的,我们不知道而已。比如收发邮件,就是使用的邮件服务协议(SMTP、POP3、IMAP4),远程连接liunx系统的ssh协议,传送文件的ftp协议等等。一个协议,通常都会有一个默认的端口号。比如,http协议的默认端口号是80,https协议默认的端口号是443。还有22、23、25、110、1521、3306等,你都知道是什么协议的默认端口号吗?

协议的种类很多,但归根结底,网络协议就是两种,其它的协议都是在这两个协议的基础上封装出来的,那就是UDP和TCP协议。UDP协议是非阻塞的,也就是服务器只管发数据,至于客户端有没有收到,完全不管,所以发送的数据,客户端有没有收到,收到的顺序是否就是发送的顺序,这些就得不到保障。网络游戏里大部分就是使用这种协议,像我们玩着游戏的时候,卡了一下,那就是服务器发了数据,然后客户端没有收到造成的,也就是通常所说的丢包了。像我前面提到的radius协议,就是在UDP协议的基础上再封装的一个协议。与此相反,TCP协议是阻塞模式的。当服务器向客户端发了一条数据之后,必须要确认客户端收到了,才会继续发下一条数据,这样就很好地保证了数据一定能被客户端收到,且收到的顺序就是发送的顺序。像前面提到的网络协议,除radius外都是TCP协议的再次封装。

tcp协议有个三次握手、四次挥手的机制,这个三次握手的机制与生活中的场景还是很像的。比如,你要去朋友家玩,你得先发条信息给朋友:我要去你那玩了,你有空没?你朋友收到信息后,就会回一条信息:我现在有空,你可以过来。你收到这条信息之后,那你就得查一下去你朋友家的路线,查好路线之后,就出发去朋友家了。在朋友家吃饱喝足了,要回家了。朋友要送你走啊,然后估摸着你差不多快到家了,就会发条信息给你:到家了没?你到家后,就会回一条信息:我到家了,你不用挂念了。你朋友收到这条信息之后,就忙自己的事去了,不管你了。那么tcp协议的过程,与这个非常相像。客户端想向服务器发请求,就会先发一条信息给服务器:我要向服务器发请求了,你准备一下。服务器收到信息后,就会回一条信息:我准备好了,你可以发请求了。客户端收到这条消息后,就会建立连接。建立连接之后,就开始发送请求了。服务器处理完了请求之后,就会把响应数据发送给客户端,发送完了之后,就会发一条信息给客户端:数据已经发送完了,这条请求,有时会附在数据后面一起发送。然后还会发一条消息,要客户端接收完响应数据之后,回复一下。客户端接收完了数据,就会回复一条消息给服务器:我数据接收完了,可以断开连接了。那服务器收到这条消息后,就会把连接断开,当然,长连接除外。

http协议就在是tcp协议之后再封装的一个协议,tcp协议,断开连接,可以由客户端发起,也可以由服务端发起,但是http协议,就只能由服务端发起和断开连接。

https协议是在http和tcp协议之间再加了一层ssl协议,也就是数字证书协议,用于加密传输的内容,防止数据被截持、篡改。所以https协议比http协议更安全。

在测试的时候,如果是使用http协议的话,开发给出的接口,可能就是类似这样的:http://localhost:8080/tester/login?username=aaa&password=bbb。这其中,http为协议,://为分隔符,localhost为主机名,localhost代表本机,也就是把服务布署在自己的电脑上,再在自己的电脑上进行访问。而我们要测试的话,就需要把这个换成你要测试的服务器的地址。当然,服务器的地址,可能是一个ip地址,也可能是一个域名。域名最终也是会通过dns服务器解析成ip地址,再通过ip地址访问服务器。关于dns解析域名,又可以讲一大堆,这里就不讲了。8080是端口号,主机名和端口号之间用:号分隔,当然如果端口号是80的话,是可以省略掉了,http协议默认的端口号就是80。/tester/login就是uri了,也就是要访问的资源在站点目录里的路径,当然这个说法也不全对,在tomcat服务器中,这个可能不是一个路径,而是指向某一个类的虚拟路径,关于这一点,不细说了。后面的username=aaa&password=bbb这个就是请求的参数了。参数和uri之间用?分隔,参数以键值对的形式存在,用=连接,几个参数之间用&符号连接。当然了,参数的形式还有其它的形式,比如json格式的,xml格式的,这个到后面再讲吧!

欢迎加入测试群:91425817,一起讨论测试的那此事。

  • 9
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值