学习笔记二 Charles抓包及Python循环控制
一.jmeter操作mysql
1.首先在“测试计划”的底部加入mysql的jar包,如果是oracle的数据库,则需要导入oracle的jar包。
2.新建“线程组”,在“配置元件”下新建一个JDBC连接配置:
3.建好之后,给连接池起一个名字以便后续的sql操作调用,在这里是“mysql”,然后填入数据库连接设置,Database URL格式如图所示,数据库的账号和密码,其他设置均可默认。
4.在线程组下新建一个JDBC请求:
5.填写mysql语句:这里主要填入配置里连接池的变量名“mysql”,选择查询类型,如果只有select语句则选select statement,如果只有update和insert语句则用update statement,其他的情况均可选callable statement。
二.jmeter分布式
分布式是指当前的压力机不满足性能测试需求时,需要远程一个或多个压力机共同向服务器施压测试的情况。
在分布式场景中,其中一台为master机,其余为slaver。master负责操控其他的slaver。
需要满足以下条件:
1.master和slaver机器上均装有jmeter
2.master和slaver之间可以相互ping通,是同一个网段。
3.启动salver的jmeter-server(支持window和linux)
4.在master上修改配置文件(bin目录下的jmeter.properties文件),remote_hosts属性,格式为ip:port,......,ip:port
默认端口号为1099,多个ip之间用逗号间隔。
5.在master机上运行jmeter:一般压测的时候用no-gui模式即命令行模式。如果脚本有csv参数文件,需要将csv放置到每个slaver的jmeter的bin目录下,脚本文件只需要放在master上,不需要发送到slaver上。
cd: jmeter的bin目录
.jmeter -n -t dir/x.jmx -l dir/x.jtl
(-n代表非图形界面启动,-t代表脚本,-l代表结果)
三.charles
charles抓取https请求方式参考文章:
https://blog.csdn.net/lea__dongyang/article/details/73294751
1.charles拦截
设置断点,以网页www.cc-na.cn为例,在首页设置断点。
然后重新刷新www.cc-na.cn,charls会切换到断点页面,表示此时已经拦截到浏览器发送到服务器端的内容,我们可以在“Edit Request”页面对拦截到的信息进行修改。
2.Charles修改拦截信息
比如,我们将请求信息改成后面拼接一个文章的路径,则本该是发送获取首页的信息变成获取649文章资源的地址。点击底部的“Excute”。修改后的请求则会发送到服务器。浏览器页面则会跳转到改文章的地址,绕过首页。
当然,拦截是双向的,除了拦截到浏览器发送到服务器的数据,也可以拦截服务器返回到浏览器的数据。而且修改的拦截信息可以改各种参数。在此不做重复。
3.charles模拟弱网,在throttle settings里设置,将“enable throttle” 勾选上。
4.charls url映射
两个服务器之间的映射(map remote),执行步骤为下组图:
map内容如上所示,是将本来右服务器www.cc-na.cn下所有的接口(path可以指定接口,如果为*表示所有的接口)返回的数据转换到由服务器www.nnzhp.cn返回,query可以指定参数。
由本地选择文件返回(mpa local),执行步骤为下组图:
maplocal是将本该由服务www.cc-na.cn返回的数据,改成指定由本地某个文件的数据返回,query可以指定参数。
map local与map remote的区别在于,后者是指定另一个服务器返回;前者指定返回的是某个本地文件的数据。
四.python
语言分为两种:编译型语言和解释型语言。
计算机只能理解机器语言(二进制0和1),所以所有的语言只有经过翻译才能被计算机识别,而翻译的模式目前有两种,一个就是编译一个就是解释。而编译和解释的区别在于他们的翻译的时间不同。
编译型语言是一开始都翻译好了然后交给计算机执行;而解释型语言是一边运行一边翻译(如java),所以解释型语言需要一个专门的解释器(Java虚拟机)配合运行。所以解释型语言运行效率低于编译型语言。
1.条件判断
语法为if..elif..elif..else
2.while循环
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假false时,循环结束。
3.break
break是跳出当前的循环,即使循环本该还有多次,但是也不再执行,例如上例中的代码表示有7次机会,但是一旦猜中则结束后面的循环。
4.for循环
上述的例子是用for循环如下,与while的区别在于,不需要对计数器count进行初始化,自增,边界判断操作,for语句自带该功能:
for循环可以嵌套用来进行矩阵打印,例如打印一个乘法表:
print()打印默认以换行符结束,如果需要指定结束标志用print(,end=),end在这里表示结束标志,如果需要空格则可以写成end=''
5.字符串格式化
字符串输出有以上4种方式,string可以用“+”进行字符串拼接。在python中,任何类型都可以用字符串形式输出,用%s表示,如果指定数据格式,则%d表示整数,%f表示浮点数。%03d表示输出的整数是三位数显示,不足的位数用0补齐。%.2f表示输出的小数精确到小数点后两位。