一、jmeter压测参数流程以及参数设置
确定测试目标(应用程序或服务)、定义测试场景(根据业务需求、定义并发数、持续时间、请求类型)
创建测试计划、添加线程组(线程数模拟用户数量、设置所有用户启动所用时间以及每个用户循环次数)
添加采样器(http请求)
配置监听器(查看结果树、聚合报告)
设置定时器
高级配置(断言、提取函数)
最后执行测试、分析结果
qps设置(每秒查询率)
1、初步估计 2、逐步加压 3、性能监控
对于小型项目来说,一个合理的起点可能是每秒10到50个请求。
如果你的项目主要涉及简单的查询操作,并且服务器配置较好(例如,现代的虚拟机或物理服务器),那么可以从每秒50到100个请求开始测试。
如果你的项目涉及到复杂的业务逻辑或者大量的数据处理,那么可能需要从更低的QPS开始,比如每秒10到20个请求。
二、测试工作中数据库的使用
增删查改
多表联查
数据库创建存储过程
sql调优用的查找执行计划关键字:explain(可以使用 EXPLAIN 关键字来查看查询的执行计划。将返回一个包含查询计划信息的结果集,其中包含了关于如何执行查询的信息,比如使用的索引、数据访问类型等。)
创建索引:create index/alter table(提高数据库查询性能)
普通索引、唯一索引、复合索引、基于表达式的摄影
三、jenkins一些插件的使用场景(有哪些常用的插件)
git插件 gitee插件 ssh插件 docker插件 Maven插件 Email插件
四、python元组和列表的区别
1、可变性和安全性:元组不可变、列表可变
2、语法方式:元组()列表[]
3、性能:列表可变,它的操作会更耗费时间和内存
字典和集合的区别
1、字典键值对、集合无序且元素唯一
2、字典通过key访问值、集合不能通过索引访问
3、字典常用于数据库中快速查找数据,集合不能用于存储数据、用于去重操作、快速判断元素是否相等
五、线上bug出现怎么办
1、先在线上环境按照用户反馈过来的操作步骤、版本等条件,复现bug(看是不是用户自己操作问题)
2、确认问题存在后,自己在测试环境中使用最新的软件版本,再次复现bug,如果确认有这样的bug再做进一步查找
3、查看是否时本次迭代的其它任务修改影响了这块的功能,还是测试用例漏测、或者网络问题、或者其它方法,进一步精确复现bug的步骤
4、提交bug给开发,在bug被修复后,重新进行测试并回归,确保问题解决,及时向用户反馈结果。最后复盘总结
六、安全性测试
了解漏洞
1、SQL 注入(SQL Injection)
攻击者通过恶意构造 SQL 查询来操纵数据库。
防护措施包括使用参数化查询、输入验证等。
2、文件上传漏洞
允许用户上传恶意文件,如木马或恶意脚本。
防护措施包括对文件类型和内容进行严格检查。
3、跨站脚本漏洞(XSS)
攻击者通过注入恶意脚本来获取用户数据。
防护措施包括对用户输入进行转义、使用内容安全策略等。
4、跨站请求伪造(CSRF/XSRF)
攻击者诱导用户在已登录的状态下发送恶意请求。
防护措施包括使用 CSRF 令牌、验证来源地址等。
七、性能测试报告的模块
测试背景、测试范围、性能需求指标、测试环境、业务模型、测试策略、
测试结果、单场景的压测结论
八、深拷贝和浅拷贝的区别
浅拷贝:
对于基础类型的属性,拷贝其值
对于引用类型的属性,拷贝其内存地址
原始对象中的引用类型属性发生变化,那么浅拷贝的对象也会发生变化
深拷贝
对于基础类型的属性,拷贝其值
对于引用类型的属性,也是拷贝其值
原始对象发生变化不会影响深拷贝后的对象
九、列表或字典合并方法
list直接用+拼接
dict用双星号拼接
dict1 = {"a":1}
dict2 = {"b":2}
dict3 = {**dict1,**dict2}
十、测试报告的模板
概述、测试时间人员安排、环境描述、测试对象评估、测试工程评估、附件等等
十一、 遍历字典
遍历键值对
for key、value in dict.items()
十二、python常用库
os 文件和目录操作(读取系统配置)。os.path.join、os.getcwd os.name
json JSON 数据编码和解码。 json.dumps, json.loads
datetime 日期和时间操作。 datetime.datetime.now
re 正则表达式支持 re.match
random 生成随机数 random.randint random.random
第三方库
Pytest 测试框架
Flask Web 开发框架
Requests 发送 HTTP 请求
allure 生成测试报告
十三、读取excel表格里面的数据,并向表格里面增加数据,怎么用python操作?
需要用到openpyxl
十四、linux的ifconfig指令查看到网卡没有地址,怎么排查
检查网卡状态(网卡有没有开启)
检查网络配置(有没有分配ip地址)
dhcp问题(是否正常工作、手动配置静态ip地址)
十五、CI/CD 持续集成/持续部署
前后端开发进行某些Git操作后触发git仓库里的web hook钩子,它是提前配置好的,会进一步触发jenkins里面的一些脚本(在Jenkins中,你需要创建一个新作业,并配置它来监听Webhook触发的事件)、这些脚本会触发生成docker镜像(在Jenkins Job中,你可以使用Docker插件或者直接运行docker build命令来构建Docker镜像。),docker会将前后端代码推送镜像到镜像仓库,最后,k8s可以根据新的镜像标签来拉取最新的镜像并部署到集群中。
十六、接口幂等性测试是怎么做的
幂等性测试是确保某个操作可以多次重复执行而不会改变结果的一种测试方法。这种测试对于确保系统的可靠性和一致性尤为重要,特别是在分布式系统和网络通信中。
比如一个支付接口,同一个id的支付请求,不能被执行两次
我们构造两个id相同的请求,验证这两个请求是否都会被执行,最终检查数据库是否由两个相同的id记录,如果有、则幂等有问题
十七、多线程应用场景?如何让用例跑的更快?
多线程执行测试用例会让测试跑得更快,特别是在回归阶段,时间紧迫时,需要全部跑一遍自动化用例回归的时候,能节约时间,使用pytest.xdist插件即可,在pytest.ini文件里指定线程数-n 20则指定20个
十八、造成慢查询的原因?
1、复杂的查询逻辑
2、缺少适合索引(如果查询中涉及的列没有建立索引,或者索引设计不合理,数据库可能需要执行全表扫描或全索引扫描,这会非常耗时)
3、数据量过大(当表中的数据量非常大时,即使是简单的查询也可能变得缓慢。
缺乏分区策略也会影响大型表的查询性能。)
4、并发过大