一、jmeter压测
一般压测的时间是10-15分钟
TPS:服务端每秒钟处理的请求数,越大越好
响应时间:服务端返回请求的时间,越短越好
聚合报告
Samples:在压测的时间内,发送的请求数
average:响应时间,单位为毫秒
ERROR%:测试不通过的事务百分比
Throurhput:为tps,每秒通过事物数
性能测试的核心在于如何定位性能问题,如何调优
性能测试指标:tps要达到多少、响应时间要达到多少,并发数是多少
添加jmeter压力机
1、先在其他的负载机上启动jmeter的bin目录jmeter-server(jmeter-server.bat windows, jmeter-server.sh linux环境、mac)
2、在主控机上修改jmeter.properties配置文件,找到remote_hosts,把负载机的ip加入到里面
remote_hosts=localhost:1099,10.165.124.57:1099
默认jmeter-server的端口号为1099,如果负载机的端口号改了,那么主控机的端口号也需要改
3、启动时候要选择远程全部运行,点击菜单”运行>远程全部启动”
ps:如果主控机(压力机)上有参数文件,那么在负载机上同样的位置上也需要有参数化文件
jmeter在linux环境下运行
-n no gui 没有界面运行
-t 指定一个运行的脚本,脚本要在windows的环境做好,再上传到linux环境
-l 指定测试结果文件
jmeter -n -t C:\Users\bjniuhanyang\Desktop\测试计划222.jmx -l res.jtl
jtl是结果文件的后缀名
什么情况下要在Linux环境下运行jmeter:
测试机只有linux主机,而且linux 的主机性能很好,比较适合做大并发测试的测试机
linux环境jmeter压测结果文件如何查看,在聚合报告中浏览生成的结果文件。
bestest虚拟机上装了jmeter、jdk、mysql、mongdb
二、抓包
抓包:可以通过抓包查看浏览器发出去的请求内容、返回的结果是否正确,。
charles:
跨平台的,fiddler只有windows的
1、什么时候要抓包,开发没提供接口文档
1、看发出去的请求和返回的结果是什么
2、定位问题
server端的问题
客户端的问题
3、他能帮咱模拟一些服务端返回的异常情况,这点跟接口测试没有关系
使用Charles抓包过程,以访问
http://bj.58.com/
为例:
1)client(客户端)向服务端发送请求,中间被Charles设置断点拦截请求(对要打断点的接口右键,选择【Breakpoints】,再在工具栏点击Enable breakpoints)
2)在Charles上课可以编辑发送的请求信息,再点击【Execute】按钮,将请求信息发给Server(服务端)
3)服务端会返回信息又被Charles拦截到了,点击“Edit Response”标签页,在页面底部选择Text格式的返回信息,对返回的信息做修改后点击【Execute】按钮,执行返回的信息。
4)客户端接收到的是Charles篡改的信息
以下是Charles抓包过程示意图
4、手机抓包
1)、必须手机和电脑是在同一个局域网
2)、获取到电脑的IP地址,查看Charles的端口号,默认的端口号是8888
安卓手机WLAN设置
三、python基础
1
、python的一些概念
1)自动化测试:写的代码帮你测试,提高测试效率
现在测试面试会问,会不会写代码,会不会自动化,要会一门语言
python、java、php、ruby、go语言
系统的开发语言与做自动化测试用的语言没有关系
python语法简洁
2)计算机只认识二进制的 0 1,通过编译器
编译型语言
写好代码之后,就把代码编译成二进制文件,运行的时候运行编译好的二进制文件
如:C、C++、C#
运行速度快,一次编译。到处运行
缺点:编译过程比较慢
3)解释性语言
运行一行的代码编译一行,什么时候运行代码,什么事实编译代码。
缺点:运行速度比较慢
php、python、ruby、java、go、javScript
java的代码编译成class文件,通过jvm去一行一行的读class文件
编译型语言运行速度更快
python:后台服务开发,数据挖掘(爬虫)、数据分析()、人工智能(90%的语言)、自动化运维、自动化测试
如果想转行,可以去做数据挖掘(爬虫)、数据分析()
4)脚本语言:
功能单一的语言,叫做脚本语言
linux的shell、windows的批处理、JavaScript(写前端)、html(只能写页面)、vb
举例:看英文书
1、买一本翻译好的英文书(类似 编译型语言)
2、请一个翻译(类比解释性语言)
python2.X,更新到2.7
python3.X
pycharm写代码的工具
Python自带的编码工具,交互式写代码,写一行,运行一行
注释代码快捷键 ctrl+/
print(name)
print(‘name’)
这些单词不能用来定义变量,python已经使用
‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’,
‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’,
‘try’, ‘while’, ‘with’, ‘yield’
TypeError: unorderable types: str() < int()
意思是:两类型无法比较
print()
input()
type()
if条件后面加冒号
2
、python编码实践
1
)定义变量
# print(‘hahahhha1122’)
#
编程都是和内存打交道
#
定义变量要见名知意,要用英文,不要用中文
# name=’
周星星’
#
定义一个变量 name,定义变量是为了后面还要用到它的值
name
=”let’s go”
#
定义的变量里面有单引号,则外面要用双引号
title
=’zhouxingxing
长得”很帅”‘
#
定义的变量里面有双引号,则外面要用单引号
content
=”’
let’s go
zhouxingxing
长得”很帅”
”’
,,,
print(name)
print(title)
print(content)
,,,
#
三引号、三个双引号也能当多行注释
age
=
10
#int
类型
name
=’
小白’
#
字符串类型 string
score
=
89.89
#
浮点型 float
print(type(age))
#ctrl+D
复制一行
print(type(name))
#ctrl+D
复制一行
print(type(score))
#ctrl+D
复制一行
2
)条件判断
#if else
#python
里面只有一种判断 if else
#switch
# age=18
# #
加冒号换行要缩进,
# if age<18:
# print(‘
未成年人’)
# else:
# print(‘
成年人’)
# age=input(‘
请输入您的年龄:’)#接受输入的
#
如果是python2的话要用这个raw_input
#
加冒号换行要缩进,
#
只要用input接收输入的值,全部都是string类型的
# age=int(age)#
类型转换,转换成int类型
# print(type(age))
# if age<18:
# print(‘
未成年人’)
# else:
# print(‘
成年人’)
#
# score=input(‘
请输入您的成绩:’)
# score=int(score)
# if score>=90:
# print(‘
优秀’)
# elif score>=75 and score<90:
# #and
表示同时满足条件
# print(‘
良好’)
# elif 60 <= score < 75:
# print(‘
及格’)
# else:
# print(‘
不及格’)
sex
=
input(
‘
请输入你的性别:’
)
# if sex==’
男’ or sex==’女’:
# print(‘
性别合法’)
# else:
# print(‘
性别输入错误’)
#else
并不是必须写的
if
sex
!=’
男’
and
sex
!=’
女’
:
print(
‘
性别未知’
)
print(
‘
程序运行结束’
)
#> < >= <= != ==
3
)条件判断小练习
#
产生一个数字 10
#
输入一个数字
#
输入的小,提示他小了
#
输入的大的话,提示他输入的大了
import
random
num
=
random.randint(1,10)
#
随机产生一个1-10之间的数字
print(
‘
随机产生的数字是:’
,num)
new_num
=
input(
‘
请输入你要猜的数字是多少:’
)
new_num=int(new_num)
if
new_num
>
num
:
print(
‘
输入大了’
)
elif
new_num
<
num
:
print(
‘
你输入的数字小了’
)
else:
print(
‘
恭喜你猜对了’
)
4
)循环
#
重复的去做一件事情
#
循环、迭代、遍历都指的是循环
#for
#while
# print(‘Hello World’)
#while
必须有一个计数器
import
random
num
=
random.randint(1,100)
count
=
0
#
计数器
while
count
<
7
:
guess
=
input(
‘
请输入你要猜的数字:’
)
guess
=
int(guess)
if
guess
>
num
:
print(
‘
猜大了’
)
# continue
elif
guess
<
num
:
print(
‘
猜小了’
)
continue
else:
print(
‘
恭喜你猜对了,数字是:’
,num)
break
#print(‘Hello World’)
count
=
count
+
1
#
也可以写成count+=1
# count-=1
# count=count-1
#
冒号下面的是循环体,循坏时候是在重复执行循环体里面的东西
#break
在循环里面遇到break,立即接护送循环,不管循环有没有循环完
#continue
在循环里面遇到continue,那么就结束本次循环,继续进行下一次循环,从头开始循环
#
带下划线的代码表示执行不到
# else:
循环正常结束之后的操作
5
)while循环
# count=0
# while count<3:
# if count==2:
# print(‘22222’)
# break
# count+=1
# else:
# print(‘
循环结束!’)
#while
循环对应还有个else的时候,循环在正常结束之后才会执行它
num
=
5
count
=
0
while
count
<
3
:
guess
=
input(
‘
请输入你要猜的数字:’
)
guess
=
int(guess)
if
guess
>
num
:
print(
‘
猜大了’
)
# continue
elif
guess
<
num
:
print(
‘
猜小了’
)
else:
print(
‘
恭喜你猜对了,数字是:’
,num)
break
#print(‘Hello World’)
count
+=
1
else:
print(
‘
游戏次数用完了。’
)
6
)for循环
# for i in range(3):
# print(i)
# print(‘hello world’)
# #for
循环不需要加计数器,每次会自动加一
# for i in range(101):
# if i%2==0:
# print(i)
#
后面需要加冒号的if else
#while
#for
#
字符串格式化
import
datetime
today
=
datetime.date.today()
username
=
input(
‘
请输入用户名:’
)
# welcome=’
欢迎光临:’+username+str(today)#第一种方式,这种方式不推荐,在太多内存,使用了三个变量
welcome
=’
欢迎光临:%s 今天的日期是:%s,今天下雪了’
%
(username,today)
#
用占位符,%s为占位符,代替变化的内容
#
前面用了几个占位符,后面的%括号里要用几个变量
#%s
代表字符串,%d代表整数 %.2f保留两位小数
print(welcome)
age
=
18
score
=
98.699
info
=’
你的用户名是%s 年龄是%d 成绩是%.2f’
%
(username,age,score)
print(info)
转载于:https://www.cnblogs.com/zhouly-008/p/8620765.html