学习笔记-Jmeter压测、Charles的使用、python入门

上一节内容:

  1. 接口
  2. postman测试接口
  3. jmeter测试接口

本节学习内容:

  1. jmeter压测、分布式、noGUI运行
  2. 抓包工具的使用
  3. python入门

 

JMETER

首先把上一节jmeter没有说到的常用功能记录一下,上一节我们讲到了jmeter的接口测试,接下来我们先学习一下jmeter如何连接数据库。

1)连接数据库

第一步需要先导入JDBC的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql

 

这里导入的是mysql的jar包,当然如果导入sql server的jar也可以连接sql server。

然后,在线程组添加一个数据库连接原件

 

再下一步,配置数据库连接

像上面这样,variable name:配置mysql连接池的名称,后面发sql请求的时候指定连接这里;database url:数据库连接的url,这个大家根据自己需要连接的数据库配置即可

JDBC driver class :数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等,我这里连接的是mysql。最下面就是账号密码。

 接下来再创建一个sql执行元件,用于执行sql语句

同样可以用查看结果树来查看sql执行结果

 

 2)jmeter压测

jmeter压测,线程组配置

根据自己的测试需要设置线程数、循环数、并发时间限制、持续时间等等。

我们一这个连接数据库的执行为例子,学习一下在jmeter中怎么查看压测结果。

在线程组创建一个聚合报告

然后按照线程组中的设置执行请求,得到以下结果

 

 聚合报告的结果主要以tps、响应时间、并发用户数这三项为主要判断依据。

tps(Throughput)是每秒钟处理的请求数,也就是指服务器的处理能力,tps越高说明服务器处理能力越好;

响应时间(Average)也就是每个请求的处理时间;

并发用户数(Samples) 也就是多少并发。

3)jmeter分布式

我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢?

首先要在做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。

Jmeter的bin目录下有一个jmeter-server,启动它即可,windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server。

然后在作为控制机的jmeter配置文件里添加压力机ip即可,jmeter的配置文件在bin目录下jmeter.properties,添加压力机的时候,在配置文件里面找到remote_hosts添加ip,然后

重启jmeter就可以看到远程压力机了

由于我这里没有可以使用的机器,这里就不再做演示。

4)jmeter no GUI运行

我们做测试一般都是使用界面化得工具,但是假设现在需要在一台没有界面服务器上做压力测试,该怎么做呢?

首先,在你的电脑上做好脚本,保存起来。然后放到需要测试的设备上某个路径,比如D:/

打开jmeter可运行的目录,执行命令行命令:jmeter -n -t D:/*.jmx -l c:/Desktop/result.jtl,result.jtl就是测试的结果,在使用jmeter中的聚合报告打开它查看就可以了。

 

Charles

Charles是一款很实用,界面很友好(至少跟fiddler比起来),功能强大的抓包神器,因为它是基于 java 开发的,所以跨平台,Mac、Linux、Windows下都是可以使用的,

并且在Android和iOS设备上通用。它的原理是通过成为电脑或者移动设备的代理截取请求和请求结果达到分析抓包的目的。测试中使用charles主要是为了模拟各种异常情况,

排查问题。

  如何抓取HTTPS请求,请参考:https://www.jianshu.com/p/ec0a38d9a8cf

 

想要使用charles装包,首先要把charles设置成代理

接下来你就可以从charles中看到所有mac上的请求了,当然如果你不想看到所有的请求,只想看到自己想抓取的,那么可以设置过滤请求

 

 

include 可以设置想要抓包的地址;exclude可以设置想要过滤的地址。

下一步我们就用charles来抓包看看,这里我用公司内部的加固系统作演示

 

 

这样就是抓包成功了,可以获取到请求参数、请求方式和返回值等信息。

 

charles修改请求

能抓包了,下面我们来做一些改动试试,我们先来打开一个应用加固界面,然后在charles中设置断点,并且查看浏览器中的页面

       

 

设置完成以后在下一次做同样的请求时,就方便着做一些操作了,然后在浏览器中刷新页面,使再次请求

 

把这里的apks修改为sdks,查看结果

可以看到浏览器上地址还是现实apks,但是页面已经跳转到sdk的界面了,这样就算是请求修改成功了。

 

charles修改返回值

再一次的在apks页面发送请求,在charles中修改返回值

将这里的返回值的文字修改掉,然后继续发送

好的,平台的名字改成我专用的了,修改返回值成功。

以上就是Charles测一些简单的使用。

 

Python 

 python是一门计算机语言,什么是计算机语言呢?就是使用者和计算机之间交互的一种媒介,我们想计算机发送哪些指令,计算机执行哪些操作,就靠语言来实现。

计算机语言又分为编译性语言和解释性语言,编译性语言是指写完代码不能执行,得先编译比方说 c、c++、c#等,解释性语言就不需要编译 直接执行比方说python、java、

php、js、go、ruby等,python就属于是解释性语言。下面我们来学习python

学习一门语言呢,肯定是要学习最新得啦,那么我们就是学习python3的特性。

python是可以不使用任何工具写代码,比如你新建一个txt就可以写,当然前提是你代码能力足够强。否则呢还是乖乖使用编辑器来写代码吧。推荐使用PyCharm,根据自己的电

脑下载相对应的版本就好了,我使用的是MAC免费版。

 

下面来学习一下python

1)python中的变量

变量简单说就是存东西的容器

name = '哈哈哈' #string 字符串
age = 18        #int 数字
money = 10000000.888   #floot 小数

像上面的用‘=’表示把后面的值存储到前边的变量名中。

 

2)输入、输出

python中用input方法输入,用print方法输出

name = input('请输入你的名字:')
print(name)

 

3)条件判断

python中条件判断使用if else来判断,多个分支的判断使用if   elif   else

if score >= 90:
    print('优秀')
elif score < 90 and score >= 80:
    print('良好')
elif score < 80 and score >= 60:
    print('及格')
else:
    print('不及格')

 

4)循环

循环可以重复执行循环体里面的代码,python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有

一个可迭代的对象,才能循环,比如说得有一个数组,循环里面会经常用到continue和break

continue:跳出本次循环继续进行下一次循环

break:停止循环。

continue和break下面的代码都不执行

while循环代码示例

import  random
number = random.randint(1,100)     #产生随机数
count = 0

while count < 7:
    count += 1
    guess = int(input('请输入你猜的数字:'))
    if guess > number:
        print('猜大了')
    elif guess < number:
        print('猜小了')
    else:
        print('猜对了!')
        break
else:
    print('你输了!')
'''
    #正常结束循环,会执行else里面的代码。break结束,不会执行else的代码

for循环代码示例

import  random
number = random.randint(1,100)     #产生随机数
# count = 0

for count in range(7):
    guess = int(input('请输入你猜的数字:'))
    if guess > number:
        print('猜大了')
    elif guess < number:
        print('猜小了')
    else:
        print('猜对了!')
        break
else:
    print('你输了!')

 

5)格式化输出

格式化输出就是把输出的内容都格式化成一个标准的模式,比如用户登陆的时候每个人的名字都不一样,这里就需要格式化输出

第一种是用“+”拼接,把输出的字符串和变量连接起来就可以了

第二种是用占位符,占位符有常用的有三种,%s、%d和%f,%s是后面的值是一个字符串,%d是后面的值必须是一个整数,%f后面是小数

import datetime

usename = input('请登录:')
today = datetime.datetime.today()

print('欢迎'+usename)

print('欢迎%s登录,今天是%s'%(usename,today))

 

 

 

 

 

posted @ 2019-03-29 18:17  VitKoo  阅读(577)  评论(0编辑  收藏  举报